var smr = "smr";
var pageId = 0;
var smrLanguage = 0;
var projecttype = 0;
var smrActModul = 0;
var smrSliderCount = 0;
var smrSliderOffset = 0;
var smrSliderLoading = new Object();
var smrSliderHistory = new Object();
var smrSliderTimeout = new Object();
var smrSliderComplete = new Object();
var smrSliderHistoryIndex = new Object();
var smrSliderAutoplay = new Object();
var smrSliderNextLoadDirection = new Object();
var smrSliderInterval = 2500;
var smrSliderItemHeight = 0;
var test = 0;

function smrNextSliderItem(modul) {
	if(smrSliderCount>smrSliderOffset) {
		if(!smrSliderLoading[modul] || (smrSliderLoading[modul]==undefined && smrSliderComplete[modul])) {
			smrSliderPause(modul);
			if(((smrSliderHistoryIndex[modul]+smrSliderOffset)<smrSliderHistory[modul].length) || smrSliderComplete[modul]) {
				smrSliderLoading[modul] = true;
				smrSliderHistoryIndex[modul]++;
				var obj = smrSliderHistory[modul][smrSliderHistoryIndex[modul]+smrSliderOffset-2];
				if(obj==undefined) {
					obj = smrSliderHistory[modul][-1*(smrSliderCount-(smrSliderHistoryIndex[modul]+smrSliderOffset-2))];
				}
				if(smrSliderHistoryIndex[modul]>smrSliderHistory[modul].length) {
					smrSliderHistoryIndex[modul] = 1;
				}
				smrAddSliderItem(modul, obj.content, 'left', 'default');
			} else {
				smrSliderNextLoadDirection[modul] = 'left';
				smrLoadNextSliderItem(modul, smrSliderUidString(modul));
			}
		}
	}
}

function smrPreviousSliderItem(modul) {
	if(!smrSliderLoading[modul]) {
		smrSliderPause(modul);
		if(smrSliderHistoryIndex[modul]>1) {
			smrSliderLoading[modul] = true;
			smrSliderHistoryIndex[modul]--;
			smrAddSliderItem(modul, smrSliderHistory[modul][smrSliderHistoryIndex[modul]-1].content, 'right', 'default');
		} else if(smrSliderComplete[modul] && smrSliderHistoryIndex[modul]==1) {
			smrSliderLoading[modul] = true;
			smrSliderHistoryIndex[modul] = smrSliderHistory[modul].length;
			smrAddSliderItem(modul, smrSliderHistory[modul][smrSliderHistoryIndex[modul]-1].content, 'right', 'last');
		} else if(smrSliderHistoryIndex[modul]==1) {
			smrSliderNextLoadDirection[modul] = 'right';
			smrLoadNextSliderItem(modul, smrSliderUidString(modul));
		}
	}
}

function smrSliderPause(modul) {
	var i;
	for(i=0; smrSliderTimeout[modul][i]; i++) {
		clearTimeout(smrSliderTimeout[modul][i]);
	}
}

function smrSliderResume(modul) {
	smrSliderPause(modul);
	smrStartSliderTimer(modul);
}

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

function smrAddSliderHistory(uid, content) {
	if(content==undefined) {
		var elm = document.getElementById('item_'+uid);
		if(elm) {
			content = elm;
			smrSliderItemHeight = content.clientHeight+20;
		}
	}
	if(smrSliderComplete[smrActModul]==undefined) {
		smrSliderComplete[smrActModul] = false;
	}
	if(smrSliderHistory[smrActModul]==undefined) {
		smrSliderHistory[smrActModul] = new Array();
		smrSliderHistoryIndex[smrActModul] = 1;
	}
	smrSliderHistory[smrActModul].push({uid: uid, content: content});
}

function smrStartSliderTimer(modul) {
	if(smrSliderAutoplay[modul]!==false) {
		if(smrSliderTimeout[modul]==undefined) {
			smrSliderTimeout[modul] = new Array();
		}
		smrSliderTimeout[modul].push(window.setTimeout("smrNextSliderItem("+modul+")", smrSliderInterval));
	}
}

function smrLoadNextSliderItem(modul, uid) {
	smrSliderLoading[modul] = true;
	var url = '/index.php?id='+pageId+'&test='+test+(projecttype!=0 ? '&projecttype='+projecttype : '')+'&eID=tx_pjsmr_slider&lastUid='+uid+'&modul='+modul+'&L='+smrLanguage;
	var myHTMLRequest = new Request.HTML({onSuccess: smrOnLoadNextSliderItemComplete}).get(url);
}

function smrOnLoadNextSliderItemComplete(responseText, bla, responseXML) {
	if(responseText[0].nodeType==3 && responseText[0].nodeValue=='false') {
		smrSliderComplete[smrActModul] = true;
		if(smrSliderNextLoadDirection[smrActModul]=='right') {
			smrSliderLoading[smrActModul] = false;
			smrSliderHistoryIndex[smrActModul] = smrSliderHistory[smrActModul].length+1;
			smrPreviousSliderItem(smrActModul);
		} else {
			smrSliderLoading[smrActModul] = false;
			smrNextSliderItem(smrActModul);
		}
	} else {
		var div = document.createElement('div');
		div.innerHTML = responseXML;
		var childs = div.firstChild;
		var id = childs.id.split('_');
		smrAddSliderHistory(id[1], childs);
		if(smrSliderNextLoadDirection[smrActModul]=='right') {
			smrSliderHistoryIndex[smrActModul] = smrSliderHistory[smrActModul].length;
			smrAddSliderItem(smrActModul, childs, 'right', 'loaded');
		} else {
			smrSliderHistoryIndex[smrActModul]++;
			smrAddSliderItem(smrActModul, childs, 'left', 'loaded');
		}
	}
}

function smrAddSliderItem(modul, node, direction, type) {
	var sd = document.getElementById('sliderDebug');
	//sd.innerHTML = type+": "+smrSliderHistoryIndex[modul];
	var elm = document.getElementById('smrSliderContent_'+modul);
	if(elm) {
		var elms = elm.getElementsByTagName('div');
		switch(direction) {
			case 'left':
				node.style.marginTop = 0;
				elm.appendChild(node);
				var myTransition = new Fx.Transition(Fx.Transitions.Bounce, 3);
				var navigationSlide = new Fx.Tween(elms[0], {property: 'marginTop', duration: 750, transition: myTransition.easeOut});
				navigationSlide.addEvents({
			   		'complete': function() {
	   					elm.removeChild(elms[0]);
			   			smrSliderLoading[modul] = false;
	   					smrStartSliderTimer(modul);
    				}
				});
				navigationSlide.start(0, (-1*smrSliderItemHeight));
				break;
			case 'right':
			   	var repChild = smrGetLastItem(elm);
				var navigationSlide = new Fx.Tween(node);
				elm.insertBefore(node, elms[0]);
				node.style.marginTop = (-1*smrSliderItemHeight)+'px';
				navigationSlide.addEvents({
			   		'complete': function() {
			   			if(repChild) {
				   			elm.removeChild(repChild);
				   		}
	   					smrSliderLoading[modul] = false;
	   					smrStartSliderTimer(modul);
    				}
				});
				navigationSlide.start('marginTop', -1*smrSliderItemHeight, 0);
				break;
		}
	}
	if(Slimbox!=undefined) {
		Slimbox.scanPage();
	}
}

function smrGetLastItem(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;
}
