﻿function transcribe (node) { 
	var chstring; // the text to be converted
	
	// get the highlighted text, or default to all text
	//IE support
	if (document.selection) { 
		//outputNode.focus();
	    chstring = document.selection.createRange();
		}
	// Mozilla and Safari support
	else if (node.selectionStart || node.selectionStart == '0') {
		chstring = node.value.substring(node.selectionStart, node.selectionEnd);
		}

	// add an X to avoid breaking on lookahead; if no selection, try whole field; if still nothing, abort
	chstring = chstring.toLowerCase()+'X';
	if (chstring=='X') { chstring = node.value.toLowerCase()+'X'; }
	if (chstring=='X') { return; }

	var canHaveAspiration = { '\u0070':'','\u0074':'','\u0288':'','\u0063':'','\u006B':'', 
		'\u0062':'', '\u0064':'', '\u0256':'', '\u006A':'', '\u0067':'','ɽ':'' };
	var vowels = { 'a':'', 'æ':'', 'e':'', 'i':'', 'ī':'', 
		'o':'', 'ô':'', 'oĭ':'', 'oŭ':'', 'ɔ':'',
		'u':'', 'ū':'', 'ṛ':'', 'ĭ':'', 'ŭ':'' };
    var output = ''; var latin = '';
	for (var i=0; i<chstring.length-1; i++) {
		latin = chstring.charAt(i);
		if (chstring.charAt(i) in vowels) {
			if (i==0 || chstring.charAt(i-1) in vowels) {
				latin += latin;    //.toUpperCase();
				}
			}
		if (latin in canHaveAspiration && chstring.charAt(i+1)=='h') {
			latin += 'h';
			i++;
			}
		if ((latin=='o' || latin=='oo') && chstring.charAt(i+1)=='ĭ') {
			latin += 'ĭ';
			i++;
			}
		if ((latin=='o' || latin=='oo') && chstring.charAt(i+1)=='ŭ') {
			latin += 'ŭ';
			i++;
			}
		if (latin=='y' && chstring.charAt(i+1)=='\u030C') {
			latin += 'y̌';
			i++;
			}
		if (latin=='̃') {
			latin = 'candrabindu';
			}
		if (latin=='͟') {
			latin = 'virama';
			}
		
		var ch = map[latin];
		if (ch) { if (ch !='null') {output += ch;} }
		else { output += latin; }
		}
	//document.getElementById('latin').value = output;
	node.value = node.value+' '+output;
	}
	
	          