/*
Скрипт, преобразующий сокращенные названия книг Библии
в соответствующие ссылки.
© rusbible.ru 2007
v.1.7
*/
/*
Настроить скрипт можно следующими, определяемыми выше, переменными:
BibleFilesRoot (string) - URL папки, в которой лежат документы (по умолчанию http://www.rusbible.ru/)
BibleLoadScripts (bool) - задает тип загрузки страницы (false для iframe (рекомендовано), true для скриптовой)
BibleLinksCSS (obj) - объект со свойствами, описывающими внешний вид панелей, ссылок и т.п. См. далее
BibleEvents (bool) - подключаться к событиям страницы (по умолчанию true)
BibleAutoClose (bool) - закрывать окошко с текстом при клике вне его (по умолчанию false)
BibleMoveable (bool) - окошко можно двигать (по умолчанию true)
BibleLinksNoWindow (bool) - вообще не показывать окошко, только ссылки менять
*/
//если требуется отдельно настроить внешний вид div'а "загрузка" и самой панели с текстом,
//это можно сделать, определив нижеследующий массив выше на своё усмотрение
if (typeof BibleLinksCSS == 'undefined')
BibleLinksCSS = {
div_loading: {
color: 'black',
fontSize: '8pt',
fontFamily: 'Tahoma',
backgroundColor: 'white',
padding: '2px',
border: 'solid 1px blue',
textAlign: 'center',
filter: 'alpha(opacity=80);'
},
div_panel: {
backgroundColor: '#E6E6FA',
border: 'solid 1px black',
fontSize: '8pt',
fontFamily: 'Tahoma',
filter: 'alpha(opacity=93);',
cursor: 'arrow'
}
};
if (typeof BibleLinks == 'undefined')
BibleLinks = {
site: (typeof BibleFilesRoot == 'undefined' ? "http://www.rusbible.ru/" : BibleFilesRoot),
searchsite:"http://www.rusbible.ru/",
useevents: (typeof BibleEvents == 'undefined' ? true : BibleEvents),
autoclose: (typeof BibleAutoClose == 'undefined' ? false : BibleAutoClose),
moveable: (typeof BibleMoveable == 'undefined' ? true : BibleMoveable),
clicked: false,
onscreen: false,
x: null, y: null,
movex: null, movey: null,
moving: false,
highlighted: false,
//указанный массив содержит коды книг Библии и варианты русских сокращений их названий.
//Если какое-то сокращенное название книги на странице не подчеркивается, значит указанного сокращения нет
//в нижеследующем списке.
//И если Вы найдете такое неподчеркиваемое сокращение, ПОЖАЛУЙСТА, ПРИШЛИТЕ ЕГО МНЕ (вместе URL, где это сокращение найдено).
//Добавлю его в этот список, и все станет краше подчеркиваться у всех.
books: {
"быт":{c:"byt",n:"Бытие",v:1,w:1},
"исх":{c:"ish",n:"Исход",v:1},
"лев":{c:"lev",n:"Левит",v:1,w:1},
"чис":{c:"chis",n:"Числа",v:1},
"числа":{r:"чис",w:1},
"числ":{r:"чис",w:1},
"втор":{c:"vtor",n:"Второзаконие",v:1},
"второзак":{r:"втор"},
"иснав":{c:"isnav",n:"Книга Иисуса Навина",v:1},
"нав":{r:"иснав"},
"суд":{c:"sud",n:"Книга Судей",v:1,w:1},
"руфь":{c:"ruf",n:"Книга Руфь",v:1,w:1},
"1цар":{c:"1tsar",n:"Первая книга Царств",v:1},
"2цар":{c:"2tsar",n:"Вторая книга Царств",v:1},
"3цар":{c:"3tsar",n:"Третья книга Царств",v:1},
"4цар":{c:"4tsar",n:"Четвертая книга Царств",v:1},
"1пар":{c:"1par",n:"Первая книга Паралипоменон",v:1},
"2пар":{c:"2par",n:"Вторая книга Паралипоменон",v:1},
"1езд":{c:"ezd",n:"Первая книга Ездры",v:1},
"неем":{c:"nee",n:"Книга Неемии",v:1},
"2езд":{c:"2ezd",n:"Вторая книга Ездры",v:1},
"тов":{c:"tov",n:"Книга Товита",v:1},
"иудифь":{c:"iudif",n:"Книга Иудифь",v:1,w:1},
"иудиф":{r:"иудифь"},
"иф":{r:"иудифь"},
"есф":{c:"esf",n:"Книга Есфирь",v:1},
"иов":{c:"iov",n:"Книга Иова",v:1,w:1},
"пс":{c:"ps",n:"Псалтирь",v:1},
"псал":{r:"пс"},
"притчи":{c:"prit",n:"Книга Притчей Соломоновых",v:1,w:1},
"прит":{r:"притчи"},
"притч":{r:"притчи",w:1},
"пр":{r:"притчи"},
"еккл":{c:"ekk",n:"Книга Екклесиаста",v:1},
"песн":{c:"pesn",n:"Книга Песни Песней Соломона",v:1},
"п\\u0463сн":{r:"песн"},
"премсол":{c:"premsol",n:"Книга Премудрости Соломона",v:1},
"прем":{r:"премсол"},
"сирах":{c:"sirah",n:"Книга Премудрости Иисуса сына Сирахова",v:1},
"сир":{r:"сирах"},
"ис":{c:"is",n:"Книга пророка Исаии",v:1},
"иса":{r:"ис"},
"иер":{c:"ier",n:"Книга пророка Иеремии",v:1},
"иерем":{r:"иер"},
"плач":{c:"plach",n:"Книга плач Иеремии",v:1,w:1},
"послиер":{c:"poslier",n:"Послание Иеремии",v:1},
"вар":{c:"var",n:"Книга пророка Варуха",v:1},
"варух":{r:"вар",w:1},
"иез":{c:"iez",n:"Книга пророка Иезекииля",v:1},
"иезек":{r:"иез"},
"дан":{c:"dan",n:"Книга пророка Даниила",v:1},
"ос":{c:"os",n:"Книга пророка Осии",v:1},
"иоиль":{c:"ioil",n:"Книга пророка Иоиля",v:1,w:1},
"иоил":{r:"иоиль"},
"амос":{c:"amos",n:"Книга пророка Амоса",v:1,w:1},
"ам":{r:"амос"},
"авд":{c:"avd",n:"Книга пророка Авдия",v:1},
"иона":{c:"iona",n:"Книга пророка Ионы",v:1,w:1},
"мих":{c:"mih",n:"Книга пророка Михея",v:1,w:1},
"наум":{c:"naum",n:"Книга пророка Наума",v:1},
"авв":{c:"avv",n:"Книга пророка Аввакума",v:1},
"соф":{c:"sof",n:"Книга пророка Софонии",v:1},
"агг":{c:"agg",n:"Книга пророка Аггея",v:1},
"зах":{c:"zah",n:"Книга пророка Захарии",v:1},
"мал":{c:"mal",n:"Книга пророка Малахии",v:1},
"1макк":{c:"1makk",n:"Первая книга Маккавейская",v:1},
"1мак":{r:"1макк"},
"2макк":{c:"2makk",n:"Вторая книга Маккавейская",v:1},
"2мак":{r:"2макк"},
"3макк":{c:"3makk",n:"Третья книга Маккавейская",v:1},
"3мак":{r:"3макк"},
"3езд":{c:"3ezd",n:"Третья книга Ездры",v:1},
"мф":{c:"mf",n:"Евангелие от Матфея"},
"мт":{r:"мф"},
"матф":{r:"мф"},
"мк":{c:"mk",n:"Евангелие от Марка"},
"мр":{r:"мк"},
"мрк":{r:"мк"},
"лк":{c:"lk",n:"Евангелие от Луки"},
"лук":{r:"лк",w:1},
"деян":{c:"deyan",n:"Деяния Святых Апостолов"},
"дн":{r:"деян"},
"д\\u0463ян":{r:"деян"},
"иак":{c:"iak",n:"Соборное послание св. Ап. Иакова"},
"1петр":{c:"1petr",n:"Первое Соборное послание св. Ап. Петра"},
"1пет":{r:"1петр"},
"2петр":{c:"2petr",n:"Второе Соборное послание св. Ап. Петра"},
"2пет":{r:"2петр"},
"1ин":{c:"1in",n:"Первое Соборное послание св. Ап. Иоанна Богослова"},
"2ин":{c:"2in",n:"Второе Соборное послание св. Ап. Иоанна Богослова"},
"3ин":{c:"3in",n:"Третье Соборное послание св. Ап. Иоанна Богослова"},
"ин":{c:"in",n:"Евангелие от Иоанна"},//должно следовать после посланий, чтобы regexp не преобразовывал "1 ин"
"иоан":{r:"ин",w:1},
"иуд":{c:"iud",n:"Соборное послание св. Ап. Иуды"},
"рим":{c:"rim",n:"К Римлянам послание св. Ап. Павла",w:1},
"1кор":{c:"1kor",n:"Первое послание св. Ап. Павла к Коринфянам"},
"2кор":{c:"2kor",n:"Второе послание св. Ап. Павла к Коринфянам"},
"гал":{c:"gal",n:"Послание к Галатам"},
"галат":{r:"гал"},
"еф":{c:"ef",n:"Послание к Ефесянам"},
"эф":{r:"еф"},
"ефес":{r:"еф",w:1},
"фил":{c:"fil",n:"Послание к Филиппийцам"},
"филип":{r:"фил"},
"флп":{r:"фил"},
"кол":{c:"kol",n:"Послание к Колоссянам",w:1},
"колос":{r:"кол"},
"1фес":{c:"1fes",n:"Первое послание св. Ап. Павла к Фессалоникийцам"},
"1сол":{r:"1фес"},
"2фес":{c:"2fes",n:"Второе послание св. Ап. Павла к Фессалоникийцам"},
"2сол":{r:"2фес"},
"1тим":{c:"1tim",n:"Первое послание к Тимофею"},
"2тим":{c:"2tim",n:"Второе послание к Тимофею"},
"тит":{c:"tit",n:"Послание к Титу",w:1},
"филим":{c:"filim",n:"Послание к Филимону"},
"флм":{r:"филим"},
"евр":{c:"evr",n:"Послание к Евреям"},
"ев":{r:"евр"},
"откр":{c:"otkr",n:"Апокалипсис св. Ап. Иоанна Богослова",t:1},
"апок":{r:"откр"}
},
mdown: function(event){
if (!event.ctrlKey && !event.shiftKey && BibleLinks.onscreen){
BibleLinks.events.fix(event);
BibleLinks.moving = true;
BibleLinks.movex = event.pageX;
BibleLinks.movey = event.pageY;
}
},
mmove: function(event){
if (!BibleLinks.moving || !BibleLinks.onscreen) return;
BibleLinks.events.fix(event);
BibleLinks.place(BibleLinks.x - BibleLinks.movex + event.pageX,BibleLinks.y - BibleLinks.movey + event.pageY);
BibleLinks.movex = event.pageX;
BibleLinks.movey = event.pageY;
},
mup: function(event){
BibleLinks.moving = false;
},
onclick: function(event,target){
if (typeof BibleLinksNoWindow != 'undefined' && BibleLinksNoWindow) return true;
if (!event.ctrlKey && !event.shiftKey){
var newlink = BibleLinks.iframelink(target.href);
if (typeof BibleLinksHandler != 'undefined')
newlink = BibleLinksHandler(newlink);
var prop, ldiv, div, iframe, el = target;
var q = String.fromCharCode(34), x=0,y=0,h=300,w=220;
var usescript = (typeof BibleLoadScripts != 'undefined' && BibleLoadScripts);
while (el) {
x += el.offsetLeft || 0;
y += el.offsetTop || 0;
el = el.offsetParent;
}
y = (y + target.offsetHeight + 4);
//loading..
ldiv = document.getElementById('BibleLoading');
if (!ldiv){
ldiv = document.createElement('DIV');
ldiv.id = 'BibleLoading';
ldiv.innerHTML = 'загрузка...';
with (ldiv.style){
position = 'absolute';
display = 'none';
for(prop in BibleLinksCSS.div_loading)
ldiv.style[prop] = BibleLinksCSS.div_loading[prop];
}
document.body.appendChild(ldiv);
}
with (ldiv.style){
left = x + 'px';
top = y + 'px';
display = 'block';
}
//floating div
div = document.getElementById('BibleWin');
if (!div){
div = document.createElement('DIV');
div.id = 'BibleWin';
with (div.style){
position = 'absolute';
width = w + 'px';
height = h + 'px';
display = 'none';
for(prop in BibleLinksCSS.div_panel)
div.style[prop] = BibleLinksCSS.div_panel[prop];
}
div.innerHTML = '<'+'div id='+q+'BibleCap'+q+' style='+q+
(BibleLinks.moveable?'cursor:move;':'')+
'text-align: right; width: 100%;padding-bottom:2px;margin:0;'+q+'>'+
'закрыть [x] <'+'/div>';
document.body.appendChild(div);
BibleLinks.events.attach(document.getElementById('BibleClose'),'click',function(event){
BibleLinks.events.stop(event); BibleLinks.close(); return false;
});
if (BibleLinks.useevents){
if (BibleLinks.autoclose) BibleLinks.events.attach(document.getElementById('BibleCap'),"click",function(event){BibleLinks.events.stop(event);});
if (BibleLinks.moveable) BibleLinks.events.attach(document.getElementById('BibleCap'),"mousedown",BibleLinks.mdown);
}
}
//iframe
iframe = document.getElementById('BibleFrame');
//если ссылка с фраментом на ту же страницу, в IE не происходит скачка
if (iframe && div.removeChild ){
div.removeChild(iframe);
iframe = null;
}
if (!iframe){
iframe = document.createElement('IFRAME');
//iframe.setAttribute("src", "");
iframe.name = 'BibleFrame';
iframe.id = 'BibleFrame';
iframe.frameBorder='no';
iframe.allowtransparency = 'true';
iframe.style.width = '100%';
iframe.style.height = '99%';
div.appendChild(iframe);
if (!usescript){
iframe.onload = iframe.onreadystatechange = function(){
if (!this.readyState || this.readyState == "loaded" || this.readyState == "complete"){
if (BibleLinks.clicked) BibleLinks.onframeload();
}
};
}
}
//позиционируем
var winh = document.documentElement.scrollHeight ? document.documentElement.scrollHeight
: ( document.body.scrollHeight ? document.body.scrollHeight : document.body.offsetHeight );
var winw = (document.body.scrollWidth ? document.body.scrollWidth : document.body.offsetWidth);
if ((y + h > winh) && (y > h)) y = y - h - target.offsetHeight - 20;
if ((x + w > winw) && (x > w)) x = winw - w - 20;
if (y < 10) y = 10;
if (x < 10) x = 10;
BibleLinks.place(x,y);
div.style.display = 'none';
BibleLinks.clicked = true;
if (!usescript){
//alert("iframe: "+newlink);
iframe.src = newlink;
//alert(1);
}
else{
//alert("scripted:"+target.href);
BibleLinks.load_scriptpage(target.href);
}
BibleLinks.events.stop(event);
return false;
}
},
place: function(x,y){
var div = document.getElementById('BibleWin');
if (div){
div.style.left = x + 'px';
div.style.top = y + 'px';
BibleLinks.x = x;
BibleLinks.y = y;
}
},
events: {
stop: function(event){
if (event.stopPropagation) event.stopPropagation();
event.cancelBubble = true;
},
attach: function(obj,eventName,handler){
if (obj.addEventListener)
obj.addEventListener(eventName, handler, false);
else
obj.attachEvent("on"+eventName, handler);
},
fix: function(event){
if ( event.pageX == null && event.clientX != null ) {
var e = document.documentElement, b = document.body;
event.pageX = event.clientX + (e && e.scrollLeft || b.scrollLeft || 0);
event.pageY = event.clientY + (e && e.scrollTop || b.scrollTop || 0);
}
}
},
onframeload: function(){
document.getElementById('BibleLoading').style.display='none';
document.getElementById('BibleWin').style.display='block';
BibleLinks.clicked = false;
BibleLinks.onscreen = true;
},
close: function(){
if (BibleLinks.onscreen) {
document.getElementById('BibleWin').style.display='none';
BibleLinks.onscreen = false;
}
},
nofrag: function (href){
if (!href) return href;
var pos = href.indexOf("#");
if (pos != -1)
return href.substring(0,pos);
else
return href;
},
iframelink: function(href){
var l;
if (l = BibleLinks.parselink(href))
href = BibleLinks.gethref(href);
href = href.replace(/#/,"#embed=");
return href;
},
onmover: function(event,target){
var l,t,c;
if (l = BibleLinks.parselink (target.href)){
for(c in BibleLinks.books){
if (BibleLinks.books[c].c && BibleLinks.books[c].c == l.code) break;
}
t = (BibleLinks.books[c].v ? "Ветхий" : "Новый" ) + " завет: " + BibleLinks.books[c].n + "\r\n" +
(l.code =="ps"?"Псалом":"Глава") + " " + l.chapter + (l.stih?(', стих ' + l.stih):'') + "\r\n" +
(BibleLinks.books[c].t?"На rusbible.ru есть святоотеческое толкование.\r\n":"") +
"(Римскими цифрами: " + (l.code=="ps"?"Псалом":"Глава") + " " + BibleLinks.toroman(l.chapter) + (l.stih?(', стих ' + BibleLinks.toroman(l.stih) ) :'') + ")\r\n" +
"(Кириллицей: " + (l.code=="ps"?"Псалом":"Глава") + " " + BibleLinks.tocyr(l.chapter) + (l.stih?(', стих ' + BibleLinks.tocyr(l.stih) ) :'') + ")\r\n" +
"\r\nНажмите для быстрого показа в этом окне\r\n\r\n+Shift = открыть страницу в новом окне\r\n+Ctrl = открыть страницу в этом окне";
target.title = t;
}
},
parselink: function(href){
var m;
if (m = href.match(/\/([a-z0-9]+)\.html#([0-9]+)([_:]([0-9]+))?$/i))
return {code:m[1],chapter:m[2],stih:m[4]};
else
return null;
},
gethref: function(parsed){
return BibleLinks.site+'sinodal/'+parsed.code+'.html#'+parsed.chapter+(parsed.stih?':':'')+parsed.stih;
},
getlink: function(full,before,book,sep1,chapter,sep2,stih,after){
var lbook = book.toLowerCase().replace(/ /g,"").replace(/\u0406/g,"И").replace(/\u0473/g,"ф").replace(/\u0463/g,"е").replace(/i/,'и');
if (typeof BibleLinks.books[lbook] == 'undefined')
return before+''+book+sep1+chapter+sep2+stih+'';
var isword = (typeof BibleLinks.books[lbook].w != 'undefined');
if (typeof BibleLinks.books[lbook].r != 'undefined')
lbook = BibleLinks.books[lbook].r;
if (lbook=='ин' && before.match(/^>/)) //фикс лишней замены "Ин" внутри "1 Ин"
return full;
if (!chapter.match(/^[0-9]+$/)){
if (sep1==" " && chapter=="с" && isword) //фикс. слов с предлогом C
return full;
chapter = BibleLinks.fromroman(chapter);
}
return before + ''+book+sep1+chapter+sep2+stih+'<'+'/a>'+after;
},
getblink: function(full,before,book,sep1,chapter,sep2,stih){
return BibleLinks.getlink(full,before,book,sep1,chapter,sep2,stih,'');
},
getsmlink: function(full,before,book,sep1,chapter,after){
return BibleLinks.getlink(full,before,book,sep1,chapter,'','',after);
},
highlight: function(d){
var scan = "",m;
for(var code in this.books){
if (scan != "") scan += "|";
scan += code;
if (m = code.match(/^([0-9]+)([^0-9]+)$/))//1Ин
scan += "|" + m[1] + " " + m[2];
if (m = code.match(/^[0-9]*и/i)){
scan += "|" + code.replace(/и/,"\\u0406");
scan += "|" + code.replace(/и/,"i");
}
if (code.indexOf("ф") >= 0)
scan += "|" + code.replace(/ф/g,"\\u0473");
}
var reg,newb;
newb = d.body.innerHTML;
//в отсканированных текстах встречается "ложная" i . Она может разрушить римские цифры
newb = newb.replace(/\і/g,"i").replace(/\І/g,"I");
//в отсканированных текстах в римских цифрах вместо английского икс стоит русское Х
reg = new RegExp('(\\s|\\(|\\[)('+scan+')(\\.\\s*|\\s+)([0-9]+|[хсіxcdivl]+)(\\s*[,:.;]\\s*)([0-9]+)',"gim");
newb = newb.replace(reg,this.getblink);
reg = new RegExp('(>[123]\\s|\\s|\\(|\\[)('+scan+')(\\.\\s*|\\s+)([0-9]+|[хсіxcdivl]+)([^a-zа-яё0-9])',"gim");
newb = newb.replace(reg,this.getsmlink);
//Подчеркивание ссылок в результатах Яндекса
if (window.location.href.indexOf("yandex") != -1){
reg = new RegExp('>([^>]+)\. Глава ([0-9]+)\. Стих ([0-9]+)',"gim");
newb = newb.replace(reg,'>$1. Глава $2. Стих $3');
}
d.body.innerHTML = newb;
newb = d.body.innerHTML;
if (BibleLinks.useevents){
if (BibleLinks.autoclose) BibleLinks.events.attach(d,"click", BibleLinks.close);
if (BibleLinks.moveable) {
BibleLinks.events.attach(d,"mousemove",BibleLinks.mmove);
BibleLinks.events.attach(d,"mouseup",BibleLinks.mup);
}
}
this.highlighted = true;
if (typeof BibleLinksOnHighlight != 'undefined')
setTimeout('BibleLinksOnHighlight();',100);
},
//original: Giles Edkins, 2001
fromroman: function ( num ){
var vals = { 'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000 };
num = num.toUpperCase().replace(/Х/g,'X').replace(/С/g,'C').replace( /[^IVXLCDM]/g, '' ).replace( /VV/g, 'X' ).replace( /LL/g, 'C' ).replace( /DD/g, 'M' );
var bits = [], i = 0, j = 0, k, l, n = num.length, last = 9999, rep = 0, sum = 0, valid = 1;
for( ; i < n; i++ ){
if( !( bits[j] = vals[ num.charAt(i) ] ) ){
valid = 0;
break;
}
if(j > 0){
k = bits[j];
l = bits[j - 1];
if( k===l * 5 || k===l * 10 )
bits[--j] = k - l;
}
j++;
}
if( valid ) {
for( i = 0; i < j; i++ ) {
k = bits[i];
sum += k;
if( (last < k)
|| (rep > 1 && last == k)
|| (last == k && k != 1 && k != 10 && k != 100 && k != 1000)
|| last == k * 4 || last == k * 9 || last * 4 == k * 9 || last * 5 == k * 9 ) {
valid = 0;
break;
}
rep = (last == k) ? rep + 1 : 0;
last = k;
}
}
return valid ? sum : 0;
},
// original: Dougie Lawson, http://web.ukonline.co.uk/dougie.lawson/
toroman: function( num ) {
num = parseInt( num, 10);
if( num > 0 && num < 6000 ) {
var mill = [ '', 'M', 'MM', 'MMM', 'MMMM', 'MMMMM' ],
cent = [ '', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM' ],
tens = [ '', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC' ],
ones = [ '', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX' ],
m, c, t, r = function(n) { return (num - (num % n ) ) / n; };
m = r(1000);
num = num % 1000;
c = r(100);
num = num % 100;
t = r(10);
return mill[m] + cent[c] + tens[t] + ones[ num%10 ];
}
else
return '';
},
//титло не пишется, буквы переданы визуальными аналогами
tocyr: function (num){
if (num >0 && num <1000){
var vals = {
0: '',
1:'а',2:'в',3:'г',4:'д',5:'е',
6:'s',7:'з',8:'и',9:'{0~фита}',10:'i',
20:'к',30:'л',40:'м',50:'н',60:'{з~кси}',
70:'о',80:'п',90:'ч',100:'р',200:'с',
300:'т',400:'v',500:'ф',600:'х',700:'{f~пси}',
800:'w',900:'ц'
};
var c, t,
r = function(n) { return (num - (num % n ) ) / n; },
c = r(100);//x00
num = num % 100;
t = r(10);//x0
num = num % 10;
if (c == 0 && t == 0) //00x
return vals[num];
if (c == 0 && num == 0) //0x0
return vals[10 * t];
if (c == 0 && t==1) //01x
return vals[num] + vals[10 * t];
if (c == 0) //0xx
return vals[10 * t] + vals[num];
if (num == 0 && t==0) //x00
return vals[100 * c];
if (num == 0) //xx0
return vals[100 * c] + vals[10 * t];
if (t==1) //x1x
return vals[100 * c] + vals[10 * t] + vals[num];
//xxx
return vals[100 * c] + vals[num] + vals[10 * t];
}
else
return '';
},
load_scriptpage: function(href){
var l,src;
if (l = BibleLinks.parselink (href))
src = BibleLinks.gethref(l).replace(/#.*$/,"");
else
return;
BibleLinks.embed = l.chapter+(l.stih?':':'')+l.stih;
var s = document.getElementById("BibleText");
if (s && document.body.removeChild)
document.body.removeChild(s);
s = document.createElement("script");
s.src = src;
s.type = "text/javascript";
s.id = "BibleText";
document.body.appendChild(s);
},
abshtml: function(text){
return text.replace(/src="(\.\.\/)?(\.\.\/)?(\.\.\/)?/g,'src="'+BibleLinks.site).replace(/href="(\.\.\/)?(\.\.\/)?(\.\.\/)?/g,'href="'+BibleLinks.site);
},
scriptpage_gethtml: function(func){
var s = new String(func);
s = s.replace(new RegExp("^function\\(\\)\\s*",''), '');
s = s.replace(new RegExp("^\{\\s*",''), '');
s = s.replace(new RegExp("^/\\*--"+">",""), '');
s = s.replace(new RegExp("\\s*\}\\s*$",''), '');
s = s.replace(new RegExp("<"+"!--\\*"+"\\/$",''), '');
return s;
},
onscriptpage: function (func,url){
BibleLinks.scriptpage_html = BibleLinks.abshtml (BibleLinks.scriptpage_gethtml(func));
var iframe = document.getElementById('BibleFrame');
iframe.src = "javascript:"+
"document.write(parent.BibleLinks.scriptpage_html);"+
"parent.BibleLinks.scriptpage_html = null;"+
"parent.BibleLinks.onframeload();"+
"doScroll();";
}
};
setTimeout('BibleLinks.highlight(document);',100);