<?xml version="1.0" encoding="UTF-8" ?>
<Module>
  <ModulePrefs
	title="Birmingham Transcription Import"
	author_email="scribe777@gmail.com"
	author="CrossWire"
	description="Birmingham Transcription Import"
	screenshot="http://crosswire.org/images/crosswire.gif"
	thumbnail="http://crosswire.org/images/crosswire.gif"
	scrolling="false"
   >
  <Require feature="dynamic-height"/>
  <Require feature="opensocial-0.7"/>
  <Require feature="pubsub-2">
  <Param name="topics">
    <![CDATA[ 
    <Topic title="Manuscript Page Annotation Add" name="interedition.annotation.add"
            description="Add An Annotation To A Manuscript Page" type="string"
            subscribe="true"/>
    <Topic title="Manuscript Selection" name="interedition.annotation.selected"
            description="Select a Manuscript Page Annotation" type="string"
            subscribe="true"/>
    <Topic title="Manuscript Page Selection" name="interedition.page.selected"
            description="Select a Manuscript Page" type="string"
            subscribe="true"/>
    ]]>
  </Param>
</Require>
</ModulePrefs>

<UserPref name="height" datatype="enum" display_name="Gadget Height" default_value="400">
	<EnumValue value="200" display_value="Short"/>
	<EnumValue value="400" display_value="Medium"/>
	<EnumValue value="600" display_value="Tall"/>
	<EnumValue value="-1" display_value="Dynamic"/>
</UserPref>

<Content type="html">
<![CDATA[

<?xml version="1.0" encoding="utf-8"?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en_US" lang="en_US">
<head>
	<link rel="stylesheet" type="text/css" href="/community/js/jquery-ui/jquery-ui.css"/>

	<script type="text/javascript" src="/community/js/jquery/jquery.min.js"></script>
	<script type="text/javascript" src="/community/js/jquery-ui/jquery-ui.min.js"></script>
	<script type="text/javascript" src="/community/js/URI.min.js"></script>
	<script type="text/javascript" src="/community/js/jquery/jquery.cookie.js"></script>
	<script type="text/javascript" src="/community/js/vmr-common.js"></script>

<style type="text/css">
table {
	border-collapse: collapse;
}

table#smallsize {
	border-collapse: collapse;
	width: 100%;
}

td, th {
	padding: 5px 4px;
	border: 1px solid #CCC;
	/*white-space: nowrap;
	overflow: hidden;*/
}

fieldset {
	padding: 4px;
	margin: 4px;
	border:1px solid;
}


thead, tfoot {
	background-color: #CCC;
}

.pagerow, .datarow {
	cursor:pointer;
}

.closeButton {
	float:right;
	background-image: url('/community/images/dialog_sprites.png');
	background-position: 50% -17px;
	background-repeat: no-repeat;
	height: 16px; width: 16px;
	cursor:pointer;
}

</style>
</head>
<body>
<div style="overflow:auto; border: none 0px; width:100%;min-height:300px;" class="fillPage" id="contentDiv">
		<div style="height:300px; overflow: auto; padding:0px; margin: 0px;">
			<table class="fillPageAlmost" style="font-size: small; padding:0px; margin:0px;" width="100%">
			<thead>
<tr>
			<th>Document ID</th>
			<th>GA</th>
			<th>Book</th>
</tr>
			</thead>
			<tbody id="doctab">
			</tbody>
			</table>
		</div>
<br/>
<span style="float:left;"><button onclick="importDocument(selectedRowID); return false;">Import </button> Import as owned by: <select id="published"><option>Project</option><option>Current User</option><option>PUBLISHED</option></select><input id="ignoreFolio" type="checkbox"/>Ignore Folio Numbers <input id="indexOnly" type="checkbox"/>Index Info Only as IGNTP</span>
<button style="float:right;" onclick="openVMR(selectedRowID, $('.pagerow:first').find('.pageID').text());return false;">Open In Manuscript Workspace</button>
	<table class="fillPageAlmost" style="font-size: small; padding:0px; margin:0px;" width="100%">
		<thead>
<tr>
			<th>Folio</th>
			<th>Verses </th>
			<th>Page ID</th>
</tr>
		</thead>
		<tbody id="pagetab">
			</tbody>
	</table>
<br/><br/>
<br/><br/>
<span id="status" />
</div>

</body>
<script>

	var preferredHeight = 500;
	var selectedRowID = null;
	var selectedPageRowID = null;

	var books = ['', 
  "Matt",
  "Mark",
  "Luke",
  "John",
  "Acts",
  "Rom",
  "1Cor",
  "2Cor",
  "Gal",
  "Eph",
  "Phil",
  "Col",
  "1Thess",
  "2Thess",
  "1Tim",
  "2Tim",
  "Titus",
  "Phlm",
  "Heb",
  "Jas",
  "1Pet",
  "2Pet",
  "1John",
  "2John",
  "3John",
  "Jude",
  "Rev"
];

var lastBook = '';
var lastChap = '';
function getVerseFromBKV(bkv) {
	if (!bkv) {
		lastBook = lastChap = '';
		return '';
	}
	bkv = bkv.substring(bkv.lastIndexOf('_')+1);
	var book = bkv.substring(1,bkv.indexOf('K'));
	var chap = bkv.substring(bkv.indexOf('K')+1, bkv.indexOf('V'));
	var verse = bkv.substring(bkv.indexOf('V')+1);

	var retVal = '';
	if (book != lastBook) {
		retVal += books[parseInt(book)] + '.'+parseInt(chap)+'.'+parseInt(verse);
		lastBook = book;
		lastChap = chap;
	}
	else if (chap != lastChap) {
		retVal += '; '+parseInt(chap)+'.'+parseInt(verse);
		lastChap = chap;
	}
	else retVal += ','+parseInt(verse);
	
	return retVal;
}

function loadDocuments() {
	var postData = {
		_fields   : 'JSON:["siglum","document_type","document_id","book_string"]'
	}
	VMR.webRequest('http://www.itsee.birmingham.ac.uk/api/transcription/', postData, function(o) {
		var results = $.parseJSON(o.text).results;
		var t = '';
		results.sort(function(a,b){return a.document_id - b.document_id;});
		for (var i = 0; i < results.length; ++i) {
			t += '<tr id="rid'+results[i].document_id+'_'+results[i].book_string+'" class="datarow"><td>'+results[i].document_id+'</td><td class="siglum">'+results[i].siglum+'</td><td class="book">'+results[i].book_string+'</td></tr>'
		}
		$('#doctab').html(t);
		$('.datarow').click(function () {
			rowClicked(this);
		});
		setSelectedRow();
		VMR.refreshHeight();
		setTimeout(function() { VMR.refreshHeight(); }, 100);
	}, 'GET');
}


function importDocument(rid, tei, pages, i, t) {
	var docID = rid.split('_')[0];
	if (!tei) {
		$('#pagetab').html('<tr><td colspan="3"><center><h1><image src="'+VMR.imagesURL+'/loading.gif"/> Loading.  Please wait...</h1></center></td></tr>');
		var postData = {
			siglum : $('#rid'+rid).find('.siglum').text(),
			book_string : $('#rid'+rid).find('.book').text(),
			_fields   : 'JSON:["tei"]'
		}
		VMR.webRequest('http://www.itsee.birmingham.ac.uk/api/transcription/', postData, function(o) {
			var results = $.parseJSON(o.text).results;
			importDocument(rid, results[0].tei);
		}, 'GET');
	}
	else if (!pages) {
		var postData = {
			text : tei,
			format : 'pagetext'
		}
		VMR.serviceRequest('transcript/splitpages/', postData, function(o) {
			var split = $.parseXML(o.text);
			importDocument(rid, split, $(split).find('page'));
		}, 'GET');
	}
	else {
		if (!i) i = 0;
		if (i >= pages.length) {
			$('#pagetab').html(t);
			$('.pagerow').click(function () {
				pageRowClicked(this);
			});
			setSelectedPageRow();
			$('#pagetab').find('tr:first').remove();
			return;
		}
	
		var v = '';
		getVerseFromBKV();
		var vss = $(pages[i]).attr('verses').split(';');
		for (var j = 0; j < vss.length; ++j) {
			v += getVerseFromBKV(vss[j]);
		}
		var folio = $(pages[i]).attr('folio');
		getBestGuessPage(docID, folio, v, function(result) {
			t = $('#pagetab').html() + '<tr id="pid'+$(pages[i]).attr('id')+'" class="pagerow"><td class="folio">'+folio+'</td><td class="verses">'+v+'</td><td class="pageID">'+$(result).find('success').attr('value')+'</td></tr>';
			$('#pagetab').html(t);
			VMR.refreshHeight();
			setTimeout(function() { VMR.refreshHeight(); }, 100);
			if (!$('#indexOnly').is(':checked')) {
				saveTranscription(docID, $(result).find('success').attr('value'), $(tei).find('split > head').text()+$(pages[i]).text()+$(tei).find('split > tail').text(), i == pages.length-1, function() {
					importDocument(rid, tei, pages, i + 1, t);
				});
			}
			else {
				saveIndexing(docID, $(result).find('success').attr('value'), v, function() {
					importDocument(rid, tei, pages, i + 1, t);
				});
			}
		});
	}
}


function saveIndexing(docID, pageID, verses, callback) {
	var postData = {
		docID           : docID,
		pageID          : pageID,
		biblicalContent : verses,
		userName        : 'IGNTP'
	};
	
	VMR.serviceRequest('biblicalcontent/put/', postData, function (o) {
		var xml = $.parseXML(o.text);
		if ($(xml).children('error').length) {
			alert($(xml).children('error').attr('message'));
		}
		if ($(xml).children('success').length) {
			if (callback) callback();
		}
	});
}


function saveTranscription(docID, pageID, tei, push, callback) {
	var postData = {
		docID : docID,
		pageID: pageID,
		push: push,
		updateIndexing: true,
		transcript: tei
	};
	if ($('#published').val()=='Current User') {
		postData.userName = VMR.userName;
	}
	else if ($('#published').val()=='Project') {
		postData.userName = VMR.siteName;
	}

	VMR.serviceRequest('transcript/put/', postData, function (o) {
		var xml = $.parseXML(o.text);
		if ($(xml).children('error').length) {
			alert($(xml).children('error').attr('message'));
		}
		if ($(xml).children('success').length) {
			if (callback) callback();
		}
	});
}

function loadPages(rid) {
	$('#pagetab').html('');
	if (!rid) return;
	var docID = rid.split('_');
	$('#pagetab').html('<tr><td colspan="3"><center><h1><image src="'+VMR.imagesURL+'/loading.gif"/> Loading.  Please wait...</h1></center></td></tr>');
	var postData = {
		siglum : $('#rid'+rid).find('.siglum').text(),
		book_string : $('#rid'+rid).find('.book').text(),
		_fields   : 'JSON:["tei"]'
	}
	VMR.webRequest('http://www.itsee.birmingham.ac.uk/api/transcription/', postData, function(o) {
		var results = $.parseJSON(o.text).results;
		var postData = {
			text : results[0].tei,
			format : 'pagetext'
		}
		VMR.serviceRequest('transcript/splitpages/', postData, function(o) {
			var split = $.parseXML(o.text);
			var t = '';
			$(split).find('page').each(function() {
				var v = '';
				getVerseFromBKV();	// clear out cached book name, cheeze
				var vss = $(this).attr('verses').split(';');
				for (var j = 0; j < vss.length; ++j) {
					v += getVerseFromBKV(vss[j]);
				}
				var folio = $(this).attr('folio');
				t += '<tr id="pid'+$(this).attr('id')+'" class="pagerow"><td class="folio">'+folio+'</td><td class="verses">'+v+'</td><td class="pageID"></td></tr>';
			});
			$('#pagetab').html(t);
			$('.pagerow').click(function () {
				pageRowClicked(this);
			});
			setSelectedPageRow();
			VMR.refreshHeight();
			setTimeout(function() {
				VMR.refreshHeight();
				getBestGuessPage(docID, $('.pagerow:first').find('.folio').text(), $('.pagerow:first').find('.verses').text(), function(xml) {
					$('.pagerow:first').find('.pageID').html($(xml).find('success').attr('value'));
					$('.pagerow:first').find('.pageID').css('background-color', $(xml).find('success').attr('type')=='found' ? '#00EE00' : '#EE0000');
				});
			}, 100);
		}, 'GET');
	}, 'GET');
}


function setSelectedPageRow(rid) {

	var docID = rid ? rid.split('_')[0] : null;
	$('.pagerow').css('background-color', '#FFFFFF');

	if ($('#pid'+rid)) {
		selectedPageRowID = rid;
//		$('#pid'+rid).css('background-color', '#FFFF99');
		$('#pid'+rid).css('background-color', '#E2E2E2');
	}
	else selectedPageRowID = null;
	if (selectedPageRowID) {
		var pageData = {
			docID        : docID,
			docname      : $('#rid'+selectedRowID).find('.siglum').text(),
			pageID       : $('#pid'+selectedPageRowID).find('.pageID').text(),
			pagename     : $('#pid'+selectedPageRowID).find('.folio').text(),
			indexcontent : $('#pid'+selectedPageRowID).find('.verses').text(),
			lang         : 'grc'
		}
		VMR.publish("interedition.page.selected", pageData);
	}
}

function getBestGuessPage(docID, folio, verses, callback) {
	if (!docID) return;
	var postData = {
		docID : docID,
		verses : verses
	};

	if (!$('#ignoreFolio').is(':checked')) {
		postData.folio=folio;
	}

	VMR.serviceRequest('transcript/getbestguesspage/', postData, function (o) {
		var xml = $.parseXML(o.text);
		callback(xml);
	});
}

function rowClicked(row) {
	var rid = $(row).attr('id').substring(3);
	setSelectedRow(rid);
}

function pageRowClicked(row) {
	var rid = $(row).attr('id').substring(3);
	setSelectedPageRow(rid);
}

function setSelectedRow(rid) {

	$('.datarow').css('background-color', '#FFFFFF');

	if ($('#rid'+rid)) {
		selectedRowID = rid;
//		$('#rid'+rid).css('background-color', '#FFFF99');
		$('#rid'+rid).css('background-color', '#E2E2E2');
	}
	else selectedRowID = null;
	loadPages(rid);
}


VMR.init(function() {
	loadDocuments();
}, '../../', true);


function openVMR(rid, pageID) {
	var docID = rid.split('_')[0];
	window.open('http://ntvmr.uni-muenster.de/manuscript-workspace?docID='+docID+((pageID)?('&pageID='+pageID):''),'workspace',
		  'titlebar=no,toolbar=no,status=no,scrollbars=yes,resizable=yes,menubar=no,location=yes,directories=no,'
		+ 'width=1024,height=768');
}

</script>
</html>

]]>
</Content>
</Module>

