try {
  document.execCommand("BackgroundImageCache", false, true);
} catch(err) {}

function validateSearchTerm() {
	// get textfield element		
	var queryElement = document.getElementById("searchTerm");
	
	// does element exist in form?
	if(queryElement == null) {
		return false;
	}
	
	var empty = new RegExp("^\\s*$");
			
	if(empty.test(queryElement.value)) {
		// white space or empty string
		return false;
	} else {
		// query entered
		return true;
	}
}

function validateEisbn() {
	// get textfield element		
	var eisbnElement = document.getElementById("eisbn");
	
	// does element exist in form?
	if(eisbnElement == null) {
		return false;
	}
	
	var empty = new RegExp("^\\s*$");
			
	if(empty.test(eisbnElement.value)) {
		// white space or empty string
		return false;
	} else {
		// query entered
		return true;
	}
}

function validateIsbn() {
	// get textfield element		
	var isbnElement = document.getElementById("isbn");
	
	// does element exist in form?
	if(isbnElement == null) {
		return false;
	}
	
	var empty = new RegExp("^\\s*$");
			
	if(empty.test(isbnElement.value)) {
		// white space or empty string
		return false;
	} else {
		// query entered
		return true;
	}
}

function validateTitle() {
	// get textfield element		
	var titleElement = document.getElementById("title");
	
	// does element exist in form?
	if(titleElement == null) {
		return false;
	}
	
	var empty = new RegExp("^\\s*$");
			
	if(empty.test(titleElement.value)) {
		// white space or empty string
		return false;
	} else {
		// query entered
		return true;
	}
}

function validateAuthors() {
	// get textfield element		
	var authorsElement = document.getElementById("authors");
	
	// does element exist in form?
	if(authorsElement == null) {
		return false;
	}
	
	var empty = new RegExp("^\\s*$");
			
	if(empty.test(authorsElement.value)) {
		// white space or empty string
		return false;
	} else {
		// query entered
		return true;
	}
}

function validateLibConClass() {
	// get textfield element		
	var libConClassElement = document.getElementById("libConClass");

	// does element exist in form?
	if(libConClassElement == null) {
		return false;
	}
			
	var empty = new RegExp("^\\s*$");
			
	if(empty.test(libConClassElement.value)) {
		// white space or empty string
		return false;
	} else {
		// query entered
		return true;
		
	}
}

function validateDewDecClass() {
	// get textfield element		
	var dewDecClassElement = document.getElementById("dewDecClass");
	
	// does element exist in form?
	if(dewDecClassElement == null) {
		return false;
	}
	
	var empty = new RegExp("^\\s*$");
			
	if(empty.test(dewDecClassElement.value)) {
		// white space or empty string
		return false;
	} else {
		// query entered
		return true;
	}
}

function validateNlmClass() {
	// get textfield element		
	var nlmClassElement = document.getElementById("nlmClass");
	
	// does element exist in form?
	if(nlmClassElement == null) {
		return false;
	}
	
	var empty = new RegExp("^\\s*$");
			
	if(empty.test(nlmClassElement.value)) {
		// white space or empty string
		return false;
	} else {
		// query entered
		return true;
	}
}

function validateBicClass() {
	// get textfield element		
	var bicClassElement = document.getElementById("bicClass");
	
	// does element exist in form?
	if(bicClassElement == null) {
		return false;
	}
	
	var empty = new RegExp("^\\s*$");
			
	if(empty.test(bicClassElement.value)) {
		// white space or empty string
		return false;
	} else {
		// query entered
		return true;
	}
}

function validateUrlInfo() {
	// get textfield element		
	var urlInfoElement = document.getElementById("urlInfo");
	
	// does element exist in form?
	if(urlInfoElement == null) {
		return false;
	}
	
	var empty = new RegExp("^\\s*$");
			
	if(empty.test(urlInfoElement.value)) {
		// white space or empty string
		return false;
	} else {
		// query entered
		return true;
	}
}

// functions for validating drop downs

function validateDateAdded() {
	// get both date select drop downs
	var monthAddedElement = document.getElementById("monthAdded");
	var yearAddedElement = document.getElementById("yearAdded");
			
	// does element exist in form?		
	if(monthAddedElement == null) {
		return false;
	}	
				
	// return true if either year or month has been specified
				
	if(monthAddedElement.value != 0) {
		return true;
	}
	
	if(yearAddedElement.value != 0) {
		return true;
	}
	
	// neither has been specified:
	
	return false;
}

function validateDatePublished() {
	// get both date select drop downs
	var monthPublishedElement = document.getElementById("monthPublished");
	var yearPublishedElement = document.getElementById("yearPublished");
	
	// does element exist in form?			
	if(monthPublishedElement == null) {
		return false;
	}
				
	// return true if either year or month has been specified
	if(monthPublishedElement.value != 0) {
		return true;
	}
	
	if(yearPublishedElement.value != 0) {
		return true;
	}
	
	// neither has been specified:
	return false;
}

function validatePublisher() {

	var publisherElement = document.getElementById("publisher");
	
	// does element exist in form?			
	if(publisherElement == null) {
		return false;
	}			
				
	if(publisherElement.value != 0) {
		return true;
	} else {
		return false;
	}
}

function validateAll() {
	return validateSearchTerm() || validateEisbn() || validateIsbn() || validateTitle() || validateAuthors() || validateLibConClass() || validateDewDecClass() || validateNlmClass() || validateBicClass() ||validateUrlInfo() || validateDateAdded() || validateDatePublished() || validatePublisher();
}
function noEmptySimple() {
		// get textfield element		
		var queryElement = document.getElementById("searchQuery");
		var empty = new RegExp("^\\s*$");
		if(empty.test(queryElement.value)) {
			// white space or empty string
			return false;
		} else {
			// query entered
			return true;
		}
}

function noEmptyString() {
	// get textfield element		
	var queryElement = document.getElementById("dawsonQuery");
	
	var empty = new RegExp("^\\s*$");
			
	if(queryElement.value == "") {
		return false;
	} else {
		// query entered
		return true;
	}
}

function noEmptyRevision() {
		// get textfield element		
		var queryElement = document.getElementById("query");
		var empty = new RegExp("^\\s*$");
		if(empty.test(queryElement.value)) {
			// white space or empty string
			return false;
		} else {
			// query entered
			return true;
		}
}

function toggleShowTools() {
	var toolsDiv = $("Tools");
	var outerDiv = $("OuterDiv");
	var pDFDocumentBox = document.getElementById("PDFDocBox");
	var showToolsDiv = $("ShowTools");
	var hideToolsDiv = $("HideTools");
	
	var showToolsBottomDiv = $("ShowToolsBottom");
	var hideToolsBottomDiv = $("HideToolsBottom");
	
	if (toolsDiv.style.display == "") {
		toolsDiv.style.display = "none";
		outerDiv.style.marginLeft = "-6px";
		showToolsDiv.style.display = "block";
		showToolsBottomDiv.style.display = "block";
		hideToolsDiv.style.display = "none";
		hideToolsBottomDiv.style.display = "none";
	} else {
		toolsDiv.style.display = "";
		showToolsDiv.style.display = "none";
		showToolsBottomDiv.style.display = "none";
		hideToolsDiv.style.display = "block";
		hideToolsBottomDiv.style.display = "block";
		outerDiv.style.marginLeft = "168px";
	}
	return false;
}


function calculateWidth(toolsShowing) {
	var widthStr;
	var agent = navigator.userAgent.toLowerCase();
	if(window.innerWidth) {
		if (toolsShowing) {
			widthStr = Math.ceil(window.innerWidth * 0.65) + "px";
		} else {
			widthStr = Math.ceil(window.innerWidth * 0.95) + "px";
		} 
	} else if (document.body.clientWidth) {
		if (toolsShowing) {
			widthStr = Math.ceil(document.documentElement.clientWidth * 0.65) + "px";
		} else {
			widthStr = Math.ceil(document.documentElement.clientWidth * 0.96) + "px";
		}
	}
	return widthStr;
}

function validateSearchTerm() {
	// get textfield element		
	var queryElement = document.getElementById("searchTerm");
	
	// does element exist in form?
	if(queryElement == null) {
		return false;
	}
	
	var empty = new RegExp("^\\s*$");
			
	if(empty.test(queryElement.value)) {
		// white space or empty string
		return false;
	} else {
		// query entered
		return true;
	}
}

function validateEisbn() {
	// get textfield element		
	var eisbnElement = document.getElementById("eisbn");
	
	// does element exist in form?
	if(eisbnElement == null) {
		return false;
	}
	
	var empty = new RegExp("^\\s*$");
			
	if(empty.test(eisbnElement.value)) {
		// white space or empty string
		return false;
	} else {
		// query entered
		return true;
	}
}

function validateIsbn() {
	// get textfield element		
	var isbnElement = document.getElementById("isbn");
	
	// does element exist in form?
	if(isbnElement == null) {
		return false;
	}
	
	var empty = new RegExp("^\\s*$");
			
	if(empty.test(isbnElement.value)) {
		// white space or empty string
		return false;
	} else {
		// query entered
		return true;
	}
}

function validateTitle() {
	// get textfield element		
	var titleElement = document.getElementById("title");
	
	// does element exist in form?
	if(titleElement == null) {
		return false;
	}
	
	var empty = new RegExp("^\\s*$");
			
	if(empty.test(titleElement.value)) {
		// white space or empty string
		return false;
	} else {
		// query entered
		return true;
	}
}

function validateAuthors() {
	// get textfield element		
	var authorsElement = document.getElementById("authors");
	
	// does element exist in form?
	if(authorsElement == null) {
		return false;
	}
	
	var empty = new RegExp("^\\s*$");
			
	if(empty.test(authorsElement.value)) {
		// white space or empty string
		return false;
	} else {
		// query entered
		return true;
	}
}

function validateLibConClass() {
	// get textfield element		
	var libConClassElement = document.getElementById("libConClass");

	// does element exist in form?
	if(libConClassElement == null) {
		return false;
	}
			
	var empty = new RegExp("^\\s*$");
			
	if(empty.test(libConClassElement.value)) {
		// white space or empty string
		return false;
	} else {
		// query entered
		return true;
		
	}
}

function validateDewDecClass() {
	// get textfield element		
	var dewDecClassElement = document.getElementById("dewDecClass");
	
	// does element exist in form?
	if(dewDecClassElement == null) {
		return false;
	}
	
	var empty = new RegExp("^\\s*$");
			
	if(empty.test(dewDecClassElement.value)) {
		// white space or empty string
		return false;
	} else {
		// query entered
		return true;
	}
}

function validateUrlInfo() {
	// get textfield element		
	var urlInfoElement = document.getElementById("urlInfo");
	
	// does element exist in form?
	if(urlInfoElement == null) {
		return false;
	}
	
	var empty = new RegExp("^\\s*$");
			
	if(empty.test(urlInfoElement.value)) {
		// white space or empty string
		return false;
	} else {
		// query entered
		return true;
	}
}

// functions for validating drop downs

function validateDateAdded() {
	// get both date select drop downs
	var monthAddedElement = document.getElementById("monthAdded");
	var yearAddedElement = document.getElementById("yearAdded");
			
	// does element exist in form?		
	if(monthAddedElement == null) {
		return false;
	}	
				
	// return true if either year or month has been specified
				
	if(monthAddedElement.value != 0) {
		return true;
	}
	
	if(yearAddedElement.value != 0) {
		return true;
	}
	
	// neither has been specified:
	
	return false;
}

function validateDatePublished() {
	// get both date select drop downs
	var monthPublishedElement = document.getElementById("monthPublished");
	var yearPublishedElement = document.getElementById("yearPublished");
	
	// does element exist in form?			
	if(monthPublishedElement == null) {
		return false;
	}
				
	// return true if either year or month has been specified
	if(monthPublishedElement.value != 0) {
		return true;
	}
	
	if(yearPublishedElement.value != 0) {
		return true;
	}
	
	// neither has been specified:
	return false;
}

function validatePublisher() {

	var publisherElement = document.getElementById("publisher");
	
	// does element exist in form?			
	if(publisherElement == null) {
		return false;
	}			
				
	if(publisherElement.value != 0) {
		return true;
	} else {
		return false;
	}
}
				
function validateAll() {
	return validateSearchTerm() || validateEisbn() || validateIsbn() || validateTitle() || validateAuthors() || validateLibConClass() || validateDewDecClass() || validateUrlInfo() || validateDateAdded() || validateDatePublished() || validatePublisher();
}

function pdfPageSearch(adminOrReader) {
	var searchTable = $("searchTable");
	searchTable.style.display = "block";
	var eisbn = document.getElementById("pdfPageEisbn");
	var eisbnVal;
	if (eisbn.value) {
		eisbnVal = getTapestryParameter(eisbn.value);
	}
	var request = new Object();
	var query = document.getElementById("searchPDFQuery");
	var pattern = /^\s*$/;
	if (!query || pattern.test(query.value)) {
		return false;
	}
	
	request.eisbn = eisbnVal;
	request.query = query.value;
	
	var callBack = function(data) {

		DWRUtil.removeAllRows("searchBody");
		
		var searchQuery = data.query;
		var escapedQuery;
		var offset = $('pdfPageOffset').value;
		
		if (searchQuery) {
			escapedQuery = searchQuery.replace(/['"]/g, "");
		}
		
		var cellFuncs = [
		  function(result) {
		  pageDisplayNo = parseInt(result.pageNumber) - parseInt(offset);
		  if (pageDisplayNo < 1) {
		  	pageDisplayNo = "Prelim.";
		  }
		  return "<a href=\"#\" onclick=\"return updateSearchLink(" + result.pageNumber + ",'" + escapedQuery + "','" + adminOrReader + "')\"" + ">" + pageDisplayNo + "</a>"; 
		  },
		  function(result) { return "<a href=\"#\" onclick=\"return updateSearchLink(" + result.pageNumber + ",'" + escapedQuery + "','" + adminOrReader + "')\"" + ">" + result.percentageScore + "</a>"; }
		  ];
		var count = 0;
		DWRUtil.addRows("searchBody", data.results, cellFuncs);
	}
	
	PdfPageAjaxSearch.doSearch(request, callBack);
	return false;
}

function pdfEmbed(index, adminOrReader, eisbn, pageNumber) {
	var zoomVal = DWRUtil.getValue("zoomOptions");
	var url;
	if (adminOrReader == 'reader') {
		url = "/depp/reader/protected/pdfpage/";
	} else {
		url = "/depp/admin/protected/pdfpage/";	
	}
	
	$("PdfDoc").src = url + index + "/" + Math.floor(Math.random() * 1000001) + "?" + zoomVal +  "#toolbar=0&statusbar=0&scrollbar=0&messages=0&navpanes=0&" + zoomVal;
	updatePrintCopyEnabled(eisbn, pageNumber, adminOrReader);
}

function updatePrintCopyEnabled(isbn, pageNumber, adminOrReader) {
	var copyCallBack = function(data) {
		if (data == true) {
			/* page already copy enabled so disable button */
			setCopyButtonDisabled();
		} else {
			setCopyButtonEnabled();
		}
	};
	
	var printCallBack = function(data) {
		if (data == true) {
			/* page already print enabled so disable button */
			setPrintButtonDisabled();
		} else {
			setPrintButtonEnabled();
		}
	};
	
	AjaxUpdatePdfPageNumber.isPageCopyEnabled(isbn, pageNumber, adminOrReader, copyCallBack);
	AjaxUpdatePdfPageNumber.isPagePrintEnabled(isbn, pageNumber, adminOrReader, printCallBack);
}

function pdfSearchEmbed(index, pageNumber, eisbn, query, adminOrReader) {

	var hostname = location.hostname;
	var port = location.port;
	
	if(port && port != "") {
		hostname = hostname + ":" + port;
	}
	var zoomVal = DWRUtil.getValue("zoomOptions");
	var iframe = document.getElementById("PdfDoc");
	
	var url;
	if (adminOrReader == 'reader') {
		url = "/depp/reader/protected/pdfpage/";
	} else {
		url = "/depp/admin/protected/pdfpage/";
	}
	iframe.src = url + index + "/pdfpage.pdf?toolbar=0&statusbar=0&scrollbar=0&messages=0&navpanes=0&" + zoomVal + "#xml=http://" + hostname + "/depp/highlighter?e="+eisbn+"&pg="+pageNumber+"&q="+query;
	updatePrintCopyEnabled(eisbn, pageNumber, adminOrReader);

	
}


function setUpNotesLinks(adminOrReader) {
	var eisbn = getTapestryParameter(DWRUtil.getValue("pdfPageEisbn"));
	var userId = getTapestryParameter(DWRUtil.getValue("userId"));
	var offset = $('pdfPageOffset').value;
	var noFunc = [function(data) { return data; }];
	var linkFunc = [function(data) {
		var displayNo = (data - offset);
		if (displayNo < 1) {
			displayNo = "prelim."
		} 
		return '<a href=\"#\" onclick=\"return updatePdfPageNumber(' + data + ', true, \'' + adminOrReader + '\')\">note on page ' + displayNo + '</a>'; 
		}];  
	var callBack = function(data) {
		var theDiv = $('notesLinks');
		DWRUtil.removeAllRows('notesLinks');
		if (data.length < 1) {
			DWRUtil.addRows('notesLinks', ['You have no notes for this title'], noFunc);
		} else {
			DWRUtil.addRows('notesLinks', data, linkFunc);
		}
	};
	NotesUpdater.getAllNotes(userId, eisbn,callBack);
}

function setStateOfNavigationControls(pageNumber, pageCount) {
	var first = $("FirstLink");
	var previous = $("PreviousLink");
	var next = $("NextLink");
	var last = $("LastLink");
	
	var firstBottom = $("FirstLinkBottom");
	var previousBottom = $("PreviousLinkBottom");
	var nextBottom = $("NextLinkBottom");
	var lastBottom = $("LastLinkBottom");
	
	if (pageNumber == 1) {
		first.className = "off";
		firstBottom.className = "off";
		previous.className = "off";
		previousBottom.className = "off";
		last.className = "on";
		lastBottom.className = "on";
		next.className = "on";
		nextBottom.className = "on";
	} else if (pageNumber == pageCount) {
		last.className = "off";
		lastBottom.className = "off";
		next.className = "off";
		nextBottom.className = "off";
		first.className = "on";
		firstBottom.className = "on";
		previous.className = "on";
		previousBottom.className = "on";
	} else {
		last.className = "on";
		lastBottom.className = "on";
		next.className = "on";
		nextBottom.className = "on";
		first.className = "on";
		firstBottom.className = "on";
		previous.className = "on";
		previousBottom.className = "on";
	}
	return false;
}

function updatePdfPageNumber(pageNumber, redisplayPdf, adminOrReader) {
	var pageCount = $('pdfPageCount');
	if (pageCount != null) {
		pageCount = parseInt(pageCount.value);
	}
	var offset = $('pdfPageOffset');
	
	if (offset != null) {
		offset = $('pdfPageOffset').value;
	}
	
	var callBack = function(data) {
		var displayPageNo = (pageNumber - parseInt(offset));
		if (displayPageNo < 1) {
			displayPageNo = '-';
		}
		if (data == -1) {
			var abstractViewAddress = $('abstractViewString').value;
			window.location = abstractViewAddress.substr(1) + "/expired";
		} else if (data == -2) {
			readOnlineModalWindow();
			$('currentPdfPage').value = $('previousPdfPage').value;
			var tmpPageNo = $('currentPdfPage');
			setStateOfNavigationControls(getTapestryParameter(tmpPageNo.value), pageCount);
		} else if (data == -3) {
			/* abuse detected, show modal window containing reCAPTCHA */
			captchaModalWindow();
		} else {
			if(redisplayPdf) {
				pdfEmbed(data, adminOrReader, eisbn, pageNumber);
			}
			// Set text in jump to box
			$('pageLabel').innerHTML = displayPageNo + ' of ' + (pageCount - parseInt(offset));
			$('pageLabelBottom').innerHTML = displayPageNo + ' of ' + (pageCount - offset);
		}
	};
	var eisbn = getTapestryParameter(DWRUtil.getValue("pdfPageEisbn"));
	var userId = getTapestryParameter(DWRUtil.getValue("userId"));
	// work out if active loan, preview, or rental
	
	var rental;
	var preview;

	if (adminOrReader == 'reader') {	
		rental = $('rental').value;
		preview = $('preview').value;
	} else {
		rental = "false";
		preview = "true";
	}
	
	AjaxUpdatePdfPageNumber.getAjaxUpdatePageIndex(eisbn, pageNumber, rental, preview, adminOrReader, callBack);
	$('previousPdfPage').value = $('currentPdfPage').value;
	$('currentPdfPage').value = pageNumber;
	
	var notes = dojo.widget.byId("noteArea");
	if (notes != null) {
		var updateNotes = function(data) {
			var noteArea = dojo.widget.byId("noteArea");
			noteArea.setText(data);
		};
		NotesUpdater.getNote(userId, eisbn, pageNumber, updateNotes);
	}
	
	setStateOfNavigationControls(pageNumber, pageCount);
	return false;
}

var navigating = false;
var showCaptcha = false;
var blankingOut = false;
function navigatePdf(forwardOrBack, adminOrReader) {
	if (navigating == true) {
		alert("Page is still loading");
		return false;
	} else {
		navigating = true;
		var tmpPageNo = $('currentPdfPage');
		var tmpPageCount = $('pdfPageCount');
		
		var pageNumber = null;
		var pageCount = null;
		
		if (tmpPageNo != null) {
			pageNumber = parseInt(getTapestryParameter(tmpPageNo.value));
			
		}
		
		if (tmpPageCount != null) {
			pageCount = parseInt(getTapestryParameter(tmpPageCount.value));
		}
		
		if (pageNumber == null || pageCount == null) {
			throw new Exception("Error: Cannot load page");
		}
		
		
		if (forwardOrBack == "forward") {
			if (pageNumber < pageCount) {
				pageNumber++;
			}
		} else if (forwardOrBack == "back") {
			if (pageNumber > 1) {
				pageNumber--;
			}
		} else if (forwardOrBack == "last") {
			if (pageNumber < pageCount) {
				pageNumber = pageCount;
			}
		} else if (forwardOrBack == "first") {
			if (pageNumber > 1) {
				pageNumber = 1;
			}
		}
		updatePdfPageNumber(pageNumber, true, adminOrReader);
		return false;
	}
}

function jumpToPdfPage(adminOrReader) {
	var offset = $('pdfPageOffset').value;
	var original = $('originalJumpToPage').value;
	var input = $('jumpToPage').value;
	var result = input.match(/-?\d+/);
	if(result == null){
		alert("There is no page " + input + " in this document.");
		$('jumpToPage').select();
	}
	else{
		var pageNo = parseInt(result[0], 10);
		var pageCount =  parseInt(getTapestryParameter(DWRUtil.getValue("pdfPageCount")));
		if(pageNo > (pageCount - parseInt(offset)) || pageNo < 1){
			alert("There is no page " + pageNo + " in this document.");
			$('jumpToPage').select();
		} else {
			var jumpToPageNo = parseInt(pageNo) +  parseInt(offset);
			updatePdfPageNumber(jumpToPageNo , true, adminOrReader);
			$('jumpToPage').blur();
		}
	}
}

function jumpToPdfPageTop(adminOrReader) {
	var jumpToPageBottom = $('jumpToPageBottom');
	var jumpToPageTop = $('jumpToPage');
	jumpToPageBottom.value = jumpToPageTop.value;
	jumpToPdfPage(adminOrReader);
}

function jumpToPdfPageBottom(adminOrReader) {
	var jumpToPageBottom = $('jumpToPageBottom');
	var jumpToPageTop = $('jumpToPage');
	jumpToPageTop.value = jumpToPageBottom.value;
	jumpToPdfPage(adminOrReader);
}

function jumpToFocus(){
	$('jumpToPage').select();
}

function ajaxUpdateUnprotectedPdf(protection) {
	var pageNumber = parseInt(getTapestryParameter(DWRUtil.getValue("currentPdfPage")));
	var pageCount =  parseInt(getTapestryParameter(DWRUtil.getValue("pdfPageCount")));
	
	var printButtonLink = $("printButtonLink");
	var copyButtonLink = $("copyButtonLink");
	
	var callBack = function(data) {
	
		var copiesLeft = parseInt(DWRUtil.getValue("copiesLeft"));
		var printsLeft = parseInt(DWRUtil.getValue("printsLeft"));
	
		if (data == -1) {
			var abstractViewAddress = DWRUtil.getValue("abstractViewString");
			window.location = abstractViewAddress.substr(1) + "/expired";
		} else {
			// must be reader portal for print / copy enabled pages
			pdfEmbed(data, "reader", eisbn, pageNumber);
			if (protection == "print") {
				if (printsLeft > 0) {
					DWRUtil.setValue("printsLeft", --printsLeft);
					window.alert("The print dialogue should appear automatically once you have clicked on OK below.\r\nIf the print dialogue box does not appear, please right-click on the PDF area on the screen and select \"Print\"\r\n");
				}
			} else if (protection == "copy") {
				if (copiesLeft > 0) {
					DWRUtil.setValue("copiesLeft", --copiesLeft);
				}
			}
		}
	}
	var eisbn = getTapestryParameter($("pdfPageEisbn").value);
	
	// work out if active loan, preview, or rental
	var rental = DWRUtil.getValue("rental");
		var preview = DWRUtil.getValue("preview");
	AjaxUpdatePdfPageNumber.getAjaxUpdateProtectedPageIndex(eisbn, pageNumber, protection, rental, preview, callBack);
	

	return false;
}

function setCopyButtonEnabled() {
	var copyButtonLink = $("copyButtonLink");
	if (!copyButtonLink) {
		return;
	}
	var copiesLeft = parseInt(DWRUtil.getValue("copiesLeft"));
	if (copiesLeft > 0) {
		copyButtonLink.style.display = "";
		DWRUtil.setValue("copyButtonText", "To enable this page to be copied, click the OK button and copy the text you require.");
	} else {
		copyButtonLink.style.display = "none";
		DWRUtil.setValue("copyButtonText", "You have no copy credits left for this title.");
	}
}

function setPrintButtonEnabled() {
	var printButtonLink = $("printButtonLink");
	if (!printButtonLink) {
		return;
	}
	var printsLeft = parseInt(DWRUtil.getValue("printsLeft"));
	if (printsLeft > 0) {
		var printButtonLink = $("printButtonLink");
		printButtonLink.style.display = "";
		DWRUtil.setValue("printButtonText", "To enable this page to be printed, click the OK button and wait for the print dialog to be displayed.");
	} else {
		DWRUtil.setValue("printButtonText", "You have no print credits left for this title");
	}
}

function setCopyButtonDisabled() {
	var copyButtonLink = $("copyButtonLink");
	if (!copyButtonLink) {
		return;
	}
	copyButtonLink.style.display = "none";
	DWRUtil.setValue("copyButtonText", "You may now copy this page");
}

function setPrintButtonDisabled() {
	var printButtonLink = $("printButtonLink");
	if (!printButtonLink) {
		return;
	}
	printButtonLink.style.display = "none";
	DWRUtil.setValue("printButtonText", "You may now print this page");
}

function updateSearchLink(pageNumber, query, adminOrReader) {
	var pageCount =  parseInt(getTapestryParameter(DWRUtil.getValue("pdfPageCount")));
	var eisbn = getTapestryParameter($("pdfPageEisbn").value);

	var callBack = function(data) {
		if (data == -1) {
			var abstractViewAddress = DWRUtil.getValue("abstractViewString");
			window.location = abstractViewAddress.substr(1) + "/expired";
		} else if (data != -2) { // avoid case where preview is blocked
			pdfSearchEmbed(data, pageNumber, eisbn, query, adminOrReader);
		}
	}

	if (adminOrReader == 'reader') {
		// work out if active loan, preview, or rental
		var rental = DWRUtil.getValue("rental");
		var preview = DWRUtil.getValue("preview");
		AjaxUpdatePdfPageNumber.getAjaxUpdatePageIndex(eisbn, pageNumber, rental, preview, adminOrReader, callBack);
	} else {
		AjaxUpdatePdfPageNumber.getAjaxUpdatePageIndex(eisbn, pageNumber, "false", "true", adminOrReader, callBack);
	}
	updatePdfPageNumber(pageNumber, false, adminOrReader);
	return false;
}

function getTapestryParameter(param) {
	if (param.indexOf("S") > -1) {
		param = param.substring(1);
	}
	return param;
}

function resizePdfIFrame(){
	var heightStr;
	var widthStr;
	var agent = navigator.userAgent.toLowerCase();
	if(window.innerHeight) {
		heightStr = Math.ceil(window.innerHeight * 1.75) + "px";
	} else if (document.body.clientHeight) {
		if (agent.indexOf('msie 7.0') != -1) {
			heightStr = Math.ceil(document.documentElement.clientHeight * 1.75) + "px";
		} else {
			heightStr = Math.ceil(document.documentElement.clientHeight * 1.55) + "px";
		}
	}
	var pdfDoc = document.getElementById("PdfDoc");
	
	if (heightStr) {
		pdfDoc.style.height = heightStr;
	}
	
	if (pdfDoc.style.width != "99%" && pdfDoc.style.width != "") {
		// width needs updating
		var toolsDiv = $("accordionDiv");
		pdfDoc.style.width = calculateWidth(toolsDiv.style.display == "");
	}
}

function resizeTools() {
	var heightStr = 250;
	var agent = navigator.userAgent.toLowerCase();
	if(window.innerHeight) {
		heightStr = Math.ceil(window.innerHeight * 0.8);
	} else if (document.documentElement.clientHeight) {
		if (agent.indexOf('msie 7.0') != -1) {
			heightStr = Math.ceil(document.documentElement.clientHeight * 0.8);
		} else {
			heightStr = Math.ceil(document.documentElement.clientHeight * 0.65);
		}
	}
	return (heightStr - 138);
}

function updateNoPerPage() {
	var saveToFile = document.getElementById("saveToFile");
	var noPerPage = document.getElementById("noPerPage");
	if (saveToFile.checked) {
		noPerPage.style.display = "none";
	} else {
		noPerPage.style.display = "block";
	}
	
	return true;
}

function zoomPdf(adminOrReader) {
	var eisbn = getTapestryParameter(DWRUtil.getValue("pdfPageEisbn"));
	var userId = getTapestryParameter(DWRUtil.getValue("userId"));
	var pageNumber = DWRUtil.getValue("currentPdfPage");
	
	var rental;
	var preview;
	
	if (adminOrReader == 'reader') {
		rental = DWRUtil.getValue("rental");
		preview = DWRUtil.getValue("preview");
	} else {
		rental = "false";
		preview = "true";
	}
	
	var callBack = function(data) {
		pdfEmbed(data, adminOrReader, eisbn, pageNumber);
	}
	AjaxUpdatePdfPageNumber.getAjaxUpdatePageIndex(eisbn, pageNumber, rental, preview, adminOrReader, callBack);
	
	return false;
}

function zoomPdfBottom(adminOrReader) {
	var zoomOptionsBottom = $('zoomOptionsBottom');
	var zoomOptions = $('zoomOptions');
	zoomOptions.value = zoomOptionsBottom.value;
	zoomPdf(adminOrReader);
}

function zoomPdfTop(adminOrReader) {
	var zoomOptionsBottom = $('zoomOptionsBottom');
	var zoomOptions = $('zoomOptions');
	zoomOptionsBottom.value = zoomOptions.value;
	zoomPdf(adminOrReader);
}

function setPdfZoom(zoomLevel) {
	var zoomOptions = $('zoomOptions');
	zoomOptions.value = zoomLevel;
}

var returnSrc;
function updateReturnSrc() {
	if (showCaptcha == false) {
		returnSrc = $('PdfDoc').src;
	}
}

function readOnlineModalWindow() {
	updateReturnSrc();
	blankingOut = true;
	$('PdfDoc').src = "/depp/ModalWindowBackground.html";

	var html = "<div class=\"modal_window_content\"><div>Preview is limited to the first 50 physical pages</div>";
	html += "<div class=\"modal_window_buttons\"><input valign=\"bottom\" type=\"image\" src=\"../../images/ok.gif\" onClick=\"$('PdfDoc').src='" + returnSrc + "'; closeModalWindow(); return false;\" /></div></form></div>";
	modalWindow(html, 300, 100);
}

function captchaModalWindow() {
	updateReturnSrc();
	showCaptcha = true;
	blankingOut = true;
	$('PdfDoc').src = "/depp/ModalWindowBackground.html";

	var html = "<div class=\"modal_window_content\"><form method=\"POST\" action=\"\" onsubmit=\"validateReCaptcha(); return false;\"><div class=\"infringement_message\"><h1>WARNING</h1><p>Dawsonera has detected that you may be in breach of the terms and conditions due to a high rate of page requests. If you are intending to try and copy or distribute this content it is illegal and you must desist immediately.</p><p>Your institutional administrator has been notified.</p><p>In order to continue, please enter the code shown below.</p></div>";
	html += "<div id=\"recaptcha_div\"></div>";
	html += "<div class=\"modal_window_buttons\"><form><input type=\"hidden\" value=\"" + returnSrc + "\" id=\"returnPage\" /><input valign=\"bottom\" type=\"image\" src=\"../../images/ok.gif\" onClick=\"validateReCaptcha(); return false;\"/></div>";
	modalWindow(html, 600, 400);
	addCaptchaToModalWindow();
}

function addCaptchaToModalWindow() {
	var publicKey = $('reCaptchaPublicKey').value;
	Recaptcha.create(publicKey, "recaptcha_div", { theme: "clean", callback: Recaptcha.focus_response_field });
}

function modalWindow(html, dialogWidth, dialogHeight) {
	Dialog.info(html, {width:dialogWidth, height:dialogHeight, destroyOnClose:true});
}

function closeModalWindow() {
	Dialog.closeInfo();
}

function iframeOnload() {
	if (blankingOut == true) {
		blankingOut = false;
		return true;
	}
	
	if (showCaptcha == true) {
		/* user trying to navigate to different page after recaptcha displayed */
        Recaptcha.destroy();
        closeModalWindow();
        captchaModalWindow();
    } else {
    	navigating = false;
    }
    return true;
}
