/*
+-------------------------------------------------------------------+
|                     J S - T I C K E R   (v1.5)                    |
|                                                                   |
| Copyright Gerd Tentler                www.gerd-tentler.de/tools   |
| Created: Oct. 20, 2004                Last modified: Nov. 6, 2009 |
+-------------------------------------------------------------------+
| This program may be used and hosted free of charge by anyone for  |
| personal purpose as long as this copyright notice remains intact. |
|                                                                   |
| Obtain permission before selling the code for this program or     |
| hosting this software on a commercial website or redistributing   |
| this software over the Internet or in any other medium. In all    |
| cases copyright must remain intact.                               |
+-------------------------------------------------------------------+

+-------------------------------------------------------------------+
|																	|
| Code modified by Johann Allg�uer with the permission of 			|
| Gerd Tentler, for use in the TYPO3 Extension datamints_newsticker |
|																	|
+-------------------------------------------------------------------+

*/


//---------------------------------------------------------------------------------------------------------
// Configuration
//---------------------------------------------------------------------------------------------------------

/*var orientation = orientation.toLowerCase();		 // wheter the newsticker moves vertical or horizontal
var tickerWidth = objScrollWidth;                    // width (in px)
var tickerHeight = objScrollHeight;					 // height (in px)

var stopScroll = stopScroll;						 // If stopscroll is true, then ticker gets paused at mouseover
var tickerPause = ticker_pause;						 // time the ticker pauses each element (if defined)
var tickerDelay = 100 - speed;                       // scrolling delay
var tickerSpacer = objScrollDivider;                 // spacer between ticker entries

var tickerBGImage = bg_image;						 // background image
var tickerBGColor = backColour;                      // background color*/
var tickerHLColor = "";                      		 // hilight (mouse over) color
/*
var textAlignment = textAlignment;					 // text align (left; center; right; justify), makes only a difference if orientation = vertical

var tickerBorderWidth = borderWidth;                 // border width (pixels)*/
var tickerBorderStyle = "solid";                     // border style (CSS-spec)
/*
var tickerBorderColor = borderColour;                // border color

var tickerOffset = parseInt(tickerOffset);			 // Tickeroffset, also der Top / left - Wert (je noch orientation), an der das erste item des Tickers beginnen soll

if ((tickerOffset % 2)) {
	tickerOffset = tickerOffset + 1;
}*/


//---------------------------------------------------------------------------------------------------------
// Functions
//---------------------------------------------------------------------------------------------------------

//var dm_newsticker_data[ceUid]["objScrollHeight"] = tickerFontSize + 8;
var DOM = document.getElementById;
var IE4 = document.all;


function tickerGetObj(id, ceUid) {
	if(DOM) return document.getElementById(id);
	else if(IE4) return document.all[id];
	else return false;
}

function tickerObject(id, ceUid) {
	this.elem = tickerGetObj(id, ceUid);
	this.css = this.elem.style;
	if (dm_newsticker_data[ceUid]["orientation"].toLowerCase() == "horizontal") {
		this.x = dm_newsticker_data[ceUid]["objScrollWidth"];
		this.width = this.elem.offsetWidth;
		this.css.width = this.width + 'px';
		this.css.left = this.x + 'px';
	}
	else {
		this.height = this.elem.offsetHeight;
		this.y = dm_newsticker_data[ceUid]["objScrollHeight"];
		this.css.height = this.height + 'px';
		this.css.top = this.y + 'px';
	}
	this.move = false;
	return this;
}

function tickerNext(ceUid) {
	if(!DOM && !IE4) return;
	var obj = dm_newsticker_data[ceUid]["tickerItems"][dm_newsticker_data[ceUid]["tickerID"]];
	if (dm_newsticker_data[ceUid]["orientation"].toLowerCase() == "horizontal") {
		if(!obj.move) {
			if (obj.hasNeverMovedYet && (dm_newsticker_data[ceUid]["tickerOffset"] != 'NaN') && obj.x < dm_newsticker_data[ceUid]["objScrollWidth"]) {
				obj.move = true;
				dm_newsticker_data[ceUid]["tickerItems"][dm_newsticker_data[ceUid]["tickerID"]].hasNeverMovedYet = false;
			}
			else {
				obj.x = dm_newsticker_data[ceUid]["objScrollWidth"];
				obj.css.left = dm_newsticker_data[ceUid]["objScrollWidth"] + 'px';
				obj.move = true;
			}
		}
	}
	else {
		if(!obj.move) {
			if (obj.hasNeverMovedYet && (dm_newsticker_data[ceUid]["tickerOffset"] != 'NaN') && obj.y < dm_newsticker_data[ceUid]["objScrollHeight"]) {
				obj.move = true;
				dm_newsticker_data[ceUid]["tickerItems"][dm_newsticker_data[ceUid]["tickerID"]].hasNeverMovedYet = false;
			}
			else {
				obj.y = dm_newsticker_data[ceUid]["objScrollHeight"];
				obj.css.top = dm_newsticker_data[ceUid]["objScrollHeight"] + 'px';
				obj.move = true;
			}
		}
	}

}

function tickerMove(ceUid) {
	if(!DOM && !IE4) return;
	if (dm_newsticker_data[ceUid]["orientation"].toLowerCase() == "horizontal") {
		for(var i = 0; i < dm_newsticker_data[ceUid]["tickerItems"].length; i++) {
			if(dm_newsticker_data[ceUid]["ticker_pause"]) {
				if(dm_newsticker_data[ceUid]["tickerItems"][i].x == 0) {
					tickerStop(1, ceUid);
				}
			}
			if(dm_newsticker_data[ceUid]["tickerItems"][i].move) {
				if(dm_newsticker_data[ceUid]["tickerItems"][i].x > -dm_newsticker_data[ceUid]["tickerItems"][i].width) {
					dm_newsticker_data[ceUid]["tickerItems"][i].x -= 1;
					dm_newsticker_data[ceUid]["tickerItems"][i].css.left = dm_newsticker_data[ceUid]["tickerItems"][i].x + 'px';
				}
				else dm_newsticker_data[ceUid]["tickerItems"][i].move = false;
			}
		}
		if(dm_newsticker_data[ceUid]["tickerItems"][dm_newsticker_data[ceUid]["tickerID"]].x + dm_newsticker_data[ceUid]["tickerItems"][dm_newsticker_data[ceUid]["tickerID"]].width <= dm_newsticker_data[ceUid]["objScrollWidth"]) {
			dm_newsticker_data[ceUid]["tickerID"]++;
			if(dm_newsticker_data[ceUid]["tickerID"] >= dm_newsticker_data[ceUid]["tickerItems"].length) dm_newsticker_data[ceUid]["tickerID"] = 0;
			tickerNext(ceUid);
		}
	}
	else {
		for(var i = 0; i < dm_newsticker_data[ceUid]["tickerItems"].length; i++) {
			if(dm_newsticker_data[ceUid]["ticker_pause"]) {
				if(dm_newsticker_data[ceUid]["tickerItems"][i].y == 0) {
					tickerStop(1, ceUid);
				}
			}
			if(dm_newsticker_data[ceUid]["tickerItems"][i].move) {
				if(dm_newsticker_data[ceUid]["tickerItems"][i].y > -dm_newsticker_data[ceUid]["tickerItems"][i].height) {
					dm_newsticker_data[ceUid]["tickerItems"][i].y -= 1;
					dm_newsticker_data[ceUid]["tickerItems"][i].css.top = dm_newsticker_data[ceUid]["tickerItems"][i].y + 'px';
				}
				else {
					dm_newsticker_data[ceUid]["tickerItems"][i].move = false;
				}
			}
		}

		if(dm_newsticker_data[ceUid]["tickerItems"][dm_newsticker_data[ceUid]["tickerID"]].y + dm_newsticker_data[ceUid]["tickerItems"][dm_newsticker_data[ceUid]["tickerID"]].height <= dm_newsticker_data[ceUid]["objScrollHeight"]) {
			dm_newsticker_data[ceUid]["tickerID"]++;
			if(dm_newsticker_data[ceUid]["tickerID"] >= dm_newsticker_data[ceUid]["tickerItems"].length) dm_newsticker_data[ceUid]["tickerID"] = 0;
			tickerNext(ceUid);
		}
	}
}

function tickerStart(init, ceUid) {
	if(!DOM && !IE4) return;
	var obj = tickerGetObj('divTicker_' + ceUid, ceUid);
	if(dm_newsticker_data[ceUid]["backColour"] && (dm_newsticker_data[ceUid]["backColour"] != 'none')) {
		obj.style.backgroundColor = dm_newsticker_data[ceUid]["backColour"];
	}
	if(init) {
		dm_newsticker_data[ceUid]["tickerID"] = 0;
		tickerNext(ceUid);
	}
	dm_newsticker_data[ceUid]["tickerIV"] = setInterval('tickerMove(' + ceUid + ')', dm_newsticker_data[ceUid]["speed"]);
}

function tickerStop(isTickerPause, ceUid) {
	if(!DOM && !IE4) return;
	clearInterval(dm_newsticker_data[ceUid]["tickerIV"]);
	if(isTickerPause) {
		dm_newsticker_data[ceUid]["tickerTimeout"] = setTimeout("tickerStart(0, " + ceUid + ")", dm_newsticker_data[ceUid]["ticker_pause"]);
		return;
	}
	else {
		if(tickerHLColor) {
			obj = tickerGetObj('divTicker_' + ceUid, ceUid);
			obj.style.backgroundColor = tickerHLColor;
		}
	}
}

function tickerInit(ceUid) {
	if(!DOM && !IE4) return;
	if (dm_newsticker_data[ceUid]["orientation"] == 'horizontal') {
		curWidthSum = 0 + dm_newsticker_data[ceUid]["tickerOffset"];
		for(var i = 0; i < dm_newsticker_data[ceUid]["articleData"]["tickerEntries"].length; i++) {
			dm_newsticker_data[ceUid]["tickerItems"][i] = new tickerObject('divTickerEntry_' + ceUid + '_' + (i+1), ceUid);
			if (!isNaN(dm_newsticker_data[ceUid]["tickerOffset"])) {
				dm_newsticker_data[ceUid]["tickerItems"][i].x = curWidthSum;
				dm_newsticker_data[ceUid]["tickerItems"][i].css.left = curWidthSum;
				curWidthSum = curWidthSum + dm_newsticker_data[ceUid]["tickerItems"][i].width;
			}
			dm_newsticker_data[ceUid]["tickerItems"][i].hasNeverMovedYet = true;
		}
	}
	else {
		curHeightSum = 0 + dm_newsticker_data[ceUid]["tickerOffset"];
		for(var i = 0; i < dm_newsticker_data[ceUid]["articleData"]["tickerEntries"].length; i++) {
			dm_newsticker_data[ceUid]["tickerItems"][i] = new tickerObject('divTickerEntry_' + ceUid + '_' + (i+1), ceUid);
			if (!isNaN(dm_newsticker_data[ceUid]["tickerOffset"])) {
				dm_newsticker_data[ceUid]["tickerItems"][i].y = curHeightSum;
				dm_newsticker_data[ceUid]["tickerItems"][i].css.top = curHeightSum;
				curHeightSum = curHeightSum + dm_newsticker_data[ceUid]["tickerItems"][i].height;
			}
			dm_newsticker_data[ceUid]["tickerItems"][i].hasNeverMovedYet = true;
		}
	}
	var obj = tickerGetObj('divTicker_' + ceUid, ceUid);
	obj.style.width = dm_newsticker_data[ceUid]["objScrollWidth"] + 'px';
	obj.style.height = dm_newsticker_data[ceUid]["objScrollHeight"] + 'px';
	obj.style.visibility = 'visible';
	tickerStart(true, ceUid);
}

function tickerReload(ceUid) {
	if(!DOM && !IE4) return;
	document.location.reload();
}


//---------------------------------------------------------------------------------------------------------
// Build ticker
//---------------------------------------------------------------------------------------------------------


function buildTicker(ceUid) {
	//---------------------------------------------------------------------------------------------------------
	// Ticker entries
	//---------------------------------------------------------------------------------------------------------
	dm_newsticker_data[ceUid]["tickerItems"] = new Array();
	dm_newsticker_data[ceUid]["tickerID"] = '';
	dm_newsticker_data[ceUid]["tickerTimeout"] = '';
	dm_newsticker_data[ceUid]["tickerIV"] = '';

	dm_newsticker_data[ceUid]["orientation"] = dm_newsticker_data[ceUid]["orientation"].toLowerCase();
	dm_newsticker_data[ceUid]["speed"] = Math.round(((100-(dm_newsticker_data[ceUid]["speed"]))/2));
	dm_newsticker_data[ceUid]["tickerOffset"] = parseInt(dm_newsticker_data[ceUid]["tickerOffset"]);			 // Tickeroffset, also der Top / left - Wert (je noch orientation), an der das erste item des Tickers beginnen soll
	
	//alert(var_dump(dm_newsticker_data[ceUid]["backColour"]));

	if ((dm_newsticker_data[ceUid]["tickerOffset"] % 2)) {
		dm_newsticker_data[ceUid]["tickerOffset"] = dm_newsticker_data[ceUid]["tickerOffset"] + 1;
	}

	//alert(var_dump(dm_newsticker_data[ceUid]["orientation"]));

	if (dm_newsticker_data[ceUid]["articleData"]=='') {
		return false;
	}


	linked_article = new Array();
	for (x in dm_newsticker_data[ceUid]["articleData"]) {
		//Link the Articles from the Given array
		//Article[x][3] is the Thumbnail Image
		linked_article[x] = 
			(dm_newsticker_data[ceUid]["articleData"][x][5] ? ('<span class="dmnt_newsdate">' + dm_newsticker_data[ceUid]["articleData"][x][5] + '</span>') : ('')) +
			dm_newsticker_data[ceUid]["articleData"][x][1] +
			dm_newsticker_data[ceUid]["articleData"][x][3] + '<span class="dmnt_newstitle">' + dm_newsticker_data[ceUid]["articleData"][x][0] + '</span>' +
			(dm_newsticker_data[ceUid]["articleData"][x][4] ? (dm_newsticker_data[ceUid]["subtitleDivider"] ? '<div class="dmnt_subtitledivider" ' + (dm_newsticker_data[ceUid]["orientation"]=='horizontal' ? 'style = "display: inline;"' : '') + '>' + dm_newsticker_data[ceUid]["subtitleDivider"] +'</div>' : '') + '<span class="dmnt_newssubtitle">' + dm_newsticker_data[ceUid]["articleData"][x][4] + '</span>' : "") +
			dm_newsticker_data[ceUid]["articleData"][x][2];
	}
	dm_newsticker_data[ceUid]["articleData"]["tickerEntries"] = linked_article;


	if (dm_newsticker_data[ceUid]["articleData"]["tickerEntries"]=='') {
		return false;
	}
	
	//CSS
	document.write(
		'<style type="text/css"> ' +
		'#divTicker_' + ceUid + ' { ' +
		(dm_newsticker_data[ceUid]["bg_image"] ? 'background-image: url(' + dm_newsticker_data[ceUid]["bg_image"] + ');' : '') +
		'position: relative; ' +
		'height: ' + dm_newsticker_data[ceUid]["objScrollHeight"] + 'px; ' +
		'width: ' + dm_newsticker_data[ceUid]["objScrollWidth"] + 'px; ' +
		'overflow: hidden; ' +
		'visibility: hidden; ' +
		(dm_newsticker_data[ceUid]["borderWidth"] ? 'border-width: ' + dm_newsticker_data[ceUid]["borderWidth"] + 'px; ' : '') +
		(tickerBorderStyle ? 'border-style: ' + tickerBorderStyle + '; ' : '') +
		(dm_newsticker_data[ceUid]["borderColour"] ? 'border-color: ' + dm_newsticker_data[ceUid]["borderColour"] + '; ' : '') +
		'} ' +
		'.cssTickerContainer_' + ceUid + ' { ' +
		'position: relative; ' +
		'height: ' + dm_newsticker_data[ceUid]["objScrollHeight"] + 'px; ' +
		'width: ' + dm_newsticker_data[ceUid]["objScrollWidth"] + 'px; ' +
		'z-index: 5;' +
		'} ' +
		'.cssTickerEntry_' + ceUid + ' { ' +
		(dm_newsticker_data[ceUid]["orientation"] == "vertical" ? 'width: 100%; text-align: ' + dm_newsticker_data[ceUid]["textAlignment"] + ';' : '') +
		'} ' +
		'.cssTickerEntry_' + ceUid + ' img { ' +
		'display: block;' +
		(dm_newsticker_data[ceUid]["orientation"] == "vertical" ? 'margin: auto;' : 'float: left;') +
		'} ' +
		'#divTicker_' + ceUid + ' .cssTickerEntry a,' +
		'#divTicker_' + ceUid + ' .cssTickerEntry div { ' +
		(dm_newsticker_data[ceUid]["orientation"] == "horizontal" ? 'display: inline;' : '') +
		(dm_newsticker_data[ceUid]["orientation"] == "horizontal" ? 'white-space: nowrap;' : '') +
		'}' +
		'</style>'
		);

	objScroll = ('<div class="cssTickerContainer_' + ceUid + ' cssTickerContainer">' +
		'<div id="divTicker_' + ceUid + '" class="divTicker" onMouseOver="' + (dm_newsticker_data[ceUid]["stopScroll"] ? 'tickerStop(0, ' + ceUid + '); clearTimeout(dm_newsticker_data[' + ceUid + '][&#39;tickerTimeout&#39;]);"' : '') + '" onMouseOut="' + (dm_newsticker_data[ceUid]["stopScroll"] ? 'tickerStart(0, ' + ceUid + ');' : '') + '">');

	for(var i = 0; i < dm_newsticker_data[ceUid]["articleData"]["tickerEntries"].length; i++) {
		objScroll += ('<div id="divTickerEntry_' + ceUid + '_' + (i+1) + '" class="cssTickerEntry_' + ceUid + ' cssTickerEntry" ' +
			'style="position:absolute;">' +
			dm_newsticker_data[ceUid]["articleData"]["tickerEntries"][i] + ((dm_newsticker_data[ceUid]["articleData"]["tickerEntries"].length > 1) ? '<div class="dmnt_tickerDivider_' + ceUid + ' dmnt_tickerDivider"' + (dm_newsticker_data[ceUid]["orientation"]=='horizontal' ? '' : '') + '>' + dm_newsticker_data[ceUid]["objScrollDivider"] + '</div>' : '') +
			'</div>');
	}
	objScroll += ('</div></div>');
	document.getElementById("tickerspace_" + ceUid).innerHTML = objScroll;
	tickerInit(ceUid);

	return true;
}


function var_dump(obj) {
	if(typeof obj == "object") {
		return "Type: "+typeof(obj)+((obj.constructor) ? "\nConstructor: "+obj.constructor : "")+"\nValue: " + obj;
	} else {
		return "Type: "+typeof(obj)+"\nValue: "+obj;
	}
}//end function var_dump

//---------------------------------------------------------------------------------------------------------


//window.onresize = tickerReload;
//window.onload = buildTicker;
