var MRCalendar = new Object();

function initMRCalendar(akkordeonStart, akkordeonEnd) {
	var a=0;
	while(domID('MRCalendar_addableContainer_'+a)){
		var holder=domID('MRCalendar_addableContainer_'+a);
		holder.setAttribute('cID', a);
		MRCalendar.toggleAddableMinus(holder);
		//MRCalendar.addField(holder,null);
		a++;
	}

	MRCalendar.akkordeon = new Object();
	MRCalendar.akkordeon.active=1;
	MRCalendar.calcArray = new Array();
	
	a=parseInt(akkordeonStart);
	while(a<=parseInt(akkordeonEnd)){
		var theItem = domID('MRCalendar_akkordeon_'+a);
		if (theItem) {
			if(theItem.parentNode.parentNode.id == 'todaysFirstEvent') akkordeonStart = a;
			theItem.style.height='0px';
			theItem.style.opacity='0';
			theItem.style.filter='Alpha(opacity=0)';
			//theItem.style.visibility='hidden';
		}
		a++;
	}
	if (domID('MRCalendar_akkordeon_'+akkordeonStart)) {
		setTimeout(function(){MRCalendar.toggleAkkordeon(domID('MRCalendar_akkordeon_'+akkordeonStart), domID('MRCalendar_akkordeonToggler_'+akkordeonStart), true)}, 500);
	}
	
	MRCalendar.scrollY = 0
	MRCalendar.firstTodaysFirstEvent = domID('todaysFirstEvent');
	if (MRCalendar.firstTodaysFirstEvent) {
		MRCalendar.newScrollY = MRCalendar.firstTodaysFirstEvent.offsetTop-132;
		setTimeout('startScrollToToday()', 1200);
	}
}

MRCalendar.addField = function(holder,currentSet) {
	var sID=currentSet ? parseInt(currentSet.getAttribute('sID')) : -1;
	if(!(parseInt(holder.getAttribute('count'))>0)) holder.setAttribute('count', 0);
	var prefix='MRCalendar_addableFields_'+holder.getAttribute('cID')+'_';
	var o=domID(prefix+'template');
	var n=o.cloneNode(true);
	n.id=prefix+'_new';
	n.style.display='';
	if(sID+1<holder.getAttribute('count')){
		holder.insertBefore(n,domID(prefix+(sID+1)));
		for(var s=holder.count-1;s>sID;s--){
			domID(prefix+s).setAttribute('sID', s+1);
			domID(prefix+s).id=prefix+(s+1);
			
		}
	} else {
		holder.appendChild(n);
	}
	n.id=prefix+(sID+1);
	n.setAttribute('sID', sID+1);
	
	var inputs=byTAG(n, 'INPUT');
	for(var i=0;i<inputs.length;i++) {
		if (inputs[i].className != 'MRCalendar_unaddable') {
			var theInput=inputs[i];
			theInput.id = theInput.id.split(']').join('_'+(sID+1)+']');
			var varName = theInput.id.split('[');
			varName = varName[1].split(']');
			varName = varName[0];
			theInput.name = theInput.id;
			
			if (theInput.getAttribute('addvalueto')) {
				var sumField = 'MRCalendar['+theInput.getAttribute('addvalueto')+']';
				var fieldArray = domID(sumField).fields;
				fieldArray.push(varName);
				domID(sumField).fields = fieldArray;
				MRCalendar.registerSumFields(sumField, fieldArray)
			}
		}
	}
	var labels=byTAG(n, 'LABEL');
	for(var i=0;i<labels.length;i++) {
		var theLabel=labels[i];
		theLabel.setAttribute('for', theLabel.getAttribute('for').split(']').join('_'+(sID+1)+']'));
	}	
	holder.setAttribute('count', parseInt(holder.getAttribute('count'))+1);

	MRCalendar.toggleAddableMinus(holder);
	inputs=byTAG(n, 'INPUT');
	for(var i=0;i<inputs.length;i++) {
		if (inputs[i].className != 'MRCalendar_unaddable') {
			inputs[i].focus();
			break;
		}
	}
}

MRCalendar.removeField = function(holder,currentSet) {
	var inputs=byTAG(currentSet, 'INPUT');
	for(var i=0;i<inputs.length;i++) {
		var theInput=inputs[i];
		if (theInput.className != 'MRCalendar_unaddable') {
			var varName = theInput.id.split('[');
			varName = varName[1].split(']');
			varName = varName[0];
			if (theInput.getAttribute('addvalueto')) {
				var sumField = 'MRCalendar['+theInput.getAttribute('addvalueto')+']';
				var fieldArray = domID(sumField).fields;
				for (var s=0;s<fieldArray.length;s++) {
					if (fieldArray[s] == varName) {
						fieldArray.splice(s, 1);
						break;
					}
				}
				domID(sumField).fields = fieldArray;
				MRCalendar.registerSumFields(sumField, fieldArray)
			}
		}
	}


	var sID=parseInt(currentSet.getAttribute('sID'));
	holder.removeChild(currentSet);
	var prefix='MRCalendar_addableFields_'+parseInt(holder.getAttribute('cID'))+'_';
	for(var s=sID+1;s<parseInt(holder.getAttribute('count'));s++){
		domID(prefix+s).setAttribute('sID', s-1);
		domID(prefix+s).id=prefix+(s-1);
	}
	inputs=byTAG(holder, 'INPUT');
	for(var i=0;i<inputs.length;i++) {
		if (inputs[i].className != 'MRCalendar_unaddable') {
			inputs[i].focus();
			inputs[i].blur();			
		}
	}
	holder.setAttribute('count', parseInt(holder.getAttribute('count'))-1);
	MRCalendar.toggleAddableMinus(holder);
}

MRCalendar.toggleAddableMinus = function(holder){
	var prefix='MRCalendar_addableFields_'+holder.getAttribute('cID')+'_';
	for(var s=0;s<parseInt(holder.getAttribute('count'));s++){
		var n=domID(prefix+s).childNodes;
		for(var c=n.length-1;c>=0;c--){
			if(n[c].nodeName=='DIV' && n[c].getAttribute('class') && n[c].getAttribute('class')=="MRCalendar_minus") n[c].style.visibility = parseInt(holder.getAttribute('count'))==1 ? 'hidden' : 'visible';
		}
	}
}

MRCalendar.toggleAkkordeon = function(entry, theButton, doOpen, hideOnly) {
	var allowOpen=true;
	var oldEntry = MRCalendar.akkordeon.current ? domID(MRCalendar.akkordeon.current) : false;
	entry.hgt ? null : entry.hgt = entry.offsetHeight;
	if (oldEntry && oldEntry.isOpen) {
		oldEntry.newHeight = 1;
		if (hideOnly) oldEntry.theButton.style.display = 'none';
		oldEntry.theButton.style.background = 'url("fileadmin/templates/grafiken/arrowDown.png") repeat scroll 0% 0% transparent';
		if(oldEntry == entry && entry.isOpen) allowOpen=false;
		oldEntry.isOpen = false;
		startFade(oldEntry,0);
		
		clearInterval(oldEntry.apv);
		oldEntry.apv = setInterval(function(){animateProperty(oldEntry, "height", "px", "hgt", "newHeight", "apv", .2)}, 20);
	}
	if (entry != null && allowOpen) {
		
		theButton.style.background = 'url("fileadmin/templates/grafiken/arrowUp.png") repeat scroll 0% 0% transparent';
		theButton.style.display = 'normal';
		entry.theButton = theButton;
		
		entry.hgt ? null : entry.hgt = entry.offsetHeight;
		entry.isOpen = true;
		MRCalendar.akkordeon.active=1;
		entry.style.height='auto';
		entry.newHeight = entry.offsetHeight;
		startFade(entry,100);
		entry.style.height = entry.hgt+"px";
		clearInterval(entry.apv);
		entry.apv = setInterval(function(){animateProperty(entry, "height", "px", "hgt", "newHeight", "apv", .3, MRCalendar.fixBackHeight)}, 20);
	}
	MRCalendar.akkordeon.current = entry.id;
}
MRCalendar.fixBackHeight = function() {

	var theBox = $j('#'+MRCalendar.akkordeon.current).parent().parent().children('div')[0].lastChild;
	if(theBox && theBox.style) theBox.style.height = '100%';
}

function startScrollToToday() {
	clearInterval(MRCalendar.asv);
	MRCalendar.asv=setInterval('scrollToToday()', 20);	
}

function scrollToToday() {
	MRCalendar.scrollY += (MRCalendar.newScrollY-MRCalendar.scrollY)*.15;
	if (Math.abs(MRCalendar.newScrollY-MRCalendar.scrollY)<1) {
		MRCalendar.scrollY=MRCalendar.newScrollY;
		clearInterval(MRCalendar.asv);
	}
	window.scrollTo(0,MRCalendar.scrollY);
}



