var CONTAINER_PREFIX = "detailToggled";

function getParentDivOrTd(elem){
	var e = elem;
	do{
		e = e.parentNode;
	}while (e.tagName!="DIV" && e.tagName!="TD");
	return e;
}

var origTexts = [];
var toggleExpanded = [];

function createExpandButton(id){
	var onclick = "toggleContainer("+ id +");";
	return '<img src="http://espressofilm.at/grafik/rechts.gif" height="11" width="11" border="0" onclick="'
		+ onclick +'">';
}

function createCollapseButton(id){
	var onclick = "toggleContainer("+ id +");";
	return '<img class="collapse" src="http://espressofilm.at/grafik/links.gif" height="11" width="11" border="0" onclick="'
		+ onclick +'">';
}

function getContainer(id){
	var container = document.getElementById(CONTAINER_PREFIX+id);
	if (container){
		return container;
	}else{
		alert("this cannot happen: container with id "+ CONTAINER_PREFIX+id 
				+" does not exist!");
		return null;
	}
}

function toggleContainer(id){
	var container = getContainer(id);
	if (container){
		if (toggleExpanded[id]){
			collapse(id);
		}else{
			expand(id);
		}
	}
}

function expand(id){
	var container = getContainer(id);
	if (container){
		if (origTexts[id]==undefined){
			alert("this cannot happen: origText undefined for id "+ id);
		}
		container.innerHTML = origTexts[id]+createCollapseButton(id);
		toggleExpanded[id] = true;
	}
}

function collapse(id){
	var container = getContainer(id);
	if (container){
		if (origTexts[id]==undefined){
			origTexts[id] = container.innerHTML;
		}
		container.width = "65%";
		var content = container.innerHTML.toLowerCase();
		var pos = content.indexOf("detailtoggle");
		var teaser = container.innerHTML.substr(0, pos-14)+"... "+ createExpandButton(id);
		container.innerHTML = teaser;
		toggleExpanded[id] = false;
	}
}

function expandAll(){
	for (var i=0; (container=document.getElementById(CONTAINER_PREFIX+i))!=null; i++){
		expand(i);
	}
}

function collapseAll(){
	for (var i=0; (container=document.getElementById(CONTAINER_PREFIX+i))!=null; i++){
		collapse(i);
	}
}

function togglePrintView(){
	var printCSS = document.getElementById('printPreviewCSS');
	var mainCSS = document.getElementById('mainCSS');
	if(printCSS.media == 'all'){
		removePreviewMessage();
		printCSS.media = 'none';
		mainCSS.media = 'screen,projection';
		collapseAll();
	}else{
		printCSS.media = 'all';
		mainCSS.media = 'none';
		addPreviewMessage();
		expandAll();
		//removeTableWidths();
		window.print();
	}
}

function removeTableWidths(){
	for (var i=0; (container=document.getElementById(CONTAINER_PREFIX+i))!=null; i++){
		if (container.tagName=="TD"){
			container.width = "";
		}
	}
}

function removePreviewMessage() {
	// Destroy the preview message
	var print_preview = document.getElementById('preview-message');
	var main_body = print_preview.parentNode;
	main_body.removeChild(print_preview);
}

function addPreviewMessage(){
	var main_content = document.getElementById('content');
	var main_body = main_content.parentNode;
	
	if (document.getElementById){
	
		var preview_message = document.createElement('div');
		preview_message.id = 'preview-message';
		
		// Create Heading
		var preview_header = document.createElement('h3');
		var preview_header_text = document.createTextNode('Dies ist eine Druckvorschau der Seite!');
		preview_header.appendChild(preview_header_text);
		
		// Create paragraph
		var preview_para = document.createElement('p');
		var preview_para_text = document.createTextNode('Diese Einblendung wird natürlich nicht mitgedruckt. ');
		
		var cancel_function_link = document.createElement('a');
		cancel_function_link.onclick = 
			function(){ 
				togglePrintView();
				return false;
			};
		cancel_function_link.setAttribute('href', '#');    
		var cancel_function_link_text = document.createTextNode('Zur ursprünglichen Seite zurückkehren.');
		cancel_function_link.appendChild(cancel_function_link_text);
		preview_para.appendChild(preview_para_text); 
		preview_para.appendChild(cancel_function_link);
		
		// Put it all together
		preview_message.appendChild(preview_header); 
		preview_message.appendChild(preview_para);
		main_body.insertBefore(preview_message, main_content);
	
	}
}

function findPlayer() {
	var content = document.getElementById('content');
	for (var i=0; (child = content.children[i])!=null; i++){
		alert( child.id);
	}
}

function scanPage(){
	
	//findPlayer();

	// show print button, now that we have JS
	var printButton = document.getElementById("print");
	if (printButton){
		printButton.style.display = "block";
	}
	
	var spans = document.getElementsByTagName("span");
	var toggles = [];
	for (var i = 0; (span = spans[i]) != null; i++) {
		var elementClass = span.className;
		if (elementClass && elementClass.indexOf("detailToggle") != -1 
				// && hasClassName.test(elementClass)
				)
			toggles.push(span);
	}
	for (var i=0; (toggle=toggles[i])!=null; i++){
		par = getParentDivOrTd(toggle);
		par.id = CONTAINER_PREFIX+i;
		collapse(i);
	}
}

