Clean up personal statement code
[ucas-personal-statement-counter.git] / script.js
CommitLineData
3d0fb55f 1$ = document.getElementById.bind(document);
2function printStats(lines, numLines, numChars, parasWithExtraSpace, parasLines) {
3 $("results").innerHTML="";
4 for(var i=0; i<numLines; i++) {
5 $("results").innerHTML+=(i<9?"0"+(i+1):(i+1))+" "+lines[i]+"<br />";
6 if(parasLines.indexOf(i+1)>=0 && $("chk2").checked) $("results").innerHTML+="<br />";
7 }
8
9 $("statLines").innerHTML="Lines: "+numLines+"/47";
10 $("statLines").style.color=numLines>47?"red":"initial";
11 $("statChars").innerHTML="Characters: "+numChars+"/4000";
12 $("statChars").style.color=numChars>4000?"red":"initial";
13
14 if(parasWithExtraSpace.length>0) {
15 $("statWarn").innerHTML="Warning: Extra space(s) found at end of paragraph(s) "+parasWithExtraSpace.join(", ");
16 $("statWarn").style.visibility="visible";
17 $("statWarn").style.color="red";
18 } else {
19 $("statWarn").innerHTML="Warning: Extra space(s) found at end of paragraph(s) ";
20 $("statWarn").style.visibility="hidden";
21 }
22}
23
24function analyse() {
25 var text=$("txt1").value;
26 var parasWithExtraSpace=[];
27 var parasLines=[];
28 var paras=text.split('\n');
29 var lines=[];
30 var line=""
31 if(text=="") {
32 printStats(lines, 0, 0, parasWithExtraSpace, parasLines);
33 return;
34 }
35 for(var i=0; i<paras.length; i++) {
36 if(paras[i][paras[i].length-1]==' ') parasWithExtraSpace.push(i+1);
37 do {
38 if(paras[i][0]==' ') paras[i]=paras[i].substring(1); //remove preceding space
39 line=paras[i].substring(0, paras[i].length>94?94:paras[i].length); //extract line of 94 chars or fewer
40 var lastidx=line.lastIndexOf(' ');
41 if(lastidx>=0) { //if there is a space in line
42 if(line.length<94) lastidx=line.length; //if it can contain whole line
43 } else lastidx=line.length;
44 if(paras[i][94]==' ') lastidx=94; //if extracted right before a space
45 paras[i] = line.substring(lastidx+1)+paras[i].substring(94); //remove extracted string (up to lastidx) from paras
46 line=line.substring(0, lastidx);
47 lines.push(line);
48 } while(paras[i]!="");
49 parasLines.push(lines.length); //lines where paragraphs end
50 }
51 printStats(lines, lines.length, text.length+paras.length-1, parasWithExtraSpace, parasLines);
52}
53
54function autocheck() {
55 if($("chk1").checked) {
56 $("txt1").addEventListener("input", analyse);
57 $("btn1").style.visibility='hidden';
58 analyse();
59 } else {
60 $("txt1").removeEventListener("input", analyse);
61 $("btn1").style.visibility='visible';
62 }
63}