It randomly changes because your index into the verses array is based on Math.random(); if you want to display a new quote for each week of the year you need to base it on the current date instead.
JavaScript has a Date object that you can use to fetch information about the current date. Unfortunately, the week of the year isn't part of that information, although you could program code to calculate it if you want.
The modulo operator (%) can be used to restrict a value to a certain range.
Code:
var now = (new Date()).getTime();
var index = Math.round(now/3600000.0) % verses.length;
var keyword = verses[index];
For example, this code will take the current timestamp in milliseconds [now], divide it by 3600000.0 milliseconds (one hour), then divide it by the number of quotes you have [verses.length] and take the remainder (using the modulo operator).
Effectively, this produces a number (index) between 0 and 4 that increases to the next number once per hour and wraps back around to 0 after it exceeds 5. This number can be used as an index into your verses array.
For an approximate solution you could change 3600000.0 so that it represents 7 days in milliseconds instead of 1 hour in milliseconds. Then you would have code that cycles through a list of quotes, moving to the next one approximately once a week.
A more precise solution is possible of course, but requires more effort because you will need to compute the current week of the year.