// // Note that this method requires that your server support Server-Side // Includes (SSI). // // Alternately, the message to be displayed may be defined by // un-commenting the following line, and inserting whatever text is to be // displayed: //var messageToScroll = "Un-comment this line, then insert your message here."; // The speed at which characters are scrolled may be controlled by modifying // the 'displayDelay' variable. This variable specifies the amount of time, in // milliseconds, the display pauses between scrolling characters: var displayDelay = 200; // The message to be displayed may either be scrolled completely off the // display before it is repeated (scrollOffScreen = true), or, it may be // repeated with no interviening spaces (scrollOffScreen = false): var scrollOffScreen = true; // The message scrolled by this script is displayed on a series of individual // simulated dot matrix displays, each capable of displaying a single // character of the message. You may vary the number of displays presented: var displays = 22; // The image for each character supported by this script is contained in a // .gif file. The size of each of these images is: var displayGraphicWidth = 12; var displayGraphicHeight = 15; // In many applications, it is desirable to have an image displayed on the // left or right side of the string of simulated dot matrix display graphics. // This may be accomplished by inserting the appropriate (X)HTML code into // the following variables (set these variables to empty strings ("") if // no graphics are to be displayed): var displayLineStart = "\"\""; var displayLineEnd = "\"\"
"; // Global Variables // ---------------- // I hate global variables. But, when writing code in JavaScript, they're // pretty hard to avoid. Here are the ones used by this script: // This array contains the images used to represent each character of the // message to be displayed: var displayImage = new Array(); // An index into the 'displayImage' array, indicating the first character to // be displayed the next time the display is refreshed: var firstCharacterToDisplay; // An index into the DOM document.images object array, indicating which page // image is the first simulated dot matrix display graphic: var firstDisplayImage; // Preparation // ----------- // // In preparation for scrolling the message, we'll pre-load all the graphics // we'll be needing. First, we'll determine if the message is to be scrolled // completely off the screen... var count; var displayImageToRecord = 0; if (scrollOffScreen) { // It is. Pad start of image array with enough blanks for each // character display... for (count = 0; count < displays; count++) { displayImage[displayImageToRecord] = new Image(); displayImage[displayImageToRecord].src = "space.gif"; displayImageToRecord++; } } // Stuff a display image for each character of the message to be // displayed (this is where the character conversion of the message // happens)... for (count = 0; count < messageToScroll.length; count++) { displayImage[displayImageToRecord] = new Image(); switch(messageToScroll.charAt(count)) { case "@": displayImage[displayImageToRecord].src = "at.gif"; break; case "A": case "a": displayImage[displayImageToRecord].src = "a.gif"; break; case "B": case "b": displayImage[displayImageToRecord].src = "b.gif"; break; case "C": case "c": displayImage[displayImageToRecord].src = "c.gif"; break; case "D": case "d": displayImage[displayImageToRecord].src = "d.gif"; break; case "E": case "e": displayImage[displayImageToRecord].src = "e.gif"; break; case "F": case "f": displayImage[displayImageToRecord].src = "f.gif"; break; case "G": case "g": displayImage[displayImageToRecord].src = "g.gif"; break; case "H": case "h": displayImage[displayImageToRecord].src = "h.gif"; break; case "I": case "i": displayImage[displayImageToRecord].src = "i.gif"; break; case "J": case "j": displayImage[displayImageToRecord].src = "j.gif"; break; case "K": case "k": displayImage[displayImageToRecord].src = "k.gif"; break; case "L": case "l": displayImage[displayImageToRecord].src = "l.gif"; break; case "M": case "m": displayImage[displayImageToRecord].src = "m.gif"; break; case "N": case "n": displayImage[displayImageToRecord].src = "n.gif"; break; case "O": case "o": displayImage[displayImageToRecord].src = "o.gif"; break; case "P": case "p": displayImage[displayImageToRecord].src = "p.gif"; break; case "Q": case "q": displayImage[displayImageToRecord].src = "q.gif"; break; case "R": case "r": displayImage[displayImageToRecord].src = "r.gif"; break; case "S": case "s": displayImage[displayImageToRecord].src = "s.gif"; break; case "T": case "t": displayImage[displayImageToRecord].src = "t.gif"; break; case "U": case "u": displayImage[displayImageToRecord].src = "u.gif"; break; case "V": case "v": displayImage[displayImageToRecord].src = "v.gif"; break; case "W": case "w": displayImage[displayImageToRecord].src = "w.gif"; break; case "X": case "x": displayImage[displayImageToRecord].src = "x.gif"; break; case "Y": case "y": displayImage[displayImageToRecord].src = "y.gif"; break; case "Z": case "z": displayImage[displayImageToRecord].src = "z.gif"; break; case "[": displayImage[displayImageToRecord].src = "openSquareBrace.gif"; break; case "~": displayImage[displayImageToRecord].src = "tilde.gif"; break; case "]": displayImage[displayImageToRecord].src = "closeSquareBrace.gif"; break; case "{": displayImage[displayImageToRecord].src = "openCurleyBrace.gif"; break; case "}": displayImage[displayImageToRecord].src = "closeCurleyBrace.gif"; break; case " ": displayImage[displayImageToRecord].src = "space.gif"; break; case "!": displayImage[displayImageToRecord].src = "exclaimation.gif"; break; case "\"": displayImage[displayImageToRecord].src = "doubleQuote.gif"; break; case "#": displayImage[displayImageToRecord].src = "pound.gif"; break; case "$": displayImage[displayImageToRecord].src = "dollar.gif"; break; case "%": displayImage[displayImageToRecord].src = "percent.gif"; break; case "&": displayImage[displayImageToRecord].src = "amperstand.gif"; break; case "'": displayImage[displayImageToRecord].src = "apostrophy.gif"; break; case "(": displayImage[displayImageToRecord].src = "openParen.gif"; break; case ")": displayImage[displayImageToRecord].src = "closeParen.gif"; break; case "*": displayImage[displayImageToRecord].src = "asterisk.gif"; break; case "+": displayImage[displayImageToRecord].src = "plus.gif"; break; case ",": displayImage[displayImageToRecord].src = "comma.gif"; break; case "-": displayImage[displayImageToRecord].src = "dash.gif"; break; case ".": displayImage[displayImageToRecord].src = "period.gif"; break; case "/": case "\\": displayImage[displayImageToRecord].src = "slash.gif"; break; case "0": displayImage[displayImageToRecord].src = "0.gif"; break; case "1": displayImage[displayImageToRecord].src = "1.gif"; break; case "2": displayImage[displayImageToRecord].src = "2.gif"; break; case "3": displayImage[displayImageToRecord].src = "3.gif"; break; case "4": displayImage[displayImageToRecord].src = "4.gif"; break; case "5": displayImage[displayImageToRecord].src = "5.gif"; break; case "6": displayImage[displayImageToRecord].src = "6.gif"; break; case "7": displayImage[displayImageToRecord].src = "7.gif"; break; case "8": displayImage[displayImageToRecord].src = "8.gif"; break; case "9": displayImage[displayImageToRecord].src = "9.gif"; break; case ":": displayImage[displayImageToRecord].src = "colon.gif"; break; case ";": displayImage[displayImageToRecord].src = "semicolon.gif"; break; case "<": displayImage[displayImageToRecord].src = "lessThan.gif"; break; case "=": displayImage[displayImageToRecord].src = "equal.gif"; break; case ">": displayImage[displayImageToRecord].src = "greaterThan.gif"; break; case "?": displayImage[displayImageToRecord].src = "question.gif"; break; default: displayImage[displayImageToRecord].src = "space.gif"; break; } displayImageToRecord++; } // Functions // --------- // This function is called once the page loads, allowing us to get things // initialized and ready to run: function InitializeScroller() { var count; var firstDisplayImageFound; // Initialize necessary variables... firstCharacterToDisplay = 0; // First, we'll do a little dummy-proofing. We'll attempt to find the first // image in the series of images which comprise the display. This image was // assigned the name 'ds0' if the companion file 'scrolla.js' was properly // inserted in the page... for ( count = 0, firstDisplayImageFound = false; (count < document.images.length) && (! firstDisplayImageFound); count++ ) { // Is this the image we're looking for?... if (document.images[count].name == "ds0") { // Yes. Record its offset... firstDisplayImage = count; // And record the fact that we found it... firstDisplayImageFound = true; } } // See if we ever found the 'ds0' image... if (! firstDisplayImageFound) { // We never found it. Something's hoddibly wrong. We have no choice // but to give up... alert("Can't find first display image. Script can't be executed."); return; } // Prepare to update the display (just as soon as possible)... setTimeout("UpdateDisplay()", 1); // From here on out, the display will be refreshed everytime the timer // expires, causing the 'UpdateDisplay()' function to be called. } // This function is called everytime the timer expires. Its purpose // in life is to refresh the display: function UpdateDisplay() { var displayToUpdate; var sourceImageIndex; sourceImageIndex = firstCharacterToDisplay; for (displayToUpdate = 0; displayToUpdate < displays; displayToUpdate++) { document.images[firstDisplayImage + displayToUpdate].src = displayImage[sourceImageIndex].src; // Prepare to update next display, wrapping to fetch next image // if necessary... if (++sourceImageIndex >= displayImage.length) sourceImageIndex = 0; } // Scroll index, wrapping if necessary... if (++firstCharacterToDisplay >= displayImage.length) firstCharacterToDisplay = 0; // Get ready to do it all over again... setTimeout("UpdateDisplay()", displayDelay); } // (script identifier id = fredbean) // That's all, folks! // Close the comment used to hide the script from non-compliant browsers -->