/* ******************************************************************************
*    SOIN Scrolling Text Ticker
*    Version:      1.0.0
*    Date:         06/16/2003
*    Author:       Jan Krogmann (jan.krogmann@soin.de)
*    Dependencies: hl_array.js
*
*    This program is free software; you can redistribute it and/or modify
*    it under the terms of the GNU General Public License as published by
*    the Free Software Foundation; either version 2 of the License, or
*    (at your option) any later version.
*
*    This program is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
*    GNU General Public License for more details.
*
*    You may gain a copy of the GNU General Public License at
*      Free Software Foundation           Voice:  +1-617-542-5942
*      59 Temple Place - Suite 330        Fax:    +1-617-542-2652
*      Boston, MA  02111-1307,  USA       E-Mail: gnu@gnu.org
****************************************************************************** */

/* DHTML Library
   the original DHTML Library can be found at:
   http://www.netzwelt.com/selfhtml/dhtml/beispiele/dhtml_bibliothek.htm
*/
var DHTML = 0, DHTML_DOM = 0, DHTML_MS = 0, DHTML_NS = 0, DHTML_OP = 0;

function DHTML_init() {
	if(window.opera) { DHTML_OP = 1; }
	if(document.getElementById) { DHTML = 1; DHTML_DOM = 1; }
	if(document.all && !DHTML_OP) { DHTML = 1; DHTML_MS = 1; }
	if(window.netscape && window.screen && !DHTML_DOM && !DHTML_OP){ DHTML = 1; DHTML_NS = 1; }
}

function DHTML_getElem(p1,p2,p3) {
	var DHTML_Elem;
	if(DHTML_DOM) { if(p1.toLowerCase()=="id") { if (typeof document.getElementById(p2) == "object") DHTML_Elem = document.getElementById(p2); else DHTML_Elem = void(0); return(DHTML_Elem); } else if(p1.toLowerCase()=="name") { if (typeof document.getElementsByName(p2) == "object") DHTML_Elem = document.getElementsByName(p2)[p3]; else DHTML_Elem = void(0); return(DHTML_Elem); } else if(p1.toLowerCase()=="tagname") { if (typeof document.getElementsByTagName(p2) == "object" || (DHTML_OP && typeof document.getElementsByTagName(p2) == "function")) DHTML_Elem = document.getElementsByTagName(p2)[p3]; else DHTML_Elem = void(0); return(DHTML_Elem); } else return void(0); }
	else if(DHTML_MS) { if(p1.toLowerCase()=="id") { if (typeof document.all[p2] == "object") DHTML_Elem = document.all[p2]; else DHTML_Elem = void(0); return(DHTML_Elem); } else if(p1.toLowerCase()=="tagname") { if (typeof document.all.tags(p2) == "object") DHTML_Elem = document.all.tags(p2)[p3]; else DHTML_Elem = void(0); return(DHTML_Elem); } else if(p1.toLowerCase()=="name") { if (typeof document[p2] == "object") DHTML_Elem = document[p2]; else DHTML_Elem = void(0); return(DHTML_Elem); } else return void(0); }
	else if(DHTML_NS) { if(p1.toLowerCase()=="id" || p1.toLowerCase()=="name") { if (typeof document[p2] == "object") DHTML_Elem = document[p2]; else DHTML_Elem = void(0); return(DHTML_Elem); } else if(p1.toLowerCase()=="index") { if (typeof document.layers[p2] == "object") DHTML_Elem = document.layers[p2]; else DHTML_Elem = void(0); return(DHTML_Elem); } else return void(0); }
}

function DHTML_getCont(p1,p2,p3) {
	var DHTML_Cont;
	if(DHTML_DOM && DHTML_getElem(p1,p2,p3) && DHTML_getElem(p1,p2,p3).firstChild) { if(DHTML_getElem(p1,p2,p3).firstChild.nodeType == 3) DHTML_Cont = DHTML_getElem(p1,p2,p3).firstChild.nodeValue; else DHTML_Cont = ""; return(DHTML_Cont); }
	else if(DHTML_MS && DHTML_getElem(p1,p2,p3)) { DHTML_Cont = DHTML_getElem(p1,p2,p3).innerText; return(DHTML_Cont); }
	else return void(0);
}

function DHTML_getAttr(p1,p2,p3,p4) {
	var DHTML_Attr;
	if((DHTML_DOM || DHTML_MS) && DHTML_getElem(p1,p2,p3)) { DHTML_Attr = DHTML_getElem(p1,p2,p3).getAttribute(p4); return(DHTML_Attr); }
	else if (DHTML_NS && DHTML_getElem(p1,p2)) { if (typeof DHTML_getElem(p1,p2)[p3] == "object") DHTML_Attr=DHTML_getElem(p1,p2)[p3][p4]; else DHTML_Attr=DHTML_getElem(p1,p2)[p4]; return DHTML_Attr; }
	else return void(0);
}

function DHTML_setCont(p1,p2,p3,p4) {
	if(DHTML_DOM && DHTML_getElem(p1,p2,p3) && DHTML_getElem(p1,p2,p3).firstChild) DHTML_getElem(p1,p2,p3).firstChild.nodeValue = p4;
	else if(DHTML_MS && DHTML_getElem(p1,p2,p3)) DHTML_getElem(p1,p2,p3).innerText = p4;
	else if(DHTML_NS && DHTML_getElem(p1,p2,p3)) { DHTML_getElem(p1,p2,p3).document.open(); DHTML_getElem(p1,p2,p3).document.write(p4); DHTML_getElem(p1,p2,p3).document.close(); }
}

DHTML_init();
/* END - DHTML Library */

function SOIN_T_makeWindow(URL, width, height) {
	window.open(URL, "SOIN_T_POPUP", "height=" + height + ",width=" + width + ",left=150,top=100,scrollbars=1,resizable=0");
}

/* Ticker methods */

// Assemble headlines
function SOIN_T_assembleHeadlines() {
	var SOIN_T_HEADLINES_TMP = 'Herzlich willkommen bei Schmid WebDesign und Support. Wir freuen uns sehr, Sie auf unserer Homepage begrüssen zu dürfen. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
	var SOIN_T_NEWS_LINE = '';

	if(SOIN_HL_ARRAY.length == 0)
		return SOIN_T_HEADLINES_TMP;

	if(SOIN_HL_ARRAY.length < SOIN_T_TICKER_HEADLINE_COUNT)
		SOIN_T_TICKER_HEADLINE_COUNT = SOIN_HL_ARRAY.length;

	for(var i=0;i<SOIN_T_TICKER_HEADLINE_COUNT;i++) {
		SOIN_T_NEWS_LINE = '';
		SOIN_T_HEADLINES_TMP += ' +++' + "\n";
		var SOIN_T_ARRAY_BUFFER = SOIN_HL_ARRAY[i];

		if(SOIN_T_TICKER_SHOW_DATE == 1) {
			SOIN_T_NEWS_LINE += SOIN_T_ARRAY_BUFFER[2] + '.' + SOIN_T_ARRAY_BUFFER[1] + '.' + SOIN_T_ARRAY_BUFFER[0];
			if(SOIN_T_TICKER_SHOW_TIME == 1) {
				SOIN_T_NEWS_LINE += ', ';
			} else {
				SOIN_T_NEWS_LINE += ' - ';
			}
		}

		if(SOIN_T_TICKER_SHOW_TIME == 1)
			SOIN_T_NEWS_LINE += SOIN_T_ARRAY_BUFFER[3] + '.' + SOIN_T_ARRAY_BUFFER[4] + ' - ';

		SOIN_T_NEWS_LINE += '<span class="SOIN_T_TICKER_HEAD">';
		SOIN_T_NEWS_LINE += SOIN_T_ARRAY_BUFFER[5];
		SOIN_T_NEWS_LINE += ' </span>';
		SOIN_T_NEWS_LINE += '<a ';
		SOIN_T_NEWS_LINE += 'onmouseover="javascript:SOIN_T_stopTicker();" ';
		SOIN_T_NEWS_LINE += 'onmouseout="javascript:SOIN_T_startTicker();" ';
		SOIN_T_NEWS_LINE += ' class="SOIN_T_LIVE_TICKER_LINK" href="';
		SOIN_T_NEWS_LINE += SOIN_T_LINK_PREFIX + SOIN_T_ARRAY_BUFFER[7] + SOIN_T_LINK_SUFFIX;
		SOIN_T_NEWS_LINE += '">';
		SOIN_T_NEWS_LINE += SOIN_T_ARRAY_BUFFER[6];
		SOIN_T_NEWS_LINE += '</a>';

		SOIN_T_HEADLINES_TMP += SOIN_T_NEWS_LINE;
	}
	return SOIN_T_HEADLINES_TMP;
}

// Initialize ticker
function SOIN_T_tickerInit() {
	++SOIN_T_INIT_COUNT;
	if(SOIN_T_INITIALIZED) {
		return;
	}

	var SOIN_T_TICKER_TMP = SOIN_T_assembleHeadlines();
	if(SOIN_T_TICKER_TMP == '') {
		return;
	}
	SOIN_T_TICKER_TMP = '<div class="SOIN_T_LIVE_TICKER"><nobr>' + SOIN_T_TICKER_TMP;
	SOIN_T_TICKER_TMP += '</nobr></div>';

	// if browser supports DOM object model
 	if (DHTML_DOM) {
		// set content of the ticker
		SOIN_T_TICKER_OBJECT = DHTML_getElem("id","SOIN_T_OBJ_TICKER_TEXT",null);
		SOIN_T_TICKER_OBJECT.innerHTML = SOIN_T_TICKER_TMP;
	} else {
		SOIN_T_TICKER_OBJECT = document.SOIN_T_TICKER_PARENT.document.SOIN_T_OBJ_TICKER_TEXT;
		// set content of the ticker
		SOIN_T_TICKER_OBJECT.document.open();
		SOIN_T_TICKER_OBJECT.document.write(SOIN_T_TICKER_TMP);
		SOIN_T_TICKER_OBJECT.document.close();
		// if vertical relative positioning
		if(SOIN_T_TOP == 0)
			SOIN_T_TOP		= SOIN_T_TICKER_OBJECT.pageY;	// set ticker y-coordinate to anchor y coordinate
	}
	// compute right border of ticker
	SOIN_T_RIGHT = SOIN_T_TICKER_WIDTH + SOIN_T_LEFT;
	// set starting point of scrolling text
	SOIN_T_POSITION = SOIN_T_RIGHT;

	// mark first run of the ticker
	SOIN_T_FIRST = true;
	// start ticker
	SOIN_T_startTicker();
	SOIN_T_INITIALIZED = 1;
}

// output CSS data
function SOIN_T_styleSheet () {
	var TICKER_CSS	= '.SOIN_T_LIVE_TICKER {white-space:nowrap;' +
					  'line-height:'	+ SOIN_T_TICKER_HEIGHT + 'px;' +
					  'font-size:'		+ SOIN_T_TICKER_FONT_SIZE + 'pt;' +
					  'font-family:'	+ SOIN_T_TICKER_FONT + ';' +
					  'font-weight:'	+ SOIN_T_TICKER_FONTBOLD + ';' +
					  'color:'			+ SOIN_T_TICKER_FONT_COLOR + ';';
					  if(SOIN_T_TICKER_TRANSPARENT == 0) {
					  	TICKER_CSS += 'background-color:' + SOIN_T_TICKER_BG_COLOR;
					  }
					  TICKER_CSS += ';}';
	var TIME_CSS	= '.SOIN_T_TICKER_TIME {white-space:nowrap;' +
					  'line-height:'	+ SOIN_T_TICKER_HEIGHT + 'px;' +
					  'font-size:'		+ SOIN_T_TICKER_FONT_SIZE + 'pt;' +
					  'font-family:'	+ SOIN_T_TICKER_FONT + ';' +
					  'font-weight:'	+ SOIN_T_TICKER_FONTBOLD + ';' +
					  'color:'			+ SOIN_T_TICKER_FONT_COLOR + ';}';
	var PARENT_CSS	= '.SOIN_T_TICKER_PARENT {overflow:hidden;' +
					  'width:'			+ SOIN_T_TICKER_WIDTH + 'px;' +
					  'height:'			+ SOIN_T_TICKER_HEIGHT + 'px;';
					  if(SOIN_T_TICKER_TRANSPARENT == 0) {
					  	PARENT_CSS += 'background-color:' + SOIN_T_TICKER_BG_COLOR;
					  }
					  PARENT_CSS += ';}';
	var TEXT_CSS	= '.SOIN_T_TICKER_TEXT {white-space:nowrap;visibility:hidden;' +
					  'line-height:'	+ SOIN_T_TICKER_HEIGHT + 'px;' +
					  'height:'			+ SOIN_T_TICKER_HEIGHT + 'px;' +
					  'position:'		+ SOIN_T_BROWSER_POS + ';' +
					  'font-size:'		+ SOIN_T_TICKER_FONT_SIZE + 'pt;' +
					  'font-family:'	+ SOIN_T_TICKER_FONT + ';' +
					  'font-weight:'	+ SOIN_T_TICKER_FONTBOLD + ';' +
					  'color:'			+ SOIN_T_TICKER_FONT_COLOR + ';'
					  if(SOIN_T_TICKER_TRANSPARENT == 0) {
					  	TEXT_CSS += 'background-color:' + SOIN_T_TICKER_BG_COLOR;
					  }
					  TEXT_CSS += ';}';
	var LINK_CSS	= 'A.SOIN_T_LIVE_TICKER_LINK {' +
					  'line-height:'	+ SOIN_T_TICKER_HEIGHT + 'px;' +
					  'font-size:'			+ SOIN_T_TICKER_FONT_SIZE + 'pt;' +
					  'font-family:'		+ SOIN_T_TICKER_FONT + ';' +
					  'text-decoration:'	+ SOIN_T_TICKER_LINK_UNDERLINE + ';' +
					  'font-weight:'		+ SOIN_T_TICKER_FONTBOLD + ';' +
					  'color:'				+ SOIN_T_TICKER_LINK_COLOR + ';}';
	var VISITED_CSS	= 'A.SOIN_T_LIVE_TICKER_LINK:visited {' +
					  'line-height:'	+ SOIN_T_TICKER_HEIGHT + 'px;' +
					  'font-size:'			+ SOIN_T_TICKER_FONT_SIZE + 'pt;' +
					  'font-family:'		+ SOIN_T_TICKER_FONT + ';' +
					  'text-decoration:'	+ SOIN_T_TICKER_LINK_UNDERLINE + ';' +
					  'font-weight:'		+ SOIN_T_TICKER_FONTBOLD + ';' +
					  'color:'				+ SOIN_T_TICKER_VLINK_COLOR + ';}';
	var HOVER_CSS	= 'A.SOIN_T_LIVE_TICKER_LINK:hover {' +
					  'line-height:'		+ SOIN_T_TICKER_HEIGHT + 'px;' +
					  'font-size:'			+ SOIN_T_TICKER_FONT_SIZE + 'pt;' +
					  'font-family:'		+ SOIN_T_TICKER_FONT + ';' +
					  'text-decoration:'	+ SOIN_T_TICKER_HOVER_UNDERLINE + ';' +
					  'font-weight:'		+ SOIN_T_TICKER_FONTBOLD + ';' +
					  'color:'				+ SOIN_T_TICKER_HOVER_COLOR + ';}';

	document.writeln("\n\n<style>");
	document.writeln(TICKER_CSS);
	document.writeln(TIME_CSS);
	document.writeln(PARENT_CSS);
	document.writeln(TEXT_CSS);
	document.writeln(LINK_CSS);
	document.writeln(VISITED_CSS);
	document.writeln(HOVER_CSS);
	document.writeln("</style>\n\n");
}

// start ticker
function SOIN_T_startTicker() {
	// if ticker has not been started before OR
	// if mouse effect is enabled
	if(!parseInt(SOIN_T_TICKER_INTERVAL) || SOIN_T_TICKER_HOVER_STOP)
		SOIN_T_TICKER_INTERVAL = setInterval('SOIN_T_tickerTick()', 10);
}

// stop ticker
function SOIN_T_stopTicker() {
	// if ticker has been started before AND
	// if mouse effect is enabled
	if(parseInt(SOIN_T_TICKER_INTERVAL) && SOIN_T_TICKER_HOVER_STOP) {
		clearInterval(SOIN_T_TICKER_INTERVAL);
		SOIN_T_TICKER_INTERVAL = 0;
	}
}

// main ticker function which implements the movement
// of the scrolling text
function SOIN_T_tickerTick() {
	// calculate the decrease of horizontal position of scrolling text
	// weighted with customizable ticker speed (SOIN_T_TICKER_SPEED)
	SOIN_T_POSITION = SOIN_T_POSITION - 0.1 * SOIN_T_TICKER_SPEED;

	// if scrolling text has been completely scrolled
	if (SOIN_T_POSITION < -SOIN_T_HIDDEN_WIDTH) {
		// reset horizontal position of scrolling text to starting point
		SOIN_T_POSITION = SOIN_T_RIGHT;
	}
	if (SOIN_T_FIRST) {
		SOIN_T_POSITION = SOIN_T_POSITION - SOIN_T_TICKER_OFFSET;
	}

	if (DHTML_DOM) {
		// set horizontal position of scrolling text
		SOIN_T_TICKER_OBJECT.style.left = SOIN_T_POSITION + 'px';
		// if first ticker tick
		if (SOIN_T_FIRST) {
			// unmark first tick
			SOIN_T_FIRST = false;
			// show ticker
			SOIN_T_TICKER_OBJECT.style.visibility = "visible";
			// calculate width of complete ticker text
			SOIN_T_HIDDEN_WIDTH = SOIN_T_TICKER_OBJECT.offsetWidth;
		}
		if(SOIN_T_HIDDEN_WIDTH == 0) {
			SOIN_T_HIDDEN_WIDTH = SOIN_T_TICKER_OBJECT.offsetWidth;
		}
	} else {
		// if first ticker tick
		if (SOIN_T_FIRST) {
			// unmark first tick
			SOIN_T_FIRST = false;
			// show ticker
			SOIN_T_TICKER_OBJECT.visibility = "visible";
			// calculate the width of complete ticker text
			SOIN_T_HIDDEN_WIDTH = SOIN_T_TICKER_OBJECT.document.width;
			// set y-coordinate of ticker
			SOIN_T_TICKER_OBJECT.pageY = SOIN_T_TOP;
		}
		// set horizontal position of scrolling text
		SOIN_T_TICKER_OBJECT.left = SOIN_T_POSITION;
	}
}
/* END - Ticker methods */

/* Ticker variable declaration */
/* customizable variables */
var SOIN_T_LEFT				= 0;						// left coordinate of ticker
var SOIN_T_TOP				= 0;						// left coordinate of ticker
var SOIN_T_CONTENT_DIR		= '';			// directory with files containing the articles
var SOIN_T_LINK_PREFIX		= '../';	// default prefix for links
var SOIN_T_LINK_SUFFIX		= '" target="_self';		// default suffix for links
var SOIN_T_HTTP_ROOT		= 'index.htm';	// prefix string for inclusion of scripts

/* buffer variables */
var SOIN_HL_ARRAY			= new Array();				// Headlines array
var SOIN_T_POSITION			= 0;						// position counter of ticker text
var SOIN_T_TICKER_OBJECT	= null;						// ticker reference
var SOIN_T_TICKER_INTERVAL	= null;						// interval handle for stopping ticker
var SOIN_T_HIDDEN_WIDTH		= 0;						// complete width of ticker depending on text length

/* other variables */
var SOIN_T_RANDOM		= new String (Math.random());	// random string
var SOIN_T_INITIALIZED		= 0;
var SOIN_T_INIT_COUNT		= 0;
/* END - Ticker variable declaration */

/* Ticker main program */
/* SOIN_T_RANDOM will be included into the following write statement to make sure
   that the file will always be reloaded */
document.writeln('<script src="' + SOIN_T_HTTP_ROOT + SOIN_T_CONTENT_DIR + 'hl_array.js?' + SOIN_T_RANDOM + '" type="text/javascript"></script>');

SOIN_T_BROWSER_POS = 'relative';
if (DHTML_NS) {
	// Netscape positioning of layer has to be 'absolute'!
	// Otherwise ticker will not work properly.
	SOIN_T_BROWSER_POS = 'absolute';
}

// string which will be included for display of the ticker
var SOIN_T_TICKER_OBJECT_STRING	 = '';

// if this browser supports DOM object model
if (DHTML_DOM) {
	// Ticker Object: initially hidden DIV with no content
	// Content will be added in function SOIN_T_tickerInit().
	SOIN_T_TICKER_OBJECT_STRING	+= '<div id="SOIN_T_TICKER_PARENT" class="SOIN_T_TICKER_PARENT">';
	SOIN_T_TICKER_OBJECT_STRING	+= '<div id="SOIN_T_OBJ_TICKER_TEXT" class="SOIN_T_TICKER_TEXT"></div>';
	SOIN_T_TICKER_OBJECT_STRING	+= '</div>';
} else {
	SOIN_T_TICKER_OBJECT_STRING	+= '<ilayer width=' + SOIN_T_TICKER_WIDTH + ' ';
	if(SOIN_T_TICKER_TRANSPARENT == 0) {
		SOIN_T_TICKER_OBJECT_STRING += 'bgcolor="' + SOIN_T_TICKER_BG_COLOR + '" ';
	}
	SOIN_T_TICKER_OBJECT_STRING	+= 'name="SOIN_T_TICKER_PARENT">';
	SOIN_T_TICKER_OBJECT_STRING	+= '<layer name="SOIN_T_OBJ_TICKER_TEXT" class="SOIN_T_TICKER_TEXT"></layer></ilayer>';
}

SOIN_T_styleSheet();
// include div which will contain the ticker
document.write(SOIN_T_TICKER_OBJECT_STRING);

// initialize ticker after 0.1 seconds
window.setTimeout("SOIN_T_tickerInit()",100);
// try again after 0.5, 1, 2, 5 and 10 seconds
window.setTimeout("SOIN_T_tickerInit()",500);
window.setTimeout("SOIN_T_tickerInit()",1000);
window.setTimeout("SOIN_T_tickerInit()",2000);
window.setTimeout("SOIN_T_tickerInit()",5000);
window.setTimeout("SOIN_T_tickerInit()",10000);

/* END - Ticker main program */
