/* ####### Helper functions ####### */

function showOverview() {
	var thumbs = $('#FilmStrip >a >img').clone();
	
	var p = document.createElement('p');
	var li = [];
	var ul = document.createElement('ul');
	
	for( var i=0, l=thumbs.length; i<l; i++ ) {
		var a = document.createElement('a');
		a.setAttribute('href', 'javascript:void(0)');
		a.appendChild(thumbs[i]);
		p.appendChild(a);
		
		if( (i+1)%2 || i == l-1 ) {
			var span = document.createElement('span');
			span.className = 'thumb';
			span.appendChild(p.cloneNode(1));
			li.push(span);
				
			while(p.childNodes.length)
				p.removeChild(p.firstChild);
		}

		if (i == l-1) {
			var span = document.createElement('span');
			span.className = 'thumb';
			span.appendChild(p.cloneNode(1));
			li.push(span);

			while (p.childNodes.length)
				p.removeChild(p.firstChild);
		}
	}
	
	var item = document.createElement('li');
	for(var l in li) {
		item.appendChild(li[l]);
		if( (l%2)) {
			ul.appendChild(item.cloneNode(1));
			while( item.childNodes.length )
				item.removeChild(item.firstChild);
		}
	}
	$('#dvRightPanel').find('div[id!=\'dvOverview\']').hide();
	$('#dvOverview').html(ul).show().parent().css('overflow-y', 'auto');
}
function GoHome() {
	showClipping = false;
	textMode = true;
	isSinglePage = true;
			
	dsp = $('#displaystyle')[0];
	dsp.src= "img/dubbel.png";
	dsp.title="Ga naar spread weergave";
	$('#FilmStrip')[0].scrollTop = 0;
	$('select[name=PaginaBox]')[0].selectedIndex = 0;
	$('#dvArticle span[class]').html('')
	showPageIndex();
	showPage(1);
	SetThumbnails();
}
function SetThumbnails() {
	var pb = $('select[name=PaginaBox]')[0];
	var flmStrp = $('#FilmStrip')[0];
	
	var thumbs = ep.getThumbnails();
	$(flmStrp).html('');
	$(pb).html('');
	for( var i in thumbs ) {
		$(pb).append($('<option>Pagina ' + (1 + i * 1) + '</option>'));
		$(flmStrp).append($('<a href=\'javascript:void(0);\'><img title=\'Pagina ' + (1 + i * 1) + '\' src="' + thumbs[i] + '" /></a>'));
	}
}
function getPageIndex(page) {
	var pages = ep.getPaperIndex(page);
	var index = '';
	for( var p in pages ) {
		li='';
		for( var i in pages[p] )
			li += '<li><a name=\'' +pages[p][i].index +'\' href=\'javascript:void(0);\'>'+pages[p][i].title +'</a></li>';
		index += '<label><a name=\'p' +p +'\' href=\'javascript:showPage(' + p +');\'>Pagina '+ p +'</a></label><ul>'+li+'</ul>';					
	}
	return index;
}
function showPage( page, hilight ) {
	page = page || ep.edition.page;
	
	var flm = $('#FilmStrip');
	img = flm.find('img:eq(0)');
	h = img.height() +10;
	
	offset = h*(page>1?(page-1):0);
	flm.scrollTop(offset);
	$('select[name=PaginaBox]')[0].selectedIndex = page-1;
	
	index = page;
	$(flm).find('.selected').removeClass('selected');
	$(flm).find('img:eq('+(index-1) +')').addClass('selected');
	
	$('#dvOverview').find('.selected').removeClass('selected');
	var thumb = $('#dvOverview span.thumb a:eq(' +(index-1) +')').find('>*');
	$(thumb).addClass('selected');
	
	if(i=(!isSinglePage && (index>1 && index<ep.edition.totalPages))?(index%2?-1:1):null) {
		$(flm).find('>a:has(img):eq(' +(--index +i) +') img').addClass('selected');

		if( !(index%2) )
			$(thumb).parent().prev().find('>*').addClass('selected');
		else
			$(thumb).parent().next().find('>*').addClass('selected');
	}
	ep.edition.page = page;
	setPageImg( page, hilight );
	bindIndexEvent( page );
}

function bindIndexEvent( page ) {
	page = page || ep.edition.page;
	$('#dvIndex ul li > a[name]').unbind();
	
	$('#dvIndex label > a[name=p'+page +']').parent().next('ul').find('li > a').bind( 'mouseover', function(evt) {
		$().canvas.hl_area( $(this).attr('name') -1 );
	}).bind('mouseout', function(evt) {
		$().canvas.clear_area();
	});
	
	$('#dvIndex ul li > a[name]').bind('click', function(evt) {
		ul = $(this).parents('ul:first');
		art = $(this).attr('name');
		var lbl = $(this).parents('ul:first').prev()[0];
		var page;
		
		if( lbl.innerText )													// IE
			page = lbl.innerText.replace( /[a-z]/ig, '' ) *1;
		else																	// Firefox, Safari, etc.
			page = lbl.textContent.replace( /[a-z]/ig, '' ) *1;
		showArticle( art, page, null, null, true, true );
	}, false );
}

var pImg = null;
function setPageImg( page, hilight ) {
	var dvi = document.getElementById('dvArticleImg');
	var imgObj = ep.getPageImg( page, true );
	var offset = (page%2) ? 1000 : 0;

	var img = new Image();

	$(img).load( function() {
		dvo = $('#dvOffscreen');
		$(dvo).html($(this).clone(1));
		$(dvo)[0].style.cssText = 'display: inline-block;';
		w = dvo[0].childNodes[0].width;
		h = dvo[0].childNodes[0].height;
		$(dvo)[0].style.cssText = '';
		
		$(this).addClass('{ width: '+w +', height: ' +h +' }');
		$(this).attr('usemap', '#map' );
		
		if( $(dvi).find('img[usemap]').length )
			$(dvi).find('img[usemap]').replaceWith($(this));
		else
			$(dvi).append( $(this) );
		
		ep.imgWidth = w;
		
		var map = ep.getPageMap( page, 'map' );
		
		if( (m = $(dvi).find('map[name=map]')).length ) {
			$(m).find('area').remove();
			$(map).find('area').each( function() {
				$(m).append( $(this) );
			});
		}
		else
			$(dvi).append( map );
		
		$(this).canvas();
		w = isSinglePage ? ( ( $(img).width() > $(img).height() ) ? $(img).width() / 2 : $(img).width() ) : $(dvi).parent().width();

		$(dvi).width(w);//.css('display', 'inline-block' );
		$(dvi)[0].scrollLeft = !isSinglePage ? offset : '';
		
		if( typeof( hilight ) === 'object' ) {
			$().canvas.hl_area( hilight['index'] -1, true );
		}
	}).error( function() {
		if( window.console )
			console.log( 'Image not found' );
		pImg = null;
	});
	//if( pImg != imgObj.file )
		img.src = imgObj.path;
	
	if( page%2 )
		$(dvi).find(':first').css('right', '0' );
	else
		$(dvi).find(':first').css('right', '' );
	pImg = imgObj.file;
}
function showArticle(art, page, isClipping, hl_art, onIndex, hilight ) {
	art = art || ep.edition.article;
	hilight = hilight || false;
	page = page*1 || ep.edition.page;
	onIndex = onIndex || false;
	var regexp;
	
	function hl(str) {
		if( result && hl_art ) {
			regexp = regexp || new RegExp('('+result.query +')', 'ig');
			str = str.replace(regexp, '<span class=\'hl\'>$1</span>');
		}
		return str;
	}
	var dva = $('#dvArticle');
	
	isClipping = isClipping || showClipping;
	var a = ep.getArticle( art, page, onIndex );
	$(dva).find('span[class]').html('');
	$(dva).parent()[0].style.cssText = '';
	if(!a)
		return;
	
	if(  isClipping  || a['type'] == 'advertentie' ) {
		text = '&nbsp;website adverteerder&nbsp;';
		var link = a.url?'<a href=\'javascript:void(0);\' onclick=\'javascript:window.open("http://' +a.url +'");false;\'>' +text +'</a>':'';
		url = 'http://' + a.url;
		var button  = a.url?'<p style=\'text-align: center;\'><button style=\'margin-top: 10px;text-align: center\' onclick=\'javascript:window.open("' +url +'");false;\'>' +text +'</button></p>':'';
		
		var img = document.createElement('img');//'<img class=\'imgArticle\' src=\'' +a['imgArticle'] +'\' />';
		img.className = 'imgArticle';

		$(img).load( function() {
			if( link )
				img = $(link).clone(1).html('').append(img);
				
			$(dva).find('span:eq(1)').addClass('clipping').append(img).append( $('<span>')).append(button);
			var i = $(dva).find('img');
			$(i)[0].style.cssText = 'overflow: hidden;';
			var w = $(i)[0].width;
			var h = $(i)[0].height;
			var cw = $(dva)[0].clientWidth;
			var ch = $(dva)[0].clientHeight;
			
			if(w > cw )
				$(i).css('max-width', '100%').css('height', 'auto');
			if(h > ch)
				$(i).css('max-height', '100%').css('width', 'auto');
		});
		img.src = a['imgArticle'];
		$(dva).parent()[0].style.cssText = 'overflow-y: hidden';
		$(dva).find('.spContent.clipping').css('overflow','hidden');
		textMode = false;
	}
	else {
		var banner;
		$(dva).parent().css('overflow-x', '');
		
		$(dva).find('span:first').html(hl(a.title));
		t='';
		
		for(var p in a.paragraph) {
			t+='<p>'+hl(a.paragraph[p])+'</p>';
		}
		if(t)
			t = $(t);
		
		if(a.image) {
			for( var i in a.image ) 
				$(t).eq(t.length-1).append( $('<img src=\''+a.image[i].src +'\' />' +(a.image[i].caption?('<span class=\'caption\'>(&nbsp;'+hl(a.image[i].caption) +'&nbsp;)</span>'):'')));

			banner = $( '<a href=\'javascript:void(0);\' class=\'banner\'><img src=\'img/banner.jpg\'></img></a>');

			$(banner).bind( 'click', function(evt) {
				var url = 'http://www.boomfoto.nl/epaper.php' +'?editie=' +ep.edition.alias +'&datum=' +ep.edition.date;
				window.open(url);
			});
		}
		
		var content = $(dva).find('span:last');
		$(content).removeClass('clipping').html(t);
		
		if( typeof( banner ) !== 'undefined' ) 
			$(content).append( banner );

		textMode = true;
	}

	$(dva).parent().scrollTop(0);
	$(dva).parent().find('div').hide();
	$(dva).show();
	
	toggleSizeIcons(textMode);

	if( hilight ){
		hilight = { 'index' : a.index };
		
		if( page != ep.edition.page )
			showPage( page, hilight );
		else
			$().canvas.hl_area( a.index-1, true );
	}

	ep.edition.article = art;
	ep.edition.page = page;
}
function showPageIndex() {
	var dvi = $('#dvIndex');
	$(dvi).parent().scrollTop(0).find('>*').hide();
	$(dvi)[0].parentNode.style.cssText = ''
	$(dvi).html(getPageIndex(null)).show();
	bindIndexEvent();
}
function printArticle() {
	if(!$('#dvArticle').is(':visible'))
		return false;
	var opts = "height=500,width=800,menubar=no,status=no,toolbar=no,titlebar=no,scrollbars=no,location=no,directories=no,personalbar=no";
	var dvArt = $('#dvArticle')[0].cloneNode(1);
	newWin = window.open("print.htm", null, opts);
	return newWin;
}

/* ###### End Helper functions ###### */
