var iSelectedChapter = -1;
var iSelectedSub = -1;
var iSelectedItem = -1;

var bDisplayImages = false;
var iTogglePostit = 1 + Math.floor( Math.random( ) * 8 );
var iBackLinkPostit = 1 + Math.floor( Math.random( ) * 8 );

var aContentImages = [ ];
var iContentImageIndex = 0;

function displayContent( oContentHTTP ) {
	var oContentDiv = document.getElementById( "content" );
	oContentDiv.style.marginTop = 16 + oContentOffset.y * ( oThumbSize.height + oThumbSpacing.y - 8 );
	oContentDiv.style.display = "block";
	oContentDiv.innerHTML = '<div id="contenttext" style="width:478px; height:284px; _height:314px; padding:0px; _margin-top:-15px;"><table height="100%"><tr><td>' + oContentHTTP.responseText + '</td></tr></table></div>';
}

function loadImage( iImageIndex ) {
	var oImageDIV = document.getElementById( "contentimage" ).firstChild;
	var oMovieDIV = document.getElementById( "contentmovie" );
	
	if ( aContentImages[ iImageIndex ].indexOf( "<iframe" ) != -1 ) {
		oImageDIV.className = "invisible";
		
		var sVideoFrame = aContentImages[ iImageIndex ];
		oMovieDIV.innerHTML = sVideoFrame;
		oMovieDIV.className = "visible";
	} else {	
		if ( oImageDIV.tagName == "IMG" ) {
			oImageDIV.setAttribute( "src", aContentImages[ iImageIndex ] );
			oImageDIV.className = "visible";
			
			oMovieDIV.innerHTML = "";
			oMovieDIV.className = "invisible";
		}
	}
}
function showText( ) {
	var oTextDIV = document.getElementById( "contenttext" );
	if ( oTextDIV != undefined ) oTextDIV.className = "visible";
	
	var oTitleHeader = document.getElementById( "itemtitle" );
	if ( oTitleHeader != undefined ) oTitleHeader.className = "invisible";
} 
function hideText( ) {
	var oTextDIV = document.getElementById( "contenttext" );
	if ( oTextDIV != undefined ) oTextDIV.className = "invisible";
	
	var oTitleHeader = document.getElementById( "itemtitle" );
	if ( oTitleHeader != undefined ) oTitleHeader.className = "visible";
}

function nextImage( ) {
	var oImageDIV = document.getElementById( "contentimage" ).firstChild;
	var oMovieDIV = document.getElementById( "contentmovie" );
	
	iContentImageIndex++;
	if ( iContentImageIndex == aContentImages.length ) {	
		showText( );
		
		if ( oImageDIV.tagName == "IMG" ) {
			oImageDIV.className = "invisible";
			oMovieDIV.className = "invisible";
		}
	} else {
		if ( iContentImageIndex > aContentImages.length )	
			iContentImageIndex = 0;
			
		loadImage( iContentImageIndex );
		hideText( );
	}
}
function previousImage( ) {
	var oImageDIV = document.getElementById( "contentimage" ).firstChild;
	var oMovieDIV = document.getElementById( "contentmovie" );
	
	iContentImageIndex--;
	if ( iContentImageIndex == -1 ) { 
		showText( );
		
		if ( oImageDIV.tagName == "IMG" ) {
			oImageDIV.className = "invisible";
			oMovieDIV.className = "invisible";
		}
	} else {
		if ( iContentImageIndex < 0 )
			iContentImageIndex = aContentImages.length - 1;
			
		loadImage( iContentImageIndex );
		hideText( );
	}
}

function displayItem( oContentHTTP ) {
	var sContentSrc = oContentHTTP.responseText.split( "../" ).join( "" );
	sContentSrc = sContentSrc.split( "<body>" ).pop( ).split( "</body>" ).shift( );
	
	var aContentParts = sContentSrc.split( '<img src="' );
	var sContentTextParts = aContentParts.shift( );
	var aContentTextParts = sContentTextParts.split( "</h1>" );

	var bFirefox = ( navigator.userAgent.indexOf( "Firefox" ) != -1 );
		
	aContentImages = [ ];
	var aContentBits = sContentSrc.split( '<iframe src="' );
	if ( aContentBits.length > 1 ) {
		for ( var i=0; i<aContentBits.length; i++ )
			if ( aContentBits[ i ].substr( 0, 7 ) == "http://" ) {
				var sIframeContent = aContentBits[ i ].split( '</iframe>' )[ 0 ];
				
				var iWdth = Number( sIframeContent.split( 'width="' )[ 1 ].split( '"' )[ 0 ] );
				var iHght = Number( sIframeContent.split( 'height="' )[ 1 ].split( '"' )[ 0 ] );

				var sIframeStyle = ' style="width:' + iWdth + 'px; height:' + iHght + 'px;';
				if ( bFirefox ) {					
					sIframeStyle += ' margin-left:-' + ( iWdth + ( 960 - iWdth ) ) + 'px;'
								  + ' margin-top:-' + ( iHght / 2 ) + 'px;';
				}
				sIframeStyle += '" ';
				
				aContentImages.push( '<iframe ' + sIframeStyle + 'src="' + sIframeContent + '</iframe>' );
			}
	}
		
	var sContentTitle = "";
	var sContentText = "";
	if ( aContentTextParts.length > 1 ) {	
		sContentTitle = aContentTextParts.shift( ).split( "<h1>" ).pop( );
		sContentText = "<h1>" + sContentTitle + "</h1>" + aContentTextParts.shift( ).split( "<iframe" )[ 0 ];
	} else {
		sContentTitle = "";
		sContentText = aContentTextParts.shift( ).split( "<iframe" )[ 0 ];
	}
	
	iContentImageIndex = 0;
	for ( var i=0; i<aContentParts.length; i++ )
		aContentImages.push( aContentParts[ i ].split( '"/>' )[ 0 ] );

	var oContentDiv = document.getElementById( "content" );
	var sOutputHTML = '<div id="contentimage">';
	if ( aContentImages.length > 0 ) {
		
		if ( aContentImages[ 0 ].indexOf( "<iframe" ) != -1 ) {
			sOutputHTML += '<img src="#" class="invisible" />';
			sOutputHTML += '<div id="contentmovie" class="visible">' + aContentImages[ 0 ] + '</div>';
		} else {
			sOutputHTML += '<img src="' + aContentImages[ 0 ] + '" class="visible" />';
			sOutputHTML += '<div id="contentmovie" class="invisible"></div>';
		}
	}
	
	var sContentTextDisplay = "invisible";
	if ( aContentImages.length == 0 ) sContentTextDisplay = "visible";
	sOutputHTML += '<div id="contenttext" class="' + sContentTextDisplay + '"><table height="100%"><tr><td>' + sContentText + '</td></tr></table></div>';
	
	sOutputHTML += '</div>';
	

	if ( aContentImages.length + Number( sContentText.length != "" ) > 1 ) {
		sOutputHTML += '<div id="previous"><a href="#" onClick="previousImage(); this.blur();"><</a></div><div id="next"><a href="#" onClick="nextImage(); this.blur();">></a></div>';
	}
	
	if ( aContentImages.length > 0 ) {
		sOutputHTML += '<h1 id="itemtitle" align="right" style="padding:4px; _margin-top:8px;';
		if ( oContentDiv.className == "landscape" ) sOutputHTML += ' margin-right:28px!important;';
		sOutputHTML += '">' + sContentTitle + '</h1>';
	}
	
	oContentDiv.style.marginTop = 16 + oContentOffset.y * ( oThumbSize.height + oThumbSpacing.y - 8 );
	oContentDiv.style.display = "block";
	oContentDiv.innerHTML = sOutputHTML;
}

function sizeGrid( ) {

	// DETERMINE GRIDSIZE
	var iGridWidth = 2 * 16 + oGridSize.width * ( oThumbSize.width + oThumbSpacing.x ) + oThumbSpacing.x;
	var iGridHeight = 2 * 16 + 8 + oGridSize.height * ( oThumbSize.height + oThumbSpacing.y - 8 ) + oThumbSpacing.y;
	
	var iWindowWdth = window.innerWidth;
	if ( iWindowWdth == undefined ) iWindowWdth = document.body.clientWidth;
	var iWindowHght = window.innerHeight;
	if ( iWindowHght == undefined ) iWindowHght = document.body.clientHeight;
	
	// CALCULATE SCALEFACTOR
	var nScaleFactor = 1.0;
	if ( 2 * iGridWidth > iWindowWdth || 2 * iGridHeight > iWindowHght ) {
		if ( iGridWidth / iGridHeight > iWindowWdth / iWindowHght ) {
			nScaleFactor = iWindowWdth / iGridWidth;
		} else {
			nScaleFactor = iWindowHght / iGridHeight;
		}
	}
	
	// SCALE GRID-DIV
	var oGridDiv = document.getElementById( "grid" );
	oGridDiv.style.zoom =  ( 100 * nScaleFactor ) + "%";
	oGridDiv.style.MozTransform = "scale( " + nScaleFactor + ", " + nScaleFactor + ")";
	
	if  ( navigator.userAgent.indexOf( "MSIE" ) != -1 )
		oGridDiv.style.left = ( iWindowWdth ) / 2 -  - iGridWidth * ( 1 - nScaleFactor ) / 2;
	
	// SCALE BACKGROUND-DIV
	var oBackgroundDiv = document.getElementById( "background" );
	oBackgroundDiv.style.height = Math.round( nScaleFactor * ( 2 * 16 + oGridSize.height * ( oThumbSize.height + oThumbSpacing.y ) + oThumbSpacing.y ) ) + "px";
	
	var oLogo = document.getElementById( "logoimage" );
	oLogo.setAttribute( "width", iGridWidth * nScaleFactor );
}

function selectChapter( iChapterIndex ) {
	if ( iChapterIndex != iSelectedChapter ) 
		bDisplayImages = false;
	
	iSelectedChapter = iChapterIndex;
	iSelectedItem = -1;
		
	if ( aContent[ iChapterIndex ].subs  != undefined ) {
		iSelectedSub = 0;
			
		buildGrid( iChapterIndex, 0 );
	} else {
		iSelectedSub = -1;
			
		buildGrid( iChapterIndex );
	}
}

function selectSub( iChapterIndex, iSubIndex ) {
	iSelectedChapter = iChapterIndex;
	iSelectedSub = iSubIndex;
	iSelectedItem = -1;

	buildGrid( iChapterIndex, iSubIndex );
}

function selectItem( iChapterIndex, iItemIndex ) {
	iSelectedChapter = iChapterIndex;
	iSelectedSub = -1;
	iSelectedItem = iItemIndex;
		
	buildGrid( iChapterIndex, iItemIndex );
}

function toggleImages( ) {
	bDisplayImages = !bDisplayImages;
	
	buildGrid( iSelectedChapter );
}
function showRollOver( oPostit ) {
	if ( oPostit.className.indexOf( "_sel" ) == -1 ) {
		var aImages = oPostit.getElementsByTagName( "img" );
	
		if ( aImages.length > 0 ) {
			if ( aImages[ 0 ].src.indexOf( + "_rollover" ) == -1 ) {
				var aExtensions = [ ".jpg", "gif", ".png" ];
				
				for ( var i=0; i<aExtensions.length; i++ )
					if ( aImages[ 0 ].src.indexOf( aExtensions[ i ] ) != -1 )
						aImages[ 0 ].src = aImages[ 0 ].src.split( aExtensions[ i ] ).join( "_rollover" + aExtensions[ i ] );
			}
		} else {
			var oLabel = oPostit.getElementsByTagName( "span" )[ 0 ];
			oLabel.className = "rollover";
		}
	}
}
function showRollOut( oPostit ) {
	if ( oPostit.className.indexOf( "_sel" ) == -1 ) {
		var aImages = oPostit.getElementsByTagName( "img" );
	
		if ( aImages.length > 0 ) {
			if ( aImages[ 0 ].src.indexOf( "_rollover" ) != -1 ) {
				var aExtensions = [ ".jpg", "gif", ".png" ];
				
				for ( var i=0; i<aExtensions.length; i++ ) {
					if ( aImages[ 0 ].src.indexOf( aExtensions[ i ] ) != -1 )
						aImages[ 0 ].src = aImages[ 0 ].src.split( "_rollover" + aExtensions[ i ] ).join( aExtensions[ i ] );
				}
			}
		} else {
			var oLabel = oPostit.getElementsByTagName( "span" )[ 0 ];
			oLabel.className = "normal";
		}
	}
}

function createPostit( oItem, sItemType, iChapterIndex, iOtherIndex ) {

	// DETERMINE DIMENSIONS
	var bNotIE = ( navigator.userAgent.indexOf( "MSIE" ) == -1 );
	var iWdth = oThumbSize.width - 2 * bNotIE * oThumbPadding.x;
	var iHght = oThumbSize.height - 2 * bNotIE * oThumbPadding.y;
		
	// DETERMINE COORDINATES
	var iX = oItem.x * ( oThumbSize.width + oThumbSpacing.x );
	var iY = oItem.y * ( oThumbSize.height + oThumbSpacing.y - 8 ) + 16;
	
	
	// DETERMINE CLASSNAME (ACCORDING TO POSTITINDEX)
	if ( oItem.postit == undefined )
		oItem.postit = 1 + Math.floor( Math.random( ) * 8 );

	var sClassName = "postit0" + oItem.postit;
	
	// DETEMINE CLICKBEHAVIOUR + UPDATE CLASSNAME ACCORDING TO SELECTED-STATE
	var sClickBehaviour = "";
	var sDivContent = '<span>' + oItem.label + '</span>';
	var sStyleAddition = "";
	switch ( sItemType ) {
		case "chapter":
			sClickBehaviour = "selectChapter(" + iChapterIndex + ");";
			if ( iChapterIndex == iSelectedChapter ) sClassName += "_sel";
			
			break;
			
		case "sub":
			sClickBehaviour = "selectSub(" + iChapterIndex + "," + iOtherIndex + ");";
			if ( iOtherIndex == iSelectedSub ) sClassName += "_sel";
		
			break;
			
		case "item":
			sClickBehaviour = "selectItem(" + iChapterIndex + "," + iOtherIndex + ");";
			sStyleAddition = ' font-size:7pt!important;';
			
			if ( bDisplayImages )
				sDivContent = '<img class="thumb" src="' + oItem.thumb + '" border="0" style="width:' + ( oItem.width / 2 ) + 'px; height:' + ( oItem.height / 2 ) + 'px; position:relative; left:' + ( ( oThumbSize.width - 2 * oThumbPadding.x - ( oItem.width / 2 ) ) / 2 ) + 'px; top:' + ( ( oThumbSize.height - 2 * oThumbPadding.y - ( oItem.height / 2 ) ) / 2 - 2) + 'px;" />';

			break;
			
			
			
		case "toggle":
		
			// SET CLICKBEHAVIOUR
			sClickBehaviour = "toggleImages();";
			
			// DETERMINE CLASSNAME
			sClassName = "postit0" + iTogglePostit;
			//if ( bDisplayImages ) sClassName += "_sel";
		
			break;
			
		case "backlink":
			sClickBehaviour = "selectChapter(" + oItem.index + ");";
			
			// DETERMNE CLASSNAME
			sClassName = "postit0" + iBackLinkPostit;
		
			break;
	}
	
	// RETURN POSTIT-DIV
	return '<div class="' + sClassName + '" style="left:' + iX + '; top:' + iY + '; width:' + iWdth + 'px; height:' + iHght + 'px;'+ sStyleAddition + '" onMouseOver="showRollOver(this);" onMouseOut="showRollOut(this);" onClick="' + sClickBehaviour + '">' + sDivContent + '</div>';
}

function buildGrid( iChapterIndex, iOtherIndex ) {

	var sContentClass = -1;
	var sContentType = "content";
	var sContentUrl = -1;

	if ( iChapterIndex == undefined ) {
		iChapterIndex = 1;
		iOtherIndex = -1;
	}
	
	var oGridDiv = document.getElementById( "grid" );
	
	var iGridWidth = oGridSize.width * ( oThumbSize.width + oThumbSpacing.x ) + oThumbSpacing.x;
	oGridDiv.style.width = iGridWidth + "px";
	oGridDiv.style.marginLeft = -iGridWidth / 2;

	
	var iMaxY = 0;
	var sGridOutput = "";
	var bRefreshContent = true;
	for ( var i=0; i<aContent.length; i++ ) {
		iMaxY = Math.max( iMaxY, aContent[ i ].y );
		sGridOutput += createPostit( aContent[ i ], "chapter", i );
		
		if ( i == iSelectedChapter ) {
			if ( aContent[ i ].items != undefined ) {
				if ( iSelectedItem == -1 ) {
					
					// DISPLAY IMAGE-TOGGLE
					sGridOutput += createPostit( { label:[ "VIEW IMAGES.", "VIEW TITLES." ][ 1 * bDisplayImages ],
												   x:oNavOptionsOffset.x, y:oNavOptionsOffset.y },
												   "toggle" );
				
					// DISPLAY ITEMGRID
					for ( var n=0; n<aContent[ i ].items.length; n++ ) {
						iMaxY = Math.max( iMaxY, aContent[ i ].items[ n ].y );
						sGridOutput += createPostit( aContent[ i ].items[ n ], "item", i, n );
					}
				} else {
				
					// DISPLAY BACK-TO-CHAPTER-LINK
					sGridOutput += createPostit( { label:"OVERVIEW.", index:i,
													x:oNavOptionsOffset.x, y:oNavOptionsOffset.y }, 
													"backlink" );
					//sGridOutput += createPostit( { label:"OVERVIEW " + aContent[ i ].label, index:i,
					//								x:oNavOptionsOffset.x, y:oNavOptionsOffset.y }, 
					//								"backlink" );
					
					// GET OUTPUT-DIV
					sContentUrl = aContent[ i ].items[ iSelectedItem ].src;
					sContentType = "item";
					sContentClass = aContent[ i ].items[ iSelectedItem ].orientation;
				}	
			} else if ( aContent[ i ].subs != undefined ) {
			
				// DISPLAY SUBCHAPTERS
				for ( var n=0; n<aContent[ i ].subs.length; n++ ) {
					iMaxY = Math.max( iMaxY, aContent[ i ].subs[ n ].y );
					sGridOutput += createPostit( aContent[ i ].subs[ n ], "sub", i, n );
				}
					
				// GET OUTPUT-DIV
				sContentUrl = aContent[ i ].subs[ iSelectedSub ].src;
				sContentClass = aContent[ i ].subs[ iSelectedSub ].orientation;
			} else {
	
				// GET OUTPUT-DIV
				sContentUrl = aContent[ i ].src;
				sContentClass = aContent[ i ].orientation;
			}
		}
	}
	
	if ( sContentClass != -1 ) {
		sGridOutput += '<div id="content" class="' + sContentClass + '" style="display:none"></div>';
		
		if ( sContentUrl.indexOf( ".html" ) == -1 || sContentUrl.indexOf( "http://" ) != -1 )
			 sContentType = "link";
			 
		switch ( sContentType ) {
			case "content":
				sendRequest( sContentUrl, displayContent );
				
				break;
				
			case "item":
				sendRequest( sContentUrl, displayItem );
				
				break;
				
			case "link":
				window.open( sContentUrl, "_blank" );
				
				bRefreshContent = false;
				
				break;
		}
	}
	
	if ( bRefreshContent )
		oGridDiv.innerHTML = sGridOutput;
		
	sizeGrid( );
}


function setOpacity( level ) {
	logo.style.opacity = level;
	logo.style.MozOpacity = level;
	logo.style.KhtmlOpacity = level;
	logo.style.filter = "alpha(opacity=" + (level * 100) + ");";
}
function fadeOut() {
  for ( var i=0; i<=1; i+=1/10 ) {
    setTimeout( "setOpacity(" + ( 1 - i ) + ")", i * 400 );
  }
  
  setTimeout( "hideLogo()", 400 );
}

function hideLogo( ) {
	var oLogo = document.getElementById( "logo" );
	oLogo.style.display = "none";
}
function fadeLogo( ) {
	var oLogo = document.getElementById( "logo" );
	
	if ( oLogo.onclick != undefined ) {
		oLogo.onclick = undefined;
		
		fadeOut( "logo" );
	}
}
function showLogo( ) {
	var oLogo = document.getElementById( "logo" )

	oLogo.innerHTML = '<table width="100%" height="100%"><tr><td align="center"><img id="logoimage" src="_img/logo.jpg"/></td></tr></table>';
	oLogo.onclick = hideLogo;
	
	setTimeout( "hideLogo()", 3000 );
}
document.onselectstart = function() {return false;} // ie
document.onmousedown = function() {return false;} // mozilla
