var pageId = 0;
var projecttype = 0;
var language_uid = 0;
var referencesActModul = 0;
var referencesSliderOffset = 0;
var referencesSliderLoading = new Object();
var referencesSliderHistory = new Object();
var referencesSliderTimeout = new Object();
var referencesSliderComplete = new Object();
var referencesSliderHistoryIndex = new Object();
var referencesSliderAutoplay = new Object();
var referencesSliderNextLoadDirection = new Object();
var referencesSliderInterval = 2500;
var referencesSliderItemWidth = 0;

function referencesNextSliderItem(modul) {
	if(!referencesSliderLoading[modul] || (referencesSliderLoading[modul]==undefined && referencesSliderComplete[modul])) {
		clearTimeout(referencesSliderTimeout[modul]);
		if(((referencesSliderHistoryIndex[modul]+referencesSliderOffset)<referencesSliderHistory[modul].length) || referencesSliderComplete[modul]) {
			var offset = 0;
			referencesSliderLoading[modul] = true;
			referencesSliderHistoryIndex[modul]++;
			var obj = referencesSliderHistory[modul][referencesSliderHistoryIndex[modul]+referencesSliderOffset-2];
			if(obj==undefined) {
				obj = referencesSliderHistory[modul][(referencesSliderOffset-(referencesSliderHistory[modul].length-referencesSliderHistoryIndex[modul])-2)];
			}
			if(referencesSliderHistoryIndex[modul]>referencesSliderHistory[modul].length) {
				referencesSliderHistoryIndex[modul] = 1;
			}
			referencesAddSliderItem(modul, obj.content, 'left', 'default');
		} else {
			referencesSliderNextLoadDirection[modul] = 'left';
			referencesLoadNextSliderItem(modul, referencesSliderUidString(modul));
		}
	}
}

function referencesPreviousSliderItem(modul) {
	if(!referencesSliderLoading[modul] && referencesSliderHistoryIndex[modul]>1) {
		referencesSliderLoading[modul] = true;
		clearTimeout(referencesSliderTimeout[modul]);
		referencesSliderHistoryIndex[modul]--;
		referencesAddSliderItem(modul, referencesSliderHistory[modul][referencesSliderHistoryIndex[modul]-1].content, 'right', 'default');
	} else if(referencesSliderComplete[modul] && referencesSliderHistoryIndex[modul]==1) {
		referencesSliderLoading[modul] = true;
		clearTimeout(referencesSliderTimeout[modul]);
		referencesSliderHistoryIndex[modul] = referencesSliderHistory[modul].length;
		referencesAddSliderItem(modul, referencesSliderHistory[modul][referencesSliderHistoryIndex[modul]-1].content, 'right', 'last');
	} else if(!referencesSliderLoading[modul] && referencesSliderHistoryIndex[modul]==1) {
		clearTimeout(referencesSliderTimeout[modul]);
		referencesSliderNextLoadDirection[modul] = 'right';
		referencesLoadNextSliderItem(modul, referencesSliderUidString(modul));
	}
}

function referencesSliderPause(modul) {
	clearTimeout(referencesSliderTimeout[modul]);
}

function referencesSliderResume(modul) {
	referencesStartSliderTimer(modul);
}

function referencesSliderUidString(modul) {
	var i, entry;
	var result = new Array();
	for(i=0; entry=referencesSliderHistory[modul][i]; i++) {
		result.push(entry.uid);
	}
	return result.join(',');
}

function referencesAddSliderHistory(uid, content) {
	if(content==undefined) {
		var elm = document.getElementById('item_'+uid);
		if(elm) {
			content = elm;
			referencesSliderItemWidth = content.clientWidth;
		}
	}
	if(referencesSliderComplete[referencesActModul]==undefined) {
		referencesSliderComplete[referencesActModul] = false;
	}
	if(referencesSliderHistory[referencesActModul]==undefined) {
		referencesSliderHistory[referencesActModul] = new Array();
		referencesSliderHistoryIndex[referencesActModul] = 1;
	}
	referencesSliderHistory[referencesActModul].push({uid: uid, content: content});
}

function referencesStartSliderTimer(modul) {
	if(referencesSliderAutoplay[modul]!==false) {
		referencesSliderTimeout[modul] = window.setTimeout("referencesNextSliderItem("+modul+")", referencesSliderInterval);
	}
}

function referencesLoadNextSliderItem(modul, uid) {
	referencesSliderLoading[modul] = true;
	var url = 'index.php?id='+pageId+"&L="+language_uid+(projecttype!=0 ? '&projecttype='+projecttype : '')+'&eID=tx_pjreferences_slider&lastUid='+uid+'&modul='+modul;
	var myHTMLRequest = new Request.HTML({onSuccess: referencesOnLoadNextSliderItemComplete}).get(url);
}

function referencesOnLoadNextSliderItemComplete(responseText, bla, responseXML) {
	if(responseText[0].nodeType==3 && responseText[0].nodeValue=='false') {
		referencesSliderComplete[referencesActModul] = true;
		if(referencesSliderNextLoadDirection[referencesActModul]=='right') {
			referencesSliderLoading[referencesActModul] = false;
			referencesSliderHistoryIndex[referencesActModul] = referencesSliderHistory[referencesActModul].length+1;
			referencesPreviousSliderItem(referencesActModul);
		} else {
			referencesSliderLoading[referencesActModul] = false;
			referencesNextSliderItem(referencesActModul);
		}
	} else {
		var div = document.createElement('div');
		div.innerHTML = responseXML;
		var childs = div.firstChild;
		var id = childs.id.split('_');
		referencesAddSliderHistory(id[1], childs);
		if(referencesSliderNextLoadDirection[referencesActModul]=='right') {
			referencesSliderHistoryIndex[referencesActModul] = referencesSliderHistory[referencesActModul].length;
			referencesAddSliderItem(referencesActModul, childs, 'right', 'loaded');
		} else {
			referencesSliderHistoryIndex[referencesActModul]++;
			referencesAddSliderItem(referencesActModul, childs, 'left', 'loaded');
		}
	}
}

function referencesAddSliderItem(modul, node, direction, type) {
	var sd = document.getElementById('sliderDebug');
	//sd.innerHTML = type+": "+referencesSliderHistoryIndex[modul];
	var elm = document.getElementById('referencesSliderContent_'+modul);
	if(elm) {
		var elms = elm.getElementsByTagName('div');
		switch(direction) {
			case 'left':
				node.style.marginLeft = 0;
				elm.appendChild(node);
				var navigationSlide = new Fx.Tween(elms[0]);
				navigationSlide.addEvents({
			   		'complete': function() {
	   					elm.removeChild(elms[0]);
			   			referencesSliderLoading[modul] = false;
			   			referencesStartSliderTimer(modul);
    				}
				});
				navigationSlide.start('marginLeft', 0, -1*referencesSliderItemWidth);
				break;
			case 'right':
			   	var repChild = referencesGetLastItem(elm);
				var navigationSlide = new Fx.Tween(node);
				elm.insertBefore(node, elms[0]);
				node.style.marginLeft = (-1*referencesSliderItemWidth)+'px';
				navigationSlide.addEvents({
			   		'complete': function() {
			   			if(repChild) {
				   			elm.removeChild(repChild);
				   		}
	   					referencesSliderLoading[modul] = false;
	   					referencesStartSliderTimer(modul);
    				}
				});
				navigationSlide.start('marginLeft', -1*referencesSliderItemWidth, 0);
				break;
		}
	}
	if(Slimbox!=undefined) {
		Slimbox.scanPage();
	}
}

function referencesGetLastItem(elm) {
	var i, n, id;
	var lastItem = null;
	var nodeNames = '';
	for(i=0; n=elm.childNodes[i]; i++) {
		nodeNames += n.nodeName+' ';
		if(n.nodeType=1 && n.id) {
			id = n.id.split('_');
			if(id[0]=='item') {
				lastItem = n;
			}
		}
	}
	return lastItem;
}
