// global variables

var FontSize = 12;
var LineHeight = 15;
var ColWidth = 250;
var ColHeight =500;
var ColSpacing = 10;
var CurrentDiv;
var AlreadyDisplayed = 0;
var ArtDivId = 0;
var QueuedImage = null;
var TeaserSpace = 4 * LineHeight;
var Links = null;

function check_ie_mac () {
	var agt = navigator.userAgent.toLowerCase();
	var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
	var is_mac = (agt.indexOf("mac")!=-1);

	// IE for Mac is much to broken for this, so we don't even try... 

	if (is_ie && is_mac) {
		return 1;
	}
	return 0;
}
function check_js () {
	if (document.getElementById("hidetext") &&
	    document.getElementById("hidetext").offsetHeight > 0) {
		return 1;
	} else {
		return 0;
	}
}

function scrollWheel() {
	window.scrollBy(-event.wheelDelta,0);
	return false;
}

// initarticle
// init layout, set source div containing the article text
// textobj: id of article-text-div

function initarticle (textobj,links,colwidth) {
	document.getElementById("hidetext").style.display="none"; // hide plain layout
	CurrentDiv = document.getElementById(textobj).firstChild;
	if (document.getElementById(links)) {
		Links = document.getElementById(links);
	}
	ColWidth = colwidth;
	document.onmousewheel=scrollWheel;
}

function getHeight(obj) {
	if (obj == "window") {
		if (window.innerHeight) return window.innerHeight
		else return document.getElementById("bodyNode"). offsetHeight;
	} else {
		obj = document.getElementById(obj);
		if (obj.offsetHeight) return obj.offsetHeight;
	}
}

function format_div (thisdiv) { 	
	thisdiv.style.fontSize = FontSize + "px";
	thisdiv.style.lineHeight = LineHeight + "px";
	thisdiv.style.zIndex = 5;
	thisdiv.style.width = ColWidth + "px";
	thisdiv.style.position = "absolute";
}

function createPage(x,y,height,width) {
	width = 3*ColWidth + 4*ColSpacing;
	document.write('<div class="ArticleFrame" id="artdiv' + ArtDivId +
	  '" style="height:' + height + 'px;' +
	  'width:' + width + 'px;' + 'position:absolute; top:' + y + 'px;' +
	   'left:' + x + 'px">');
	var finished = false;
	var linksdiv = false;
	for (i = 0; i<=2; i++) {
		document.write('<div id="col' + ArtDivId + '_' + i + '"' +
		  'class="artCol"' + 
		  'style="position:absolute;height:' + (height - 20) + 'px' +
		  ';width:' + ColWidth + 'px;' + 'top:10px;left:' +
		  (ColSpacing + i * (ColSpacing+ColWidth)) +'px"' + 
		  '>');
		document.write('</div>');
		if (linksdiv) {
			var thisdiv = document.getElementById('col' + ArtDivId + "_" + i);
			thisdiv.style.borderLeft="1px dotted #850011";
			thisdiv.style.paddingLeft="10px";
			linksdiv = false;
		}
		if (!fillDiv('col' + ArtDivId + '_' + i)) {
			if (Links) {
				if (i<2) {
					linksdiv = true;
				}
				CurrentDiv = Links;
				Links = null;
			} else {
				finished = true;
				break;	
			}
		}
	}  
	document.write('</div>');		
	ArtDivId++;
	return !finished;
}

function gallery_change(galleryentry) {
	document.getElementById('galleryimage').src=galleryentry[0];
	document.getElementById('gallerybu').innerHTML=galleryentry[1];
	document.getElementById('gallerycopyright').innerHTML=galleryentry[2];
}

function createTitlePage(x,y,height,width,gallery,printlink,server) {
	
	var innerframeheight = height - 40;

	document.write('<!--a href="' + server + '/text' + printlink +'"><img src="http://zeus.zeit.de/bilder/leben_neu/icon_print.gif" style="position:absolute;left:6px;top:310px" border="0"></a-->');
	document.write('<!--a href="' + server + '/send' + printlink +'"><img src="http://zeus.zeit.de/bilder/leben_neu/icon_mail.gif" style="position:absolute;left:5px;top:418px" border="0"></a-->');
	document.write('<div id="titlepage" class="TitlePageFrame" ' + 
	  'style="height:' + height + 'px;' + 'width:' + width + 'px;' +
	  'position:absolute; top:' + y + 'px;' + 'left:' + x + 'px">');
	document.write('<div id="innerframe" class="TitlePageInnerFrame"' +
	  '" style="height:' + innerframeheight + 'px;' + 'width:' + (width-ColSpacing) + 'px;' +
	  'position:absolute; top:' + 40 + 'px;">');
	if (gallery) {
		document.write('<table style="position:absolute;top:12px;" cellspacing="0" cellpadding="0" border="0" width="300">');
		document.write('<tr><td>');
		document.write('<img src="' + gallery[0][0] + '" border="0" id="galleryimage">');
		document.write('</td></tr><tr><td style="padding-left:3px;font-size:11px" id="gallerybu">');
		document.write(gallery[0][1]);
		document.write('</td></tr><tr><td align="right" style="font-size:10px" id="gallerycopyright">');
		document.write(gallery[0][2]);
		document.write('</td></tr><tr><td>');
		document.write('<br>');
		document.write('<table cellspacing="0" cellpadding="0" border="0">');
		document.write('<tr>');
		for (var i=0; i < gallery.length; i++) {
			document.write('<td>');
			if (gallery[i][3] != '') { 
				document.write('<a href="javascript:gallery_change(gallery[' + i + '])"><img src="' + gallery[i][3] + '" width="40" height="40" border="0"></a>');
			}
			document.write('</td>');
			document.write('<td>&nbsp;</td>');
		}
		document.write('</tr></table>');
		document.write('</td></tr></table>');
	}
	document.write('</div>');
	document.write('</div>');

	var toptitles = document.getElementById('toptitles');

	document.getElementById('innerframe').appendChild(toptitles);
	toptitles.style.position="absolute";
	toptitles.style.top="0px";
	
	var titles = document.getElementById('titles');
	var haspicture = (gallery && gallery[0][0] != '');
	
	if (titles) {
		document.getElementById('innerframe').appendChild(titles);
		titles.style.position="absolute";
		titles.style.left=(haspicture?"350px":"10px");
		if (toptitles.offsetWidth > 300) {
			titles.style.top="20px";
		} else { 
			titles.style.top=(haspicture?"0px":"20px");
		}
	}

	if (!haspicture) { // no picture --> the article starts here
		var linksdiv = false;
		var finished = false;
		for (i = 0; i<=2; i++) {
			var thisdiv = document.createElement('div');
			thisdiv.className="artCol";
			thisdiv.id="coltitle_" + i;
			thisdiv.style.position="absolute";
			thisdiv.style.width = ColWidth + "px";
			var coltop = titles.offsetHeight + TeaserSpace;
			coltop = (coltop - (coltop % LineHeight));
			thisdiv.style.height=innerframeheight - coltop - 10 + "px";
			thisdiv.style.top = coltop + "px";
			thisdiv.style.left=(ColSpacing + i * (ColSpacing + ColWidth)) + "px";
			document.getElementById("innerframe").appendChild(thisdiv);
			if (linksdiv) {
				thisdiv.style.borderLeft="1px dotted red";
				thisdiv.style.paddingLeft="10px";
				linksdiv = false;
			}
			if (!fillDiv('coltitle' + '_' + i)) {
				if (Links) {
					if (i<2) {
						linksdiv = true;
					}
					CurrentDiv = Links;
					Links = null;
				} else {
					finished = true;
					break;	
				}
			}  
		}	
	}

	if (finished) {
		document.getElementById('titlepage').style.borderRight="1px solid #850011";
	}
	return finished;
}

/* fillDiv
 * Fill targetdiv with article-text, return rest of article in pixels
 *
 * targetdiv: id of target div
 */
 
function fillDiv(targetdiv) {
	var newcol = document.getElementById(targetdiv);
	newcol.style.width = ColWidth + "px";

	// get height and make it a multiple of LineHeight

	var newheight = newcol.offsetHeight;
	newheight = (newheight - (newheight % LineHeight));
	newcol.style.height = newheight + "px";

	// enlarge height by clipped text area

	var thisheight = -AlreadyDisplayed;
	AlreadyDisplayed = 0;

	if (QueuedImage) {
		var position = QueuedImage.getAttribute("align");
		if (position == "top") {
			position = 0;
		} else if (position == "bottom") { 
			position = 1;
		} else {
			position = (thisheight > (newheight/2)); 
		}
		var imageheight = format_image(newcol, QueuedImage, position);
		imageheight = (imageheight - (imageheight % LineHeight));
		imageheight += LineHeight;
		newheight -= imageheight;
		newcol.style.height = newheight + "px";
		if (position == 0) {
			newcol.style.top = 10 + imageheight + "px"; 
		} 
		QueuedImage=null;
	}

	// fill column with text until it is full

	while (thisheight < newheight 
//		&& (newheight - thisheight > LineHeight) 
		&& CurrentDiv != null) {
		if (CurrentDiv.nodeName == "DIV") {
			var ctext = CurrentDiv.cloneNode(true);
			newcol.appendChild(ctext);
			ctext.style.top = thisheight + "px";
			ctext.style.display = "block"; // allow display
			format_div(ctext);
			var advance = ctext.offsetHeight;
//			ctext.innerHTML=advance;
			thisheight += advance;
			/* if all of this div doesn't fit, calculate visible area */
			if (thisheight > newheight) {
				AlreadyDisplayed = (newheight - thisheight) + advance;
			} else {
				thisheight += LineHeight; // add one line spacing between paragraphs
				CurrentDiv = CurrentDiv.nextSibling;
			}
		} else if (CurrentDiv.nodeName == "IMG") {
			// does the image still fit in this column?
			if (CurrentDiv.getAttribute("layoutheight") + thisheight > newheight) {
				QueuedImage = CurrentDiv;	
			} else {
				var position = CurrentDiv.getAttribute("align");
				if (position == "top") {
					position = 0;
				} else if (position == "bottom") { 
					position = 1;
				} else {
					position = (thisheight > (newheight/2)); 
				}
				var imageheight = format_image(newcol, CurrentDiv, position);
				imageheight = (imageheight - (imageheight % LineHeight));
				imageheight += LineHeight;
				newheight -= imageheight;
				newcol.style.height = newheight + "px";
				if (position == 0) { // image at top, move column
					newcol.style.top = 10 + imageheight + "px"; 
				} 
			}
			CurrentDiv = CurrentDiv.nextSibling;
		} else { // we don't care for other elements...
			CurrentDiv = CurrentDiv.nextSibling;
		}
	}

	// is there something left to layout?
	return ((AlreadyDisplayed != 0) || CurrentDiv);
}

function format_image(column, image, position) {
	var imageheight = image.getAttribute("layoutheight");
	var newimage = image.cloneNode(true);
	column.parentNode.appendChild(newimage);
	newimage.style.position="absolute";	
	newimage.style.display="block";
	newimage.style.left = column.style.left;
	if (position == 0) {  // top
		newimage.style.top = "0px";
	} else { // bottom
		newimage.style.top = column.parentNode.offsetHeight - imageheight - 2  + "px";
	}
	return imageheight;
}
		
/* getparam
 *
 * get URL-Param theparam and return its string value.
 */ 

function getparam (theparam) {
    var query=document.location.search.substring(1);
    if (query.length > 0){
        var params=query.split("&");
        for (var i=0; i<params.length; i++){
        	var param = params[i].split("=");
        	if (param[0] == theparam) {
        		return param[1]; // found it
        	} 
        }
    }
    return "";
}

function getURL () {
	var url = document.location.href;
	return url.substring(0,url.indexOf("?"));
}

function page_icons (totalpages, totalimages) {
	var mydiv = document.createElement('div');
	var mypage = document.createElement('img');
	mypage.setAttribute('src', 'images/icon_page.gif');
	mypage.setAttribute('alt', 'Seitenanzahl');
	var myimage = document.createElement('img');
	myimage.setAttribute('src', 'http://zeus.zeit.de/bilder/leben_neu/icon_image.gif');
	myimage.setAttribute('alt', 'image');
	for (var i=1; i<=totalpages; i++) {
		mydiv.appendChild(mypage.cloneNode(true));
	}
	for (var i=1; i<=totalimages; i++) {
		mydiv.appendChild(myimage.cloneNode(true));
	}
	document.getElementById('titlepage').appendChild(mydiv);
}

function navigation (breadcrumbs, y, thispage, totalpages, pagewidth) {
	document.write('<div class="Navigation" style="position:absolute;top:' + y 
			+ 'px;left:' + (20+(thispage-1)*pagewidth) + 'px;width:' + 
			(pagewidth-ColSpacing) + 'px; text-align:right">');
	document.write(breadcrumbs);
	document.write('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp');
	if (thispage > 1) {
		document.write('<a href="javascript:{};" onclick="javascript:window.scrollTo(' +
				 (20+(thispage - 2)*pagewidth) + ',0)"><b>&laquo;</b></a> ');
	}
	for (var i = 1; i<= totalpages; i++) {
		document.write('<span id="page' + i +'"');
		if (i == thispage) {
			document.write(' class="CurrentPage"');
		}
		document.write('>');
		document.write('<a href="javascript:{};" onclick="javascript:window.scrollTo(' + 
				(20+(i-1)*pagewidth) + ',0)">' + i + '</a></span> ');
	}
	if (thispage < totalpages) {
	    document.write('<a href="javascript:{};" onclick="javascript:window.scrollTo(' +
			    (20+thispage*pagewidth) + ',0)"><b>&raquo</b></a> ');
	}
	document.write('</div>');
}

