<!doctype html>
<html>
<head>
<title>English Sentence Parts of Speech - RJM Programming - December, 2018</title>
<meta charset="utf-8">
<style>
span { color:pink; }
.correct { color:green; }
.wrong { color:orange; }
</style>
<script type='text/javascript'>

var selbit='<select style=width:35px; id=selid onchange="analyze(this.value,this.id);">' +
'<option value=""> </option>' +
'<option value="0"> Noun</option>' +
'<option value="1"> Verb</option>' +
'<option value="2"> Pronoun</option>' +
'<option value="3"> Preposition</option>' +
'<option value="4"> Conjunction</option>' +
'<option value="5"> Article</option>' +
'<option value="6"> Adverb</option>' +
'<option value="7"> Adjective</option>' +
'<option value="8"> Determiner</option>' +
'</select>';

var sentences=[" They were seen here yesterday. |2,1,1,6,0",
" When Mary came in the door was open and the fan was blowing. |6,0,1,3,5,0,1,1,4,5,0,1,1",
" She met a young girl who got three Barbie Dolls at Christmas. |2,1,5,7,0,2,1,0,0,0,3,0",
" The policeman warned of what can happen here at night. |5,0,1,3,6,1,1,6,3,0",
" That water collects and mosquitoes breed is well known to entymologists. |8,0,1,4,0,1,1,6,1,3,0",
" The office tower, which was built in the sixties, was located in Park Street. |5,0,0,8,1,1,3,5,0,1,1,3,0,0",
" The rower, who was the coxswain, sat facing the others. |5,0,2,1,5,0,1,1,5,2",
" The artist prepared a canvas before starting with any brush work. |5,0,1,5,0,6,1,3,8,0,0"
];

var sentencesx=[" When Mary came in the door was open and the fan was blowing. |6,0,1,3,5,0,1,1,4,5,0,1,1"
];

var score=0;
var goes=0;
var answer="";
var ioffset=0;

var choice=-1;

function buttonize(inse) {
var outse=inse, scnt=0, ii=0;
answer=inse;
//alert(sentences[choice]);
var blankbasis=sentences[choice].split('|')[1].split(',');
//blankbasis.push("");
var words=sentences[choice].replace(/\,/g,'').replace(/\:/g,'').replace(/\;/g,'').replace(/\!/g,'').replace(/\?/g,'').replace(/\,/g,'').replace(' ','').split(' ');
//var words=sentences[choice].replace(' ','').split(' ');
words.push("");
//alert(selbit);
for (var i=0; i<blankbasis.length; i++) {
ii=i;
if (words[i] == '') {
if (eval(1 + i) == blankbasis.length) {
if (blankbasis[ii] == '') {
//alert(487);
outse=outse.replace(' ', selbit.replace(/\>\ \ /g,'>  ').replace('selid ','selid' + i + ' ').replace(/\ /g,'~'));
answer=answer.replace(' ',' ');
} else {
//alert(87);
outse=outse.replace(' ', selbit.replace(/\>\ \ /g,'>  ').replace('selid ','selid' + i + 'aselid' + scnt + ' ').replace('"' + blankbasis[ii] + '"','"' + blankbasis[ii] + '*"').replace(/\ /g,'~'));
answer=answer.replace(' ','<span>[' + selbit.replace(/\>\ \ /g,'>  ').replace('selid ','selid' + i + 'aselid' + scnt + ' ').replace('"' + blankbasis[ii] + '"','"' + blankbasis[ii] + '*"').replace(/\ /g,'~').split('*">')[eval(-1 + selbit.replace(/\>\ \ /g,'>  ').replace('selid ','selid' + i + 'selid' + scnt + ' ').replace('"' + blankbasis[ii] + '"','"' + blankbasis[ii] + '*"').replace(/\ /g,'~').split('*">').length)].split('<')[0].replace(/\ /g,' ') + ']</span>');
scnt++;
goes++;
}
} else {
if (blankbasis[ii] == '') {
//alert(4387);
outse=outse.replace(' ', selbit.replace(/\>\ \ /g,'>  ').replace('selid ','selid' + i + ' ').replace(/\ /g,'~'));
answer=answer.replace(' ',' ');
} else {
//alert(4857);
outse=outse.replace(' ', selbit.replace(/\>\ \ /g,'>  ').replace('selid ','selid' + i + 'bselid' + scnt + ' ').replace('"' + blankbasis[ii] + '"','"' + blankbasis[ii] + '*"').replace(/\ /g,'~'));
answer=answer.replace(' ','<span>[' + selbit.replace(/\>\ \ /g,'>  ').replace('selid ','selid' + i + 'bselid' + scnt + ' ').replace('"' + blankbasis[ii] + '"','"' + blankbasis[ii] + '*"').replace(/\ /g,'~').split('*">')[eval(-1 + selbit.replace(/\>\ \ /g,'>  ').replace('selid ','selid' + i + 'selid' + scnt + ' ').replace('"' + blankbasis[ii] + '"','"' + blankbasis[ii] + '*"').replace(/\ /g,'~').split('*">').length)].split('<')[0].replace(/\ /g,' ') + ']</span>');
scnt++;
goes++;
}
}
} else if (sentences[choice].indexOf(', ' + words[i]) != -1 && sentences[choice].indexOf(', ' + words[i]) < eval(0 + sentences[choice].indexOf(' ' + words[i]))) {
//alert('' + 'i=' + i + ' ' + words[i] + ' ... ' + blankbasis[ii] + ' --- ' + outse.split(' ')[0].slice(-10) + ' ' + outse.split(' ')[1]);
if (blankbasis[ii] == '') {
outse=outse.replace(', ', selbit.replace(/\>\ \ /g,'>, ').replace('selid ','selid' + i + ' ').replace(/\ /g,'~'));
answer=answer.replace(' ',' ');
} else {
//alert(words[eval(-1 + i)] + ' ... ' + outse.split(words[eval(-1 + i)])[1]);
//alert(selbit.replace(/\>\ \ /g,'>, ').replace('selid ','selid' + i + ' ').replace('"' + blankbasis[ii] + '"','"' + blankbasis[ii] + '*"').replace(/\ /g,'~'));
outse=outse.replace(', ' + words[i], selbit.replace(/\>\ \ /g,'>, ').replace('selid ','selid' + i + 'cselid' + scnt + ' ').replace('"' + blankbasis[ii] + '"','"' + blankbasis[ii] + '*"').replace(/\ /g,'~') + words[i]);
//alert(' becomes ' + outse.split(words[eval(-1 + i)])[1]);
//if (blankbasis[ii] == "2") {
//alert(selbit.replace(/\>\ \ /g,'>, ').replace('selid ','selid' + i + ' ').replace('"' + blankbasis[ii] + '"','"' + blankbasis[ii] + '*"').replace(/\ /g,'~') + words[i]);
//alert('' + outse.split('*">').length + ' ' + outse.split('*">')[eval(-1 + outse.split('*">').length)].substring(0,120)); // + ' Before ... ' + answer);
//}
answer=answer.replace(', ','<span>[' + selbit.replace(/\>\ \ /g,'>, ').replace('selid ','selid' + i + 'cselid' + scnt + ' ').replace('"' + blankbasis[ii] + '"','"' + blankbasis[ii] + '*"').replace(/\ /g,'~').split('*">')[eval(-1 + selbit.replace(/\>\ \ /g,'>, ').replace('selid ','selid' + i + ' ').replace('"' + blankbasis[ii] + '"','"' + blankbasis[ii] + '*"').replace(/\ /g,'~').split('*">').length)].split('<')[0].replace(/\ /g,' ') + ']</span>');
//alert(answer);
//outse=outse.replace(',<select','<select');
//answer=answer.replace(',<select','<select');
scnt++;
goes++;
}
} else if (sentences[choice].indexOf('; ' + words[i]) != -1) {
if (blankbasis[ii] == '') {
outse=outse.replace('; ', selbit.replace(/\>\ \ /g,'>; ').replace('selid ','selid' + i + ' ').replace(/\ /g,'~'));
answer=answer.replace(' ',' ');
} else {
outse=outse.replace('; ' + words[i], selbit.replace(/\>\ \ /g,'>; ').replace('selid ','selid' + i + 'dselid' + scnt + ' ').replace('"' + blankbasis[ii] + '"','"' + blankbasis[ii] + '*"').replace(/\ /g,'~') + words[i]);
answer=answer.replace('; ','<span>[' + selbit.replace(/\>\ \ /g,'>: ').replace('selid ','selid' + i + 'dselid' + scnt + ' ').replace('"' + blankbasis[ii] + '"','"' + blankbasis[ii] + '*"').replace(/\ /g,'~').split('*">')[eval(-1 + selbit.replace(/\>\ \ /g,'>: ').replace('selid ','selid' + i + ' ').replace('"' + blankbasis[ii] + '"','"' + blankbasis[ii] + '*"').replace(/\ /g,'~').split('*">').length)].split('<')[0].replace(/\ /g,' ') + ']</span>');
scnt++;
goes++;
}
} else if (sentences[choice].indexOf('. ' + words[i]) != -1) {
if (blankbasis[ii] == '') {
outse=outse.replace('. ', selbit.replace(/\>\ \ /g,'>. ').replace('selid ','selid' + i + ' ').replace(/\ /g,'~'));
answer=answer.replace(' ',' ');
} else {
alert(6754);
outse=outse.replace('. ' + words[i], selbit.replace(/\>\ \ /g,'>. ').replace('selid ','selid' + i + 'eselid' + scnt + ' ').replace('"' + blankbasis[ii] + '"','"' + blankbasis[ii] + '*"').replace(/\ /g,'~') + words[i]);
answer=answer.replace('. ','<span>[' + selbit.replace(/\>\ \ /g,'>: ').replace('selid ','selid' + i + 'eselid' + scnt + ' ').replace('"' + blankbasis[ii] + '"','"' + blankbasis[ii] + '*"').replace(/\ /g,'~').split('*">')[eval(-1 + selbit.replace(/\>\ \ /g,'>: ').replace('selid ','selid' + i + ' ').replace('"' + blankbasis[ii] + '"','"' + blankbasis[ii] + '*"').replace(/\ /g,'~').split('*">').length)].split('<')[0].replace(/\ /g,' ') + ']</span>');
scnt++;
goes++;
}
} else if (sentences[choice].indexOf(': ' + words[i]) != -1) {
if (blankbasis[ii] == '') {
outse=outse.replace(': ', selbit.replace(/\>\ \ /g,'>: ').replace('selid ','selid' + i + ' ').replace(/\ /g,'~'));
answer=answer.replace(' ',' ');
} else {
outse=outse.replace(': ' + words[i], selbit.replace(/\>\ \ /g,'>: ').replace('selid ','selid' + i + 'fselid' + scnt + ' ').replace('"' + blankbasis[ii] + '"','"' + blankbasis[ii] + '*"').replace(/\ /g,'~') + words[i]);
answer=answer.replace(': ','<span>[' + selbit.replace(/\>\ \ /g,'>: ').replace('selid ','selid' + i + 'fselid' + scnt + ' ').replace('"' + blankbasis[ii] + '"','"' + blankbasis[ii] + '*"').replace(/\ /g,'~').split('*">')[eval(-1 + selbit.replace(/\>\ \ /g,'>: ').replace('selid ','selid' + i + ' ').replace('"' + blankbasis[ii] + '"','"' + blankbasis[ii] + '*"').replace(/\ /g,'~').split('*">').length)].split('<')[0].replace(/\ /g,' ') + ']</span>');
scnt++;
goes++;
}
} else {
if (blankbasis[ii] == '') {
outse=outse.replace(' ', selbit.replace(/\>\ \ /g,'>  ').replace('selid ','selid' + i + ' ').replace(/\ /g,'~'));
answer=answer.replace(' ',' ');
} else {
//if (i != 0) { alert(words[i]); }
outse=outse.replace(' ', selbit.replace(/\>\ \ /g,'>  ').replace('selid ','selid' + i + 'gselid' + scnt + ' ').replace('"' + blankbasis[ii] + '"','"' + blankbasis[ii] + '*"').replace(/\ /g,'~'));
answer=answer.replace(' ','<span>[' + selbit.replace(/\>\ \ /g,'>  ').replace('selid ','selid' + i + 'gselid' + scnt + ' ').replace('"' + blankbasis[ii] + '"','"' + blankbasis[ii] + '*"').replace(/\ /g,'~').split('*">')[eval(-1 + selbit.replace(/\>\ \ /g,'>  ').replace('selid ','selid' + i + 'selid' + scnt + ' ').replace('"' + blankbasis[ii] + '"','"' + blankbasis[ii] + '*"').replace(/\ /g,'~').split('*">').length)].split('<')[0].replace(/\ /g,' ') + ']</span>');
scnt++;
goes++;
}
}
//ii=Math.max(1,i);
}
answer=answer.replace(/\~/g,' ').replace(/\,\<span\>\[\,/g,',<span>[').replace(/\<span\>\[\,/g,',<span>[').replace(/\.\]\<\/span\>/g,']</span>');
return outse.replace(/~/g,' ');
}

function analyze(tv,tid) {
var iwhichone=tid.split('selid')[eval(-1 + tid.split('selid').length)], spans, ispans;
document.getElementById(tid).style.backgroundColor='lightgreen';
goes+=ioffset;
ioffset=0;
//goes++;
if (tv.indexOf('*') != -1) {
score++;
if (tid.split('selid').length >= 3) {
//alert('correct ' + iwhichone);
spans=document.getElementsByTagName('span');
for (ispans=0; ispans<spans.length; ispans++) {
if (eval('' + iwhichone) == ispans) {
spans[ispans].className='correct';
score++;
//alert(iwhichone);
}
}
}
} else if (tv != '') {
score--;
if (tid.split('selid').length >= 3) {
//alert('wrong ' + iwhichone);
spans=document.getElementsByTagName('span');
for (ispans=0; ispans<spans.length; ispans++) {
if (eval('' + iwhichone) == ispans) {
spans[ispans].className='wrong';
score--;
//alert(iwhichone);
}
}
}
}
}

function onl() {
choice=Math.floor(Math.random() * sentences.length);
while (sentences[choice].indexOf('|') == -1) {
choice=Math.floor(Math.random() * sentences.length);
}
//alert(choice);
//alert(' ' + sentences[choice].split('|')[0].trim() + ' ');
document.getElementById('sentence').innerHTML=buttonize(' ' + sentences[choice].split('|')[0].trim() + ' ');
document.getElementById('danswer').style.visibility='hidden';
document.getElementById('answer').innerHTML=sentences[choice].split('|')[0] + '<br>' + explain(answer);
//alert(document.getElementById('sentence').innerText);
//goes++;
//ioffset=-1;
}

function scoreit() {
//document.getElementById('answer').innerHTML=sentences[choice].split('|')[0] + '<br>' + explain(answer);
document.getElementById('danswer').style.visibility='visible';
document.getElementById('score').innerHTML='Score: ' + score + '/' + goes;
setTimeout(onl,10000);
}

function explain(insc) {
var outsc=insc;
outsc=outsc.replace('Verb', '<a style=cursor:pointer;text-decoration:underline; onclick="alert(' + "'" + 'Verbs are the word or wordsthat tell what the subject does or is, being the action, doing or having words.' + "'" + ');">Verb</a>');
outsc=outsc.replace('Noun', '<a style=cursor:pointer;text-decoration:underline; onclick="alert(' + "'" + 'Nouns are the word or words to represent a person, place, thing or idea.' + "'" + ');">Noun</a>');
outsc=outsc.replace('Pronoun', '<a style=cursor:pointer;text-decoration:underline; onclick="alert(' + "'" + 'Pronouns are words that stand in place of a noun.' + "'" + ');">Pronoun</a>');
outsc=outsc.replace('Preposition', '<a style=cursor:pointer;text-decoration:underline; onclick="alert(' + "'" + 'Prepositions are words used after a noun or pronoun that indicates its relation to another word in the sentence.' + "'" + ');">Preposition</a>');
outsc=outsc.replace('Adverb', '<a style=cursor:pointer;text-decoration:underline; onclick="alert(' + "'" + 'Adverbs are words or phrases that modify the meaning of an adjective, verb, or other adverb, expressing manner, place, time, or degree.' + "'" + ');">Adverb</a>');
outsc=outsc.replace('Adjective', '<a style=cursor:pointer;text-decoration:underline; onclick="alert(' + "'" + 'Adjective are words naming an attribute of a noun or pronoun.' + "'" + ');">Adjective</a>');
outsc=outsc.replace('Determiner', '<a style=cursor:pointer;text-decoration:underline; onclick="alert(' + "'" + 'Determiners are modifying words that determines the kind of reference a noun or noun group.' + "'" + ');">Determiner</a>');
outsc=outsc.replace('Conjunction', '<a style=cursor:pointer;text-decoration:underline; onclick="alert(' + "'" + 'Conjunctions are words used to connect clauses or sentences or to coordinate words in the same clause.' + "'" + ');">Conjunction</a>');
outsc=outsc.replace('Article', '<a style=cursor:pointer;text-decoration:underline; onclick="alert(' + "'" + 'Articles are words used to modify a noun, which is a person, place, object, or idea.' + "'" + ');">Article</a>');
return outsc;
}

</script>
</head>
<body onload='onl();' style='background-color:#f0f0f0;'>
<h1>English Sentence Parts of Speech</a></h1>
<h3>RJM Programming - December, 2018 ... Thanks to Text Types in English by Mark Anderson and Kathy Anderson (ISBN: 0-7329-4584-4)</h3>
<h4 id=score>Score: 0/0</h3><br><br>

<h2 id=sentence style='color:blue;'></h2><br><br>
<div id=danswer><h4 id=answer style='color:red;'></h4></div><br><br>

<input id=ready onclick='scoreit();' type=button style='background-color:yellow;' value='Score My Parts of Speech Decisions'></input>

</body>
</html>