<SCRIPT LANGUAGE="JavaScript"> <!-- var speed = 10 // decrease value to increase speed (must be positive) var pause = 1500 // increase value to increase pause // set initial values var timerID = null var bannerRunning = false // create array var ar = new Array() // assign the strings to the array's elements ar[0] = "Добро пожаловать" ar[1] = "Такой вот скрипт" ar[2] = "Хороший скрипт" ar[3] = "Даже слишком хороший" // assign index of current message var message = 0 // empty string initialization var state = "" // no value is currently being displayed clearState() // stop the banner if it is currently running function stopBanner() { // if banner is currently running if (bannerRunning) // stop the banner clearTimeout(timerID) // banner is now stopped bannerRunning = false } // start the banner function startBanner() { // make sure the banner is stopped stopBanner() // start the banner from the current position showBanner() } // assign state a string of "0" characters of the length of the current message function clearState() { // initialize to empty string state = "" // create string of same length containing 0 digits for (var i = 0; i < ar[message].length; ++i) { state += "0" } } // display the current message function showBanner() { // if the current message is done if (getString()) { // increment message message++ // if new message is out of range wrap around to first message if (ar.length <= message) message = 0 // new message is first displayed as empty string clearState() // display next character after pause milliseconds timerID = setTimeout("showBanner()", pause) // banner is now running bannerRunning = true } else { // initialize to empty string var str = "" // built string to be displayed (only character selected thus far are displayed) for (var j = 0; j < state.length; ++j) { str += (state.charAt(j) == "1") ? ar[message].charAt(j) : " " } // partial string is placed in status bar window.status = str // add another character after speed milliseconds timerID = setTimeout("showBanner()", speed) // banner is now running bannerRunning = true } } function getString() { // set variable to true (it will stay true unless proven otherwise) var full = true // set variable to false if a free space is found in string (a not-displayed char) for (var j = 0; j < state.length; ++j) { // if character at index j of current message has not been placed in displayed string if (state.charAt(j) == 0) full = false } // return true immediately if no space found (avoid infinitive loop later) if (full) return true // search for random until free space found (braoken up via break statement) while (1) { // a random number (between 0 and state.length - 1 == message.length - 1) var num = getRandom(ar[message].length) // if free space found break infinitive loop if (state.charAt(num) == "0") break } // replace the 0 character with 1 character at place found state = state.substring(0, num) + "1" + state.substring(num + 1, state.length) // return false because the string was not full (free space was found) return false } function getRandom(max) { return Math.round((max - 1) * Math.random()) } // --> </SCRIPT> </HEAD>
|