/*
 * reader scripts
 */

var overlayAPI

initReader = function () {
	
	overlayAPI = $("#overlay").overlay({ 

	    expose: {
			color: '#333',
			opacity: 0.7,
			loadSpeed: 0,
			closeSpeed: 0,
			maskId: 'mask' 
		},
		speed: 0,
		closeOnClick: false,
		api: true
	})
	
	overlayAPI.onClose(function(){
		
		//clean up overlay, to make login possible..
		$("#overlay").empty()
		
		// delete old print containers
		$("#print").remove()
		
	})
}

/*
 * load external content
 */ 

$(document).ready(function(){
	
	initReader()
	
})

/* 
 * service handlers
 */

handleRetrieveArticle = function (data) {
	
	// load overlay
	//MOVED: overlayAPI.load()
	
	if (data.Status == 0) {
		// no result.. show error
		renderOverlayError()
		
	} else {
		
		var viewType = data.ViewType
		
		// if free article, set viewtype to free article
		if (!data.Article.Metadata.Paid && !registered && !loggedIn) viewType = 3
		
		switch (viewType) {
			case 2:
				// preview
				renderPreviewArticle(data) 
				break;
			case 0: 
				// full
				renderFullArticle(data)
				copyContentToPrint()
				
				// shortcut..
				// convert FLV links to local
				convertFLVLinks()
				
				renderFLVPlayer()
				break;
			case 1:
				// pdf
				renderPDFArticle(data)
				break;
			case 3:
				// freearticles
				renderFreeArticle(data)
				break;
			default:
				renderPreviewArticle(data)
				
		}
	}
		
}


/* 
 * reader variations: preview article
 */

renderPreloader = function() {
	addLoader($("#overlay"))
}


renderPreviewArticle = function(data) {
	var container = $("#overlay")

	container.empty()
	container.removeClass("PDF").removeClass("full").addClass("preview")
	
	container.append($("<div/>").attr("id","overlay-logo"))
	container.append($("<div/>").attr("id","overlay-login"))
	container.append($("<div/>").attr("id","overlay-subscription"))
	container.append($("<div/>").attr("id","overlay-content"))
	
	// add closebuttons
	renderCloseButtons(container)
	
	// add loginform
	renderLoginFormPreview()
	// add subscription
	renderSubscription()
	
	// add content
	renderContent(data)
	
	// addHandlers
	$("#overlay .close").click(function() {
		overlayAPI.close()
	})
	
}

renderFreeArticle = function(data) {
	var container = $("#overlay")

	container.empty()
	container.removeClass("PDF").removeClass("full").addClass("preview")
	
	container.append($("<div/>").attr("id","overlay-logo"))
	container.append($("<div/>").attr("id","overlay-register"))
	container.append($("<div/>").attr("id","overlay-subscription"))
	container.append($("<div/>").attr("id","overlay-content"))
	
	// add closebuttons
	renderCloseButtons(container)
	
	// add loginform
	renderRegister()
	
	// add subscription
	renderSubscription()
	
	// add content
	renderContent(data)
	
	// addHandlers
	$("#overlay .close").click(function() {
		overlayAPI.close()
	})
	
}

renderSubscription = function () {
	
	var container = $("#overlay-subscription")
	
	container.append($("<h1/>").html("Nog geen abonnee?"))
	container.append($("<p/>").html("U bent nog niet geabonneerd op deze module van Leerrijk? Bestel dan hier uw abonnement."))
	container.append($("<a/>").addClass("big").attr("href", "http://www.plantyn.com/leerrijk").attr("target", "_blank").html("WORD ABONNEE"))
}


/* 
 * reader variations: full article
 */

renderFullArticle = function(data) {
	var container = $("#overlay")

	container.empty()
	container.removeClass("preview").removeClass("PDF").addClass("full")
	
	container.append($("<div/>").attr("id","overlay-logo"))
	
	var leftDiv = $("<div/>").addClass("left")
	leftDiv.append($("<div/>").attr("id","overlay-toc"))
	leftDiv.append($("<div/>").attr("id","overlay-print"))
	container.append(leftDiv)
	
	var rightDiv = $("<div/>").addClass("right")
	rightDiv.append($("<div/>").attr("id","overlay-spacer"))
	rightDiv.append($("<div/>").attr("id","overlay-content"))
	// add closebuttons
	renderCloseButtons(rightDiv)
	container.append(rightDiv)

	// add printbutton
	renderPrintButton()
	
	// add content
	renderContent(data)
	
	// add toc
	renderTOC()
	
	// set height()
	var bodyHeight = $("body").height()
	$("#overlay-content").height(bodyHeight-250)
	
	// addHandlers
	$("#overlay .close").click(function() {
		overlayAPI.close()
	})
}

renderTOC = function () {
	
	var container = $("#overlay-toc")
	
	container.empty()

	var items = getTOCItems()
	
	container.append($("<h1/>").html("Artikel inhoud"))
	container.append($("<a/>").addClass("prevPage"))
	container.append($("<div/>").addClass("scrollable").append(items))
	container.append($("<a/>").addClass("nextPage"))
	
	// add scrollable index
	$("#overlay-toc .scrollable").scrollable({ 
        vertical:true,  
        size: 4 
 
	// use mousewheel plugin 
    }).mousewheel(); 
	
	// add anchor scroll actions
	addTOCActions()
	
}

getTOCItems = function () {
	
	// create scrollable	
	var items = $("<ul/>").addClass("items")
	
	//$.each($("#overlay-content .Heading1"), function(i,item) {
	$("#overlay-content .Leerrijkkop1").each(function(i,item){
		
		var headingText = $(item).html()
		
		var firstSpan
		firstSpan = $("<span/>").addClass("number").html(twoDigit(i+1) + ".")
		
		var secondSpan
		secondSpan = $("<span/>").addClass("description").html(headingText)
		
		var anchor = $("<a/>")
		anchor.attr("rel", "#header_"+i).append(firstSpan).append(secondSpan)
		
		anchor.wrap("<li>")
		
		items.append(anchor)
				
		// add id to header and add numbering
		$(this).attr("id", "header_"+i)
		$(this).html((i+1) + ". " + headingText)
		
	})
	
	return items
}

addTOCActions = function() {
	$("#overlay-toc a").click(function(i){ 
		$("#overlay-content").scrollTo($(this).attr("rel"))
	})

}

renderPrintButton = function() {
	
	var container = $("#overlay-print")

	container.append($("<a/>").addClass("print").html("print dit artikel"))
	
	$("#overlay a.print").click(function(i){ 
	
		// add print dialog
		print()
	})
	
}

renderCloseButtons = function (container) {
	
	container.append($("<div/>").attr("class","close cross"))
	container.append($("<a/>").addClass("big close button").html("SLUIT ARTIKEL"))
	
}

renderContent = function(data) {
	
	var container = $("#overlay-content")
	
	var metadata = data.Article.Metadata
	
	var title = metadata.Title
	var subTitle = metadata.Subtitle
	var articleType = metadata.ArticleType
	var authors = renderAuthors(metadata.Authors)
	var keywords = metadata.Keywords
	var summary = metadata.Summary
	
	// add content
	container.append($("<h1/>").html(title))
	
	var metainfo = $("<div/>").addClass("meta")
	
	metainfo.append($("<h2/>").html(subTitle))
	metainfo.append($("<h3/>").html(articleType))
	metainfo.append($("<p/>").addClass("author").html(authors))
	metainfo.append($("<p/>").addClass("keywords").html("<strong>keywords: </strong>" + keywords))
	
	container.append(metainfo)
		
	if ((data.ViewType == 0 && data.Article.Metadata.Paid) || (!data.Article.Metadata.Paid && registered) || (!data.Article.Metadata.Paid && loggedIn)) {
		container.append(data.Article.Content)
	} else {
		container.append($("<h2>").addClass("header").html("1. Samenvatting"))
		container.append($("<p/>").html(summary))
	}	
	
	convertLists()
}

/* 
 * reader variations: PDF article
 */

renderPDFArticle = function(data) {
	var container = $("#overlay")

	container.empty()
	container.removeClass("preview").removeClass("full").addClass("PDF")
	
	container.append($("<div/>").attr("id","overlay-logo"))
	container.append($("<div/>").attr("id","overlay-content"))
	
	// add loader
	addLoader($("#overlay-content"))

	// add closebuttons
	renderCloseButtons(container)
		
	// add content
	renderPDFContent(data)
	
	// addHandlers
	$("#overlay .close").click(function() {
		overlayAPI.close()
	})
}

renderPDFContent = function(data) {
	
	// set height()
	var bodyHeight = $("body").height()
	$("#overlay-content").height(bodyHeight-200)
	
	var myPDF = new PDFObject({
		url: "/handlers/retrieve.ashx?action=GetPDF&id=" + data.Article.DocumentID,
		pdfOpenParams: {
			navpanes: 1,
			toolbar: 1,
			view: "FitH"
		}
	}).embed("overlay-content");
	
}

/*
 * errorMessage
 */

renderOverlayError = function(data) {
	var container = $("#overlay")

	container.empty()
	container.removeClass("PDF").removeClass("full").addClass("preview")
	
	container.append($("<div/>").attr("id","overlay-logo"))
	
	var content = $("<div/>").attr("id","overlay-content")
	var errorMessage = $("<h1/>").html("Er is een communicatiefout opgetreden")
	content.append(errorMessage)
	
	container.append(content)
	
	// add closebuttons
	renderCloseButtons(container)
	
	// addHandlers
	$("#overlay .close").click(function() {
		overlayAPI.close()
	})
	
}

/*
 * helper functions
 */ 

renderFLVPlayer = function() {
	flowplayer("a.flv", rootURI + "/lib/flowplayer/flowplayer-3.1.5.swf");
}

convertFLVLinks = function() {
	
	var prefix = rootURI + "/flv/"

	$("a.flv").each(function(i,item){
	    
		var href = $(item).attr("href")    

	    var filename = jQuery.url.setUrl(href).param("filename")

	    if (filename) {
	        // if the link is form sharepoint, rewrite, for now
	    	$(item).attr("href", prefix + filename)
	    }
	})
	
}

renderAuthors = function (list) {
	
	// split list in items
	var names = list.split(";#")
	
	// add first item 
	var string = names[1]

	$.each(names, function (i,item) {
		// ony add odd items..
		if (i%2 == 1 && i > 1) string += " - " + item
	})
	
	return string
}

convertLists = function () {
	
	var level_0 = $("li.level_0")
	var level_1 = $("li.level_1")
	var level_2 = $("li.level_2")
	
	level_0.each(function (i,item){
		if ($(item).prev()[0] == null) {
			$(item).attr("value",1)
		} else {
			var value = $(level_0[i-1]).attr("value") 
		    $(item).attr("value",value + 1)
		}
	}) 
	
	level_1.each(function (i,item){
	    
	    if ($(item).prev().hasClass("level_0")) {
	        $(item).attr("value",1)
	    } else {
	        var value = $(level_1[i-1]).attr("value") 
	        $(item).attr("value",value + 1)
	    }
	}) 
	
	level_2.each(function (i,item){
	    
	    if ($(item).prev().hasClass("level_1")) {
	        $(item).attr("value",1)
	    } else {
	        var value = $(level_2[i-1]).attr("value") 
	        $(item).attr("value",value + 1)
	    }
	})
}

/*
 * print functions
 */

copyContentToPrint = function () {
	
	// delete old print containers
	$("#print").remove()
	
	// create a copy of the content in a new print container
	var printContainer = $("<div/>").attr("id","print")
	printContainer.html($("#overlay-content").html())
	$("body").append(printContainer)
	
	// add printheader to print container
	addPrintHeader($("#print"))
	
	// add class to blocking layer for css purposes
	$($("#overlay ~ div")[0]).addClass("block")
	
}

addPrintHeader = function(container) {
	var printHeader = $("<div/>").addClass("printheader")
	
	printHeader.append($("<img/>").attr("src",rootURI + "/css/images/logos/leerrijk-logo_overlay.png"))
	printHeader.append($("<h3/>").html("Leerrijk-Plantyn nv"))
	printHeader.append($("<div/>").addClass("clear"))

	container.prepend(printHeader)
}
