// 
// *** Default options ***
//
var dr_bOpenLinksInNewWindow = Boolean(false)	// Values: true false
var dr_bDBPrinterFriendly = Boolean(true)	// Values: true false
var dr_sDBVersion = 'nas'			// Versions: kjv asv hnv nas nlt nltp rsv amp dby web yng
var dr_bMornEveUseBlueLetter = Boolean(false)	// Values: true false
var dr_iMyContentDefault = 4			// 0=Blank, 1=OT, 2=NT, 3=DP, 4=M/E
var dr_sTitle = 'The Sleeth\'s Daily Readings'
// Window options used when opening links in new windows
var dr_sDailyBibleOTWindowOptions = 
		'toolbar=yes,menubar=yes,location=yes,scrollbars=yes,resizable=yes'
var dr_sDailyBibleNTWindowOptions = 
		'toolbar=yes,menubar=yes,location=yes,scrollbars=yes,resizable=yes'
var dr_sDailyPromiseWindowOptions = 
		'toolbar=no,menubar=no,location=no,scrollbars=yes,resizable=yes,width=620'
var dr_sDailyPromiseUtmostWindowOptions = 
		'toolbar=no,menubar=no,location=no,scrollbars=yes,resizable=yes,width=800'
var dr_sMorningEveningWindowOptions = 
		'toolbar=no,menubar=no,location=no,scrollbars=yes,resizable=yes' // DO NOT SET WIDTH!
var dr_sLinkWindowOptions = 
		'toolbar=yes,menubar=yes,location=yes,scrollbars=yes,resizable=yes'
//
// *** Actuall Code ***
//
// When adding new images, be sure to update the g_asImages array!
var g_asImages = new Array('calendar')
var g_sImageRoot = ''

var g_aimgDefault = new Array()
var g_aimgDown = new Array()
var g_aimgUp = new Array()
var g_bMyContentDiffDomain = Boolean(false)
var g_dSelected = new Date
var g_iErrCount = new Number(0)
var g_sPrevWindowStatus = new String('')

var thisDailyReading = document
var thisDailyReadingNav = ''
var thisDailyReadingMyContent = ''

window.onerror = fErrHandler
document.title = dr_sTitle

// This error handler will allow errors to go undetected
function fErrHandler(sMsg, sURL, sLine) {
 if (g_iErrCount++ > 65534) {
  alert('Message: ' + sMsg + 'In file: ' + sURL + '\n' + 'At line: ' + sLine)
  return false
 }
 return true
}

// Swap images based on index (in g_asImages) and swap code (up, down, default).
function fSwapImage(oObj, iImageIdx, iSwapCode) {
 if (document.images) {
  var sImage = new String
  switch (iSwapCode) {
   case 'up': sImage = g_aimgUp[iImageIdx].src; break;
   case 'down': sImage = g_aimgDown[iImageIdx].src; break;
   default: sImage = g_aimgDefault[iImageIdx].src; break;
  }
  // document.images[g_asImages[iImageIdx]].src = sImage;
  oObj.src = sImage
 }
}

// Set Window status to given text.  If null, set to previous value.
function fSetWindowStatus(sStatus) {
 if (sStatus == null) {
  window.status = g_sPrevWindowStatus
 } else {
  g_sPrevWindowStatus = window.status
  window.status = sStatus
 }
}

// Locate the Old/New Testamtent Daily Bible reading for the selected date.
function fLocateDailyBible_OTFlag(bOTFlag) {
 oTargetFrame = thisDailyReadingMyContent
 if (thisDailyReadingNav.chkOpenNewWindow.checked) {
  oTargetFrame = null
 } else {
  g_bMyContentDiffDomain = true
 }
 gdb_bPrinterFriendly = Boolean(thisDailyReadingNav.chkPrinterFriendly.checked == true)
 gdb_sVersion = thisDailyReadingNav.cmbVersion.value
 gdb_sOTWindowOptions = dr_sDailyBibleOTWindowOptions
 gdb_sNTWindowOptions = dr_sDailyBibleNTWindowOptions
 fLocateDB_ForDate_OTFlag_TargetFrame(g_dSelected, bOTFlag, oTargetFrame)
}

// Locate the Daily Promise reading for the selected date.
function fLocateDailyPromise(dForDate) {
 var dDateWork = dForDate == null ? new Date : dForDate
 var sLocation = new String
 sLocation = 'http://promises.blueletterbible.org/index.cfm?doy=' + dDateWork.getJulianDays()
 if (thisDailyReadingNav.chkOpenNewWindow.checked) {
  wDailyPromise = thisDailyReading.open(sLocation, 'DailyPromiseWindow', dr_sDailyPromiseWindowOptions)
  wDailyPromise.focus()
 } else {
  g_bMyContentDiffDomain = true
  thisDailyReadingMyContent.src = sLocation
 }
}

// Locate daily devotional links.
function fLocateDailyDevotional(oHref, dForDate) {
 var dDateWork = dForDate == null ? new Date : dForDate
 var sLocation = new String
 if (oHref.name == 'hrefDailyUtmost') {
  sLocation = oHref.href + '/' + dDateWork.getFullMonthString() + '/' + dDateWork.getFullDateString() + '/devotion.aspx?year=' + dDateWork.getFullYear()
  wDailyPromise = thisDailyReading.open(sLocation, 'DailyPromiseWindow', dr_sDailyPromiseUtmostWindowOptions)
  wDailyPromise.focus()
 } else {
  sLocation = oHref.href + dDateWork.getFullMonthString() + '/' + dDateWork.getFullMonthString() + dDateWork.getFullDateString() + '.html'
  if (thisDailyReadingNav.chkOpenNewWindow.checked) {
   wDailyPromise = thisDailyReading.open(sLocation, 'DailyPromiseWindow', dr_sDailyPromiseWindowOptions)
   wDailyPromise.focus()
  } else {
   g_bMyContentDiffDomain = true
   thisDailyReadingMyContent.src = sLocation
  }
 }
}

// Locate the Morning and Evening reading for the selected date.
function fLocateMornEve() {
 var i = new Number(0)
 var sAMPM = new String
 var sLocation = new String
 var sWindowOptions = new String(dr_sMorningEveningWindowOptions)
 if (thisDailyReadingNav.chkMornEveUseBlueLetter.checked) {
  sAMPM = 'am'
  for (i=0; i<thisDailyReadingNav.length; i++) {
   if (thisDailyReadingNav[i].checked) {
    sAMPM = thisDailyReadingNav[i].value
   }
  }
  sLocation = 'http://blueletterbible.org/morneve/' + g_dSelected.getFullMonthString() + '/' + g_dSelected.getFullMonthString() + g_dSelected.getFullDateString() + sAMPM + '.html'
 } else {
  sLocation += 'morningevening.html#' + g_dSelected.getFullMonthString() + '/' + g_dSelected.getFullDateString()
 }

 if (thisDailyReadingNav.chkOpenNewWindow.checked) {
  sWindowOptions += thisDailyReadingNav.chkMornEveUseBlueLetter.checked ? ',width=600' : ' '
  wMorningEvening = thisDailyReading.open(sLocation, 'MorningEveningWindow', sWindowOptions)
  if (!thisDailyReadingNav.chkMornEveUseBlueLetter.checked) {
   wMorningEvening.location = sLocation
  }
  wMorningEvening.focus()
 } else {
  g_bMyContentDiffDomain = Boolean(thisDailyReadingNav.chkMornEveUseBlueLetter.checked)
  thisDailyReadingMyContent.src = sLocation
 }
}

// Locate other links
function fLocateLinks(oLink) {
 sLocation = oLink.href
 if (thisDailyReadingNav.chkOpenNewWindow.checked) {
  wLink = thisDailyReading.open(sLocation, 'DailyReadingLinks', dr_sLinkWindowOptions)
  wLink.focus()
 } else {
  g_bMyContentDiffDomain = true
  thisDailyReadingMyContent.src = sLocation
 }
}

// Reset the text of the links with date specific text.
function fResetHRefForDate(oDateControl) {
 var dWork = new Date(oDateControl.value)
 g_dSelected.setDate(1)
 g_dSelected.setYear(dWork.getYear())
 g_dSelected.setMonth(dWork.getMonth())
 g_dSelected.setDate(dWork.getDate())
 thisDailyReading.getElementById('hrefDailyBibleOT').innerHTML = fGetDBText_ForDate_OTFlag(g_dSelected, true)
 thisDailyReading.getElementById('hrefDailyBibleNT').innerHTML = fGetDBText_ForDate_OTFlag(g_dSelected, false)
}

// Reset the Morning and Eveing Combobox Options.
function fResetMornEveVersion() {
//	 thisDailyReadingNav.cmbVersion.disabled =
//     (thisDailyReadingNav.chkPrinterFriendly.checked == false)
	var oCmb = thisDailyReadingNav.cmbVersion
	var sVal = oCmb.options.value

		for (i=oCmb.options.length-1; i>0; i--) {
		oCmb.options[i] = null
	}

	i = -1
	if ( thisDailyReadingNav.chkPrinterFriendly.checked == true ) {
		i++; oCmb.options[i] = new Option('KJV', 'kjv')
		i++; oCmb.options[i] = new Option('ASV', 'asv')
		i++; oCmb.options[i] = new Option('HNV', 'hnv')
		i++; oCmb.options[i] = new Option('NLT', 'nlt')
		i++; oCmb.options[i] = new Option('NLT \266', 'nltp')
		i++; oCmb.options[i] = new Option('NASB', 'nas')
		i++; oCmb.options[i] = new Option('RSV', 'rsv')
		i++; oCmb.options[i] = new Option('Amplified', 'amp')
		i++; oCmb.options[i] = new Option('Darby\'s', 'dby')
		i++; oCmb.options[i] = new Option('Webster\'s', 'web')
		i++; oCmb.options[i] = new Option('Young\'s', 'yng')
	} else {
		i++; oCmb.options[i] = new Option('KJV', 'kjv')
		i++; oCmb.options[i] = new Option('Amplified', 'amp')
	}

	for (i=0; i<oCmb.options.length; i++ ) {
		if ( oCmb.options[i].value == sVal) {
			oCmb.options[i].selected = true
			sVal = null
		}
	}
	if ( sVal != null ) {
		oCmb.options[0].selected = true
	}
}

// Reset the "disabled" property of the Morning and Evening AM/PM radio buttons.
function fResetMornEveAMPM() {
 var i = new Number(0)
 var bDisable = Boolean(thisDailyReadingNav.chkMornEveUseBlueLetter.checked == false)
 thisDailyReadingNav.rdoMornEveAMPM.disabled = bDisable
 for (i=0; i<thisDailyReadingNav.rdoMornEveAMPM.length; i++) {
  thisDailyReadingNav.rdoMornEveAMPM[i].disabled = bDisable
 }
}

// Reset the size of the MyContent frame to fit on the screen.
function fResizeMyContent() {
 var iHeight = new Number(0)
 var sSrc = thisDailyReadingMyContent.src
 if (g_bMyContentDiffDomain) {
  thisDailyReadingMyContent.src = 'blank.html'
 }
 iHeight = document.body.clientHeight - thisDailyReadingMyContent.offsetTop - 15
 if (iHeight < 52) {
  iHeight = 52
 }
 thisDailyReadingMyContent.height = iHeight
 if (g_bMyContentDiffDomain) {
  thisDailyReadingMyContent.src = sSrc
 }
}

// Initialization performed on document load
function fLoadDefaults() {
 var i = new Number(0)
 var sText = new String
 // Set global element references
 thisDailyReadingNav = thisDailyReading.getElementById('fraDailyReadingNav')
 thisDailyReadingMyContent = thisDailyReading.getElementById('myContent')
 // Set controls to default values
 thisDailyReadingNav.chkOpenNewWindow.checked = dr_bOpenLinksInNewWindow
 thisDailyReadingNav.chkPrinterFriendly.checked = dr_bDBPrinterFriendly
 thisDailyReadingNav.chkMornEveUseBlueLetter.checked = dr_bMornEveUseBlueLetter
 thisDailyReadingNav.cmbVersion.value = dr_sDBVersion.toLowerCase()
 // Resize and reset content
 fResizeMyContent()
 fResetMornEveVersion()
 fResetMornEveAMPM()
 // Preload images used by fSwapImages
 if (document.images) {
  for (i=0; i<g_asImages.length; i++) {
   g_aimgDefault[i] = new Image
   g_aimgDefault[i].src = g_sImageRoot + g_asImages[i] + '.gif'
   g_aimgUp[i] = new Image
   g_aimgUp[i].src = g_sImageRoot + g_asImages[i] + '_up.gif'
   g_aimgDown[i] = new Image
   g_aimgDown[i].src = g_sImageRoot + g_asImages[i] + '_down.gif'
  }
 }

 // Determine what should be displayed in MyContent frame.
 switch ( dr_iMyContentDefault ) {
  case 1: eval(document.getElementById('hrefDailyBibleOT').href); break;
  case 2: eval(document.getElementById('hrefDailyBibleNT').href); break;
  case 3: eval(document.getElementById('hrefDailyPromise').href); break;
  case 4: fLocateMornEve(); break;
 }
}

// Force the content frame to a local domain to avaid errors during Refresh.
function fUnloadMyContent() {
 thisDailyReadingMyContent.src = 'blank.html'
}
