var highlighters = 2;
var currentHighlighter = 0;
document.shiftKey = false;
document.ctrlKey = false;
function linkLabelDescription(label) {
	if (label == "A") return "Adj->Noun";
	else if (label == "AM") return "'as much' etc..";
	else if (label == "AN") return "noun-modifiers->Nouns";
	else if (label == "AZ") return "As->Verb";
	else if (label == "B") return "rel. clauses";
	else if (label == "BI") return "'be' to some idiomatic expression";
	else if (label == "BT") return "fronted objects in time expressions";
	else if (label == "BW") return "What, whatever -> Verbs";
	else if (label == "C") return "Coordinating Conjunction -> Subject";
	else if (label == "CC") return "Clauses to Coordinating Conjunctions";
	else if (label == "D") return "Determiners -> Nouns";
	else if (label == "DD") return "Definitive Determiners -> #s or Adj. as Nouns";
	else if (label == "DG") return "Determiner -> Proper Noun";
	else if (label == "DP") return "Posessive Determiner -> Gerund";
	else if (label == "DT") return "Determiners -> Nouns in time expressions";
	else if (label == "E") return "verb-modifying adverbs";
	else if (label == "EA") return "Adverbs -> Adjectives";
	else if (label == "EB") return "Adverbs -> forms of 'be'";
	else if (label == "EC") return "Adverbs -> comparative adjectives";
	else if (label == "EE") return "Adverbs -> Adverbs";
	else if (label == "EF") return "'Enough' -> Adj/Adverbs";
	else if (label == "EI") return "Adverbs (eg soon, shortly) -> after, before";
	else if (label == "EL") return "????? ____ -> Else";
	else if (label == "EN") return "Adverbs -> Quantities";
	else if (label == "EZ") return "Adverbs -> 'as'";
	else if (label == "FL") return "for -> long";
	else if (label == "FM") return "from -> preposition";
	else if (label == "GN") return "common noun -> proper noun";
	else if (label == "I") return "????? verbs -> Infinitives";
	else if (label == "IN") return "in ->	idiomatic time expressions";
	else if (label == "J") return "prepositions -> Objects";
	else if (label == "JG") return "prepositions -> Proper nouns: 'of science'";
	else if (label == "JT") return "conjunctions -> time expressions";
	else if (label == "M") return "nouns -> modifiers";
	else if (label == "MG") return "certain prepositions -> nouns";
	else if (label == "MV") return "verbs -> modifying phrases";
	else if (label == "MX") return "noun -> modifiers";
	else if (label == "ND") return "numerical determiner -> expressions";
	else if (label == "NF") return "fractional words -> of";
	else if (label == "NI") return "special idiomatic number phrase -> number";
	else if (label == "NJ") return "used with NF";
	else if (label == "NN") return "connects number words in a series";
	else if (label == "NR") return "fraction words -> superlatives";
	else if (label == "NS") return "singular expressions: Numerical determiner -> expression";
	else if (label == "NT") return "not -> to";
	else if (label == "NW") return "numbers -> fractional numbers";
	else if (label == "O") return "transitive verbs -> objects";
	else if (label == "OD") return "rise/fall -> distances";
	else if (label == "OF") return "certain verb/adjectives -> of";
	else if (label == "ON") return "on -> time expressions";
	else if (label == "OT") return "verbs -> time expressions (as objects)";
	else if (label == "ON") return "on -> time expressions";
	else if (label == "P") return "be verbs -> complements";
	else if (label == "PP") return "have -> past participles";
	else if (label == "R") return "nouns -> relative clauses";
	else if (label == "RS") return "start of a relative clause -> subject of";
	else if (label == "S") return "subject nouns -> finite verbs";
	else if (label == "SI") return "verbs -> subjects in subject-verb inversion";
	else if (label == "SX") return "I -> was/am";
	else if (label == "SXI") return "I -> was/am in subject verb inversion";
	else if (label == "TA") return "adjectives -> month names";
	else if (label == "TD") return "day-of-the-week -> morning|afternoon|evening";
	else if (label == "TA") return "adjectives -> month names";
	else if (label == "TH") return "verbs -> that[clause]";
	else if (label == "TI") return "titles";
	else if (label == "TS") return "certain verbs -> conjunctive clauses";
	else if (label == "TT") return "'time' -> previous adjective";
	else if (label == "TW") return "days of the week -> month names";
	else if (label == "U") return "subject-object/determiner -> noun";
	else if (label == "UN") return "until|since -> time phrases";
	else if (label == "WN") return "when phrases -> time nouns";
	else if (label == "Y") return "idiomatic time + place expressions <-";
	else if (label == "YS") return "'s -> noun";
	else if (label == "G") return "proper noun in a series";
	else if (label == "ID") return "proper noun in a series";
	else if (label == "TM") return "month names -> day numbers";
	else return "UNKNOWN";
}
	
	function addWord(index) {
		new Insertion.Bottom('article'," <div id='w"+index+"' class='word" + ((V[index].ranking==0)?" zeroRanking":"") + "' onMouseUp='about("+index+")'>"+V[index].word+"</div>");
	}
	
	function addLink(index) {
		new Insertion.Bottom('about',"<div id='l"+index+"' onClick='highlightLink("+index+",event)'><b title='"+linkLabelDescription(E[index].label)+"'>"+E[index].label+"</b> "+V[E[index].parent].word+" --&gt; "+V[E[index].child].word+"</div>");
	}
	
	function addLinkType(label) {
		new Insertion.Bottom('links',"<div class='label' id='t"+label+"' onClick='highlightLinksOfType(\""+label+"\",event)'><b>" + label + "</b> (" + L[label] + ") "+linkLabelDescription(label)+"</div><div class='histogram' style='width: "+L[label]/maxCount*350+"px'></div>");
	}
	
	function removeAllClassesWithName(type) {
		var c = $$("."+type);
		for (i = 0; i < c.length; i++) {
			c[i].removeClassName(type);
		}
	}
	
	function grabHighlighter(shiftKey,ctrlKey) {
		if (ctrlKey)
			highlighterClassName = "highlight2";
		else if (shiftKey)
			highlighterClassName = "highlight3";
		else
			highlighterClassName = "highlight1";
		removeAllClassesWithName(highlighterClassName);
		return highlighterClassName;
	}
		
	function highlightLink(index,event) {
		highlighterClassName = grabHighlighter(event.shiftKey,event.ctrlKey);
		$('l'+index).addClassName(highlighterClassName);
		$('w'+E[index].parent).addClassName(highlighterClassName);
		$('w'+E[index].child).addClassName(highlighterClassName);
	}
	
	function highlightLinksOfType(label,event) {
		highlighterClassName = grabHighlighter(event.shiftKey,event.ctrlKey);
		if ($('t'+label))
			$('t'+label).addClassName(highlighterClassName);
		for (i = 0; i < E.length; i++) {
			if (E[i].label == label) {
				$('w'+E[i].parent).addClassName(highlighterClassName);
				$('w'+E[i].child).addClassName(highlighterClassName);
			}
		}
	}
	
	function highlightWordsRankedBetween(lower,upper,tag,event) {
		highlighterClassName = grabHighlighter(event.shiftKey,event.ctrlKey);
		for (i = 0; i < V.length; i++) {
			if ((V[i].ranking >= lower) && (V[i].ranking <= upper) && (V[i].tag == tag))
				$('w'+i).addClassName(highlighterClassName);
		}
	}
	
	function highlightWords(words,event) {
		highlighterClassName = grabHighlighter(event.shiftKey,event.ctrlKey);
		for (i = 0; i < words.length; i++) {
			$('w'+words[i]).addClassName(highlighterClassName);
		}
	}
		
	
	function about(index) {
		show('links');
		removeAllClassesWithName('selected');
		$('w'+index).addClassName('selected');
		$('aboutTitle').innerHTML = V[index].word;
		$('about').innerHTML = "";
		if (V[index].tag != "")
			$('aboutPOS').innerHTML = "("+V[index].tag+")";
		else 
			$('aboutPOS').innerHTML = "";
		$('aboutRanking').innerHTML = Math.round(V[index].ranking*100)/100;
		for (i = 0; i < E.length; i++) {
			if ((E[i].child == index) || (E[i].parent == index))
				addLink(i);
		}
	}
	
function show(what) {
	$('linksBar').style.display = "none";
	$('rankBar').style.display = "none";
	$('summarizeBar').style.display = "none";
	
	$(what+'Bar').style.display = "block";
	removeAllClassesWithName("current");
	$('go'+what).addClassName("current");
}	

	show('links');
	
	for (i = 0; i < V.length; i++) {
		addWord(i);
	}
	
	var L = new Object();
	var maxCount = 1;
	for (i = 0; i < E.length; i++) {
		l = E[i].label;
		if (!L[l]) {
			L[l] = 1;
		} else {
			L[l] = L[l] + 1;
		}
		if (L[l] > maxCount)
			maxCount = L[l];
	}
	
	for (var label in L) {
		addLinkType(label);
	}
	/*
	Event.observe(window,'keydown',checkForModifiers,false);
	
	function checkForModifiers(evt) {
		document.shiftKey = */