// Online Flashcards JavaScript application // // Please click the 'back' button on your browser right now. // // (c)1997, Andy Lyons, http://nersp.nerdc.ufl.edu/~alyons // All Rights Reserved // Feel free to use but maintain this portion for proper creditting function MakeArray(n) { this.length = n; for (var i = 1; i <= n; i++) { this[i] = "" } return this } function ReadyMove() { if (document.myform.viewfirst.checked) { if ((document.myform.displayo[0].checked) && (document.myform.csent.value=="")) { ShowC() return false } else if ((document.myform.displayo[1].checked) && (document.myform.esent.value=="")) { ShowE() return false } else { return true } } else { return true } } function NextSent() { if (ReadyMove()) { if (CurNum < MaxSent) { CurNum = CurNum + 1 ShowSent(true) } else { alert("Sorry! Weiter geht's nicht. Wir sind bereits am Ende.") } } } function TagAndNext() { if (ReadyMove()) { if (CurNum < MaxSent) { Tagged[Ord[CurNum]] = !Tagged[Ord[CurNum]] if (Tagged[Ord[CurNum]]) { TotalTagged += 1 } else { TotalTagged -= 1 } CurNum = CurNum + 1 ShowSent(true) } else { alert("Sorry! Weiter geht's nicht. Wir sind bereits am Ende.") } } } function PrevSent() { if (ReadyMove()) { if (CurNum > 1) { CurNum = CurNum - 1 ShowSent(true) } else { alert("Sorry! Weiter geht's nicht. Wir sind bereits am Anfang.") } } } function FirstSent() { CurNum = 1 ShowSent(true) } function LastSent() { CurNum = MaxSent ShowSent(true) } function ShowC() { if ((document.myform.displayo[1].checked) || (document.myform.displayo[2].checked)) { alert("Der deutsche Text wird bereits gezeigt.") } else { document.myform.csent.value = q[Ord[CurNum]] } } function ShowE() { if ((document.myform.displayo[0].checked) || (document.myform.displayo[2].checked)) { alert("Der fremdsprachige Text wird bereits gezeigt.") } else { document.myform.esent.value = a[Ord[CurNum]] } } function ShowSent(wipe) { if (document.myform.displayo[1].checked) { document.myform.csent.value=q[Ord[CurNum]] document.myform.esent.value="" } else if (document.myform.displayo[0].checked) { document.myform.csent.value="" document.myform.esent.value=a[Ord[CurNum]] } else { document.myform.csent.value=q[Ord[CurNum]] document.myform.esent.value=a[Ord[CurNum]] } if (wipe) { document.myform.goodtry.value = "" } document.myform.txt_counter.value=CurNum + " of " + MaxSent document.myform.tagged.checked = Tagged[Ord[CurNum]] document.myform.txt_tagged.value = TotalTagged } function Alphabetize(LeftComparison) { document.myform.esent.value="Alphabetizing, please wait..." document.myform.esent.focus() document.myform.esent.select() document.myform.csent.focus() var Inserted = false var Comparison = false Ord[1] = 1 for (var i = 2; i <= MaxSent; i++) { document.myform.csent.value = (MaxSent - i) document.myform.csent.select() InsertAfterThis = 0 for (var j = 1; j <= (i-1); j++) { if (LeftComparison) { Comparison = (q[i].toUpperCase() > q[Ord[j]].toUpperCase()) } else { Comparison = (a[i].toUpperCase() > a[Ord[j]].toUpperCase()) } if (Comparison) { InsertAfterThis = j } } Inserted = false for (var j = (i+1); j >= 1; j--) { if (!Inserted) { if (j == (InsertAfterThis + 1)) { Ord[j] = i Inserted = true } else { Ord[j] = Ord[j-1] } } } } // If we're resorting all the words, then reset OrdTemp if (MaxSent == NumWords) { for (var i = 1; i <= MaxSent; i++) { OrdTemp[i] = Ord[i] } } CurNum = 1 document.myform.csent.value = "DONE" document.myform.csent.select() ShowSent(true) } function Randomize() { document.myform.esent.value="Shuffling, please wait..." document.myform.esent.focus() document.myform.esent.select() document.myform.csent.focus() for (var i = 1; i <= MaxSent; i++) { document.myform.csent.value = (MaxSent*2) - i document.myform.csent.select() NumTaken[i] = 0 OrdTemp2[i] = Ord[i] } today = new Date(); seed = today.getTime(); for (var i = 1; i <= MaxSent; i++) { seed = Math.round(Math.abs(Math.sin (seed)*1000000)) OrdBuff[i] = 1 + seed % MaxSent NumTaken[OrdBuff[i]] += 1 } var CurOrd = 1 var CurCount = 1 while (CurCount <= MaxSent) { document.myform.csent.value = (MaxSent - CurCount) document.myform.csent.select() if (NumTaken[CurCount] > 0) { for (var k = 1; k <= MaxSent; k++) { if (OrdBuff[k] == CurCount) { // added Ord[CurOrd] below Ord[k] = OrdTemp2[CurOrd] CurOrd += 1 } } } CurCount += 1 } if (MaxSent == NumWords) { for (var i = 1; i <= MaxSent; i++) { OrdTemp[i] = Ord[i] } } CurNum = 1 document.myform.csent.value = "DONE" document.myform.csent.select() ShowSent(true) } function TagMe() { Tagged[Ord[CurNum]] = document.myform.tagged.checked if (document.myform.tagged.checked) { TotalTagged += 1 } else { TotalTagged -= 1 } document.myform.txt_tagged.value = TotalTagged } function getCookieVal (offset) { var endstr = document.cookie.indexOf (";", offset); if (endstr == -1) endstr = document.cookie.length; return unescape(document.cookie.substring(offset, endstr)); } function GetCookie (name) { var arg = name + "="; var alen = arg.length; var clen = document.cookie.length; var i = 0; while (i < clen) { var j = i + alen; if (document.cookie.substring(i, j) == arg) return getCookieVal (j); i = document.cookie.indexOf(" ", i) + 1; if (i == 0) break; } return null; } function SetCookie (name,value,expires,path,domain,secure) { document.cookie = name + "=" + escape (value) + ((expires) ? "; expires=" + expires.toGMTString() : "") + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + ((secure) ? "; secure" : ""); } function SupportCookies() { exp_date = new Date() exp_date.setTime(exp_date.getTime() + (6 * 30 * 24 * 60 * 60 * 1000)) SetCookie ("test","OK",exp_date,location.pathname); if (GetCookie("test")) { return true } else { return false } } function SaveToDisk() { ToSaveOrNot = true if (!SupportCookies()) { alert("Sorry, deine Browser- und/oder Netzwerk-Konfiguration unterstuetzen nicht das Speichern auf Diskette.") ToSaveOrNot = false } else if (TotalTagged == 0) { alert("Sorry, es gibt keine markierte Karteikarten zu speichern.") ToSaveOrNot = false } else if (GetCookie("tags")) { if (!confirm("Einige Karteikarten dieser Web-Seite sind bereits auf Diskette gespeichert. Sollen sie ersetzt werden?")) { ToSaveOrNot = false } } if (ToSaveOrNot) { tagbuild = "" for (var i = 1; i <= MaxSent; i++) { if (Tagged[i]) { tagbuild += i + "_" } } tagbuild = tagbuild.substring(0,tagbuild.length-1) exp_date = new Date() exp_date.setTime(exp_date.getTime() + (6 * 30 * 24 * 60 * 60 * 1000)) SetCookie ("tags",tagbuild,exp_date, location.pathname); alert(TotalTagged + " flashcards tags have been saved to disk. Now, when you come back to this web page another time (on this same computer), you can retag these flashcards again by clicking on 'Load tags from disk'."); } } function LoadFromDisk() { ToTagOrNot = true tagbuild = GetCookie("tags") if (!SupportCookies()) { alert("Sorry, deine Browser- und/oder Netzwerk-Konfiguration unterstuetzen nicht das Laden von Diskette.") ToSaveOrNot = false } else if (!tagbuild) { alert("Sorry, von dieser Web-Seite wurden noch keine markierten Karteikarten gespeichert (auf diesem Computer).") ToTagOrNot = false } else if (TotalTagged != 0) { if (!confirm("There are already " + TotalTagged + " tagged flashcards on this web page. Do you want to untag these and then retag the ones that have been previously saved on disk?")) { ToTagOrNot = false; } else { SetTags(false) if (MaxSent != NumWords) { ShowAll() } } } if (ToTagOrNot) { tagsarray = tagbuild.split("_"); for (var i = 0; i <= MaxSent-1; i++) { if (tagsarray[i] == null) { break } else { TotalTagged += 1 Tagged[tagsarray[i]] = true } } ShowSent(false) alert(TotalTagged + " flashcards have been retagged from disk. Click 'View tagged only' to go through them.") } } function ToggleTags() { for (var i = 1; i <= MaxSent; i++) { Tagged[Ord[i]] = !Tagged[Ord[i]] } TotalTagged = MaxSent - TotalTagged ShowSent(false) } function ShowTags() { if (TotalTagged == 0) { alert("There must be a least one tagged flashcard before you can hide all the others.") } else { // Reset the Ord array according to the Tagged setting var j = 0 for (var i = 1; i <= MaxSent; i++) { if (Tagged[Ord[i]]) { j += 1 OrdBuff[j] = Ord[i] } } MaxSent = j for (var i = 1; i <= MaxSent; i++) { Ord[i] = OrdBuff[i] } CurNum = 1 ShowSent(true) } // TotalTagged <> 0 } function ShowAll() { if (MaxSent == NumWords) { alert("Alle Karteikarten sind bereits gezeigt.") } else { MaxSent = NumWords for (var i = 1; i <= MaxSent; i++) { Ord[i] = OrdTemp[i] } CurNum = 1 ShowSent(true) } } function SetTags(tf) { for (var i = 1; i <= MaxSent; i++) { Tagged[Ord[i]] = tf } if (tf) { TotalTagged = MaxSent } else { TotalTagged = 0 } ShowSent(false) } function WindowList() { if (TotalTagged == 0) { alert("This function displays all the tagged words as a list. You must have at least one record tagged. Tag one or more words and then try again.") } else { msg=open("","TaggedWords"+NumWindows, "toolbar=yes,menubar=yes,scrollbars=yes,location=yes,status=yes"); NumWindows++ var QuotChar = '"' msg.document.writeln("
" + TotalTagged + " of " + NumWords + " records from " + document.title + ".
" + q[Ord[i]] + " | " + a[Ord[i]] + " |