Revision as of 16:09, 11 September 2005 view sourceLupin (talk | contribs)19,513 edits fix block links, hopefully← Previous edit | Revision as of 12:46, 18 September 2005 view source Lupin (talk | contribs)19,513 edits upgrade to dev version. New features: faster loading time, automatic redir fixage, last edit link, extra links for old revisions (edit old revision etc), preview-on-click, cookies, popupLiveOptionsNext edit → | ||
Line 1: | Line 1: | ||
var popupVersion="Sat Sep |
var popupVersion="Sat Sep 17 18:22:05 EDT 2005"; | ||
// CONTENTS | // CONTENTS | ||
Line 29: | Line 29: | ||
function myalert(x) { return alert(time()+'\n'+ x); }; | function myalert(x) { return alert(time()+'\n'+ x); }; | ||
// eg sourceJS('http://www.bosrup.com/web/overlib/overlib.js'); | |||
function sourceJS(url) { | |||
var str='<script type="text/javascript" src="'; | |||
str += url; | |||
str += '"></script>'; | |||
return document.write(str); | |||
}; | |||
// eg sourceWikipediaJS('en.wikipedia.org', 'User:Lupin/overlib.js'); | |||
function sourceWikipediaJS(wiki, name) { | |||
var url='http://' + wiki + '/search/?title='; | |||
url += name; | |||
url += '&action=raw&ctype=text/javascript&dontcountme=s'; | |||
return sourceJS(url); | |||
}; | |||
// eg sourceLupinJS('overlib'); | |||
function sourceLupinJS(name) { | |||
return sourceWikipediaJS('en.wikipedia.org', 'User:Lupin/'+name + '.js'); | |||
}; | |||
//////////////////////////////////////////////////////////////////// | //////////////////////////////////////////////////////////////////// | ||
// Popup stuff | // Popup stuff | ||
//////////////////////////////////////////////////////////////////// | //////////////////////////////////////////////////////////////////// | ||
sourceLupinJS('livepreview'); | |||
sourceLupinJS('overlib'); | |||
sourceLupinJS('md5-2.2alpha'); | |||
// livepreview uses a broken hex_md5 function, so we avoid it | // livepreview uses a broken hex_md5 function, so we avoid it | ||
function md5_hex(s) { return rstr2hex(rstr_md5(str2rstr_utf8(s))); }; | function md5_hex(s) { return rstr2hex(rstr_md5(str2rstr_utf8(s))); }; | ||
///////////////////// | |||
// GLOBAL VARIABLES // | // GLOBAL VARIABLES // | ||
////////////////////// | ////////////////////// | ||
Line 99: | Line 71: | ||
var splitLoc=window.location.href.split('/'); | var splitLoc=window.location.href.split('/'); | ||
var thisWiki=splitLoc; | var thisWiki=splitLoc; | ||
var wikimediaWiki=RegExp('wikiedia\.org').test(thisWiki); | var wikimediaWiki=RegExp('wiki\(edia\|source\|books\)\.org\|wiktionary\.org').test(thisWiki); | ||
var localWiki=RegExp('^localhost').test(thisWiki); | |||
var protocol=splitLoc.split(':'); | var protocol=splitLoc.split(':'); | ||
var titletail='/index.php?title='; | var titletail='/index.php?title='; | ||
if (wikimediaWiki) titletail = '/w' + titletail; | if (wikimediaWiki) titletail = '/w' + titletail; | ||
else if (localWiki) titletail = '/wiki' + titletail; | |||
// eg sourceJS('http://www.bosrup.com/web/overlib/overlib.js'); | |||
function sourceJS(url) { | |||
var str='<script type="text/javascript" src="'; | |||
str += url; | |||
str += '"></script>'; | |||
return document.write(str); | |||
}; | |||
// eg sourceWikipediaJS('en.wikipedia.org', 'User:Lupin/overlib.js'); | |||
function sourceWikipediaJS(wiki, name) { | |||
var url='http://' + wiki + titletail; | |||
url += name; | |||
url += '&action=raw&ctype=text/javascript&dontcountme=s'; | |||
return sourceJS(url); | |||
}; | |||
// eg sourceLupinJS('overlib'); | |||
function sourceLupinJS(name) { | |||
return sourceWikipediaJS('en.wikipedia.org', 'User:Lupin/'+name + '.js'); | |||
}; | |||
/* // include files directly for a better response | |||
if (thisWiki.indexOf('localhost') == 0) { | |||
sourceWikipediaJS(thisWiki, 'User:Lupin/livepreview.js'); | |||
sourceWikipediaJS(thisWiki, 'User:Lupin/overlib.js'); | |||
sourceWikipediaJS(thisWiki, 'User:Lupin/md5-2.2alpha.js'); | |||
} else { | |||
sourceLupinJS('livepreview'); | |||
sourceLupinJS('overlib'); | |||
sourceLupinJS('md5-2.2alpha'); | |||
} | |||
*/ | |||
// /REGEX | // /REGEX | ||
Line 113: | Line 125: | ||
var reStart='*://'; | var reStart='*://'; | ||
var preTitles='wiki/|w/index\\.php\\?title='; | var preTitles='wiki/|w/index\\.php\\?title='; | ||
if (!wikimediaWiki) preTitles += '|index\\.php\\?title='; | |||
if (!wikimediaWiki) { | |||
var reEnd='/(' + preTitles + ')(*)'; | |||
preTitles = 'wiki/index\\.php\\?title=|wiki/index\\.php/|'+preTitles | |||
+ '|index\\.php\\?title=' ; | |||
} | |||
var reEnd='/(' + preTitles + ')(*)'; | |||
var re = RegExp(reStart + thisWiki.split('.').join('\\.') + reEnd); | var re = RegExp(reStart + thisWiki.split('.').join('\\.') + reEnd); | ||
Line 199: | Line 215: | ||
// FIXME - eliminate this | // FIXME - eliminate this | ||
var redirCount=0; | var redirCount=0; | ||
// Cookie handling | |||
// pasted straight from http://www.quirksmode.org/js/cookies.html | |||
function createCookie(name,value,days) | |||
{ | |||
if (days) | |||
{ | |||
var date = new Date(); | |||
date.setTime(date.getTime()+(days*24*60*60*1000)); | |||
var expires = "; expires="+date.toGMTString(); | |||
} | |||
else var expires = ""; | |||
document.cookie = name+"="+value+expires+"; path=/"; | |||
}; | |||
function readCookie(name) | |||
{ | |||
var nameEQ = name + "="; | |||
var ca = document.cookie.split(';'); | |||
for(var i=0;i < ca.length;i++) | |||
{ | |||
var c = ca; | |||
while (c.charAt(0)==' ') c = c.substring(1,c.length); | |||
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); | |||
} | |||
return null; | |||
}; | |||
function eraseCookie(name) | |||
{ | |||
createCookie(name,"",-1); | |||
}; | |||
// options | // options | ||
// this should expand to something like | // if there's no cookie, this should expand to something like | ||
// if (window.foo===null) window.foo=window.dfoo; | // if (window.foo===null) window.foo=window.dfoo; | ||
function defaultize(x) { | function defaultize(x) { | ||
var val=null; | |||
var a='window.'+x; | var a='window.'+x; | ||
var b='window.d'+x; | var b='window.d'+x; | ||
if (x!='popupCookies') { | |||
defaultize('popupCookies'); | |||
if (popupCookies && (val=readCookie(x))) { | |||
eval(a + '=' + val + ';'); | |||
return; | |||
} | |||
} | |||
eval('if ('+a+'===null) '+a+'=' + b + ';'); | eval('if ('+a+'===null) '+a+'=' + b + ';'); | ||
}; | }; | ||
Line 222: | Line 281: | ||
// user-settable parameters and defaults | // user-settable parameters and defaults | ||
newOption('popupDelay', 0.5); | newOption('popupDelay', 0.5); | ||
newOption('popupFgColor', "'#CCCCFF'"); | |||
newOption('popupBgColor', "'#333399'"); | |||
newOption('removeTitles', true); | newOption('removeTitles', true); | ||
newOption('imagePopupsForImages', true); | newOption('imagePopupsForImages', true); | ||
Line 231: | Line 288: | ||
newOption('popupImages', true); | newOption('popupImages', true); | ||
newOption('popupPreviews', true); | newOption('popupPreviews', true); | ||
newOption(' |
newOption('popupMaxPreviewSentences', 4); | ||
newOption(' |
newOption('popupMaxPreviewCharacters', 600); | ||
newOption('popupNavLinks', true); | newOption('popupNavLinks', true); | ||
newOption('popupNavLinkSeparator', "' ⋅ '"); | newOption('popupNavLinkSeparator', "' ⋅ '"); | ||
Line 242: | Line 299: | ||
newOption('popupSimplifyMainLink', true); | newOption('popupSimplifyMainLink', true); | ||
newOption('popupMinImageWidth', 50); | newOption('popupMinImageWidth', 50); | ||
newOption('popupLastEditLink', true); | |||
newOption('popupHistoricalLinks', true); | |||
newOption('popupFixRedirs', true); | |||
newOption('popupLiveOptions', false); | |||
newOption('popupCookies', false); | |||
newOption('popupUnsimplifyLink', false); | |||
// browser-specific hacks | // browser-specific hacks | ||
Line 319: | Line 381: | ||
}; | }; | ||
function |
function articleFromURL(h) { | ||
// log('articleFromAnchor'); | |||
if (typeof h != 'String') h=String(h); | |||
var h=a.href; | |||
var article=null; | var article=null; | ||
// log('h='+h); | |||
var contribs=contributions.exec(h); | var contribs=contributions.exec(h); | ||
Line 344: | Line 406: | ||
article=m; | article=m; | ||
return article; | return article; | ||
}; | |||
function articleFromAnchor(a) { | |||
// log('articleFromAnchor'); | |||
var h=a.href; | |||
return articleFromURL(h); | |||
}; | }; | ||
Line 370: | Line 438: | ||
hint = safeDecodeURI(article); | hint = safeDecodeURI(article); | ||
var oldid= |
var oldid=null; | ||
defaultize('popupHistoricalLinks'); | |||
if (popupHistoricalLinks) | |||
oldid=oldidFromAnchor(a); | |||
defaultize('popupNavLinks'); | defaultize('popupNavLinks'); | ||
Line 376: | Line 448: | ||
html += navLinksHTML(article, hint, oldid); | html += navLinksHTML(article, hint, oldid); | ||
defaultize('popupUnsimplifyLink'); | |||
html += emptySpanHTML('popupWarnRedir', popupImageId); | |||
if (popupUnsimplifyLink) | |||
html += emptySpanHTML('popupGubbins' , popupImageId); | |||
html += |
html += popupUnsimplifyHTML(); | ||
html += emptySpanHTML('popupWarnRedir', popupImageId); | |||
html += emptySpanHTML('popupGubbins' , popupImageId); | |||
html += emptySpanHTML('popupLiveOptions', popupImageId); | |||
html += emptySpanHTML('popupPreview' , popupImageId); | |||
return html; | return html; | ||
}; | }; | ||
function popupUnsimplifyHTML() { | |||
var html = ''; | |||
html += '<span id="popupUnsimplifySpan' + popupImageId + '">'; | |||
html += '<br>'; | |||
html += '<span onClick="javascript:popupUnsimplify()" ' | |||
+ 'style="cursor:pointer; border: thin dotted black" ' | |||
+ 'title="Download preview data from the Misplaced Pages servers">' | |||
+ 'Get preview data' | |||
+ '</span>'; | |||
html += '</span>'; | |||
return html; | |||
}; | |||
function popupUnsimplify() { | |||
}; | |||
function isIpUser(user) { | function isIpUser(user) { | ||
return ipUserRegex.test(user); | return ipUserRegex.test(user); | ||
}; | |||
function popupToggleVar(varstring) { | |||
defaultize(varstring); | |||
eval('window.'+varstring+'=!window.' + varstring); | |||
defaultize('popupCookies'); | |||
if (popupCookies) { | |||
createCookie(varstring, String(eval(varstring))); | |||
} | |||
}; | |||
newOption('popupLiveOptionsExpanded', false); | |||
function popupToggleShowOptions (dummy) { | |||
defaultize('popupLiveOptionsExpanded'); | |||
if (!dummy) window.popupLiveOptionsExpanded=!window.popupLiveOptionsExpanded; | |||
setPopupHTML((window.popupLiveOptionsExpanded) ? '<<' : '>>', | |||
'optionPopped'); | |||
var s=document.getElementById('popupOptionsDiv'); | |||
// if (!s) return; | |||
if (window.popupLiveOptionsExpanded) s.style.display='inline'; | |||
else s.style.display='none'; | |||
}; | |||
function popupOptionsCheckboxHTML(varstring, label, title) { | |||
var html='<br>'; | |||
html += '<span title="'+title+'">'; | |||
html += '<input type="checkbox" id="'+varstring+'Checkbox" '; | |||
html += (eval(varstring)) ? 'checked="checked" ' : ''; | |||
html += 'onClick="javascript:popupToggleVar(' + "'" + varstring + "'" + | |||
')">' + label + '</input></span>'; | |||
return html; | |||
}; | |||
function popupLiveOptionsHTML() { | |||
defaultize('simplePopups'); | |||
defaultize('popupUnsimplifyLink'); | |||
var html = ''; | |||
html += '<br>'; | |||
html += '<span title="Show/hide options" '; | |||
html += 'style="border: thin dotted black; cursor: pointer" '; | |||
html += 'onClick="javascript:popupToggleShowOptions()">'; | |||
html += 'Options <span id="optionPopped' + popupImageId | |||
+ '"></span>'; | |||
html += '</span>'; | |||
html += '<div style="display: none" id="popupOptionsDiv">'; | |||
html += popupOptionsCheckboxHTML('simplePopups', 'Simple popups', | |||
'Never download extra stuff for images/previews'); | |||
html += popupOptionsCheckboxHTML('popupUnsimplifyLink', 'Preview only on click', | |||
'Only start downloading when told to do so'); | |||
//html += popupOptionsCheckboxHTML('popupCookies', 'cookies', | |||
// 'Use cookies to store popups options'); | |||
html += popupOptionsCheckboxHTML('popupNavLinks', 'Show navigation links', | |||
'Display navigation links at the top of the popup'); | |||
html += popupOptionsCheckboxHTML('popupImages', 'Show image previews', | |||
'Load images'); | |||
html += popupOptionsCheckboxHTML('popupSummaryData', 'Show summary data', | |||
'Show page summary data'); | |||
html += popupOptionsCheckboxHTML('popupPreviews', 'Show text previews', | |||
'Show previews'); | |||
var extraOptions=[ | |||
'imagePopupsForImages', | |||
'popupAdminLinks', | |||
'popupAppendRedirNavLinks', | |||
'popupCookies', | |||
'popupFixRedirs', | |||
'popupHistoricalLinks', | |||
'popupImagesFromThisWikiOnly', | |||
'popupLastEditLink', | |||
'popupLiveOptions', | |||
'popupNeverGetThumbs', | |||
'popupOnlyArticleLinks', | |||
'popupSimplifyMainLink', | |||
'removeTitles' // no , | |||
]; | |||
for (var i=0; i<extraOptions.length; ++i) { | |||
html += popupOptionsCheckboxHTML(extraOptions, extraOptions, | |||
'Toggle this option'); | |||
} | |||
html += '</div>'; | |||
return html; | |||
}; | }; | ||
Line 402: | Line 581: | ||
if (typeof hint =='undefined') hint=safeDecodeURI(article); | if (typeof hint =='undefined') hint=safeDecodeURI(article); | ||
if (oldid) hint |
if (oldid) hint = 'Revision '+ oldid +' of ' + hint; | ||
html+='<b>'; | html+='<b>'; | ||
html+=titledWikiLink(article, 'view', visibleMainLinkText, hint, oldid); | html+=titledWikiLink(article, 'view', visibleMainLinkText, hint, oldid); | ||
if (oldid) | |||
html+='|' + titledWikiLink(article, 'view', 'cur', | |||
'Current revision of '+visibleMainLinkText); | |||
html+='</b>'; | html+='</b>'; | ||
defaultize('popupLastEditLink'); | |||
if (popupLastEditLink) { | |||
html += popupNavLinkSeparator | |||
+ titledDiffLink(article, 'lastEdit', | |||
'Show the last edit made to '+visibleMainLinkText, | |||
'prev', 'cur'); | |||
} | |||
if (oldid) { | |||
if (popupLastEditLink) html += '|'; | |||
else html += popupNavLinkSeparator; | |||
html += titledDiffLink(article, 'oldEdit', | |||
'Show the edit made to get revision '+ oldid, | |||
'prev', oldid); | |||
html += '|' + titledDiffLink(article, 'diffCur', | |||
'Show differences between revision '+oldid | |||
+' and the current revision', | |||
oldid, 'cur'); | |||
} | |||
return html; | return html; | ||
}; | }; | ||
Line 443: | Line 646: | ||
if (t) { | if (t) { | ||
// it's not a talk page | // it's not a talk page | ||
html += wikiLink(article, 'edit', ' |
if (oldid) { | ||
html += wikiLink(article, 'edit', 'editOld', oldid) | |||
+ '|' + wikiLink(article, 'edit', 'cur', null); | |||
} else { | |||
html += wikiLink(article, 'edit', 'edit'); | |||
} | |||
html += popupNavLinkSeparator + wikiLink(article, 'history', 'history'); | html += popupNavLinkSeparator + wikiLink(article, 'history', 'history'); | ||
html += popupNavLinkSeparator + wikiLink(article, 'unwatch', 'un') | html += popupNavLinkSeparator + wikiLink(article, 'unwatch', 'un') | ||
Line 455: | Line 664: | ||
if (!ta) return reportErrorHTML('Not a talk page and not an article.'); | if (!ta) return reportErrorHTML('Not a talk page and not an article.'); | ||
// it's a talk page | // it's a talk page | ||
html += wikiLink(article, 'edit', ' |
if (oldid) { | ||
html += wikiLink(article, 'edit', 'editOld', oldid) | |||
+'|' + wikiLink(article, 'edit |
+ '|' + wikiLink(article, 'edit', 'cur', null); | ||
} else { | |||
html += wikiLink(article, 'edit', 'edit'); | |||
} | |||
html += '|' + wikiLink(article, 'edit§ion=new', 'new'); | |||
html += popupNavLinkSeparator + wikiLink(article, 'history', 'history'); | html += popupNavLinkSeparator + wikiLink(article, 'history', 'history'); | ||
html += popupNavLinkSeparator + wikiLink(article, 'unwatch', 'un') | html += popupNavLinkSeparator + wikiLink(article, 'unwatch', 'un') | ||
Line 488: | Line 702: | ||
function navLinksHTML (article, hint, oldid) { | function navLinksHTML (article, hint, oldid) { | ||
var html=''; | var html=''; | ||
defaultize('popupNavLinkSeparator'); | |||
html += mainLinkHTML(article, hint, oldid); | html += mainLinkHTML(article, hint, oldid); | ||
Line 497: | Line 713: | ||
html+=emptySpanHTML('popupImageStatus', popupImageId); | html+=emptySpanHTML('popupImageStatus', popupImageId); | ||
defaultize('popupNavLinkSeparator'); | |||
defaultize('popupAdminLinks'); | defaultize('popupAdminLinks'); | ||
Line 636: | Line 851: | ||
function getWiki(wikipage, onComplete, oldid) { | function getWiki(wikipage, onComplete, oldid) { | ||
// set global variable (ugh) to holdwikipage | |||
window.currentArticle=wikipage; | |||
// log('getWiki, wikipage='+wikipage); | // log('getWiki, wikipage='+wikipage); | ||
// set ctype=text/css to get around opera bug | // set ctype=text/css to get around opera bug | ||
Line 699: | Line 916: | ||
// LINK GENERATION // | // LINK GENERATION // | ||
///////////////////// | ///////////////////// | ||
function titledDiffLink(article, text, title, from, to) { | |||
return titledWikiLink(article, | |||
to + '&oldid=' + from, | |||
text, | |||
title, | |||
null, | |||
'diff'); | |||
}; | |||
function wikiLink(article, action, text, oldid) { | function wikiLink(article, action, text, oldid) { | ||
Line 720: | Line 946: | ||
var hint; | var hint; | ||
if (prehint != null) { | if (prehint != null) { | ||
if (oldid) prehint += 'revision '+oldid +' of '; | |||
hint=prehint + safeDecodeURI(article); | hint=prehint + safeDecodeURI(article); | ||
hint += (oldid) ? ' oldid='+oldid : ''; | |||
} | } | ||
else hint = safeDecodeURI(article + '&action=' + action) | else hint = safeDecodeURI(article + '&action=' + action) | ||
Line 728: | Line 954: | ||
}; | }; | ||
function |
function appendParamsToLink(linkstr, params) { | ||
var sp=linkstr.parenSplit(RegExp('(href="+?)"', 'i')); | |||
if (sp.length<2) return null; | |||
var ret=sp.shift() + sp.shift(); | |||
ret += '&' + params + '"'; | |||
ret += sp.join(''); | |||
return ret; | |||
}; | |||
function titledWikiLink(article, action, text, title, oldid, actionName) { | |||
var base = titlebase + article; | var base = titlebase + article; | ||
var url=base; | var url=base; | ||
// no need to add action&view, and this confuses anchors | // no need to add action&view, and this confuses anchors | ||
if (typeof actionName=='undefined' || actionName=='') { | |||
if (action != 'view') url = base + '&action=' + action; | |||
actionName='action'; | |||
} | |||
if (action != 'view') url = base + '&' + actionName + '=' + action; | |||
var hint=''; | var hint=''; | ||
Line 762: | Line 1,000: | ||
else hint = safeDecodeURI(specialpage+':'+article) ; | else hint = safeDecodeURI(specialpage+':'+article) ; | ||
return '<a href="' + url + '" title="' + hint + '">' + text + '</a>'; | return '<a href="' + url + '" title="' + hint + '">' + text + '</a>'; | ||
}; | |||
function literalizeRegex(str){ | |||
return str.replace(RegExp('(])', 'g'), '\\$1'); | |||
}; | }; | ||
Line 769: | Line 1,011: | ||
defaultize('popupAppendRedirNavLinks'); | defaultize('popupAppendRedirNavLinks'); | ||
defaultize('popupNavLinks'); | defaultize('popupNavLinks'); | ||
defaultize('popupFixRedirs'); | |||
var ret=''; | |||
if (popupAppendRedirNavLinks && popupNavLinks) | if (popupAppendRedirNavLinks && popupNavLinks) { | ||
|
ret += '<hr>'; | ||
if (popupFixRedirs && typeof autoEdit != 'undefined' && autoEdit) { | |||
navLinksHTML(wikiMarkupToAddressFragment(redirMatch)); | |||
// this'll break if charAt(0) is nasty | |||
var cA=literalizeRegex(decodeURI(window.currentArticle)); | |||
var chs=cA.charAt(0).toUpperCase(); | |||
chs=''; | |||
var currentArticleRegexBit=chs+cA.substring(1); | |||
currentArticleRegexBit=currentArticleRegexBit | |||
.split(RegExp('', 'g')).join(''); | |||
/* alert('window.currentArticle='+window.currentArticle + */ | |||
/* '\ncA='+cA + */ | |||
/* '\ncurrentArticleRegexBit='+currentArticleRegexBit); */ | |||
// autoedit=s~\ad)\]\]~]~g;s~\AD)~[[Computer-aided%20design|~g | |||
var lk=titledWikiLink(removeAnchor(articleFromURL(document.location)), | |||
'edit', 'Redirects', | |||
'Fix this redirect'); | |||
var cmd='s~\\\\]~]~g;'; | |||
cmd += 's~\\~[['+redirMatch+'|~g'; | |||
cmd += '&autoclick=wpDiff'; | |||
cmd += '&autominor=true'; | |||
cmd += '&autosummary=Bypassing redirect from [[' + window.currentArticle.split('_').join(' ') | |||
+ ']] to ]'; | |||
ret += appendParamsToLink(lk, 'autoedit='+cmd); | |||
ret += ' to '; | |||
} | |||
else ret += 'Redirects to '; | |||
ret += navLinksHTML(wikiMarkupToAddressFragment(redirMatch)); | |||
return ret; | |||
} | |||
else return '<br> Redirects to ' + | else return '<br> Redirects to ' + | ||
Line 845: | Line 1,121: | ||
var num=countCategories(data); | var num=countCategories(data); | ||
return String(num) + ' categor' + ((num!=1)?'ies':'y'); | return String(num) + ' categor' + ((num!=1)?'ies':'y'); | ||
} | }; | ||
var popupFilters=new Array(); | var popupFilters=new Array(); | ||
Line 1,057: | Line 1,333: | ||
var ret=myDecodeURI(str); | var ret=myDecodeURI(str); | ||
return ret || str; | return ret || str; | ||
} | }; | ||
function myEncodeURI (str) { | function myEncodeURI (str) { | ||
Line 1,208: | Line 1,484: | ||
}; | }; | ||
function setPopupHTML (str, elementId, popupId) { | function setPopupHTML (str, elementId, popupId, onSuccess) { | ||
if (typeof popupId === 'undefined') popupId = popupImageId; | if (typeof popupId === 'undefined') popupId = popupImageId; | ||
var popupElement= | var popupElement= | ||
Line 1,225: | Line 1,501: | ||
popupHTMLTimers=null; | popupHTMLTimers=null; | ||
popupElement.innerHTML=str; | popupElement.innerHTML=str; | ||
if (onSuccess) onSuccess(); | |||
return true; | return true; | ||
} else { | } else { | ||
var loopFunction=function() { setPopupHTML(str,elementId,popupId);} | var loopFunction=function() { setPopupHTML(str,elementId,popupId,onSuccess);} | ||
popupHTMLLoopFunctions = loopFunction; | popupHTMLLoopFunctions = loopFunction; | ||
if (!timer) { | if (!timer) { | ||
Line 1,443: | Line 1,720: | ||
defaultize('popupDelay'); | defaultize('popupDelay'); | ||
defaultize('popupFgColor'); | |||
defaultize('popupBgColor'); | |||
defaultize('popupImages'); | defaultize('popupImages'); | ||
defaultize('popupMaxWidth'); | defaultize('popupMaxWidth'); | ||
Line 1,468: | Line 1,743: | ||
} | } | ||
// add CSS class to table | |||
window.addPopupStylesheetClasses = function () { | |||
var tables=over.getElementsByTagName('table'); | |||
tables.className='popupBorderTable'; | |||
tables.className='popupTable'; | |||
var fonts=over.getElementsByTagName('font'); | |||
fonts.className='popupFont'; | |||
}; | |||
registerHook("createPopup", window.addPopupStylesheetClasses, FAFTER); | |||
overlib(html, STICKY, WRAP, CELLPAD, 5, OFFSETX, 2, OFFSETY, 2, | overlib(html, STICKY, WRAP, CELLPAD, 5, OFFSETX, 2, OFFSETY, 2, | ||
DELAY, popupDelay*1000 |
DELAY, popupDelay*1000); | ||
defaultize('popupLiveOptions'); | |||
if (popupLiveOptions) { | |||
setPopupHTML(popupLiveOptionsHTML(), 'popupLiveOptions', popupImageId, | |||
function () { popupToggleShowOptions(true); } ); | |||
} | |||
defaultize('simplePopups'); | defaultize('simplePopups'); | ||
if(simplePopups) return; | if(simplePopups) return; | ||
defaultize('imagePopupsForImages'); | |||
window.popupUnsimplify = function () { | |||
var previewImage=true; | |||
defaultize('imagePopupsForImages'); | |||
var previewImage=true; | |||
gImage=null; | |||
if (isImage(article) && ( imagePopupsForImages || ! anchorContainsImage(a) )) { | |||
loadImages(article); | |||
} | |||
else if (!isImage(article) && previewImage) { | |||
redirCount=0; | |||
loadPreviewImage(article, oldid); | |||
} | |||
var s=document.getElementById('popupUnsimplifySpan' + popupImageId); | |||
gImage=null; | |||
if (s && s.style) { | |||
s.style.display='none'; | |||
} | |||
}; | |||
defaultize('popupUnsimplifyLink'); | |||
if (isImage(article) && ( imagePopupsForImages || ! anchorContainsImage(a) )) { | |||
if (popupUnsimplifyLink) { | |||
loadImages(article); | |||
return; | |||
} | |||
else if (!isImage(article) && previewImage) { | |||
redirCount=0; | |||
loadPreviewImage(article, oldid); | |||
} | } | ||
window.popupUnsimplify(); | |||
}; | }; | ||
Line 1,567: | Line 1,876: | ||
// FIXME: horizonal rules should be skipped | // FIXME: horizonal rules should be skipped | ||
// FIXME: get rid of html tagsx | // FIXME: get rid of html tagsx | ||
if (!download || typeof download.data=='undefined' | |||
|| typeof download.data.length=='undefined') return; | |||
if (localTest) | if (localTest) | ||
var data = download.substring(0,8000); // FOR TESTING | var data = download.substring(0,8000); // FOR TESTING | ||
else | else { | ||
if (!download || typeof download.data=='undefined' | |||
|| typeof download.data.length=='undefined') return; | |||
var data=download.data.substring(0,10000); // huge pages be gone | var data=download.data.substring(0,10000); // huge pages be gone | ||
} | |||
var datum=new Array(); | var datum=new Array(); | ||
datum.push(data.substring(0,1000)); | datum.push(data.substring(0,1000)); | ||
Line 1,598: | Line 1,908: | ||
data=data.replace(RegExp('<!--(\\n|.)*?-->', 'g'), ''); | data=data.replace(RegExp('<!--(\\n|.)*?-->', 'g'), ''); | ||
// say goodbye, divs | // say goodbye, divs (can be nested, so use * not *?) | ||
data=data.replace(RegExp('< *div* *>(.|\\n)*< */ *div *>', | data=data.replace(RegExp('< *div* *>(.|\\n)*< */ *div *>', | ||
'gi'), ''); | 'gi'), ''); | ||
// and galleries | // and galleries | ||
data=data.replace(RegExp('< *gallery* *>(.|\\n)*< */ *gallery *>', | data=data.replace(RegExp('< *gallery* *>(.|\\n)*?< */ *gallery *>', | ||
'gi'), | 'gi'), | ||
''); | ''); | ||
// taxobox hack... in fact, there's a saudiprincebox_begin, so let's be more general | // taxobox hack... in fact, there's a saudiprincebox_begin, so let's be more general | ||
data=data.replace(RegExp('* |
data=data.replace(RegExp('*boxbegin' + | ||
'(.|\\n)**boxend *', | |||
'gi'), ''); | |||
// float_begin, ... float_end | |||
data=data.replace(RegExp('*floatbegin' + | |||
'(.|\\n)**floatend.*?', | |||
'gi'), ''); | 'gi'), ''); | ||
Line 1,619: | Line 1,935: | ||
, ''); | , ''); | ||
datum.push(data.substring(0,1000)); | datum.push(data.substring(0,1000)); | ||
// remove lines starting with a pipe | |||
data=data.replace(RegExp('^.*$', 'mg'), ''); | |||
// images are a nono | // images are a nono | ||
Line 1,645: | Line 1,965: | ||
//data=data.replace(RegExp('<table*>(||<|</|'+ | //data=data.replace(RegExp('<table*>(||<|</|'+ | ||
// may this is good enough? | // may this is good enough? | ||
data=data.replace(RegExp('<table |
data=data.replace(RegExp('<table.*?>(.|\\n.)*?\\n?</ *table *>\\n+', 'gi'), | ||
''); | ''); | ||
// let's delete lines starting with <. it's worth a try. | // let's delete lines starting with <. it's worth a try. | ||
data=data.replace(RegExp('(^|\\n) *< |
data=data.replace(RegExp('(^|\\n) *<.*', 'g'), '\n'); | ||
// and those pesky html tags | // and those pesky html tags | ||
data=data.replace(RegExp('< |
data=data.replace(RegExp('<.*?>','g'),''); | ||
// chunks of italic text? you crazy, man? | // chunks of italic text? you crazy, man? | ||
Line 1,661: | Line 1,981: | ||
data=data.replace(italicChunkRegex, ''); | data=data.replace(italicChunkRegex, ''); | ||
// |
//return data; //TESTING | ||
// replace __TOC__, __NOTOC__ and whatever else there is | // replace __TOC__, __NOTOC__ and whatever else there is | ||
Line 1,675: | Line 1,995: | ||
data=data.replace(RegExp('() *\\n{2,}', 'g'), '$1\n'); | data=data.replace(RegExp('() *\\n{2,}', 'g'), '$1\n'); | ||
|
data=data.replace(RegExp('^*'), ''); | ||
stuff=(RegExp('^(|\\n)*')).exec(data); | |||
if (stuff) | if (stuff) | ||
data = stuff; | data = stuff; | ||
Line 1,683: | Line 2,004: | ||
// superfluous sentences are RIGHT OUT. | // superfluous sentences are RIGHT OUT. | ||
// note: 1 set of parens here needed to make the slice work | // note: exactly 1 set of parens here needed to make the slice work | ||
data = data.parenSplit(RegExp('(+*\\s)','g')); | data = data.parenSplit(RegExp('(+*\\s)','g')); | ||
// leading space is bad, mmkay? | // leading space is bad, mmkay? | ||
Line 1,695: | Line 2,016: | ||
data = fixSentenceEnds(data, notSentenceEnds); | data = fixSentenceEnds(data, notSentenceEnds); | ||
defaultize(' |
defaultize('popupMaxPreviewSentences'); | ||
defaultize(' |
defaultize('popupMaxPreviewCharacters'); | ||
var n= |
var n=popupMaxPreviewSentences; | ||
var d; | var d; | ||
do {d=firstSentences(data,n); --n; } | do {d=firstSentences(data,n); --n; } | ||
while ( d.length > |
while ( d.length > popupMaxPreviewCharacters && n > 0 ); | ||
data = d; | data = d; | ||
Line 1,751: | Line 2,072: | ||
var left = parseInt(over.style.left); | var left = parseInt(over.style.left); | ||
var top = parseInt(over.style.top); | var top = parseInt(over.style.top); | ||
var right = left + (over.offsetWidth >= parseInt(o3_width) ? over.offsetWidth : parseInt(o3_width)); | var right = left + | ||
(over.offsetWidth >= parseInt(o3_width) ? over.offsetWidth : parseInt(o3_width)); | |||
var bottom = top + (over.offsetHeight >= o3_aboveheight ? over.offsetHeight : o3_aboveheight); | var bottom = top + | ||
(over.offsetHeight >= o3_aboveheight ? over.offsetHeight : o3_aboveheight); | |||
if (o3_x < left-fuzz || o3_x > right+fuzz || o3_y < top-fuzz || o3_y > bottom + fuzz) return true; | if (o3_x < left-fuzz || o3_x > right+fuzz || o3_y < top-fuzz || o3_y > bottom + fuzz) | ||
return true; | |||
return false; | return false; | ||
} | }; | ||
// seems that fuzzyCursorOff should precede mouseOutWikiLink in the source | // seems that fuzzyCursorOff should precede mouseOutWikiLink in the source | ||
Line 1,803: | Line 2,126: | ||
} | } | ||
else { | else { | ||
window. |
window._old_popup_onload = window.onload; | ||
window.onload = function() { | window.onload = function() { | ||
window. |
window._old_popup_onload(); | ||
setupTooltips(); | setupTooltips(); | ||
} | } | ||
Line 1,813: | Line 2,136: | ||
/// mode:c /// | /// mode:c /// | ||
/// End: /// | /// End: /// | ||
// --FILE BOUNDARY-- // --FILE BOUNDARY-- // --FILE BOUNDARY-- // --FILE BOUNDARY-- | |||
function getParamValue(paramName) { | |||
var cmdRe=RegExp(''+paramName+'=(*)'); | |||
var h=document.location; | |||
var m; | |||
if (m=cmdRe.exec(h)) { | |||
try { | |||
return decodeURI(m); | |||
} catch (someError) {} | |||
} | |||
return null; | |||
}; | |||
function substitute(data,cmdBody) { | |||
// alert('sub\nfrom: '+cmdBody.from+'\nto: '+cmdBody.to+'\nflags: '+cmdBody.flags); | |||
var fromRe=RegExp(cmdBody.from, cmdBody.flags); | |||
return data.replace(fromRe, cmdBody.to); | |||
}; | |||
function execCmds(data, cmdList) { | |||
for (var i=0; i<cmdList.length; ++i) { | |||
data=cmdList.action(data, cmdList); | |||
} | |||
return data; | |||
} | |||
function parseCmd(str) { | |||
// returns a list of commands | |||
if (!str.length) return ; | |||
var p=false; | |||
switch (str.charAt(0)) { | |||
case 's': | |||
p=parseSubstitute(str); | |||
break; | |||
case 'j': | |||
p=parseJavascript(str); | |||
break; | |||
default: | |||
return false; | |||
} | |||
if (p) return .concat(parseCmd(p.remainder)); | |||
return false; | |||
}; | |||
function unEscape(str, sep) { | |||
return str.split('\\\\').join('\\') | |||
.split('\\'+sep).join(sep) | |||
.split('\\n').join('\n'); | |||
}; | |||
function runJavascript(data, argWrapper) { | |||
// flags aren't used (yet) | |||
// from the user's viewpoint, | |||
// data is a special variable may appear inside code | |||
// and gets assigned the text in the edit box | |||
// alert('eval-ing '+argWrapper.code); | |||
return eval(argWrapper.code); | |||
}; | |||
function parseJavascript(str) { | |||
// takes a string like j/code/;othercmds and parses it | |||
var tmp,code,flags; | |||
if (str.length<3) return false; | |||
var sep=str.charAt(1); | |||
str=str.substring(2); | |||
tmp=skipOver(str,sep); | |||
if (tmp) { code=tmp.segment.split('\n').join('\\n'); str=tmp.remainder; } | |||
else return false; | |||
flags=''; | |||
if (str.length) { | |||
tmp=skipOver(str,';') || skipToEnd(str, ';'); | |||
if (tmp) {flags=tmp.segment; str=tmp.remainder; } | |||
} | |||
return { action: runJavascript, code: code, flags: flags, remainder: str }; | |||
}; | |||
function parseSubstitute(str) { | |||
// takes a string like s/a/b/flags;othercmds and parses it | |||
var from,to,flags,tmp; | |||
if (str.length<4) return false; | |||
var sep=str.charAt(1); | |||
str=str.substring(2); | |||
tmp=skipOver(str,sep); | |||
if (tmp) { from=tmp.segment; str=tmp.remainder; } | |||
else return false; | |||
tmp=skipOver(str,sep); | |||
if (tmp) { to=tmp.segment; str=tmp.remainder; } | |||
else return false; | |||
flags=''; | |||
if (str.length) { | |||
tmp=skipOver(str,';') || skipToEnd(str, ';'); | |||
if (tmp) {flags=tmp.segment; str=tmp.remainder; } | |||
} | |||
return {action: substitute, from: from, to: to, flags: flags, remainder: str}; | |||
}; | |||
function skipOver(str,sep) { | |||
var endSegment=findNext(str,sep); | |||
if (endSegment<0) return false; | |||
var segment=unEscape(str.substring(0,endSegment), sep); | |||
return {segment: segment, remainder: str.substring(endSegment+1)}; | |||
} | |||
function skipToEnd(str,sep) { | |||
return {segment: str, remainder: ''}; | |||
} | |||
function findNext(str, ch) { | |||
for (var i=0; i<str.length; ++i) { | |||
if (str.charAt(i)=='\\') i+=2; | |||
if (str.charAt(i)==ch) return i; | |||
} | |||
return -1; | |||
}; | |||
function runOnLoad(f) { | |||
if (window.addEventListener) { | |||
window.addEventListener("load",f,false); | |||
} | |||
else if (window.attachEvent) { | |||
window.attachEvent("onload",f); | |||
} | |||
else { | |||
window._old_popup_autoedit_onload = window.onload; | |||
window.onload = function() { | |||
window._old_popup_autoedit_onload(); | |||
f(); | |||
} | |||
} | |||
}; | |||
function autoEdit() { | |||
var cmdString=getParamValue('autoedit'); | |||
if (cmdString) { | |||
try { | |||
var editbox=document.editform.wpTextbox1; | |||
} catch (dang) { return; } | |||
var cmdList=parseCmd(cmdString); | |||
var input=editbox.value; | |||
var output=execCmds(input, cmdList); | |||
editbox.value=output; | |||
} | |||
var summary=getParamValue('autosummary'); | |||
if (summary) document.editform.wpSummary.value=summary; | |||
var minor=getParamValue('autominor'); | |||
if (minor) { | |||
switch (minor) { | |||
case '1': | |||
case 'yes': | |||
case 'true': | |||
document.editform.wpMinoredit.checked=true; | |||
break; | |||
case '0': | |||
case 'no': | |||
case 'false': | |||
document.editform.wpMinoredit.checked=false; | |||
} | |||
} | |||
var btn=getParamValue('autoclick'); | |||
if (btn) { | |||
if (document.editform && eval('document.editform.'+btn)) { | |||
var headings=document.getElementsByTagName('h1'); | |||
if (headings) { | |||
var div=document.createElement('div'); | |||
var button=eval('document.editform.'+btn); | |||
div.innerHTML='<font size=+1><b>The "' + button.value + | |||
'" button has been automatically clicked.' + | |||
' Please wait for the next page to load.</b></font>'; | |||
document.title='('+document.title+')'; | |||
headings.parentNode.insertBefore(div, headings); | |||
button.click(); | |||
} | |||
} else { | |||
alert('autoedit.js\n\nautoclick: could not find button "'+ btn +'".'); | |||
} | |||
} | |||
}; | |||
runOnLoad(autoEdit); | |||
// --FILE BOUNDARY-- // --FILE BOUNDARY-- // --FILE BOUNDARY-- // --FILE BOUNDARY-- | |||
// Last update: 21:51, 15 Feb 2005 (UTC) | |||
// Script to embed Live Preview in MediaWiki's edit page | |||
function LivePreviewInstall() | |||
{ | |||
copywarn = document.getElementById('editpage-copywarn'); | |||
if (copywarn != null) { | |||
var cleaner = "<br style=\\'clear:both;\\' />"; | |||
LivePreviewHTML = '<input type="button" value="Live Preview" onclick="document.getElementById(\'PreviewBox\').innerHTML = wiki2html(editform.wpTextbox1.value) + \'' + cleaner + '\';" />'; | |||
//LivePreviewHTML = '<input type="button" value="Live Preview" onclick="document.getElementById(\'PreviewBox\').innerHTML = wiki2html(editform.wpTextbox1.value);" />'; | |||
LivePreviewHTML += '<div style="margin-top: 5px; margin-bottom: 5px; padding: 5px; border: 3px double orange;" id="PreviewBox"></div>'; | |||
copywarn.innerHTML = LivePreviewHTML + copywarn.innerHTML; | |||
} | |||
} | |||
// User options | |||
var wpUserName=wpUserName||'Wikipedian'; | |||
var wpUserSignature=wpUserSignature||wpUserName; | |||
var wpShowImages=wpShowImages||true; | |||
// System options | |||
var wpLanguageCode=wpLanguageCode||'en'; | |||
var wpInterwikiCodes=wpInterwikiCodes||'ab|aa|af|ak|sq|als|am|ang|ar|an|arc|hy|roa-rup|as|ast|av|ay|az|bm|ba|eu|be|bn|bh|bi|bs|br|bg|my|ca|ch|ce|chr|chy|ny|zh|zh-tw|zh-cn|cho|cv|kw|co|cr|hr|cs|da|dv|nl|dz|en|eo|et|ee|fo|fj|fi|fr|fy|ff|gl|ka|de|got|el|kl|gn|gu|ht|ha|haw|he|hz|hi|ho|hu|is|io|ig|id|ia|ie|iu|ik|ga|it|ja|jv|kn|kr|csb|ks|kk|km|ki|rw|rn|tlh|kv|kg|ko|kj|ku|ky|lo|la|lv|li|ln|lt|jbo|nds|lg|lb|mk|mg|ms|ml|mt|gv|mi|minnan|mr|mh|zh-min-nan|mo|mn|mus|nah|na|nv|ne|se|no|nn|oc|or|om|pi|fa|pl|pt|pa|ps|qu|ro|rm|ru|sm|sg|sa|sc|gd|sr|sh|st|tn|sn|scn|simple|sd|si|sk|sl|so|st|es|su|sw|ss|sv|tl|ty|tg|ta|tt|te|th|bo|ti|tpi|to|tokipona|ts|tum|tr|tk|tw|uk|ur|ug|uz|ve|vi|vo|wa|cy|wo|xh|ii|yi|yo|za|zu'; | |||
var wpBaseArticlePath=wpBaseArticlePath||'/'; | |||
var wpMathBasePath=wpMathBasePath||'/math/'; | |||
var wpImageBasePath=wpImageBasePath||'http://upload.wikimedia.org/wikipedia/'+wpLanguageCode+'/'; | |||
var wpImageFallbackPath=wpImageFallbackPath||'http://upload.wikimedia.org/wikipedia/commons/'; | |||
var wpDefaultThumbWidth=wpDefaultThumbWidth||180; | |||
var wpSkinMagnifyClip=wpSkinMagnifyClip||'/skins/common/images/magnify-clip.png'; | |||
var wpUserNamespace=wpUserNamespace||'User'; | |||
var wpImageNamespace=wpImageNamespace||'Image'; | |||
var wpCategoryNamespace=wpCategoryNamespace||'Category'; | |||
// Packed code (DO NOT MODIFY) | |||
function wiki2html(str) | |||
{str=strip_cr(str);var w=new WikiCode();w.lines=str.split(/\n/);w.parse();return w.html;};var wpSignature=']';var wpBlockImage=new RegExp('^\\[\\['+wpImageNamespace+':.*?\\|.*?(?:frame|thumbnail|thumb|none|right|left|center)','i');function WikiCode() | |||
{this.lines=new Array;this.html=new String;this._endline=function(str) | |||
{this.html+=str;this.lines.shift();};this.parse=function() | |||
{var p=false;do{if(h_match=this.lines.match(/^(={1,6})(.*)\1(.*)$/)){p=false;this._endline('<h'+h_match.length+'>'+_parse_inline_nowiki(h_match)+'</h'+h_match.length+'>'+h_match);}else if(this.lines.match(/^/)){p=false;this._parse_list();}else if(this.lines.charAt(0)==' '){p=false;this._parse_pre();}else if(this.lines.substr(0,2)=='{|'){p=false;this._parse_table();}else if(this.lines.match(/^----+$/)){p=false;this._endline('<hr/>');}else if(this.lines.match(wpBlockImage)){p=false;this._parse_block_image();}else{if(this.lines==''){if(p=(this.lines.length>1&&this.lines=='')){this._endline('<p><br />');}}else{if(!p){this.html+='<p>';p=true;} | |||
this.html+=_parse_inline_nowiki(this.lines)+' ';} | |||
this.lines.shift();}}while(this.lines.length);};this._parse_list=function(){var prev=new String;var l_match,imatch,dt_match;while(this.lines.length&&(l_match=this.lines.match(/^(+)(.*)$/))){this.lines.shift();imatch=str_imatch(prev,l_match);for(var i=prev.length-1;i>=imatch;i--){if(prev.charAt(i)=='*'){this.html+='</ul>';}else if(prev.charAt(i)=='#'){this.html+='</ol>'}else{this.html+='</d'+((prev.charAt(i)==';')?'t':'d')+'>';switch(l_match.charAt(i)){case'':case'*':case'#':this.html+='</dl>';}}} | |||
for(var i=imatch;i<l_match.length;i++){if(l_match.charAt(i)=='*'){this.html+='<ul>';}else if(l_match.charAt(i)=='#'){this.html+='<ol>';}else{switch(prev.charAt(i)){case'':case'*':case'#':this.html+='<dl>';} | |||
this.html+='<d'+((l_match.charAt(i)==';')?'t':'d')+'>';}} | |||
switch(l_match.charAt(l_match.length-1)){case'*':case'#':this.html+='<li>'+_parse_inline_nowiki(l_match);break;case';':if(dt_match=l_match.match(/(.*?) (:.*?)$/)){this.html+=_parse_inline_nowiki(dt_match);this.lines.unshift(dt_match);break;} | |||
case':':this.html+=_parse_inline_nowiki(l_match);} | |||
prev=l_match;} | |||
for(i=prev.length-1;i>=0;i--){if(prev.charAt(i)=='*'){this.html+='</ul>';}else if(prev.charAt(i)=='#'){this.html+='</ol>';}else{this.html+='</d'+((prev.charAt(i)==';')?'t':'d')+'></dl>';}}};this._parse_table=function() | |||
{var table_match;if(table_match=this.lines.match(/^\{\|( .*)$/)){this._endline('<table'+table_match+'>');}else this._endline('<table>');do{if(this.lines.charAt(0)=='|'){switch(this.lines.charAt(1)){case'}':this._endline('</table>');return;case'-':this._endline('<tr '+this.lines.match(/\|-*(.*)/)+'>');break;default:this._parse_table_data();}}else if(this.lines.charAt(0)=='!'){this._parse_table_data();}else{this.lines.shift();}}while(this.lines.length)};this._parse_table_data=function() | |||
{var td_match,td_line;td_match=this.lines.shift().match(/^(\|\+|\||!)((?:(*?)\|(?!\|))?(.*))$/);if(td_match=='|+'){this.html+='<caption';}else{this.html+='<t'+((td_match=='|')?'d':'h');} | |||
if(typeof td_match!='undefined'){this.html+=' '+td_match;td_line=td_match.split('||');}else{td_line=td_match.split('||');} | |||
this.html+='>';while(td_line.length>1){this.lines.unshift(td_match+td_line.pop());} | |||
this.html+=_parse_inline_nowiki(td_line);var td=new WikiCode;var table_count=0;while(this.lines.length){if(this.lines.charAt(0)=='|'){if(table_count==0)break;else if(this.lines.charAt(1)=='}')table_count--;}else if(this.lines.charAt(0)=='!'&&table_count==0){break;}else if(this.lines.substr(0,2)=='{|')table_count++;td.lines.push(this.lines.shift());} | |||
if(td.lines.length){td.parse();} | |||
this.html+=td.html;};this._parse_pre=function() | |||
{this.html+='<pre>';do{this._endline(_parse_inline_nowiki(this.lines.substring(1,this.lines.length))+"\n");}while(this.lines.length&&this.lines.charAt(0)==' ');this.html+='</pre>';};this._parse_block_image=function() | |||
{this.html+=_parse_image(this.lines.shift());};};function _parse_image(str) | |||
{var attr=str.substring(wpImageNamespace.length+3,str.length-2).split(/\s*\|\s*/);var filename=attr;var caption=attr;var width,w_match;var thumb=false;var frame=false;var center=false;var align='';var html='';do{if(w_match=attr.match(/^(\d*)px$/)){width=w_match;}else switch(attr){case'thumb':case'thumbnail':thumb=true;case'frame':frame=true;break;case'none':case'right':case'left':center=false;align=attr;break;case'center':center=true;align='none';} | |||
attr.shift();}while(attr.length);if(frame){if(align=='')align='right';html+="<div class='thumb t"+align+"'>";if(thumb){if(!width)width=wpDefaultThumbWidth;html+="<div style='width:"+(2+parseInt(width))+"px;'>";html+=_make_image(filename,caption,width);html+="<div class='thumbcaption'><div class='magnify' style='float:right'><a href='"+wpBaseArticlePath+wpImageNamespace+':'+filename+"' class='internal' title='Enlarge'><img src='"+wpSkinMagnifyClip+"' /></a></div>"+_parse_inline_nowiki(caption)+"</div>";}else{html+='<div>';html+=_make_image(filename,caption);html+="<div class='thumbcaption'>"+_parse_inline_nowiki(caption)+"</div>";} | |||
html+='</div></div>';}else if(align!=''){html+="<div class='float"+align+"'><span>"+_make_image(filename,caption,width)+"</span></div>";}else{return _make_image(filename,caption,width);} | |||
if(center){return"<div class='center'>"+html+'</div>';}else{return html;}};this._parse_inline_nowiki=function(str) | |||
{var start,lastend=0 | |||
var substart=0,nestlev=0,open,close,subloop;var html='';while(-1!=(start=str.indexOf('<'+'nowiki>',substart))){html+=_parse_inline_wiki(str.substring(lastend,start));start+=8;substart=start;subloop=true;do{open=str.indexOf('<'+'nowiki>',substart);close=str.indexOf('</nowiki>',substart);if(close<=open||open==-1){if(close==-1){return html+html_entities(str.substr(start));} | |||
substart=close+9;if(nestlev){nestlev--;}else{lastend=substart;html+=html_entities(str.substring(start,lastend-9));subloop=false;}}else{substart=open+8;nestlev++;}}while(subloop);} | |||
return html+_parse_inline_wiki(str.substr(lastend));};function _make_image(filename,caption,width) | |||
{filename=filename.charAt(0).toUpperCase()+filename.substr(1);filename=filename.replace(/ /g,'_');var md5=hex_md5(filename);var source=md5.charAt(0)+'/'+md5.substr(0,2)+'/'+filename;var img;if(wpShowImages){if(width){width="width='"+width+"px'";} | |||
img="<img onerror='this.onerror=null;this.src=\""+wpImageFallbackPath+source+"\";' src='"+wpImageBasePath+source+"' alt='"+caption+"' "+width+"/>";}else{img=wpImageNamespace+':'+filename+" <em style='color:red;'>(images disabled)</em>";} | |||
caption=_strip_inline_wiki(caption);return"<a class='image' title='"+caption+"' href='"+wpBaseArticlePath+wpImageNamespace+':'+filename+"'>"+img+"</a>";};function _parse_inline_images(str) | |||
{var start,substart=0,nestlev=0;var loop,close,open,wiki,html;while(-1!=(start=str.indexOf(']',substart);open=str.indexOf('[[',substart);if(close<=open||open==-1){if(close==-1)return str;substart=close;if(nestlev){nestlev--;}else{wiki=str.substring(start,close+2);html=_parse_image(wiki);str=str.replace(wiki,html);substart=start+html.length;loop=false;}}else{substart=open;nestlev++;}}while(loop);}else{break;}} | |||
return str;};function _parse_inline_wiki(str) | |||
{var aux_match,math_md5;str=_parse_inline_images(str);while(aux_match=str.match(/<(?:)math>(.*?)<\/math>/i)){math_md5=hex_md5(aux_match);str=str.replace(aux_match,"<img src='"+wpMathBasePath+math_md5+'.png'+"' />");} | |||
return str.replace(/'''''(.*?)''(.*?)'''/g,'<strong><em>$1</em>$2</strong>').replace(/'''''(.*?)'''(.*?)''/g,'<em><strong>$1</strong>$2</em>').replace(/'''(.*?)''(.*?)'''''/g,'<strong>$1<em>$2</em></strong>').replace(/'''(.*?)'''/g,'<strong>$1</strong>').replace(/''(.*?)''/g,'<em>$1</em>').replace(/~{5}(?!~)/g,Date()).replace(/~{4}(?!~)/g,wpSignature+' '+Date()).replace(/~{3}(?!~)/g,wpSignature).replace(RegExp('\\\\]','gi'),"<a href='"+wpBaseArticlePath+"$1'>$1</a>").replace(RegExp('\\\\]','gi'),'').replace(/\*?)\]\](\w*)/g,"<a href='"+wpBaseArticlePath+"$1'>$1$2</a>").replace(/\]+?)\]\](\w*)/g,"<a href='"+wpBaseArticlePath+"$1'>$2$3</a>").replace(/\]*?:)?(.*?)( *\(.*?\))?\|\]\]/g,"<a href='"+wpBaseArticlePath+"$1$2$3'>$2</a>").replace(/\]*?) (.*?)\]/g,"<a href='$1:$2$3'>$4</a>").replace(/\/g,"<a href='http://$1'></a>").replace(/\/g,"<a href='$1:$2$3'>$1:$2$3</a>").replace(/(^| )(http|news|ftp|mailto|gopher|irc):(\/*)(*)/g,"$1<a href='$2:$3$4'>$2:$3$4</a>").replace('__NOTOC__','').replace('__NOEDITSECTION__','');};function _strip_inline_wiki(str) | |||
{return str.replace(/\]*\|(.*?)\]\]/g,'$1').replace(/\\]/g,'$1').replace(/''(.*?)''/g,'$1');};function max(a,b) | |||
{if(a>b)return a;else return b;};function min(a,b) | |||
{if(a<b)return a;else return b;};function str_imatch(str_a,str_b) | |||
{var lim=min(str_a.length,str_b.length);for(var i=0;i<lim;i++){if(str_a.charAt(i)!=str_b.charAt(i))return i;} | |||
return i;};function strip_cr(str) | |||
{return str.replace(/\n\r/g,"\n").replace(/\r/g,'');};function html_entities(str) | |||
{return str.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">");};var chrsz=8;var hex_tab="0123456789abcdef";function hex_md5(s){return binl2hex(core_md5(str2binl(s),s.length*chrsz));};function core_md5(x,len) | |||
{x|=0x80<<((len)%32);x=len;var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;for(var i=0;i<x.length;i+=16) | |||
{var olda=a;var oldb=b;var oldc=c;var oldd=d;a=md5_ff(a,b,c,d,x,7,-680876936);d=md5_ff(d,a,b,c,x,12,-389564586);c=md5_ff(c,d,a,b,x,17,606105819);b=md5_ff(b,c,d,a,x,22,-1044525330);a=md5_ff(a,b,c,d,x,7,-176418897);d=md5_ff(d,a,b,c,x,12,1200080426);c=md5_ff(c,d,a,b,x,17,-1473231341);b=md5_ff(b,c,d,a,x,22,-45705983);a=md5_ff(a,b,c,d,x,7,1770035416);d=md5_ff(d,a,b,c,x,12,-1958414417);c=md5_ff(c,d,a,b,x,17,-42063);b=md5_ff(b,c,d,a,x,22,-1990404162);a=md5_ff(a,b,c,d,x,7,1804603682);d=md5_ff(d,a,b,c,x,12,-40341101);c=md5_ff(c,d,a,b,x,17,-1502002290);b=md5_ff(b,c,d,a,x,22,1236535329);a=md5_gg(a,b,c,d,x,5,-165796510);d=md5_gg(d,a,b,c,x,9,-1069501632);c=md5_gg(c,d,a,b,x,14,643717713);b=md5_gg(b,c,d,a,x,20,-373897302);a=md5_gg(a,b,c,d,x,5,-701558691);d=md5_gg(d,a,b,c,x,9,38016083);c=md5_gg(c,d,a,b,x,14,-660478335);b=md5_gg(b,c,d,a,x,20,-405537848);a=md5_gg(a,b,c,d,x,5,568446438);d=md5_gg(d,a,b,c,x,9,-1019803690);c=md5_gg(c,d,a,b,x,14,-187363961);b=md5_gg(b,c,d,a,x,20,1163531501);a=md5_gg(a,b,c,d,x,5,-1444681467);d=md5_gg(d,a,b,c,x,9,-51403784);c=md5_gg(c,d,a,b,x,14,1735328473);b=md5_gg(b,c,d,a,x,20,-1926607734);a=md5_hh(a,b,c,d,x,4,-378558);d=md5_hh(d,a,b,c,x,11,-2022574463);c=md5_hh(c,d,a,b,x,16,1839030562);b=md5_hh(b,c,d,a,x,23,-35309556);a=md5_hh(a,b,c,d,x,4,-1530992060);d=md5_hh(d,a,b,c,x,11,1272893353);c=md5_hh(c,d,a,b,x,16,-155497632);b=md5_hh(b,c,d,a,x,23,-1094730640);a=md5_hh(a,b,c,d,x,4,681279174);d=md5_hh(d,a,b,c,x,11,-358537222);c=md5_hh(c,d,a,b,x,16,-722521979);b=md5_hh(b,c,d,a,x,23,76029189);a=md5_hh(a,b,c,d,x,4,-640364487);d=md5_hh(d,a,b,c,x,11,-421815835);c=md5_hh(c,d,a,b,x,16,530742520);b=md5_hh(b,c,d,a,x,23,-995338651);a=md5_ii(a,b,c,d,x,6,-198630844);d=md5_ii(d,a,b,c,x,10,1126891415);c=md5_ii(c,d,a,b,x,15,-1416354905);b=md5_ii(b,c,d,a,x,21,-57434055);a=md5_ii(a,b,c,d,x,6,1700485571);d=md5_ii(d,a,b,c,x,10,-1894986606);c=md5_ii(c,d,a,b,x,15,-1051523);b=md5_ii(b,c,d,a,x,21,-2054922799);a=md5_ii(a,b,c,d,x,6,1873313359);d=md5_ii(d,a,b,c,x,10,-30611744);c=md5_ii(c,d,a,b,x,15,-1560198380);b=md5_ii(b,c,d,a,x,21,1309151649);a=md5_ii(a,b,c,d,x,6,-145523070);d=md5_ii(d,a,b,c,x,10,-1120210379);c=md5_ii(c,d,a,b,x,15,718787259);b=md5_ii(b,c,d,a,x,21,-343485551);a=safe_add(a,olda);b=safe_add(b,oldb);c=safe_add(c,oldc);d=safe_add(d,oldd);} | |||
return Array(a,b,c,d);};function md5_cmn(q,a,b,x,s,t) | |||
{return safe_add(bit_rol(safe_add(safe_add(a,q),safe_add(x,t)),s),b);};function md5_ff(a,b,c,d,x,s,t) | |||
{return md5_cmn((b&c)|((~b)&d),a,b,x,s,t);};function md5_gg(a,b,c,d,x,s,t) | |||
{return md5_cmn((b&d)|(c&(~d)),a,b,x,s,t);};function md5_hh(a,b,c,d,x,s,t) | |||
{return md5_cmn(b^c^d,a,b,x,s,t);};function md5_ii(a,b,c,d,x,s,t) | |||
{return md5_cmn(c^(b|(~d)),a,b,x,s,t);};function safe_add(x,y) | |||
{var lsw=(x&0xFFFF)+(y&0xFFFF);var msw=(x>>16)+(y>>16)+(lsw>>16);return(msw<<16)|(lsw&0xFFFF);};function bit_rol(num,cnt) | |||
{return(num<<cnt)|(num>>>(32-cnt));};function str2binl(str) | |||
{var bin=Array();var mask=(1<<chrsz)-1;for(var i=0;i<str.length*chrsz;i+=chrsz) | |||
bin|=(str.charCodeAt(i/chrsz)&mask)<<(i%32);return bin;};function binl2hex(binarray) | |||
{var str='';for(var i=0;i<binarray.length*4;i++) | |||
{str+=hex_tab.charAt((binarray>>((i%4)*8+4))&0xF)+ | |||
hex_tab.charAt((binarray>>((i%4)*8))&0xF);} | |||
return str;}; // </math>// --FILE BOUNDARY-- // --FILE BOUNDARY-- // --FILE BOUNDARY-- // --FILE BOUNDARY-- | |||
/* | |||
* A JavaScript implementation of the RSA Data Security, Inc. MD5 Message | |||
* Digest Algorithm, as defined in RFC 1321. | |||
* Version 2.2-alpha Copyright (C) Paul Johnston 1999 - 2005 | |||
* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet | |||
* Distributed under the BSD License | |||
* See http://pajhome.org.uk/crypt/md5 for more info. | |||
*/ | |||
/* | |||
* Configurable variables. You may need to tweak these to be compatible with | |||
* the server-side, but the defaults work in most cases. | |||
*/ | |||
var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */ | |||
var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */ | |||
/* | |||
* These are the functions you'll usually want to call | |||
* They take string arguments and return either hex or base-64 encoded strings | |||
*/ | |||
function hex_md5(s) { return rstr2hex(rstr_md5(str2rstr_utf8(s))); } | |||
function b64_md5(s) { return rstr2b64(rstr_md5(str2rstr_utf8(s))); } | |||
function any_md5(s, e) { return rstr2any(rstr_md5(str2rstr_utf8(s)), e); } | |||
function hex_hmac_md5(k, d) | |||
{ return rstr2hex(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d))); } | |||
function b64_hmac_md5(k, d) | |||
{ return rstr2b64(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d))); } | |||
function any_hmac_md5(k, d, e) | |||
{ return rstr2any(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d)), e); } | |||
/* | |||
* Perform a simple self-test to see if the VM is working | |||
*/ | |||
function md5_vm_test() | |||
{ | |||
return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72"; | |||
} | |||
/* | |||
* Calculate the MD5 of a raw string | |||
*/ | |||
function rstr_md5(s) | |||
{ | |||
return binl2rstr(binl_md5(rstr2binl(s), s.length * 8)); | |||
} | |||
/* | |||
* Calculate the HMAC-MD5, of a key and some data (raw strings) | |||
*/ | |||
function rstr_hmac_md5(key, data) | |||
{ | |||
var bkey = rstr2binl(key); | |||
if(bkey.length > 16) bkey = binl_md5(bkey, key.length * 8); | |||
var ipad = Array(16), opad = Array(16); | |||
for(var i = 0; i < 16; i++) | |||
{ | |||
ipad = bkey ^ 0x36363636; | |||
opad = bkey ^ 0x5C5C5C5C; | |||
} | |||
var hash = binl_md5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); | |||
return binl2rstr(binl_md5(opad.concat(hash), 512 + 128)); | |||
} | |||
/* | |||
* Convert a raw string to a hex string | |||
*/ | |||
function rstr2hex(input) | |||
{ | |||
var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; | |||
var output = ""; | |||
var x; | |||
for(var i = 0; i < input.length; i++) | |||
{ | |||
x = input.charCodeAt(i); | |||
output += hex_tab.charAt((x >>> 4) & 0x0F) | |||
+ hex_tab.charAt( x & 0x0F); | |||
} | |||
return output; | |||
} | |||
/* | |||
* Convert a raw string to a base-64 string | |||
*/ | |||
function rstr2b64(input) | |||
{ | |||
var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; | |||
var output = ""; | |||
var len = input.length; | |||
for(var i = 0; i < len; i += 3) | |||
{ | |||
var triplet = (input.charCodeAt(i) << 16) | |||
| (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0) | |||
| (i + 2 < len ? input.charCodeAt(i+2) : 0); | |||
for(var j = 0; j < 4; j++) | |||
{ | |||
if(i * 8 + j * 6 > input.length * 8) output += b64pad; | |||
else output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F); | |||
} | |||
} | |||
return output; | |||
} | |||
/* | |||
* Convert a raw string to an arbitrary string encoding | |||
*/ | |||
function rstr2any(input, encoding) | |||
{ | |||
var divisor = encoding.length; | |||
var remainders = Array(); | |||
var i, q, x, quotient; | |||
/* Convert to an array of 16-bit big-endian values, forming the dividend */ | |||
var dividend = Array(input.length / 2); | |||
for(i = 0; i < dividend.length; i++) | |||
{ | |||
dividend = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1); | |||
} | |||
/* | |||
* Repeatedly perform a long division. The binary array forms the dividend, | |||
* the length of the encoding is the divisor. Once computed, the quotient | |||
* forms the dividend for the next step. We stop when the dividend is zero. | |||
* All remainders are stored for later use. | |||
*/ | |||
while(dividend.length > 0) | |||
{ | |||
quotient = Array(); | |||
x = 0; | |||
for(i = 0; i < dividend.length; i++) | |||
{ | |||
x = (x << 16) + dividend; | |||
q = Math.floor(x / divisor); | |||
x -= q * divisor; | |||
if(quotient.length > 0 || q > 0) | |||
quotient = q; | |||
} | |||
remainders = x; | |||
dividend = quotient; | |||
} | |||
/* Convert the remainders to the output string */ | |||
var output = ""; | |||
for(i = remainders.length - 1; i >= 0; i--) | |||
output += encoding.charAt(remainders); | |||
return output; | |||
} | |||
/* | |||
* Encode a string as utf-8. | |||
* For efficiency, this assumes the input is valid utf-16. | |||
*/ | |||
function str2rstr_utf8(input) | |||
{ | |||
var output = ""; | |||
var i = -1; | |||
var x, y; | |||
while(++i < input.length) | |||
{ | |||
/* Decode utf-16 surrogate pairs */ | |||
x = input.charCodeAt(i); | |||
y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0; | |||
if(0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) | |||
{ | |||
x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF); | |||
i++; | |||
} | |||
/* Encode output as utf-8 */ | |||
if(x <= 0x7F) | |||
output += String.fromCharCode(x); | |||
else if(x <= 0x7FF) | |||
output += String.fromCharCode(0xC0 | ((x >>> 6 ) & 0x1F), | |||
0x80 | ( x & 0x3F)); | |||
else if(x <= 0xFFFF) | |||
output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F), | |||
0x80 | ((x >>> 6 ) & 0x3F), | |||
0x80 | ( x & 0x3F)); | |||
else if(x <= 0x1FFFFF) | |||
output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07), | |||
0x80 | ((x >>> 12) & 0x3F), | |||
0x80 | ((x >>> 6 ) & 0x3F), | |||
0x80 | ( x & 0x3F)); | |||
} | |||
return output; | |||
} | |||
/* | |||
* Encode a string as utf-16 | |||
*/ | |||
function str2rstr_utf16le(input) | |||
{ | |||
var output = ""; | |||
for(var i = 0; i < input.length; i++) | |||
output += String.fromCharCode( input.charCodeAt(i) & 0xFF, | |||
(input.charCodeAt(i) >>> 8) & 0xFF); | |||
return output; | |||
} | |||
function str2rstr_utf16be(input) | |||
{ | |||
var output = ""; | |||
for(var i = 0; i < input.length; i++) | |||
output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF, | |||
input.charCodeAt(i) & 0xFF); | |||
return output; | |||
} | |||
/* | |||
* Convert a raw string to an array of little-endian words | |||
* Characters >255 have their high-byte silently ignored. | |||
*/ | |||
function rstr2binl(input) | |||
{ | |||
var output = Array(input.length >> 2); | |||
for(var i = 0; i < output.length; i++) | |||
output = 0; | |||
for(var i = 0; i < input.length * 8; i += 8) | |||
output |= (input.charCodeAt(i / 8) & 0xFF) << (i%32); | |||
return output; | |||
} | |||
/* | |||
* Convert an array of little-endian words to a string | |||
*/ | |||
function binl2rstr(input) | |||
{ | |||
var output = ""; | |||
for(var i = 0; i < input.length * 32; i += 8) | |||
output += String.fromCharCode((input >>> (i % 32)) & 0xFF); | |||
return output; | |||
} | |||
/* | |||
* Calculate the MD5 of an array of little-endian words, and a bit length. | |||
*/ | |||
function binl_md5(x, len) | |||
{ | |||
/* append padding */ | |||
x |= 0x80 << ((len) % 32); | |||
x = len; | |||
var a = 1732584193; | |||
var b = -271733879; | |||
var c = -1732584194; | |||
var d = 271733878; | |||
for(var i = 0; i < x.length; i += 16) | |||
{ | |||
var olda = a; | |||
var oldb = b; | |||
var oldc = c; | |||
var oldd = d; | |||
a = md5_ff(a, b, c, d, x, 7 , -680876936); | |||
d = md5_ff(d, a, b, c, x, 12, -389564586); | |||
c = md5_ff(c, d, a, b, x, 17, 606105819); | |||
b = md5_ff(b, c, d, a, x, 22, -1044525330); | |||
a = md5_ff(a, b, c, d, x, 7 , -176418897); | |||
d = md5_ff(d, a, b, c, x, 12, 1200080426); | |||
c = md5_ff(c, d, a, b, x, 17, -1473231341); | |||
b = md5_ff(b, c, d, a, x, 22, -45705983); | |||
a = md5_ff(a, b, c, d, x, 7 , 1770035416); | |||
d = md5_ff(d, a, b, c, x, 12, -1958414417); | |||
c = md5_ff(c, d, a, b, x, 17, -42063); | |||
b = md5_ff(b, c, d, a, x, 22, -1990404162); | |||
a = md5_ff(a, b, c, d, x, 7 , 1804603682); | |||
d = md5_ff(d, a, b, c, x, 12, -40341101); | |||
c = md5_ff(c, d, a, b, x, 17, -1502002290); | |||
b = md5_ff(b, c, d, a, x, 22, 1236535329); | |||
a = md5_gg(a, b, c, d, x, 5 , -165796510); | |||
d = md5_gg(d, a, b, c, x, 9 , -1069501632); | |||
c = md5_gg(c, d, a, b, x, 14, 643717713); | |||
b = md5_gg(b, c, d, a, x, 20, -373897302); | |||
a = md5_gg(a, b, c, d, x, 5 , -701558691); | |||
d = md5_gg(d, a, b, c, x, 9 , 38016083); | |||
c = md5_gg(c, d, a, b, x, 14, -660478335); | |||
b = md5_gg(b, c, d, a, x, 20, -405537848); | |||
a = md5_gg(a, b, c, d, x, 5 , 568446438); | |||
d = md5_gg(d, a, b, c, x, 9 , -1019803690); | |||
c = md5_gg(c, d, a, b, x, 14, -187363961); | |||
b = md5_gg(b, c, d, a, x, 20, 1163531501); | |||
a = md5_gg(a, b, c, d, x, 5 , -1444681467); | |||
d = md5_gg(d, a, b, c, x, 9 , -51403784); | |||
c = md5_gg(c, d, a, b, x, 14, 1735328473); | |||
b = md5_gg(b, c, d, a, x, 20, -1926607734); | |||
a = md5_hh(a, b, c, d, x, 4 , -378558); | |||
d = md5_hh(d, a, b, c, x, 11, -2022574463); | |||
c = md5_hh(c, d, a, b, x, 16, 1839030562); | |||
b = md5_hh(b, c, d, a, x, 23, -35309556); | |||
a = md5_hh(a, b, c, d, x, 4 , -1530992060); | |||
d = md5_hh(d, a, b, c, x, 11, 1272893353); | |||
c = md5_hh(c, d, a, b, x, 16, -155497632); | |||
b = md5_hh(b, c, d, a, x, 23, -1094730640); | |||
a = md5_hh(a, b, c, d, x, 4 , 681279174); | |||
d = md5_hh(d, a, b, c, x, 11, -358537222); | |||
c = md5_hh(c, d, a, b, x, 16, -722521979); | |||
b = md5_hh(b, c, d, a, x, 23, 76029189); | |||
a = md5_hh(a, b, c, d, x, 4 , -640364487); | |||
d = md5_hh(d, a, b, c, x, 11, -421815835); | |||
c = md5_hh(c, d, a, b, x, 16, 530742520); | |||
b = md5_hh(b, c, d, a, x, 23, -995338651); | |||
a = md5_ii(a, b, c, d, x, 6 , -198630844); | |||
d = md5_ii(d, a, b, c, x, 10, 1126891415); | |||
c = md5_ii(c, d, a, b, x, 15, -1416354905); | |||
b = md5_ii(b, c, d, a, x, 21, -57434055); | |||
a = md5_ii(a, b, c, d, x, 6 , 1700485571); | |||
d = md5_ii(d, a, b, c, x, 10, -1894986606); | |||
c = md5_ii(c, d, a, b, x, 15, -1051523); | |||
b = md5_ii(b, c, d, a, x, 21, -2054922799); | |||
a = md5_ii(a, b, c, d, x, 6 , 1873313359); | |||
d = md5_ii(d, a, b, c, x, 10, -30611744); | |||
c = md5_ii(c, d, a, b, x, 15, -1560198380); | |||
b = md5_ii(b, c, d, a, x, 21, 1309151649); | |||
a = md5_ii(a, b, c, d, x, 6 , -145523070); | |||
d = md5_ii(d, a, b, c, x, 10, -1120210379); | |||
c = md5_ii(c, d, a, b, x, 15, 718787259); | |||
b = md5_ii(b, c, d, a, x, 21, -343485551); | |||
a = safe_add(a, olda); | |||
b = safe_add(b, oldb); | |||
c = safe_add(c, oldc); | |||
d = safe_add(d, oldd); | |||
} | |||
return Array(a, b, c, d); | |||
} | |||
/* | |||
* These functions implement the four basic operations the algorithm uses. | |||
*/ | |||
function md5_cmn(q, a, b, x, s, t) | |||
{ | |||
return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b); | |||
} | |||
function md5_ff(a, b, c, d, x, s, t) | |||
{ | |||
return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t); | |||
} | |||
function md5_gg(a, b, c, d, x, s, t) | |||
{ | |||
return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t); | |||
} | |||
function md5_hh(a, b, c, d, x, s, t) | |||
{ | |||
return md5_cmn(b ^ c ^ d, a, b, x, s, t); | |||
} | |||
function md5_ii(a, b, c, d, x, s, t) | |||
{ | |||
return md5_cmn(c ^ (b | (~d)), a, b, x, s, t); | |||
} | |||
/* | |||
* Add integers, wrapping at 2^32. This uses 16-bit operations internally | |||
* to work around bugs in some JS interpreters. | |||
*/ | |||
function safe_add(x, y) | |||
{ | |||
var lsw = (x & 0xFFFF) + (y & 0xFFFF); | |||
var msw = (x >> 16) + (y >> 16) + (lsw >> 16); | |||
return (msw << 16) | (lsw & 0xFFFF); | |||
} | |||
/* | |||
* Bitwise rotate a 32-bit number to the left. | |||
*/ | |||
function bit_rol(num, cnt) | |||
{ | |||
return (num << cnt) | (num >>> (32 - cnt)); | |||
}// --FILE BOUNDARY-- // --FILE BOUNDARY-- // --FILE BOUNDARY-- // --FILE BOUNDARY-- | |||
//\///// | |||
//\ overLIB 4.21 - You may not remove or change this notice. | |||
//\ Copyright Erik Bosrup 1998-2004. All rights reserved. | |||
//\ | |||
//\ Contributors are listed on the homepage. | |||
//\ This file might be old, always check for the latest version at: | |||
//\ http://www.bosrup.com/web/overlib/ | |||
//\ | |||
//\ Please read the license agreement (available through the link above) | |||
//\ before using overLIB. Direct any licensing questions to erik@bosrup.com. | |||
//\ | |||
//\ Do not sell this as your own work or remove this copyright notice. | |||
//\ For full details on copying or changing this script please read the | |||
//\ license agreement at the link above. Please give credit on sites that | |||
//\ use overLIB and submit changes of the script so other people can use | |||
//\ them as well. | |||
//\///// | |||
//\ THIS IS A VERY MODIFIED VERSION. DO NOT EDIT OR PUBLISH. GET THE ORIGINAL! | |||
var olLoaded=0,pmStart=10000000,pmUpper=10001000,pmCount=pmStart+1,pmt='',pms=new Array(),olInfo=new Info('4.21',1),FREPLACE=0,FBEFORE=1,FAFTER=2,FALTERNATE=3,FCHAIN=4,olHideForm=0,olHautoFlag=0,olVautoFlag=0,hookPts=new Array(),postParse=new Array(),cmdLine=new Array(),runTime=new Array(); | |||
registerCommands('donothing,inarray,caparray,sticky,background,noclose,caption,left,right,center,offsetx,offsety,fgcolor,bgcolor,textcolor,capcolor,closecolor,width,border,cellpad,status,autostatus,autostatuscap,height,closetext,snapx,snapy,fixx,fixy,relx,rely,fgbackground,bgbackground,padx,pady,fullhtml,above,below,capicon,textfont,captionfont,closefont,textsize,captionsize,closesize,timeout,function,delay,hauto,vauto,closeclick,wrap,followmouse,mouseoff,closetitle,cssoff,compatmode,cssclass,fgclass,bgclass,textfontclass,captionfontclass,closefontclass'); | |||
if(typeof ol_fgcolor=='undefined')var ol_fgcolor="#CCCCFF";if(typeof ol_bgcolor=='undefined')var ol_bgcolor="#333399";if(typeof ol_textcolor=='undefined')var ol_textcolor="#000000";if(typeof ol_capcolor=='undefined')var ol_capcolor="#FFFFFF";if(typeof ol_closecolor=='undefined')var ol_closecolor="#9999FF";if(typeof ol_textfont=='undefined')var ol_textfont="Verdana,Arial,Helvetica";if(typeof ol_captionfont=='undefined')var ol_captionfont="Verdana,Arial,Helvetica";if(typeof ol_closefont=='undefined')var ol_closefont="Verdana,Arial,Helvetica";if(typeof ol_textsize=='undefined')var ol_textsize="1";if(typeof ol_captionsize=='undefined')var ol_captionsize="1";if(typeof ol_closesize=='undefined')var ol_closesize="1";if(typeof ol_width=='undefined')var ol_width="200";if(typeof ol_border=='undefined')var ol_border="1";if(typeof ol_cellpad=='undefined')var ol_cellpad=2;if(typeof ol_offsetx=='undefined')var ol_offsetx=10;if(typeof ol_offsety=='undefined')var ol_offsety=10;if(typeof ol_text=='undefined')var ol_text="Default Text";if(typeof ol_cap=='undefined')var ol_cap="";if(typeof ol_sticky=='undefined')var ol_sticky=0;if(typeof ol_background=='undefined')var ol_background="";if(typeof ol_close=='undefined')var ol_close="Close";if(typeof ol_hpos=='undefined')var ol_hpos=RIGHT;if(typeof ol_status=='undefined')var ol_status="";if(typeof ol_autostatus=='undefined')var ol_autostatus=0;if(typeof ol_height=='undefined')var ol_height=-1;if(typeof ol_snapx=='undefined')var ol_snapx=0;if(typeof ol_snapy=='undefined')var ol_snapy=0;if(typeof ol_fixx=='undefined')var ol_fixx=-1;if(typeof ol_fixy=='undefined')var ol_fixy=-1;if(typeof ol_relx=='undefined')var ol_relx=null;if(typeof ol_rely=='undefined')var ol_rely=null;if(typeof ol_fgbackground=='undefined')var ol_fgbackground="";if(typeof ol_bgbackground=='undefined')var ol_bgbackground="";if(typeof ol_padxl=='undefined')var ol_padxl=1;if(typeof ol_padxr=='undefined')var ol_padxr=1;if(typeof ol_padyt=='undefined')var ol_padyt=1;if(typeof ol_padyb=='undefined')var ol_padyb=1;if(typeof ol_fullhtml=='undefined')var ol_fullhtml=0;if(typeof ol_vpos=='undefined')var ol_vpos=BELOW;if(typeof ol_aboveheight=='undefined')var ol_aboveheight=0;if(typeof ol_capicon=='undefined')var ol_capicon="";if(typeof ol_frame=='undefined')var ol_frame=self;if(typeof ol_timeout=='undefined')var ol_timeout=0;if(typeof ol_function=='undefined')var ol_function=null;if(typeof ol_delay=='undefined')var ol_delay=0;if(typeof ol_hauto=='undefined')var ol_hauto=0;if(typeof ol_vauto=='undefined')var ol_vauto=0;if(typeof ol_closeclick=='undefined')var ol_closeclick=0;if(typeof ol_wrap=='undefined')var ol_wrap=0;if(typeof ol_followmouse=='undefined')var ol_followmouse=1;if(typeof ol_mouseoff=='undefined')var ol_mouseoff=0;if(typeof ol_closetitle=='undefined')var ol_closetitle='Close';if(typeof ol_compatmode=='undefined')var ol_compatmode=0;if(typeof ol_css=='undefined')var ol_css=CSSOFF;if(typeof ol_fgclass=='undefined')var ol_fgclass="";if(typeof ol_bgclass=='undefined')var ol_bgclass="";if(typeof ol_textfontclass=='undefined')var ol_textfontclass="";if(typeof ol_captionfontclass=='undefined')var ol_captionfontclass="";if(typeof ol_closefontclass=='undefined')var ol_closefontclass=""; | |||
if(typeof ol_texts=='undefined')var ol_texts=new Array("Text 0","Text 1");if(typeof ol_caps=='undefined')var ol_caps=new Array("Caption 0","Caption 1"); | |||
var o3_text="",o3_cap="",o3_sticky=0,o3_background="",o3_close="Close",o3_hpos=RIGHT,o3_offsetx=2,o3_offsety=2,o3_fgcolor="",o3_bgcolor="",o3_textcolor="",o3_capcolor="",o3_closecolor="",o3_width=100,o3_border=1,o3_cellpad=2,o3_status="",o3_autostatus=0,o3_height=-1,o3_snapx=0,o3_snapy=0,o3_fixx=-1,o3_fixy=-1,o3_relx=null,o3_rely=null,o3_fgbackground="",o3_bgbackground="",o3_padxl=0,o3_padxr=0,o3_padyt=0,o3_padyb=0,o3_fullhtml=0,o3_vpos=BELOW,o3_aboveheight=0,o3_capicon="",o3_textfont="Verdana,Arial,Helvetica",o3_captionfont="Verdana,Arial,Helvetica",o3_closefont="Verdana,Arial,Helvetica",o3_textsize="1",o3_captionsize="1",o3_closesize="1",o3_frame=self,o3_timeout=0,o3_timerid=0,o3_allowmove=0,o3_function=null,o3_delay=0,o3_delayid=0,o3_hauto=0,o3_vauto=0,o3_closeclick=0,o3_wrap=0,o3_followmouse=1,o3_mouseoff=0,o3_closetitle='',o3_compatmode=0,o3_css=CSSOFF,o3_fgclass="",o3_bgclass="",o3_textfontclass="",o3_captionfontclass="",o3_closefontclass=""; | |||
var o3_x=0,o3_y=0,o3_showingsticky=0,o3_removecounter=0; | |||
var over=null,fnRef,hoveringSwitch=false,olHideDelay; | |||
var isMac=(navigator.userAgent.indexOf("Mac")!=-1),olOp=(navigator.userAgent.toLowerCase().indexOf('opera')>-1&&document.createTextNode),olNs4=(navigator.appName=='Netscape'&&parseInt(navigator.appVersion)==4),olNs6=(document.getElementById)?true:false,olKq=(olNs6&&/konqueror/i.test(navigator.userAgent)),olIe4=(document.all)?true:false,olIe5=false,olIe55=false,docRoot='document.body'; | |||
if(olNs4){var oW=window.innerWidth;var oH=window.innerHeight;window.onresize=function(){if(oW!=window.innerWidth||oH!=window.innerHeight)location.reload();}} | |||
if(olIe4){var agent=navigator.userAgent;if(/MSIE/.test(agent)){var versNum=parseFloat(agent.match(/MSIE(\d\.\d+)\.*/i));if(versNum>=5){olIe5=true;olIe55=(versNum>=5.5&&!olOp)?true:false;if(olNs6)olNs6=false;}} | |||
if(olNs6)olIe4=false;} | |||
if(document.compatMode&&document.compatMode=='CSS1Compat'){docRoot=((olIe4&&!olOp)?'document.documentElement':docRoot);} | |||
if(window.addEventListener)window.addEventListener("load",OLonLoad_handler,false);else if(window.attachEvent)window.attachEvent("onload",OLonLoad_handler); | |||
var capExtent; | |||
function overlib(){if(!olLoaded||isExclusive(overlib.arguments))return true;if(olCheckMouseCapture)olMouseCapture();if(over){over=(typeof over.id!='string')?o3_frame.document.all:over;cClick();} | |||
olHideDelay=0;o3_text=ol_text;o3_cap=ol_cap;o3_sticky=ol_sticky;o3_background=ol_background;o3_close=ol_close;o3_hpos=ol_hpos;o3_offsetx=ol_offsetx;o3_offsety=ol_offsety;o3_fgcolor=ol_fgcolor;o3_bgcolor=ol_bgcolor;o3_textcolor=ol_textcolor;o3_capcolor=ol_capcolor;o3_closecolor=ol_closecolor;o3_width=ol_width;o3_border=ol_border;o3_cellpad=ol_cellpad;o3_status=ol_status;o3_autostatus=ol_autostatus;o3_height=ol_height;o3_snapx=ol_snapx;o3_snapy=ol_snapy;o3_fixx=ol_fixx;o3_fixy=ol_fixy;o3_relx=ol_relx;o3_rely=ol_rely;o3_fgbackground=ol_fgbackground;o3_bgbackground=ol_bgbackground;o3_padxl=ol_padxl;o3_padxr=ol_padxr;o3_padyt=ol_padyt;o3_padyb=ol_padyb;o3_fullhtml=ol_fullhtml;o3_vpos=ol_vpos;o3_aboveheight=ol_aboveheight;o3_capicon=ol_capicon;o3_textfont=ol_textfont;o3_captionfont=ol_captionfont;o3_closefont=ol_closefont;o3_textsize=ol_textsize;o3_captionsize=ol_captionsize;o3_closesize=ol_closesize;o3_timeout=ol_timeout;o3_function=ol_function;o3_delay=ol_delay;o3_hauto=ol_hauto;o3_vauto=ol_vauto;o3_closeclick=ol_closeclick;o3_wrap=ol_wrap;o3_followmouse=ol_followmouse;o3_mouseoff=ol_mouseoff;o3_closetitle=ol_closetitle;o3_css=ol_css;o3_compatmode=ol_compatmode;o3_fgclass=ol_fgclass;o3_bgclass=ol_bgclass;o3_textfontclass=ol_textfontclass;o3_captionfontclass=ol_captionfontclass;o3_closefontclass=ol_closefontclass; | |||
setRunTimeVariables(); | |||
fnRef=''; | |||
o3_frame=ol_frame; | |||
if(!(over=createDivContainer()))return false; | |||
parseTokens('o3_',overlib.arguments);if(!postParseChecks())return false; | |||
if(o3_delay==0){return runHook("olMain",FREPLACE);}else{o3_delayid=setTimeout("runHook('olMain',FREPLACE)",o3_delay);return false;}} | |||
function nd(time){if(olLoaded&&!isExclusive()){hideDelay(time); | |||
if(o3_removecounter>=1){o3_showingsticky=0 }; | |||
if(o3_showingsticky==0){o3_allowmove=0;if(over!=null&&o3_timerid==0)runHook("hideObject",FREPLACE,over);}else{o3_removecounter++;}} | |||
return true;} | |||
function cClick(){if(olLoaded){runHook("hideObject",FREPLACE,over);o3_showingsticky=0;} | |||
return false;} | |||
function overlib_pagedefaults(){parseTokens('ol_',overlib_pagedefaults.arguments);} | |||
function olMain(){var layerhtml,styleType;runHook("olMain",FBEFORE); | |||
if(o3_background!=""||o3_fullhtml){ | |||
layerhtml=runHook('ol_content_background',FALTERNATE,o3_css,o3_text,o3_background,o3_fullhtml);}else{ | |||
styleType=(pms=="cssoff"||pms=="cssclass"); | |||
if(o3_fgbackground!="")o3_fgbackground="background=\""+o3_fgbackground+"\"";if(o3_bgbackground!="")o3_bgbackground=(styleType?"background=\""+o3_bgbackground+"\"":o3_bgbackground); | |||
if(o3_fgcolor!="")o3_fgcolor=(styleType?"bgcolor=\""+o3_fgcolor+"\"":o3_fgcolor);if(o3_bgcolor!="")o3_bgcolor=(styleType?"bgcolor=\""+o3_bgcolor+"\"":o3_bgcolor); | |||
if(o3_height>0)o3_height=(styleType?"height=\""+o3_height+"\"":o3_height);else o3_height=""; | |||
if(o3_cap==""){ | |||
layerhtml=runHook('ol_content_simple',FALTERNATE,o3_css,o3_text);}else{ | |||
if(o3_sticky){ | |||
layerhtml=runHook('ol_content_caption',FALTERNATE,o3_css,o3_text,o3_cap,o3_close);}else{ | |||
layerhtml=runHook('ol_content_caption',FALTERNATE,o3_css,o3_text,o3_cap,"");}}} | |||
if(o3_sticky){if(o3_timerid>0){clearTimeout(o3_timerid);o3_timerid=0;} | |||
o3_showingsticky=1;o3_removecounter=0;} | |||
if(!runHook("createPopup",FREPLACE,layerhtml))return false; | |||
if(o3_autostatus>0){o3_status=o3_text;if(o3_autostatus>1)o3_status=o3_cap;} | |||
o3_allowmove=0; | |||
if(o3_timeout>0){if(o3_timerid>0)clearTimeout(o3_timerid);o3_timerid=setTimeout("cClick()",o3_timeout);} | |||
runHook("disp",FREPLACE,o3_status);runHook("olMain",FAFTER); | |||
return(olOp&&event&&event.type=='mouseover'&&!o3_status)?'':(o3_status!='');} | |||
function ol_content_simple(text){var cpIsMultiple=/,/.test(o3_cellpad);var txt='<table width="'+o3_width+'" border="0" cellpadding="'+o3_border+'" cellspacing="0" '+(o3_bgclass?'class="'+o3_bgclass+'"':o3_bgcolor+' '+o3_height)+'><tr><td><table width="100%" border="0" '+((olNs4||!cpIsMultiple)?'cellpadding="'+o3_cellpad+'" ':'')+'cellspacing="0" '+(o3_fgclass?'class="'+o3_fgclass+'"':o3_fgcolor+' '+o3_fgbackground+' '+o3_height)+'><tr><td valign="TOP"'+(o3_textfontclass?' class="'+o3_textfontclass+'">':((!olNs4&&cpIsMultiple)?' style="'+setCellPadStr(o3_cellpad)+'">':'>'))+(o3_textfontclass?'':wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass?'':wrapStr(1,o3_textsize))+'</td></tr></table></td></tr></table>'; | |||
set_background("");return txt;} | |||
function ol_content_caption(text,title,close){var nameId,txt,cpIsMultiple=/,/.test(o3_cellpad);var closing,closeevent; | |||
closing="";closeevent="onmouseover";if(o3_closeclick==1)closeevent=(o3_closetitle?"title='"+o3_closetitle+"'":"")+" onclick";if(o3_capicon!=""){nameId=' hspace=\"5\"'+' align=\"middle\" alt=\"\"';if(typeof o3_dragimg!='undefined'&&o3_dragimg)nameId=' hspace=\"5\"'+' name=\"'+o3_dragimg+'\" id=\"'+o3_dragimg+'\" align=\"middle\" alt=\"Drag Enabled\" title=\"Drag Enabled\"';o3_capicon='<img src=\"'+o3_capicon+'\"'+nameId+' />';} | |||
if(close!="") | |||
closing='<td '+(!o3_compatmode&&o3_closefontclass?'class="'+o3_closefontclass:'align="RIGHT')+'"><a href="javascript:return '+fnRef+'cClick();"'+((o3_compatmode&&o3_closefontclass)?' class="'+o3_closefontclass+'" ':' ')+closeevent+'="return '+fnRef+'cClick();">'+(o3_closefontclass?'':wrapStr(0,o3_closesize,'close'))+close+(o3_closefontclass?'':wrapStr(1,o3_closesize,'close'))+'</a></td>';txt='<table width="'+o3_width+'" border="0" cellpadding="'+o3_border+'" cellspacing="0" '+(o3_bgclass?'class="'+o3_bgclass+'"':o3_bgcolor+' '+o3_bgbackground+' '+o3_height)+'><tr><td><table width="100%" border="0" cellpadding="2" cellspacing="0"><tr><td'+(o3_captionfontclass?' class="'+o3_captionfontclass+'">':'>')+(o3_captionfontclass?'':'<b>'+wrapStr(0,o3_captionsize,'caption'))+o3_capicon+title+(o3_captionfontclass?'':wrapStr(1,o3_captionsize)+'</b>')+'</td>'+closing+'</tr></table><table width="100%" border="0" '+((olNs4||!cpIsMultiple)?'cellpadding="'+o3_cellpad+'" ':'')+'cellspacing="0" '+(o3_fgclass?'class="'+o3_fgclass+'"':o3_fgcolor+' '+o3_fgbackground+' '+o3_height)+'><tr><td valign="TOP"'+(o3_textfontclass?' class="'+o3_textfontclass+'">' :((!olNs4&&cpIsMultiple)?' style="'+setCellPadStr(o3_cellpad)+'">':'>'))+(o3_textfontclass?'':wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass?'':wrapStr(1,o3_textsize))+'</td></tr></table></td></tr></table>'; | |||
set_background("");return txt;} | |||
function ol_content_background(text,picture,hasfullhtml){if(hasfullhtml){txt=text;}else{txt='<table width="'+o3_width+'" border="0" cellpadding="0" cellspacing="0" height="'+o3_height+'"><tr><td colspan="3" height="'+o3_padyt+'"></td></tr><tr><td width="'+o3_padxl+'"></td><td valign="TOP" width="'+(o3_width-o3_padxl-o3_padxr)+(o3_textfontclass?'" class="'+o3_textfontclass:'')+'">'+(o3_textfontclass?'':wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass?'':wrapStr(1,o3_textsize))+'</td><td width="'+o3_padxr+'"></td></tr><tr><td colspan="3" height="'+o3_padyb+'"></td></tr></table>';} | |||
set_background(picture);return txt;} | |||
function set_background(pic){if(pic==""){if(olNs4){over.background.src=null;}else if(over.style){over.style.backgroundImage="none";} | |||
}else{if(olNs4){over.background.src=pic;}else if(over.style){over.style.width=o3_width+'px';over.style.backgroundImage="url("+pic+")";}}} | |||
var olShowId=-1; | |||
function disp(statustext){runHook("disp",FBEFORE); | |||
if(o3_allowmove==0){runHook("placeLayer",FREPLACE);(olNs6&&olShowId<0)?olShowId=setTimeout("runHook('showObject',FREPLACE,over)",1):runHook("showObject",FREPLACE,over);o3_allowmove=(o3_sticky||o3_followmouse==0)?0:1;} | |||
runHook("disp",FAFTER); | |||
if(statustext!="")self.status=statustext;} | |||
function createPopup(lyrContent){runHook("createPopup",FBEFORE); | |||
if(o3_wrap){var wd,ww,theObj=(olNs4?over:over.style);theObj.top=theObj.left=((olIe4&&!olOp)?0:-10000)+(!olNs4?'px':0);layerWrite(lyrContent);wd=(olNs4?over.clip.width:over.offsetWidth);if(wd>(ww=windowWidth())){lyrContent=lyrContent.replace(/\ /g,' ');o3_width=ww;o3_wrap=0;}} | |||
layerWrite(lyrContent); | |||
if(o3_wrap)o3_width=(olNs4?over.clip.width:over.offsetWidth); | |||
runHook("createPopup",FAFTER,lyrContent); | |||
return true;} | |||
function placeLayer(){var placeX,placeY,widthFix=0; | |||
if(o3_frame.innerWidth)widthFix=18;iwidth=windowWidth(); | |||
winoffset=(olIe4)?eval('o3_frame.'+docRoot+'.scrollLeft'):o3_frame.pageXOffset; | |||
placeX=runHook('horizontalPlacement',FCHAIN,iwidth,winoffset,widthFix); | |||
if(o3_frame.innerHeight){iheight=o3_frame.innerHeight;}else if(eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientHeight=='number'")&&eval('o3_frame.'+docRoot+'.clientHeight')){iheight=eval('o3_frame.'+docRoot+'.clientHeight');} | |||
scrolloffset=(olIe4)?eval('o3_frame.'+docRoot+'.scrollTop'):o3_frame.pageYOffset;placeY=runHook('verticalPlacement',FCHAIN,iheight,scrolloffset); | |||
repositionTo(over,placeX,placeY);} | |||
function olMouseMove(e){var e=(e)?e:event; | |||
if(e.pageX){o3_x=e.pageX;o3_y=e.pageY;}else if(e.clientX){o3_x=eval('e.clientX+o3_frame.'+docRoot+'.scrollLeft');o3_y=eval('e.clientY+o3_frame.'+docRoot+'.scrollTop');} | |||
if(o3_allowmove==1)runHook("placeLayer",FREPLACE); | |||
if(hoveringSwitch&&!olNs4&&runHook("cursorOff",FREPLACE)){(olHideDelay?hideDelay(olHideDelay):cClick());hoveringSwitch=!hoveringSwitch;}} | |||
function no_overlib(){return ver3fix;} | |||
function olMouseCapture(){capExtent=document;var fN,str='',l,k,f,wMv,sS,mseHandler=olMouseMove;var re=/function*(\w*)\(/; | |||
wMv=(!olIe4&&window.onmousemove);if(document.onmousemove||wMv){if(wMv)capExtent=window;f=capExtent.onmousemove.toString();fN=f.match(re);if(fN==null){str=f+'(e);';}else if(fN=='anonymous'||fN=='olMouseMove'||(wMv&&fN=='onmousemove')){if(!olOp&&wMv){l=f.indexOf('{')+1;k=f.lastIndexOf('}');sS=f.substring(l,k);if((l=sS.indexOf('('))!=-1){sS=sS.substring(0,l).replace(/^\s+/,'').replace(/\s+$/,'');if(eval("typeof "+sS+"=='undefined'"))window.onmousemove=null;else str=sS+'(e);';}} | |||
if(!str){olCheckMouseCapture=false;return;} | |||
}else{if(fN)str=fN+'(e);';else{l=f.indexOf('{')+1;k=f.lastIndexOf('}');str=f.substring(l,k)+'\n';}} | |||
str+='olMouseMove(e);';mseHandler=new Function('e',str);} | |||
capExtent.onmousemove=mseHandler;if(olNs4)capExtent.captureEvents(Event.MOUSEMOVE);} | |||
function parseTokens(pf,ar){ | |||
var v,i,mode=-1,par=(pf!='ol_'),fnMark=(par&&!ar.length?1:0); | |||
for(i=0;i<ar.length;i++){if(mode<0){ | |||
if(typeof ar=='number'&&ar>pmStart&&ar<pmUpper){fnMark=(par?1:0);i--;}else{switch(pf){case 'ol_': | |||
ol_text=ar.toString();break;default: | |||
o3_text=ar.toString();}} | |||
mode=0;}else{ | |||
if(ar>=pmCount||ar==DONOTHING){continue;} | |||
if(ar==INARRAY){fnMark=0;eval(pf+'text=ol_texts+'].toString()');continue;} | |||
if(ar==CAPARRAY){eval(pf+'cap=ol_caps+'].toString()');continue;} | |||
if(ar==STICKY){if(pf!='ol_')eval(pf+'sticky=1');continue;} | |||
if(ar==BACKGROUND){eval(pf+'background="'+ar+'"');continue;} | |||
if(ar==NOCLOSE){if(pf!='ol_')opt_NOCLOSE();continue;} | |||
if(ar==CAPTION){eval(pf+"cap='"+escSglQuote(ar)+"'");continue;} | |||
if(ar==CENTER||ar==LEFT||ar==RIGHT){eval(pf+'hpos='+ar);if(pf!='ol_')olHautoFlag=1;continue;} | |||
if(ar==OFFSETX){eval(pf+'offsetx='+ar);continue;} | |||
if(ar==OFFSETY){eval(pf+'offsety='+ar);continue;} | |||
if(ar==FGCOLOR){eval(pf+'fgcolor="'+ar+'"');continue;} | |||
if(ar==BGCOLOR){eval(pf+'bgcolor="'+ar+'"');continue;} | |||
if(ar==TEXTCOLOR){eval(pf+'textcolor="'+ar+'"');continue;} | |||
if(ar==CAPCOLOR){eval(pf+'capcolor="'+ar+'"');continue;} | |||
if(ar==CLOSECOLOR){eval(pf+'closecolor="'+ar+'"');continue;} | |||
if(ar==WIDTH){eval(pf+'width='+ar);continue;} | |||
if(ar==BORDER){eval(pf+'border='+ar);continue;} | |||
if(ar==CELLPAD){i=opt_MULTIPLEARGS(++i,ar,(pf+'cellpad'));continue;} | |||
if(ar==STATUS){eval(pf+"status='"+escSglQuote(ar)+"'");continue;} | |||
if(ar==AUTOSTATUS){eval(pf+'autostatus=('+pf+'autostatus==1)?0:1');continue;} | |||
if(ar==AUTOSTATUSCAP){eval(pf+'autostatus=('+pf+'autostatus==2)?0:2');continue;} | |||
if(ar==HEIGHT){eval(pf+'height='+pf+'aboveheight='+ar);continue;} | |||
if(ar==CLOSETEXT){eval(pf+"close='"+escSglQuote(ar)+"'");continue;} | |||
if(ar==SNAPX){eval(pf+'snapx='+ar);continue;} | |||
if(ar==SNAPY){eval(pf+'snapy='+ar);continue;} | |||
if(ar==FIXX){eval(pf+'fixx='+ar);continue;} | |||
if(ar==FIXY){eval(pf+'fixy='+ar);continue;} | |||
if(ar==RELX){eval(pf+'relx='+ar);continue;} | |||
if(ar==RELY){eval(pf+'rely='+ar);continue;} | |||
if(ar==FGBACKGROUND){eval(pf+'fgbackground="'+ar+'"');continue;} | |||
if(ar==BGBACKGROUND){eval(pf+'bgbackground="'+ar+'"');continue;} | |||
if(ar==PADX){eval(pf+'padxl='+ar);eval(pf+'padxr='+ar);continue;} | |||
if(ar==PADY){eval(pf+'padyt='+ar);eval(pf+'padyb='+ar);continue;} | |||
if(ar==FULLHTML){if(pf!='ol_')eval(pf+'fullhtml=1');continue;} | |||
if(ar==BELOW||ar==ABOVE){eval(pf+'vpos='+ar);if(pf!='ol_')olVautoFlag=1;continue;} | |||
if(ar==CAPICON){eval(pf+'capicon="'+ar+'"');continue;} | |||
if(ar==TEXTFONT){eval(pf+"textfont='"+escSglQuote(ar)+"'");continue;} | |||
if(ar==CAPTIONFONT){eval(pf+"captionfont='"+escSglQuote(ar)+"'");continue;} | |||
if(ar==CLOSEFONT){eval(pf+"closefont='"+escSglQuote(ar)+"'");continue;} | |||
if(ar==TEXTSIZE){eval(pf+'textsize="'+ar+'"');continue;} | |||
if(ar==CAPTIONSIZE){eval(pf+'captionsize="'+ar+'"');continue;} | |||
if(ar==CLOSESIZE){eval(pf+'closesize="'+ar+'"');continue;} | |||
if(ar==TIMEOUT){eval(pf+'timeout='+ar);continue;} | |||
if(ar==FUNCTION){if(pf=='ol_'){if(typeof ar!='number'){v=ar;ol_function=(typeof v=='function'?v:null);}}else{fnMark=0;v=null;if(typeof ar!='number')v=ar; opt_FUNCTION(v);} continue;} | |||
if(ar==DELAY){eval(pf+'delay='+ar);continue;} | |||
if(ar==HAUTO){eval(pf+'hauto=('+pf+'hauto==0)?1:0');continue;} | |||
if(ar==VAUTO){eval(pf+'vauto=('+pf+'vauto==0)?1:0');continue;} | |||
if(ar==CLOSECLICK){eval(pf+'closeclick=('+pf+'closeclick==0)?1:0');continue;} | |||
if(ar==WRAP){eval(pf+'wrap=('+pf+'wrap==0)?1:0');continue;} | |||
if(ar==FOLLOWMOUSE){eval(pf+'followmouse=('+pf+'followmouse==1)?0:1');continue;} | |||
if(ar==MOUSEOFF){eval(pf+'mouseoff=('+pf+'mouseoff==0)?1:0');v=ar;if(pf!='ol_'&&eval(pf+'mouseoff')&&typeof v=='number'&&(v<pmStart||v>pmUpper))olHideDelay=ar;continue;} | |||
if(ar==CLOSETITLE){eval(pf+"closetitle='"+escSglQuote(ar)+"'");continue;} | |||
if(ar==CSSOFF||ar==CSSCLASS){eval(pf+'css='+ar);continue;} | |||
if(ar==COMPATMODE){eval(pf+'compatmode=('+pf+'compatmode==0)?1:0');continue;} | |||
if(ar==FGCLASS){eval(pf+'fgclass="'+ar+'"');continue;} | |||
if(ar==BGCLASS){eval(pf+'bgclass="'+ar+'"');continue;} | |||
if(ar==TEXTFONTCLASS){eval(pf+'textfontclass="'+ar+'"');continue;} | |||
if(ar==CAPTIONFONTCLASS){eval(pf+'captionfontclass="'+ar+'"');continue;} | |||
if(ar==CLOSEFONTCLASS){eval(pf+'closefontclass="'+ar+'"');continue;} | |||
i=parseCmdLine(pf,i,ar);}} | |||
if(fnMark&&o3_function)o3_text=o3_function(); | |||
if((pf=='o3_')&&o3_wrap){o3_width=0; | |||
var tReg=/<.*\n*>/ig;if(!tReg.test(o3_text))o3_text=o3_text.replace(/+/g,' ');if(!tReg.test(o3_cap))o3_cap=o3_cap.replace(/+/g,' ');} | |||
if((pf=='o3_')&&o3_sticky){if(!o3_close&&(o3_frame!=ol_frame))o3_close=ol_close;if(o3_mouseoff&&(o3_frame==ol_frame))opt_NOCLOSE(' ');}} | |||
function layerWrite(txt){txt+="\n";if(olNs4){var lyr=o3_frame.document.layers.document | |||
lyr.write(txt) | |||
lyr.close() | |||
}else if(typeof over.innerHTML!='undefined'){if(olIe5&&isMac)over.innerHTML='';over.innerHTML=txt;}else{range=o3_frame.document.createRange();range.setStartAfter(over);domfrag=range.createContextualFragment(txt); | |||
while(over.hasChildNodes()){over.removeChild(over.lastChild);} | |||
over.appendChild(domfrag);}} | |||
function showObject(obj){runHook("showObject",FBEFORE); | |||
var theObj=(olNs4?obj:obj.style);theObj.visibility='visible'; | |||
runHook("showObject",FAFTER);} | |||
function hideObject(obj){runHook("hideObject",FBEFORE); | |||
var theObj=(olNs4?obj:obj.style);if(olNs6&&olShowId>0){clearTimeout(olShowId);olShowId=0;} | |||
theObj.visibility='hidden';theObj.top=theObj.left=((olIe4&&!olOp)?0:-10000)+(!olNs4?'px':0); | |||
if(o3_timerid>0)clearTimeout(o3_timerid);if(o3_delayid>0)clearTimeout(o3_delayid); | |||
o3_timerid=0;o3_delayid=0;self.status=""; | |||
if(obj.onmouseout||obj.onmouseover){if(olNs4)obj.releaseEvents(Event.MOUSEOUT||Event.MOUSEOVER);obj.onmouseout=obj.onmouseover=null;} | |||
runHook("hideObject",FAFTER);} | |||
function repositionTo(obj,xL,yL){var theObj=(olNs4?obj:obj.style);theObj.left=xL+(!olNs4?'px':0);theObj.top=yL+(!olNs4?'px':0);} | |||
function cursorOff(){var left=parseInt(over.style.left);var top=parseInt(over.style.top);var right=left+(over.offsetWidth>=parseInt(o3_width)?over.offsetWidth:parseInt(o3_width));var bottom=top+(over.offsetHeight>=o3_aboveheight?over.offsetHeight:o3_aboveheight); | |||
if(o3_x<left||o3_x>right||o3_y<top||o3_y>bottom)return true; | |||
return false;} | |||
function opt_FUNCTION(callme){o3_text=(callme?(typeof callme=='string'?(/.+\(.*\)/.test(callme)?eval(callme):callme):callme()):(o3_function?o3_function():'No Function')); | |||
return 0;} | |||
function opt_NOCLOSE(unused){if(!unused)o3_close=""; | |||
if(olNs4){over.captureEvents(Event.MOUSEOUT||Event.MOUSEOVER);over.onmouseover=function(){if(o3_timerid>0){clearTimeout(o3_timerid);o3_timerid=0;} } | |||
over.onmouseout=function(e){if(olHideDelay)hideDelay(olHideDelay);else cClick(e);} | |||
}else{over.onmouseover=function(){hoveringSwitch=true;if(o3_timerid>0){clearTimeout(o3_timerid);o3_timerid=0;} }} | |||
return 0;} | |||
function opt_MULTIPLEARGS(i,args,parameter){var k=i,re,pV,str=''; | |||
for(k=i;k<args.length;k++){if(typeof args=='number'&&args>pmStart)break;str+=args+',';} | |||
if(str)str=str.substring(0,--str.length); | |||
k--;pV=(olNs4&&/cellpad/i.test(parameter))?str.split(','):str;eval(parameter+'="'+pV+'"'); | |||
return k;} | |||
function nbspCleanup(){if(o3_wrap){o3_text=o3_text.replace(/\ /g,' ');o3_cap=o3_cap.replace(/\ /g,' ');}} | |||
function escSglQuote(str){return str.toString().replace(/'/g,"\\'");} | |||
function OLonLoad_handler(e){var re=/\w+\(.*\)+/g,olre=/overlib\(|nd\(|cClick\(/,fn,l,i; | |||
if(!olLoaded)olLoaded=1; | |||
if(window.removeEventListener&&e.eventPhase==3)window.removeEventListener("load",OLonLoad_handler,false);else if(window.detachEvent){window.detachEvent("onload",OLonLoad_handler);var fN=document.body.getAttribute('onload');if(fN){fN=fN.toString().match(re);if(fN&&fN.length){for(i=0;i<fN.length;i++){if(/anonymous/.test(fN))continue;while((l=fN.search(/\)+/))!=-1){fn=fN.substring(0,l+1);fN=fN.substring(l+2);if(olre.test(fn))eval(fn);}}}}}} | |||
function wrapStr(endWrap,fontSizeStr,whichString){var fontStr,fontColor,isClose=((whichString=='close')?1:0),hasDims=/+$/.test(fontSizeStr);fontSizeStr=(olNs4)?(!hasDims?fontSizeStr:'1'):fontSizeStr;if(endWrap)return(hasDims&&!olNs4)?(isClose?'</span>':'</div>'):'</font>';else{fontStr='o3_'+whichString+'font';fontColor='o3_'+((whichString=='caption')? 'cap':whichString)+'color';return(hasDims&&!olNs4)?(isClose?'<span style="font-family: '+quoteMultiNameFonts(eval(fontStr))+';color: '+eval(fontColor)+';font-size: '+fontSizeStr+';">':'<div style="font-family: '+quoteMultiNameFonts(eval(fontStr))+';color: '+eval(fontColor)+';font-size: '+fontSizeStr+';">'):'<font face="'+eval(fontStr)+'" color="'+eval(fontColor)+'" size="'+(parseInt(fontSizeStr)>7?'7':fontSizeStr)+'">';}} | |||
function quoteMultiNameFonts(theFont){var v,pM=theFont.split(',');for(var i=0;i<pM.length;i++){v=pM;v=v.replace(/^\s+/,'').replace(/\s+$/,'');if(/\s/.test(v)&&!//.test(v)){v="\'"+v+"\'";pM=v;}} | |||
return pM.join();} | |||
function isExclusive(args){return false;} | |||
function setCellPadStr(parameter){var Str='',j=0,ary=new Array(),top,bottom,left,right; | |||
Str+='padding: ';ary=parameter.replace(/\s+/g,'').split(','); | |||
switch(ary.length){case 2: | |||
top=bottom=ary;left=right=ary;break;case 3: | |||
top=ary;left=right=ary;bottom=ary;break;case 4: | |||
top=ary;right=ary;bottom=ary;left=ary;break;} | |||
Str+=((ary.length==1)?ary+'px;':top+'px '+right+'px '+bottom+'px '+left+'px;'); | |||
return Str;} | |||
function hideDelay(time){if(time&&!o3_delay){if(o3_timerid>0)clearTimeout(o3_timerid); | |||
o3_timerid=setTimeout("cClick()",(o3_timeout=time));}} | |||
function horizontalPlacement(browserWidth,horizontalScrollAmount,widthFix){var placeX,iwidth=browserWidth,winoffset=horizontalScrollAmount;var parsedWidth=parseInt(o3_width); | |||
if(o3_fixx>-1||o3_relx!=null){ | |||
placeX=(o3_relx!=null?( o3_relx<0?winoffset+o3_relx+iwidth-parsedWidth-widthFix:winoffset+o3_relx):o3_fixx);}else{ | |||
if(o3_hauto==1){if((o3_x-winoffset)>(iwidth/2)){o3_hpos=LEFT;}else{o3_hpos=RIGHT;}} | |||
if(o3_hpos==CENTER){placeX=o3_x+o3_offsetx-(parsedWidth/2); | |||
if(placeX<winoffset)placeX=winoffset;} | |||
if(o3_hpos==RIGHT){placeX=o3_x+o3_offsetx; | |||
if((placeX+parsedWidth)>(winoffset+iwidth-widthFix)){placeX=iwidth+winoffset-parsedWidth-widthFix;if(placeX<0)placeX=0;}} | |||
if(o3_hpos==LEFT){placeX=o3_x-o3_offsetx-parsedWidth;if(placeX<winoffset)placeX=winoffset;} | |||
if(o3_snapx>1){var snapping=placeX % o3_snapx; | |||
if(o3_hpos==LEFT){placeX=placeX-(o3_snapx+snapping);}else{ | |||
placeX=placeX+(o3_snapx-snapping);} | |||
if(placeX<winoffset)placeX=winoffset;}} | |||
return placeX;} | |||
function verticalPlacement(browserHeight,verticalScrollAmount){var placeY,iheight=browserHeight,scrolloffset=verticalScrollAmount;var parsedHeight=(o3_aboveheight?parseInt(o3_aboveheight):(olNs4?over.clip.height:over.offsetHeight)); | |||
if(o3_fixy>-1||o3_rely!=null){ | |||
placeY=(o3_rely!=null?(o3_rely<0?scrolloffset+o3_rely+iheight-parsedHeight:scrolloffset+o3_rely):o3_fixy);}else{ | |||
if(o3_vauto==1){if((o3_y-scrolloffset)>(iheight/2)&&o3_vpos==BELOW&&(o3_y+parsedHeight+o3_offsety-(scrolloffset+iheight)>0)){o3_vpos=ABOVE;}else if(o3_vpos==ABOVE&&(o3_y-(parsedHeight+o3_offsety)-scrolloffset<0)){o3_vpos=BELOW;}} | |||
if(o3_vpos==ABOVE){if(o3_aboveheight==0)o3_aboveheight=parsedHeight; | |||
placeY=o3_y-(o3_aboveheight+o3_offsety);if(placeY<scrolloffset)placeY=scrolloffset;}else{ | |||
placeY=o3_y+o3_offsety;} | |||
if(o3_snapy>1){var snapping=placeY % o3_snapy; | |||
if(o3_aboveheight>0&&o3_vpos==ABOVE){placeY=placeY-(o3_snapy+snapping);}else{placeY=placeY+(o3_snapy-snapping);} | |||
if(placeY<scrolloffset)placeY=scrolloffset;}} | |||
return placeY;} | |||
function checkPositionFlags(){if(olHautoFlag)olHautoFlag=o3_hauto=0;if(olVautoFlag)olVautoFlag=o3_vauto=0;return true;} | |||
function windowWidth(){var w;if(o3_frame.innerWidth)w=o3_frame.innerWidth;else if(eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientWidth=='number'")&&eval('o3_frame.'+docRoot+'.clientWidth')) | |||
w=eval('o3_frame.'+docRoot+'.clientWidth');return w;} | |||
function createDivContainer(id,frm,zValue){id=(id||'overDiv'),frm=(frm||o3_frame),zValue=(zValue||1000);var objRef,divContainer=layerReference(id); | |||
if(divContainer==null){if(olNs4){divContainer=frm.document.layers=new Layer(window.innerWidth,frm);objRef=divContainer;}else{var body=(olIe4?frm.document.all.tags('BODY'):frm.document.getElementsByTagName("BODY"));if(olIe4&&!document.getElementById){body.insertAdjacentHTML("beforeEnd",'<div id="'+id+'"></div>');divContainer=layerReference(id);}else{divContainer=frm.document.createElement("DIV");divContainer.id=id;body.appendChild(divContainer);} | |||
objRef=divContainer.style;} | |||
objRef.position='absolute';objRef.visibility='hidden';objRef.zIndex=zValue;if(olIe4&&!olOp)objRef.left=objRef.top='0px';else objRef.left=objRef.top=-10000+(!olNs4?'px':0);} | |||
return divContainer;} | |||
function layerReference(id){return(olNs4?o3_frame.document.layers:(document.all?o3_frame.document.all:o3_frame.document.getElementById(id)));} | |||
function isFunction(fnRef){var rtn=true; | |||
if(typeof fnRef=='object'){for(var i=0;i<fnRef.length;i++){if(typeof fnRef=='function')continue;rtn=false;break;} | |||
}else if(typeof fnRef!='function'){rtn=false;} | |||
return rtn;} | |||
function argToString(array,strtInd,argName){var jS=strtInd,aS='',ar=array;argName=(argName?argName:'ar'); | |||
if(ar.length>jS){for(var k=jS;k<ar.length;k++)aS+=argName+', ';aS=aS.substring(0,aS.length-2);} | |||
return aS;} | |||
function reOrder(hookPt,fnRef,order){var newPt=new Array(),match,i,j; | |||
if(!order||typeof order=='undefined'||typeof order=='number')return hookPt; | |||
if(typeof order=='function'){if(typeof fnRef=='object'){newPt=newPt.concat(fnRef);}else{newPt=fnRef;} | |||
for(i=0;i<hookPt.length;i++){match=false;if(typeof fnRef=='function'&&hookPt==fnRef){continue;}else{for(j=0;j<fnRef.length;j++)if(hookPt==fnRef){match=true;break;}} | |||
if(!match)newPt=hookPt;} | |||
newPt=order; | |||
}else if(typeof order=='object'){if(typeof fnRef=='object'){newPt=newPt.concat(fnRef);}else{newPt=fnRef;} | |||
for(j=0;j<hookPt.length;j++){match=false;if(typeof fnRef=='function'&&hookPt==fnRef){continue;}else{for(i=0;i<fnRef.length;i++)if(hookPt==fnRef){match=true;break;}} | |||
if(!match)newPt=hookPt;} | |||
for(i=0;i<newPt.length;i++)hookPt=newPt;newPt.length=0; | |||
for(j=0;j<hookPt.length;j++){match=false;for(i=0;i<order.length;i++){if(hookPt==order){match=true;break;}} | |||
if(!match)newPt=hookPt;} | |||
newPt=newPt.concat(order);} | |||
hookPt=newPt; | |||
return hookPt;} | |||
function setRunTimeVariables(){if(typeof runTime!='undefined'&&runTime.length){for(var k=0;k<runTime.length;k++){runTime();}}} | |||
function parseCmdLine(pf,i,args){if(typeof cmdLine!='undefined'&&cmdLine.length){for(var k=0;k<cmdLine.length;k++){var j=cmdLine(pf,i,args);if(j >-1){i=j;break;}}} | |||
return i;} | |||
function postParseChecks(pf,args){if(typeof postParse!='undefined'&&postParse.length){for(var k=0;k<postParse.length;k++){if(postParse(pf,args))continue;return false;}} | |||
return true;} | |||
function registerCommands(cmdStr){if(typeof cmdStr!='string')return; | |||
var pM=cmdStr.split(',');pms=pms.concat(pM); | |||
for(var i=0;i< pM.length;i++){eval(pM.toUpperCase()+'='+pmCount++);}} | |||
function registerNoParameterCommands(cmdStr){if(!cmdStr&&typeof cmdStr!='string')return;pmt=(!pmt)?cmdStr:pmt+','+cmdStr;} | |||
function registerHook(fnHookTo,fnRef,hookType,optPm){var hookPt,last=typeof optPm; | |||
if(fnHookTo=='plgIn'||fnHookTo=='postParse')return;if(typeof hookPts=='undefined')hookPts=new FunctionReference(); | |||
hookPt=hookPts; | |||
if(hookType!=null){if(hookType==FREPLACE){hookPt.ovload=fnRef;if(fnHookTo.indexOf('ol_content_')>-1)hookPt.alt]=fnRef; | |||
}else if(hookType==FBEFORE||hookType==FAFTER){var hookPt=(hookType==1?hookPt.before:hookPt.after); | |||
if(typeof fnRef=='object'){hookPt=hookPt.concat(fnRef);}else{hookPt=fnRef;} | |||
if(optPm)hookPt=reOrder(hookPt,fnRef,optPm); | |||
}else if(hookType==FALTERNATE){if(last=='number')hookPt.alt]=fnRef;}else if(hookType==FCHAIN){hookPt=hookPt.chain;if(typeof fnRef=='object')hookPt=hookPt.concat(fnRef);else hookPt=fnRef;} | |||
return;}} | |||
function registerRunTimeFunction(fn){if(isFunction(fn)){if(typeof fn=='object'){runTime=runTime.concat(fn);}else{runTime=fn;}}} | |||
function registerCmdLineFunction(fn){if(isFunction(fn)){if(typeof fn=='object'){cmdLine=cmdLine.concat(fn);}else{cmdLine=fn;}}} | |||
function registerPostParseFunction(fn){if(isFunction(fn)){if(typeof fn=='object'){postParse=postParse.concat(fn);}else{postParse=fn;}}} | |||
function runHook(fnHookTo,hookType){var l=hookPts,k,rtnVal=null,optPm,arS,ar=runHook.arguments; | |||
if(hookType==FREPLACE){arS=argToString(ar,2); | |||
if(typeof l=='undefined'||!(l=l.ovload))rtnVal=eval(fnHookTo+'('+arS+')');else rtnVal=eval('l('+arS+')'); | |||
}else if(hookType==FBEFORE||hookType==FAFTER){if(typeof l!='undefined'){l=(hookType==1?l.before:l.after); | |||
if(l.length){arS=argToString(ar,2);for(var k=0;k<l.length;k++)eval('l('+arS+')');}} | |||
}else if(hookType==FALTERNATE){optPm=ar;arS=argToString(ar,3); | |||
if(typeof l=='undefined'||(l=l.alt])=='undefined'){rtnVal=eval(fnHookTo+'('+arS+')');}else{rtnVal=eval('l('+arS+')');} | |||
}else if(hookType==FCHAIN){arS=argToString(ar,2);l=l.chain; | |||
for(k=l.length;k>0;k--)if((rtnVal=eval('l('+arS+')'))!=void(0))break;} | |||
return rtnVal;} | |||
function FunctionReference(){this.ovload=null;this.before=new Array();this.after=new Array();this.alt=new Array();this.chain=new Array();} | |||
function Info(version,prerelease){this.version=version;this.prerelease=prerelease; | |||
this.simpleversion=Math.round(this.version*100);this.major=parseInt(this.simpleversion/100);this.minor=parseInt(this.simpleversion/10)-this.major * 10;this.revision=parseInt(this.simpleversion)-this.major * 100-this.minor * 10;this.meets=meets;} | |||
function meets(reqdVersion){return(!reqdVersion)?false:this.simpleversion>=Math.round(100*parseFloat(reqdVersion));} | |||
registerHook("ol_content_simple",ol_content_simple,FALTERNATE,CSSOFF);registerHook("ol_content_caption",ol_content_caption,FALTERNATE,CSSOFF);registerHook("ol_content_background",ol_content_background,FALTERNATE,CSSOFF);registerHook("ol_content_simple",ol_content_simple,FALTERNATE,CSSCLASS);registerHook("ol_content_caption",ol_content_caption,FALTERNATE,CSSCLASS);registerHook("ol_content_background",ol_content_background,FALTERNATE,CSSCLASS);registerPostParseFunction(checkPositionFlags);registerHook("hideObject",nbspCleanup,FAFTER);registerHook("horizontalPlacement",horizontalPlacement,FCHAIN);registerHook("verticalPlacement",verticalPlacement,FCHAIN);if(olNs4||(olIe5&&isMac)||olKq)olLoaded=1;registerNoParameterCommands('sticky,autostatus,autostatuscap,fullhtml,hauto,vauto,closeclick,wrap,followmouse,mouseoff,compatmode'); | |||
var olCheckMouseCapture=true;if((olNs4||olNs6||olIe4)){olMouseCapture();}else{overlib=no_overlib;nd=no_overlib;ver3fix=true;} |
Revision as of 12:46, 18 September 2005
var popupVersion="Sat Sep 17 18:22:05 EDT 2005"; // CONTENTS // Utility functions // Popup stuff // global variables // html generation // downloading // link generation // manipulation functions // tests // actions // thingies //////////////////////////////////////////////////////////////////// // Utility functions //////////////////////////////////////////////////////////////////// function time() { var d=new Date(); return d.getHours() + ':' + d.getMinutes() + ':' + d.getSeconds() + '.' + (d.getTime() % 1000); }; var gMsg=''; function log(x) { if(gMsg!='')gMsg += '\n'; gMsg+=time() + ' ' + x; }; function myalert(x) { return alert(time()+'\n'+ x); }; //////////////////////////////////////////////////////////////////// // Popup stuff //////////////////////////////////////////////////////////////////// // livepreview uses a broken hex_md5 function, so we avoid it function md5_hex(s) { return rstr2hex(rstr_md5(str2rstr_utf8(s))); }; ///////////////////// // GLOBAL VARIABLES // ////////////////////// // regexes var exceptions=RegExp('((title=|/)Special:|section=)') ; var contributions=RegExp('(title=|/)Special:Contributions(&target=|/|/User:)(.*)') ; var emailuser= RegExp('(title=|/)Special:Emailuser' +'(&target=|/|/User:)(.*)') ; var talk=RegExp('Talk:', 'i') ; // (^|\]* ]) * // (^|\]* ])(]*(+) *px)? // $4 = 120 as in 120px var imageRegex= RegExp('(^|\\]* ])(]*(+) *px)?', 'img') ; var imageRegexBracketCount = 4; var categoryRegex= RegExp('\\]* ]) *', 'i') ; var categoryRegexBracketCount = 1; var stubRegex= RegExp('stub|This .*-related article is a .*stub', 'im') ; var disambigRegex= RegExp('(disambig|disambig|dab)' + '|is a .*disambiguation.*page', 'im') ; var ipUserRegex=RegExp('(User:)?' + '((25|2|1||)\\.){3}' + '(25|2|1||)'); var oldidRegex=RegExp('oldid=(*)'); var splitLoc=window.location.href.split('/'); var thisWiki=splitLoc; var wikimediaWiki=RegExp('wiki\(edia\|source\|books\)\.org\|wiktionary\.org').test(thisWiki); var localWiki=RegExp('^localhost').test(thisWiki); var protocol=splitLoc.split(':'); var titletail='/index.php?title='; if (wikimediaWiki) titletail = '/w' + titletail; else if (localWiki) titletail = '/wiki' + titletail; // eg sourceJS('http://www.bosrup.com/web/overlib/overlib.js'); function sourceJS(url) { var str='<script type="text/javascript" src="'; str += url; str += '"></script>'; return document.write(str); }; // eg sourceWikipediaJS('en.wikipedia.org', 'User:Lupin/overlib.js'); function sourceWikipediaJS(wiki, name) { var url='http://' + wiki + titletail; url += name; url += '&action=raw&ctype=text/javascript&dontcountme=s'; return sourceJS(url); }; // eg sourceLupinJS('overlib'); function sourceLupinJS(name) { return sourceWikipediaJS('en.wikipedia.org', 'User:Lupin/'+name + '.js'); }; /* // include files directly for a better response if (thisWiki.indexOf('localhost') == 0) { sourceWikipediaJS(thisWiki, 'User:Lupin/livepreview.js'); sourceWikipediaJS(thisWiki, 'User:Lupin/overlib.js'); sourceWikipediaJS(thisWiki, 'User:Lupin/md5-2.2alpha.js'); } else { sourceLupinJS('livepreview'); sourceLupinJS('overlib'); sourceLupinJS('md5-2.2alpha'); } */ // /REGEX // we're not set up for interwiki stuff yet - only affect en, commons // and wiktionary links var reStart='*://'; var preTitles='wiki/|w/index\\.php\\?title='; if (!wikimediaWiki) { preTitles = 'wiki/index\\.php\\?title=|wiki/index\\.php/|'+preTitles + '|index\\.php\\?title=' ; } var reEnd='/(' + preTitles + ')(*)'; var re = RegExp(reStart + thisWiki.split('.').join('\\.') + reEnd); var titlebase=protocol+'://'+thisWiki+titletail; var wikibase=protocol+'://'+thisWiki+'/'; var popupImagesToggleSize=true; var popupImageSize=60; var imageSources=new Array (); imageSources.push( {active: false, wiki: thisWiki, thumb: true, width: popupImageSize}, {active: false, wiki: thisWiki, thumb: true, width: 180}, // default {active: false, wiki: thisWiki, thumb: true, width: 120}, // gallery {active: false, wiki: thisWiki, thumb: true, width: 200}, // common? {active: false, wiki: thisWiki, thumb: true, width: 210}, {active: false, wiki: thisWiki, thumb: true, width: 230}, {active: false, wiki: thisWiki, thumb: true, width: 250}, // common? {active: false, wiki: thisWiki, thumb: true, width: 300}, {active: false, wiki: thisWiki, thumb: false, width: 0} // no comma ); if (wikimediaWiki && thisWiki!='commons.wikimedia.org') { imageSources.push( {active: false, wiki: 'commons.wikimedia.org', thumb: true, width: popupImageSize}, {active: false, wiki: 'commons.wikimedia.org', thumb: true, width: 180}, {active: false, wiki: 'commons.wikimedia.org', thumb: true, width: 120}, {active: false, wiki: 'commons.wikimedia.org', thumb: false, width: 0} // no trailing comma ); } // downloading images are put here var imageArray=new Array(); // page caching var gCachedPages = new Array (); var gImageCache = new Array(); // FIXME what is this for? var gImage=null; // global for image // check to see if images are done with this timer var popupImageTimer=null; // misc debug messages var popupDebug=null; // These are for checkImages() var counter=0; var checkImagesTimer=null; var loopcounter=0; // ids change with each popup: popupImage0, popupImage1 etc var popupImageId=0; var kateBase='http://kohl.wikimedia.org/~kate/cgi-bin/count_edits' + '?dbname=' switch(thisWiki) { case 'commons.wikimedia.org': kateBase += 'commonswiki'; break; case 'en.wiktionary.org': kateBase += 'enwiktionary'; break; default: kateBase += 'enwiki'; } kateBase += '&user='; // for myDecodeURI var decodeExtras = new Array (); decodeExtras.push ( {from: '%2C', to: ',' }, {from: '_', to: ' ' }, {from: '%26', to: '&' } // no , ); // for setPopupHTML - needed for timers and stuff var popupHTMLTimers=new Array(); var popupHTMLLoopFunctions = new Array(); // FIXME - eliminate this var redirCount=0; // Cookie handling // pasted straight from http://www.quirksmode.org/js/cookies.html function createCookie(name,value,days) { if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else var expires = ""; document.cookie = name+"="+value+expires+"; path=/"; }; function readCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; }; function eraseCookie(name) { createCookie(name,"",-1); }; // options // if there's no cookie, this should expand to something like // if (window.foo===null) window.foo=window.dfoo; function defaultize(x) { var val=null; var a='window.'+x; var b='window.d'+x; if (x!='popupCookies') { defaultize('popupCookies'); if (popupCookies && (val=readCookie(x))) { eval(a + '=' + val + ';'); return; } } eval('if ('+a+'===null) '+a+'=' + b + ';'); }; // this should expand to something like // if (typeof window.foo=='undefined') { window.foo=null; }; window.dfoo = 0.5; function newOption(x, def) { var a='window.' + x; var b='window.d' + x; eval('if (typeof '+ a + '==\'undefined\') {' + a + '=null; }; ' + b + '=' + def + ';'); }; // user-settable parameters and defaults newOption('popupDelay', 0.5); newOption('removeTitles', true); newOption('imagePopupsForImages', true); newOption('popupSummaryData', true); newOption('simplePopups', false); newOption('popupAdminLinks', false); newOption('popupImages', true); newOption('popupPreviews', true); newOption('popupMaxPreviewSentences', 4); newOption('popupMaxPreviewCharacters', 600); newOption('popupNavLinks', true); newOption('popupNavLinkSeparator', "' ⋅ '"); newOption('popupOnlyArticleLinks', true); newOption('popupNeverGetThumbs', false); newOption('popupImagesFromThisWikiOnly', false); newOption('popupAppendRedirNavLinks', true); newOption('popupMaxWidth', 300); newOption('popupSimplifyMainLink', true); newOption('popupMinImageWidth', 50); newOption('popupLastEditLink', true); newOption('popupHistoricalLinks', true); newOption('popupFixRedirs', true); newOption('popupLiveOptions', false); newOption('popupCookies', false); newOption('popupUnsimplifyLink', false); // browser-specific hacks // if (typeof window.opera != 'undefined') {} if ((self.navigator.appName)=='Konqueror') { dpopupNavLinkSeparator=' • '; } else if ((self.navigator.appName).indexOf("Microsoft")!=-1) { dpopupNavLinkSeparator=' · '; } // String.prototype.parenSplit should do what ECMAscript says // String.prototype.split does, interspersing paren matches between // the split elements if (String('abc'.split(/(b)/))!='a,b,c') { // broken String.split, e.g. konq, IE String.prototype.parenSplit=function (re) { var m=re.exec(this); if (!m) return ; // without this, we have // 'ab'.parenSplit(/a|(b)/) != 'ab'.split(/a|(b)/) for(var i=0; i<m.length; ++i) { if (typeof m=='undefined') m=''; } return .concat(m.slice(1)) .concat(this.substring(m.index+m.length).parenSplit(re)); }; } else { String.prototype.parenSplit=function (re) {return this.split(re);}; } ///////////////////// // HTML GENERATION // ///////////////////// // generate html for popup image // <a id="popupImageLinkn"><img id="popupImagen"> // where n=popupImageId function imageHTML(article) { var ret=''; popupImageId++; ret += '<a id="popupImageLink' + popupImageId + '">'; ret += '<img align="right" valign="top" id="popupImage' + popupImageId + '" ' + 'style="display: none;"></img>'; ret += '</a>'; return ret; }; function isInToc(a) { return isSubElementOf(a,'toc'); }; function isInArticle(a) { // content is for monobook.. damn. was hoping to avoid skin references if (document.getElementById('article')) return isSubElementOf(a, 'article'); else return isSubElementOf(a, 'content'); }; function isSubElementOf(a, tag) { var obj = a; var i=0; // this may well slow things down when this function is iterated // would perhaps be more efficient to cache this result before the // function is called. or maybe the browser does that magically anyway var tagged=document.getElementById(tag); if (!tagged) return false; do {obj = obj.parentNode; ++i; } while (obj != tagged && obj.nodeName != 'HTML'); if (obj.nodeName == 'HTML') return false; return true; }; function articleFromURL(h) { if (typeof h != 'String') h=String(h); var article=null; var contribs=contributions.exec(h); if (contribs != null) { article='User:'+contribs; return article; } var email=emailuser.exec(h); if (email != null) { article='User:'+email; return article; } // no more special cases to check -- // hopefully it's not a disguised user-related page var m=re.exec(h); if(m===null) return null; article=m; return article; }; function articleFromAnchor(a) { // log('articleFromAnchor'); var h=a.href; return articleFromURL(h); }; function oldidFromAnchor(a) { // log('oldidFromAnchor'); var h=a.href; var m=oldidRegex.exec(h); if (m) return m; return null; }; // Generate html for whole popup function popupHTML (a) { var c=a.className; // if (c=='new') alert('new!'); var article = articleFromAnchor(a); var html=''; html +=imageHTML(article); var hint=a.originalTitle; if (hint == '' || hint == null) hint = safeDecodeURI(article); var oldid=null; defaultize('popupHistoricalLinks'); if (popupHistoricalLinks) oldid=oldidFromAnchor(a); defaultize('popupNavLinks'); if (popupNavLinks) html += navLinksHTML(article, hint, oldid); defaultize('popupUnsimplifyLink'); if (popupUnsimplifyLink) html += popupUnsimplifyHTML(); html += emptySpanHTML('popupWarnRedir', popupImageId); html += emptySpanHTML('popupGubbins' , popupImageId); html += emptySpanHTML('popupLiveOptions', popupImageId); html += emptySpanHTML('popupPreview' , popupImageId); return html; }; function popupUnsimplifyHTML() { var html = ''; html += '<span id="popupUnsimplifySpan' + popupImageId + '">'; html += '<br>'; html += '<span onClick="javascript:popupUnsimplify()" ' + 'style="cursor:pointer; border: thin dotted black" ' + 'title="Download preview data from the Misplaced Pages servers">' + 'Get preview data' + '</span>'; html += '</span>'; return html; }; function popupUnsimplify() { }; function isIpUser(user) { return ipUserRegex.test(user); }; function popupToggleVar(varstring) { defaultize(varstring); eval('window.'+varstring+'=!window.' + varstring); defaultize('popupCookies'); if (popupCookies) { createCookie(varstring, String(eval(varstring))); } }; newOption('popupLiveOptionsExpanded', false); function popupToggleShowOptions (dummy) { defaultize('popupLiveOptionsExpanded'); if (!dummy) window.popupLiveOptionsExpanded=!window.popupLiveOptionsExpanded; setPopupHTML((window.popupLiveOptionsExpanded) ? '<<' : '>>', 'optionPopped'); var s=document.getElementById('popupOptionsDiv'); // if (!s) return; if (window.popupLiveOptionsExpanded) s.style.display='inline'; else s.style.display='none'; }; function popupOptionsCheckboxHTML(varstring, label, title) { var html='<br>'; html += '<span title="'+title+'">'; html += '<input type="checkbox" id="'+varstring+'Checkbox" '; html += (eval(varstring)) ? 'checked="checked" ' : ''; html += 'onClick="javascript:popupToggleVar(' + "'" + varstring + "'" + ')">' + label + '</input></span>'; return html; }; function popupLiveOptionsHTML() { defaultize('simplePopups'); defaultize('popupUnsimplifyLink'); var html = ''; html += '<br>'; html += '<span title="Show/hide options" '; html += 'style="border: thin dotted black; cursor: pointer" '; html += 'onClick="javascript:popupToggleShowOptions()">'; html += 'Options <span id="optionPopped' + popupImageId + '"></span>'; html += '</span>'; html += '<div style="display: none" id="popupOptionsDiv">'; html += popupOptionsCheckboxHTML('simplePopups', 'Simple popups', 'Never download extra stuff for images/previews'); html += popupOptionsCheckboxHTML('popupUnsimplifyLink', 'Preview only on click', 'Only start downloading when told to do so'); //html += popupOptionsCheckboxHTML('popupCookies', 'cookies', // 'Use cookies to store popups options'); html += popupOptionsCheckboxHTML('popupNavLinks', 'Show navigation links', 'Display navigation links at the top of the popup'); html += popupOptionsCheckboxHTML('popupImages', 'Show image previews', 'Load images'); html += popupOptionsCheckboxHTML('popupSummaryData', 'Show summary data', 'Show page summary data'); html += popupOptionsCheckboxHTML('popupPreviews', 'Show text previews', 'Show previews'); var extraOptions=[ 'imagePopupsForImages', 'popupAdminLinks', 'popupAppendRedirNavLinks', 'popupCookies', 'popupFixRedirs', 'popupHistoricalLinks', 'popupImagesFromThisWikiOnly', 'popupLastEditLink', 'popupLiveOptions', 'popupNeverGetThumbs', 'popupOnlyArticleLinks', 'popupSimplifyMainLink', 'removeTitles' // no , ]; for (var i=0; i<extraOptions.length; ++i) { html += popupOptionsCheckboxHTML(extraOptions, extraOptions, 'Toggle this option'); } html += '</div>'; return html; }; function mainLinkHTML(article, hint, oldid) { var html=''; var visibleMainLinkText=safeDecodeURI(article); defaultize('popupSimplifyMainLink'); if ( popupSimplifyMainLink ) { var s= visibleMainLinkText.split('/'); visibleMainLinkText = s; if (visibleMainLinkText == '' && s.length > 1) { // shouldn't happen... visibleMainLinkText=s; } } if (typeof hint =='undefined') hint=safeDecodeURI(article); if (oldid) hint = 'Revision '+ oldid +' of ' + hint; html+='<b>'; html+=titledWikiLink(article, 'view', visibleMainLinkText, hint, oldid); if (oldid) html+='|' + titledWikiLink(article, 'view', 'cur', 'Current revision of '+visibleMainLinkText); html+='</b>'; defaultize('popupLastEditLink'); if (popupLastEditLink) { html += popupNavLinkSeparator + titledDiffLink(article, 'lastEdit', 'Show the last edit made to '+visibleMainLinkText, 'prev', 'cur'); } if (oldid) { if (popupLastEditLink) html += '|'; else html += popupNavLinkSeparator; html += titledDiffLink(article, 'oldEdit', 'Show the edit made to get revision '+ oldid, 'prev', oldid); html += '|' + titledDiffLink(article, 'diffCur', 'Show differences between revision '+oldid +' and the current revision', oldid, 'cur'); } return html; }; function emptySpanHTML(name, id) { return '<span id="' + name + id + '"></span>'; }; function userNavLinksHTML(article) { // contribs - count - email - block // count only if applicable; block only if popupAdminLinks var html = ''; html += contribsLink(article, 'contribs'); var k = kateLink(article, 'count'); if (k) html += popupNavLinkSeparator + kateLink(article, 'count'); html += popupNavLinkSeparator + emailLink(article, 'email'); if (popupAdminLinks) html += popupNavLinkSeparator + blockLink(article, 'block'); return html; }; function reportErrorHTML(err) { return 'Error: '+err+ ' Please <a href="' + 'http://en.wikipedia.org/User_talk:Lupin?action=edit§ion=new' + '">report this</a>!'; }; // this function, rather ugly function editingNavLinksHTML(article, oldid) { // edit - history - un|watch - talk|edit|new, OR (if a talk page) // edit|new - history - un|watch - article|edit var html = ''; var t=talkPage(article); if (t) { // it's not a talk page if (oldid) { html += wikiLink(article, 'edit', 'editOld', oldid) + '|' + wikiLink(article, 'edit', 'cur', null); } else { html += wikiLink(article, 'edit', 'edit'); } html += popupNavLinkSeparator + wikiLink(article, 'history', 'history'); html += popupNavLinkSeparator + wikiLink(article, 'unwatch', 'un') + '|' + wikiLink(article, 'watch', 'watch'); html += popupNavLinkSeparator + '<b>' + wikiLink(t, 'view', 'talk') + '</b>' + '|' + wikiLink(t, 'edit', 'edit') + '|' + wikiLink(t, 'edit§ion=new', 'new'); } else { var ta=articleFromTalkPage(article); if (!ta) return reportErrorHTML('Not a talk page and not an article.'); // it's a talk page if (oldid) { html += wikiLink(article, 'edit', 'editOld', oldid) + '|' + wikiLink(article, 'edit', 'cur', null); } else { html += wikiLink(article, 'edit', 'edit'); } html += '|' + wikiLink(article, 'edit§ion=new', 'new'); html += popupNavLinkSeparator + wikiLink(article, 'history', 'history'); html += popupNavLinkSeparator + wikiLink(article, 'unwatch', 'un') + '|' + wikiLink(article, 'watch', 'watch'); html += popupNavLinkSeparator + '<b>' + wikiLink(ta, 'view', 'article') + '</b>' + '|' + wikiLink(ta, 'edit', 'edit'); } return html; }; function miscNavLinksHTML(article) { // whatLinksHere - relatedChanges - move var html=''; html += specialLink(article, 'Whatlinkshere', 'whatLinksHere'); html += popupNavLinkSeparator + specialLink(article, 'Recentchangeslinked', 'relatedChanges'); html += popupNavLinkSeparator + specialLink(article, 'Movepage', 'move'); return html; }; function adminNavLinksHTML(article) { var html = ''; html += wikiLink(article, 'unprotect', 'un') + '|'; html += wikiLink(article, 'protect', 'protect'); html += popupNavLinkSeparator + undeleteLink(article, 'un') + '|'; html += wikiLink(article, 'delete', 'delete'); return html; }; function navLinksHTML (article, hint, oldid) { var html=''; defaultize('popupNavLinkSeparator'); html += mainLinkHTML(article, hint, oldid); // Get rid of anchor (or whatever the bit after the # is called) now article=removeAnchor(article); // span for blinkenlights html+=emptySpanHTML('popupImageStatus', popupImageId); defaultize('popupAdminLinks'); if (userName(article) != null) html += '<br>' + userNavLinksHTML(article); html += '<br>' + editingNavLinksHTML(article, oldid); html += '<br>' + miscNavLinksHTML(article); if (popupAdminLinks) html += '<br>' + adminNavLinksHTML(article); return html; }; ///////////////// // DOWNLOADING // ///////////////// ////////////// // // downloader // // function downloader(url) { // Source: http://jibbering.com/2002/4/httprequest.html this.http= false; /*@cc_on @*/ /*@if (@_jscript_version >= 5) // JScript gives us Conditional compilation, // we can cope with old IE versions. // and security blocked creation of the objects. try { this.http = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { this.http = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { // this.http = false; } } @end @*/ if (! this.http && typeof XMLHttpRequest!='undefined') { this.http = new XMLHttpRequest(); } this.url = url; this.id=null; this.callbackFunction = null; }; new downloader(); downloader.prototype.send = function (x) { if (!this.http) return; return this.http.send(x); }; downloader.prototype.abort = function () { if (!this.http) return; return this.http.abort(); }; downloader.prototype.setCallback = function (f) { if(!this.http) return; this.http.onreadystatechange = f; this.callbackFunction = f; }; downloader.prototype.runCallback = function () { this.callbackFunction(this); }; downloader.prototype.getData = function () { if(!this.http) return; return this.http.responseText; }; downloader.prototype.setTarget = function () { if(!this.http) return; this.http.open("GET", this.url, true); }; downloader.prototype.start=function () { // alert('downloader instance got told to start()'); if(!this.http) return; return this.http.send(null); }; downloader.prototype.getReadyState=function () { if(!this.http) return; return this.http.readyState; }; function newDownload(url, id, callback) { var d=new downloader(url); d.id=id; d.setTarget(); var f = function () { if (d.getReadyState() == 4) { d.data=d.getData(); callback(d);} }; d.setCallback(f); return d;//d.start(); }; function fakeDownload(url,id,callback,data) { var d=newDownload(url,callback); d.id=id; d.data=data; return callback(d); }; function startDownload(url, id, callback) { var d=newDownload(url, id, callback); d.start(); }; // // // downloader // ////////////// // Schematic for a getWiki call // // getWiki->-getPageWithCaching // | // false | true // getPage<-->-onComplete(a fake download) // \. // (async)->addPageToCache(download)->-onComplete(download) function getWiki(wikipage, onComplete, oldid) { // set global variable (ugh) to holdwikipage window.currentArticle=wikipage; // log('getWiki, wikipage='+wikipage); // set ctype=text/css to get around opera bug var url = titlebase + removeAnchor(wikipage) + '&action=raw&ctype=text/css'; if (oldid!=null && oldid!='') url += '&oldid='+oldid; return getPageWithCaching(url, onComplete); }; // check cache to see if page exists function getPageWithCaching(url, onComplete) { log ('getPageWithCaching, url='+url); var i=findInPageCache(url); if (i > -1) { return fakeDownload(url, popupImageId, onComplete, gCachedPages.data); } return getPage(url, onComplete); }; function getPage(url, onComplete) { log ('getPage, url='+url); var callback= function (d) { // log('callback from getPage activated'); addPageToCache(d); onComplete(d) } ; return startDownload(url, popupImageId, callback); }; function findInPageCache(url) { for (var i=0; i<gCachedPages.length; ++i) { if (url==gCachedPages.url) return i; } return -1; }; function cachedPage (url,data) { this.url=url; this.data=data; }; function addPageToCache(download) { log ('addPageToCache, page.url='+download.url); var page = new cachedPage(download.url, download.data); return gCachedPages.push(page); }; /* var gCurrentDownload = null; function abortCurrentDownload(download) { if (gCurrentDownload) { try { gCurrentDownload.abort(); } catch (anerror) {return 'could not abort download object';} } return true; } */ ///////////////////// // LINK GENERATION // ///////////////////// function titledDiffLink(article, text, title, from, to) { return titledWikiLink(article, to + '&oldid=' + from, text, title, null, 'diff'); }; function wikiLink(article, action, text, oldid) { var prehint=null; switch (action) { case 'edit': prehint = 'Edit '; break; case 'history': prehint = 'Show history for '; break; case 'unwatch': prehint = 'Stop watching '; break; case 'watch': prehint = 'Watch '; break; case 'view': prehint = 'Go to '; break; case 'unprotect': prehint = 'Unprotect '; break; case 'protect': prehint = 'Protect '; break; case 'delete': prehint = 'Delete '; break; case 'edit§ion=new': prehint = 'Start a new topic on '; break; default: true; } if (action!='edit' && action!='view') oldid=null; var hint; if (prehint != null) { if (oldid) prehint += 'revision '+oldid +' of '; hint=prehint + safeDecodeURI(article); } else hint = safeDecodeURI(article + '&action=' + action) + (oldid) ? '&oldid='+oldid : ''; return titledWikiLink(article, action, text, hint, oldid); }; function appendParamsToLink(linkstr, params) { var sp=linkstr.parenSplit(RegExp('(href="+?)"', 'i')); if (sp.length<2) return null; var ret=sp.shift() + sp.shift(); ret += '&' + params + '"'; ret += sp.join(''); return ret; }; function titledWikiLink(article, action, text, title, oldid, actionName) { var base = titlebase + article; var url=base; // no need to add action&view, and this confuses anchors if (typeof actionName=='undefined' || actionName=='') { actionName='action'; } if (action != 'view') url = base + '&' + actionName + '=' + action; var hint=''; if (title != null && title != '') hint = 'title="' + title + '"'; if (oldid != null && oldid != '') url+='&oldid='+oldid; return '<a href="' + url + '" ' + hint + '>' + text + '</a>'; }; function specialLink(article, specialpage, text, sep) { var base = titlebase + 'Special:'+specialpage; if (typeof sep == 'undefined' || sep===null) sep='&target='; var url = base + sep + article; var prehint=null; switch (specialpage) { case 'Whatlinkshere': prehint='Show articles which link to '; break; case 'Recentchangeslinked': prehint='Show changes in articles related to '; break; case 'Contributions': prehint='Show contributions made by '; break; case 'Emailuser': prehint='Email '; break; case 'Blockip': prehint='Block '; break; case 'Movepage': prehint='Move '; break; case 'Undelete': prehint='Show deletion history for '; break; } var hint; if (prehint != null) hint = prehint + safeDecodeURI(article); else hint = safeDecodeURI(specialpage+':'+article) ; return '<a href="' + url + '" title="' + hint + '">' + text + '</a>'; }; function literalizeRegex(str){ return str.replace(RegExp('(])', 'g'), '\\$1'); }; function redirLink(redirMatch) { /* NB redirMatch is in wikiText */ defaultize('popupAppendRedirNavLinks'); defaultize('popupNavLinks'); defaultize('popupFixRedirs'); var ret=''; if (popupAppendRedirNavLinks && popupNavLinks) { ret += '<hr>'; if (popupFixRedirs && typeof autoEdit != 'undefined' && autoEdit) { // this'll break if charAt(0) is nasty var cA=literalizeRegex(decodeURI(window.currentArticle)); var chs=cA.charAt(0).toUpperCase(); chs=''; var currentArticleRegexBit=chs+cA.substring(1); currentArticleRegexBit=currentArticleRegexBit .split(RegExp('', 'g')).join(''); /* alert('window.currentArticle='+window.currentArticle + */ /* '\ncA='+cA + */ /* '\ncurrentArticleRegexBit='+currentArticleRegexBit); */ // autoedit=s~\ad)\]\]~]~g;s~\AD)~[[Computer-aided%20design|~g var lk=titledWikiLink(removeAnchor(articleFromURL(document.location)), 'edit', 'Redirects', 'Fix this redirect'); var cmd='s~\\\\]~]~g;'; cmd += 's~\\~[['+redirMatch+'|~g'; cmd += '&autoclick=wpDiff'; cmd += '&autominor=true'; cmd += '&autosummary=Bypassing redirect from [[' + window.currentArticle.split('_').join(' ') + ']] to ]'; ret += appendParamsToLink(lk, 'autoedit='+cmd); ret += ' to '; } else ret += 'Redirects to '; ret += navLinksHTML(wikiMarkupToAddressFragment(redirMatch)); return ret; } else return '<br> Redirects to ' + titledWikiLink(myEncodeURI(redirMatch), 'view', safeDecodeURI(redirMatch), 'Bypass redirect'); }; function doNotRedirLink(redirPage, linkText, hintText) { /* NB redirPage is in wikiText */ return titledWikiLink(myEncodeURI(redirPage), 'edit', linkText, hintText); }; function contribsLink(article, text) { return specialLink(userName(article), 'Contributions', text); }; function emailLink(article, text) { return specialLink(userName(article), 'Emailuser', text); }; function blockLink(article, text) { return specialLink(userName(article), 'Blockip', text, '&ip='); }; function kateLink(article, text) { if (isIpUser(userName(article)) || ! wikimediaWiki) return null; var uN=safeDecodeURI(userName(article)); return '<a href="' + kateBase + uN + '" title="' + 'Count the contributions made by ' + uN + '">' + text + '</a>'; }; function undeleteLink(article, text) { return specialLink(article, 'Undelete', text, '/'); }; //////////////////////////// // MANIPULATION FUNCTIONS // //////////////////////////// function upcaseFirst(str) { return str.charAt(0).toUpperCase() + str.substring(1); }; function formatBytes(num) { return (num > 949) ? (Math.round(num/100)/10+'kB') : (num +' bytes') ; }; function popupFilterStubDetect(data) { return (isStub(data)) ? 'stub' : ''; }; function popupFilterDisambigDetect(data) { return (isDisambig(data)) ? 'disambig' : ''; }; function popupFilterPageSize(data) { return formatBytes(data.length); }; function popupFilterCountLinks(data) { var num=countLinks(data); return String(num) + ' wikiLink' + ((num!=1)?'s':''); }; function popupFilterCountImages(data) { var num=countImages(data); return String(num) + ' image' + ((num!=1)?'s':''); }; function popupFilterCountCategories(data) { var num=countCategories(data); return String(num) + ' categor' + ((num!=1)?'ies':'y'); }; var popupFilters=new Array(); popupFilters.push(popupFilterStubDetect); popupFilters.push(popupFilterDisambigDetect); popupFilters.push(popupFilterPageSize); popupFilters.push(popupFilterCountLinks); popupFilters.push(popupFilterCountImages); popupFilters.push(popupFilterCountCategories); if (typeof extraPopupFilters=='undefined') { var extraPopupFilters=new Array(); } function getPageInfo(data) { if (!data || data.length == 0) return 'Empty page'; var pageInfoArray=new Array(); for (var i=0; i<popupFilters.length; ++i) { var s=popupFilters(data); if (s!='') pageInfoArray.push(s); } for (var i=0; i<extraPopupFilters.length; ++i) { var s=extraPopupFilters(data); if (s!='') pageInfoArray.push(s); } var pageInfo=pageInfoArray.join(', '); if (pageInfo != '' ) pageInfo = upcaseFirst(pageInfo); return pageInfo; }; function getValidImageFromWikiText(wikiText) { var imagePage=null; // nb in imageRegex we're interested in the second bracketed expression // this may change if the regex changes :-( //var match=imageRegex.exec(wikiText); var matched=null; var match; defaultize('popupMinImageWidth'); while ( match = imageRegex.exec(wikiText)) { /* now find a sane image name - exclude templates by seeking { */ var m = match; var pxWidth=match; if ( isValidImageName(m) && (!pxWidth || parseInt(pxWidth) >= popupMinImageWidth) ) { matched=m; break; } } imageRegex.lastIndex=0; if (!matched) return null; if (matched.charAt(0) >= 'a' && matched.charAt(0) <= 'z') { // upcase first character if ascii matched = upcaseFirst(matched); } imagePage='Image:'+matched; return imagePage; }; function countLinks(wikiText) { // this could be improved! return wikiText.split('[[').length - 1; }; // if N = # matches, n = # brackets, then // String.parenSplit(regex) intersperses the N+1 split elements // with Nn other elements. So total length is // L= N+1 + Nn = N(n+1)+1. So N=(L-1)/(n+1). function countImages(wikiText) { return (wikiText.parenSplit(imageRegex).length - 1) / (imageRegexBracketCount + 1); }; function countCategories(wikiText) { return (wikiText.parenSplit(categoryRegex).length - 1) / (categoryRegexBracketCount + 1); }; function talkPage(article) { if (article.indexOf('Talk:') > -1 || article.indexOf('talk:') > -1 ) return null; var i=article.indexOf(':'); if (i == -1) return 'Talk:'+article; else return article.substring(0,i)+'_talk:' + article.substring(i+1); }; function articleFromTalkPage(talkpage) { var i=talkpage.indexOf('Talk:'); var j=talkpage.indexOf('_talk:'); if ( i == -1 && j == -1 ) return null; if ( i > -1 ) return talkpage.substring(i+5); return talkpage.split('_talk:').join(':'); }; function userName(article) { var i=article.indexOf('User'); var j=article.indexOf(':'); if (i != 0 || j < -1) return null; var k=article.indexOf('/'); if (k==-1) return article.substring(j+1); else return article.substring(j+1,k); }; function stripNamespace(article) { // this isn't very sophisticated // it just removes everything up to the final : var list = article.split(':'); return list; }; function imagePathComponent(article) { var stripped=stripNamespace(article); var forhash=safeDecodeURI(stripped).split(' ').join('_'); var hash=md5_hex(forhash); var pathcpt=hash.substring(0,1) + '/' + hash.substring(0,2) + '/'; return pathcpt; }; function getImageUrlStart(wiki) { // this returns a trailing slash switch (wiki) { case 'en.wikipedia.org': return 'http://upload.wikimedia.org/wikipedia/en/'; case 'commons.wikimedia.org': return 'http://upload.wikimedia.org/wikipedia/commons/'; case 'en.wiktionary.org': return 'http://en.wiktionary.org/upload/en/'; default: // unsupported - take a guess if (wikimediaWiki) { var lang=wiki.split('.'); return 'http://' + wiki + '/upload/' + lang +'/'; } else /* this should work for wikicities */ return 'http://' + wiki + '/images/'; } }; function imageURL(img, wiki) { defaultize('popupImagesFromThisWikiOnly'); if (popupImagesFromThisWikiOnly && wiki != thisWiki) return null; var imgurl=null; if (isImage(img)) { var pathcpt = imagePathComponent(img); var stripped=stripNamespace(img); imgurl=getImageUrlStart(wiki) + pathcpt + stripped; } return imgurl; }; function imageThumbURL(img, wiki, width) { // // eg http://upload.wikimedia.org/wikipedia/en/thumb/6/61/ // Rubiks_cube_solved.jpg/120px-Rubiks_cube_solved.jpg // ^^^^^^^^^^^^^^^^^^^^^^^ // wikicities omits this bit // AND wikicities needs a new pathcpt for each filename including thumbs defaultize('popupImagesFromThisWikiOnly'); if (popupImagesFromThisWikiOnly && wiki != thisWiki) return null; defaultize('popupNeverGetThumbs'); if (popupNeverGetThumbs) return null; var imgurl=null; if (isImage(img)) { var stripped=stripNamespace(img); var pathcpt; if (wikimediaWiki) pathcpt = imagePathComponent(stripped); else pathcpt = imagePathComponent(width+'px-'+stripped); imgurl=getImageUrlStart(wiki) + "thumb/" + pathcpt; if (wikimediaWiki) imgurl += stripped + '/'; imgurl += width +"px-" + stripped; } return imgurl; }; // (a) myDecodeURI (first standard decodeURI, then exceptions) // (b) change spaces to underscores // (c) encodeURI (just the straight one, no exceptions) function wikiMarkupToAddressFragment (str) { // for images var ret = safeDecodeURI(str); ret = ret.split(' ').join('_'); ret = encodeURI(ret); return ret; }; function addressFragmentToWikiMarkup (str) { // seemingly, not :( the inverse of wikiMarkupToAddressFragment return safeDecodeURI(str); }; function myDecodeURI (str) { log('myDecodeURI, str=' + str); var ret; try { ret=decodeURI(str); } catch (summat) { return null; } for (var i=0; i<decodeExtras.length; ++i) { var from=decodeExtras.from; var to=decodeExtras.to; ret=ret.split(from).join(to); } return ret; }; function safeDecodeURI(str) { var ret=myDecodeURI(str); return ret || str; }; function myEncodeURI (str) { log ('myEncodeURI: str='+str); var ret=str; ret=encodeURI(ret); for (var i=0; i<decodeExtras.length; ++i) { var from=decodeExtras.from; var to=decodeExtras.to; ret=ret.split(to).join(from); } return ret; }; function removeAnchor(article) { // is there a #? if not, we're done var i=article.indexOf('#'); if (i == -1) return article; return article.substring(0,i); }; /////////// // TESTS // /////////// function isStub(data) { return stubRegex.test(data); }; function isDisambig(data) { return disambigRegex.test(data); }; function isValidImageName(str){ // extend as needed... return ( str.split('{').length == 1 ); }; function isInNamespace(article, namespace) { var i=article.indexOf(namespace+':'); var j=article.indexOf(namespace+'_talk:'); if (i == -1 && j == -1) return false; return true; }; function isImage(thing) { return isInNamespace(thing, 'Image'); }; function isImageOk(img) { // IE test if (!img.complete) return false; // gecko test if (typeof img.naturalWidth != "undefined" && img.naturalWidth == 0) return false; // test for konqueror and opera // note that img.width must not be defined in the html with a width="..." // for this to work. // konq seems to give "broken images" width 16, presumably an icon width // this test would probably work in gecko too, *except for very small images* if (typeof img.width == 'undefined' || img.width <= 16) return false; // No other way of checking: assume it's ok. return true; }; function anchorContainsImage(a) { // iterate over children of anchor a // see if any are images if (a===null) return false; kids=a.childNodes; for (var i=0; i<kids.length; ++i) { if (kids.nodeName=='IMG') return true; } return false; }; ///////////// // ACTIONS // ///////////// var imageCache = new Array (); function loadThisImage (image) { if (!popupImages) return; if (!isValidImageName(image)) return false; if(popupDebug != null) alert(msg); msg='List of urls:\n'; var imageUrls=new Array(); for (var i=0; i<imageSources.length; ++i) { var url; if (imageSources.thumb) url=imageThumbURL(image, imageSources.wiki, imageSources.width); else url=imageURL(image, imageSources.wiki); for (var j=0; j<gImageCache.length; ++j) { if (url == gImageCache) return loadThisImageAtThisUrl(image, url); } if (url!=null) imageUrls.push(url); } msg='imageUrls:\n'; for (var i=0; i<imageUrls.length; ++i) { var url = imageUrls; imageSources.active=false; msg += '\n'+url; imageArray=new Image(); imageArray.src=url; } //myalert(msg); if (popupDebug) alert (msg); if (popupImageTimer != null) { clearInterval(popupImageTimer); counter=0; } gImage=image; popupImageTimer=setInterval("checkImages()", 250); return; }; function loadThisImageAtThisUrl(image, url) { //myalert('loading "best" image:\n'+url); gImage=image; imageArray = new Array(); imageArray = new Image(); imageArray.src=url; if (popupImageTimer != null) { clearInterval(popupImageTimer); counter=0; } popupImageTimer=setInterval("checkImages()", 250); return; }; function loadImages(article) { if(! isImage(article) ) return; if (popupDebug) alert('loadImages, article='+article); return loadThisImage(article); }; function setPopupHTML (str, elementId, popupId, onSuccess) { if (typeof popupId === 'undefined') popupId = popupImageId; var popupElement= document.getElementById(elementId+popupId); var timer; if (typeof popupHTMLTimers == 'undefined') { timer=null; } else { timer=popupHTMLTimers; } if (popupElement != null) { if(timer) clearInterval(timer); popupHTMLTimers=null; popupElement.innerHTML=str; if (onSuccess) onSuccess(); return true; } else { var loopFunction=function() { setPopupHTML(str,elementId,popupId,onSuccess);} popupHTMLLoopFunctions = loopFunction; if (!timer) { var doThis = 'popupHTMLLoopFunctions()'; popupHTMLTimers = setInterval(doThis, 600); } } }; function setImageStatus(str, id) { return setPopupHTML(str, 'popupImageStatus', id); }; function setPopupTrailer(str,id) { return setPopupHTML(str, 'popupGubbins', id); }; function checkImages() { if (checkImagesTimer!=null) { clearInterval(checkImagesTimer); checkImagesTimer=null; if (loopcounter > 10); {loopcounter=0; return;} loopcounter++; } else counter++; var status = ( counter % 2 ) ? ':' : '.' ; setImageStatus(status); if (counter > 100) {counter = 0; clearInterval(popupImageTimer);} var popupImage=null; popupImage=document.getElementById("popupImage"+popupImageId); if (popupImage == null) { // this doesn't seem to happen any more in practise for some reason // still, I'll leave it in checkImagesTimer=setInterval("checkImages()",333); return; } // get the first image to successfully load // and put it in the popupImage for(var i = 0; i < imageArray.length; ++i) { if(isImageOk(imageArray)) { // stop all the gubbins, assign the image and return clearInterval(popupImageTimer); if(isImage(gImage)) { popupImage.src=imageArray.src; popupImage.width=popupImageSize; popupImage.style.display='inline'; imageSources.active=true; // should we check to see if it's already there? maybe... gImageCache.push(imageArray.src); setPopupImageLink(gImage, imageSources.wiki); stopImagesDownloading(); } setImageStatus(''); // reset evil nonconstant globals delete imageArray; imageArray=new Array(); popupImageTimer=null; counter=0; loopcounter=0; return popupImage.src; } } }; function stopImagesDownloading() { gImage=null; if (imageArray == null) return null; var i; for (i=0; i<imageArray.length; ++i) { //imageArray.src=''; // this is a REALLY BAD IDEA delete imageArray; //imageArray = new Image(); } imageArray = new Array (); return i; }; function toggleSize() { var imgContainer=this; if (!imgContainer) { alert('imgContainer is null :/'); return;} img=imgContainer.firstChild; if (!img) { alert('img is null :/'); return;} var msg=''; for (var i=0; i<imgContainer.childNodes.length; ++i) msg += '\nimgContainer.childNodes.width=' + imgContainer.childNodes.width; if (!img.style.width || img.style.width=='') img.style.width='100%'; else img.style.width=''; // popupImageSize+'px'; }; function setPopupImageLink (img, wiki) { if( wiki === null || img === null ) return null; var a=document.getElementById("popupImageLink"+popupImageId); if (a === null) return null; var linkURL = imageURL(img, wiki); if (linkURL != null) { if (popupImagesToggleSize) { a.onclick=toggleSize; a.title='Toggle image size'; } else { a.href=linkURL; a.title='Open full-size image'; } } return linkURL; }; var ranSetupTooltipsAlready=false; function setupTooltips() { if (ranSetupTooltipsAlready) return; ranSetupTooltipsAlready=true; var anchors; defaultize('popupOnlyArticleLinks'); if (popupOnlyArticleLinks) anchors=( document.getElementById('article') || document.getElementById('content') ).getElementsByTagName('A'); else anchors=document.getElementsByTagName('A'); // alert(anchors.length + 'anchors'); var s=''; defaultize('removeTitles'); for (var i=0; i<anchors.length; ++i) { var a=anchors; var h=a.href; // var contribs=contributions.test(h); // var email=emailuser.test(h); // var exc=exceptions.test(h); // var m=re.test(h); if ( ( (re.test(h) && !exceptions.test(h)) || (contributions.test(h) && h.indexOf('&limit=') == -1 ) ) && (! isInToc(a)) ) { a.onmouseover=mouseOverWikiLink; a.onmouseout= mouseOutWikiLink; a.onclick= killPopup; if (removeTitles && typeof a.originalTitle=='undefined') { a.originalTitle=a.title; a.title=''; } } } }; ////////////// // THINGIES // ////////////// // How the URLs for images in the popup come about // loadPreviewImage // | // getWiki // |<----------------see other schematic for details // insertPreviewImage (insertPreviewImage = onComplete) // | // | insertPreviewImage gets a wikiText fragment from // | the wikiText downloaded by getWiki // | // // | // | mouseOverWikiLink (gets an "address fragment", // | | no processing needed) // \->-loadThisImage---<----loadImages // | // -->--hopefully valid image urls var currentLink=null; function mouseOverWikiLink() { // FIXME: should not generate the HTML until the delay has elapsed, // and then popup immediately. Can be a CPU hog otherwise. /* // good idea? dunno if ( typeof o3_showingsticky != "undefined" && o3_showingsticky != 0 ) { return; } */ var a=this; if (a==currentLink) return; else currentLink=a; var html = popupHTML(a); var article=articleFromAnchor(a); var oldid=oldidFromAnchor(a); if (popupImageTimer != null) { clearInterval(popupImageTimer); counter=0; } defaultize('popupDelay'); defaultize('popupImages'); defaultize('popupMaxWidth'); log('running overlib now'); if (typeof popupMaxWidth == 'number') { window.setmaxwidth = function () { over.style.maxWidth = popupMaxWidth+'px'; // hack for IE // see http://www.svendtofte.com/code/max_width_in_ie/ // who knows if this will work? not me. // use setExpression as documented here on msdn: http://tinyurl.com/dqljn if (over.style.setExpression) { over.style.setExpression('width', 'document.body.clientWidth > ' + popupMaxWidth + ' ? "' + popupMaxWidth + 'px": "auto" );'); } }; registerHook("createPopup", window.setmaxwidth, FAFTER); } // add CSS class to table window.addPopupStylesheetClasses = function () { var tables=over.getElementsByTagName('table'); tables.className='popupBorderTable'; tables.className='popupTable'; var fonts=over.getElementsByTagName('font'); fonts.className='popupFont'; }; registerHook("createPopup", window.addPopupStylesheetClasses, FAFTER); overlib(html, STICKY, WRAP, CELLPAD, 5, OFFSETX, 2, OFFSETY, 2, DELAY, popupDelay*1000); defaultize('popupLiveOptions'); if (popupLiveOptions) { setPopupHTML(popupLiveOptionsHTML(), 'popupLiveOptions', popupImageId, function () { popupToggleShowOptions(true); } ); } defaultize('simplePopups'); if(simplePopups) return; window.popupUnsimplify = function () { defaultize('imagePopupsForImages'); var previewImage=true; gImage=null; if (isImage(article) && ( imagePopupsForImages || ! anchorContainsImage(a) )) { loadImages(article); } else if (!isImage(article) && previewImage) { redirCount=0; loadPreviewImage(article, oldid); } var s=document.getElementById('popupUnsimplifySpan' + popupImageId); if (s && s.style) { s.style.display='none'; } }; defaultize('popupUnsimplifyLink'); if (popupUnsimplifyLink) { return; } window.popupUnsimplify(); }; function loadPreviewImage(article, oldid) { return getWiki(article, insertPreviewImage, oldid); }; function loadPreviewImageFromRedir(redirPage, redirMatch) { /* redirMatch is a regex match */ var target = redirMatch; var trailingRubbish=redirMatch; ++redirCount; var warnRedir = redirLink(target); /*if (trailingRubbish.length > 0) { warnRedir += ', '+formatBytes(trailingRubbish.length); warnRedir += ' ' + doNotRedirLink(redirPage, 'hidden', 'Show text hidden after #redirect]'); } */ setPopupHTML(warnRedir, 'popupWarnRedir'); return loadPreviewImage(myEncodeURI(target)); }; function extractChunk(str, header, breakChar) { if (str.indexOf(header) != 0) return null; if (!breakChar) return str.substring(header.length); var findChar=str.indexOf(breakChar); if (findChar==-1) return str.substring(header.length); return str.substring(header.length, findChar); }; function urlToWikiPage (url) { log ('urlToWikiPage\nurl='+url); var urlFragment=null; if (!urlFragment) urlFragment=extractChunk(url, titlebase, '&'); if (!urlFragment) urlFragment=extractChunk(url, wikibase, '?'); if (!urlFragment) return null; return addressFragmentToWikiMarkup(urlFragment); }; function insertPreviewImage(download) { if (download.id != popupImageId) return; var wikiText=download.data; var redirectRegex= RegExp('^*redirect*\\]*)\\]\\]\\s*(.*)', 'i') ; var redirMatch = redirectRegex.exec(wikiText); if (redirMatch && redirCount==0) { return loadPreviewImageFromRedir(urlToWikiPage(download.url), redirMatch); } else redirCount=0; defaultize('popupSummaryData'); if (popupSummaryData) { var pgInfo=getPageInfo(wikiText); setPopupTrailer('<br>' + pgInfo); } var imagePage=getValidImageFromWikiText(wikiText); if(imagePage) { // loadThisImage expects an "address fragment" imagePage = wikiMarkupToAddressFragment(imagePage); loadThisImage(imagePage); } defaultize('popupPreviews'); if (popupPreviews) {popupPreview(download);} }; var localTest=false; function popupPreview(download) { // FIXME: horizonal rules should be skipped // FIXME: get rid of html tagsx if (localTest) var data = download.substring(0,8000); // FOR TESTING else { if (!download || typeof download.data=='undefined' || typeof download.data.length=='undefined') return; var data=download.data.substring(0,10000); // huge pages be gone } var datum=new Array(); datum.push(data.substring(0,1000)); // we strip in order: // // * html comments <!-- ... --> // * contents of <div...> ... </div> and <gallery> ... </gallery> // * HACK: {{taxobox_start ... taxobox_end}} // * templates {{ .... }} (replace with spaces so that '''{{template}}''' works) // * wikitext tables // * wikitext images and category tags // * wikitext rules ---- // * lines starting with a : // * html tables // * a mop-up: delete all lines starting with < // * all html tags // * "chunks" of italic text (heuristics alert) // * __TOC__, __NOTOC__ // hasta la vista, comments // NB *? is non-greedy (minimal) version of * - see // http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Objects:RegExp data=data.replace(RegExp('<!--(\\n|.)*?-->', 'g'), ''); // say goodbye, divs (can be nested, so use * not *?) data=data.replace(RegExp('< *div* *>(.|\\n)*< */ *div *>', 'gi'), ''); // and galleries data=data.replace(RegExp('< *gallery* *>(.|\\n)*?< */ *gallery *>', 'gi'), ''); // taxobox hack... in fact, there's a saudiprincebox_begin, so let's be more general data=data.replace(RegExp('*boxbegin' + '(.|\\n)**boxend *', 'gi'), ''); // float_begin, ... float_end data=data.replace(RegExp('*floatbegin' + '(.|\\n)**floatend.*?', 'gi'), ''); // try to remove templates data=data.replace(RegExp('(*|)*', 'g'), ' '); //datum.push(data); // tables are bad, too data=data.replace (RegExp('\\|((|\\|)*||\\|)*\\|', 'g') , ''); datum.push(data.substring(0,1000)); // remove lines starting with a pipe data=data.replace(RegExp('^.*$', 'mg'), ''); // images are a nono // who says regexes aren't fun? // this ain't so good, try it on ] // i think we should match: // ] where ....... is consists of repetitions of any of: // 1. not // 2. )* ]] // 3. )* ] var imagedetector ='\\s*(image|category)\\s*:(]|\\]*\\]\\]|\\]*\\])*\\]\\]'; var crudeImageRegex = RegExp(imagedetector, 'gi'); // alert(data.match(crudeImageRegex).join('\n-\n')); data=data.replace(crudeImageRegex, ''); // we simply *can't* be doing with horizontal rules right now data=data.replace(RegExp('^-{4,}','mg'),''); // no indented lines data=data.replace(RegExp('(^|\\n) *:*','g'), '\n'); // or html tables // this doesn't cope with embedded tables //data=data.replace(RegExp('<table*>(||<|</|'+ // may this is good enough? data=data.replace(RegExp('<table.*?>(.|\\n.)*?\\n?</ *table *>\\n+', 'gi'), ''); // let's delete lines starting with <. it's worth a try. data=data.replace(RegExp('(^|\\n) *<.*', 'g'), '\n'); // and those pesky html tags data=data.replace(RegExp('<.*?>','g'),''); // chunks of italic text? you crazy, man? var italicChunkRegex=new RegExp ("((^|\\n)\\s*:*\\s*''(|'''|'){20}(.|\\n)*''*\\n)*" , 'g'); data=data.replace(italicChunkRegex, ''); //return data; //TESTING // replace __TOC__, __NOTOC__ and whatever else there is // this'll probably do data=data.replace(RegExp('^__*__ *$', 'gmi'),''); // dont't be givin' me no subsequent paragraphs, either, you hear me? /// first we "normalize" section headings, removing whitespace after, adding before data=data.replace(RegExp('\\s*(==+*==+)\\s*', 'g'), '\n\n$1 '); /// then we want to get rid of paragraph breaks whose text ends badly data=data.replace(RegExp('() *\\n{2,}', 'g'), '$1\n'); data=data.replace(RegExp('^*'), ''); stuff=(RegExp('^(|\\n)*')).exec(data); if (stuff) data = stuff; /// now put \n\n after sections so that bullets and numbered lists work data=data.replace(RegExp('(==+*==+)\\s*', 'g'), '$1\n\n'); // superfluous sentences are RIGHT OUT. // note: exactly 1 set of parens here needed to make the slice work data = data.parenSplit(RegExp('(+*\\s)','g')); // leading space is bad, mmkay? data=data.replace(RegExp('^\\s*'), ''); var notSentenceEnds=RegExp('(|etc|sic|Dr|Mr|Mrs|Ms)$' + '|' + '\\]*$' , 'i'); data = fixSentenceEnds(data, notSentenceEnds); defaultize('popupMaxPreviewSentences'); defaultize('popupMaxPreviewCharacters'); var n=popupMaxPreviewSentences; var d; do {d=firstSentences(data,n); --n; } while ( d.length > popupMaxPreviewCharacters && n > 0 ); data = d; datum.push('\n\nfinal one:'); datum.push(data.substring(0,1000)); if (localTest) return data; // FOR TESTING var newhtml=wiki2html(data); // needs livepreview if (!RegExp('^\\s*$').test(newhtml) && (popupNavLinks || popupSummaryData)) { newhtml = '<hr>' + newhtml; setPopupHTML(newhtml, 'popupPreview'); } }; function fixSentenceEnds(strs, reg) { // take an array of strings, strs // join strs to strs & strs if strs matches regex reg for (var i=0; i<strs.length-2; ++i) { if (reg.test(strs)) { a=new Array (); for (var j=0; j<strs.length; ++j) { if (j<i) a=strs; if (j==i) a=strs+strs+strs; if (j>i+2) a=strs; } return fixSentenceEnds(a,reg); } } //alert('returning '+strs.join('\n\n')); return strs; }; function firstSentences(strs, howmany) { var t=strs.slice(0, 2*howmany); return t.join(''); }; var stopPopupTimer=null; function fuzzyCursorOff(fuzz) { if (!over) return null; var left = parseInt(over.style.left); var top = parseInt(over.style.top); var right = left + (over.offsetWidth >= parseInt(o3_width) ? over.offsetWidth : parseInt(o3_width)); var bottom = top + (over.offsetHeight >= o3_aboveheight ? over.offsetHeight : o3_aboveheight); if (o3_x < left-fuzz || o3_x > right+fuzz || o3_y < top-fuzz || o3_y > bottom + fuzz) return true; return false; }; // seems that fuzzyCursorOff should precede mouseOutWikiLink in the source // or sometimes during page loads, errors are generated function mouseOutWikiLink () { if (fuzzyCursorOff(5)) { if (stopPopupTimer) { clearInterval(stopPopupTimer); stopPopupTimer=null; } killPopup(); return; } if (!stopPopupTimer) stopPopupTimer=setInterval("mouseOutWikiLink()", 500); }; function killPopup() { // o3_showingsticky should be defined in overlib.js //if ( typeof o3_showingsticky != "undefined" && o3_showingsticky == 0 ) { cClick(); currentLink=null; // abortCurrentDownload(); stopImagesDownloading(); if (checkImagesTimer != null) { clearInterval(checkImagesTimer); checkImagesTimer=null; } if (popupImageTimer != null) { clearInterval(popupImageTimer); popupImageTimer=null; } //} return true; // preserve default action (eg from onclick) }; //////////////////////////////////////////////////////////////////// // Run things //////////////////////////////////////////////////////////////////// if (window.addEventListener) { window.addEventListener("load",setupTooltips,false); } else if (window.attachEvent) { window.attachEvent("onload",setupTooltips); } else { window._old_popup_onload = window.onload; window.onload = function() { window._old_popup_onload(); setupTooltips(); } } /// Local Variables: /// /// mode:c /// /// End: /// // --FILE BOUNDARY-- // --FILE BOUNDARY-- // --FILE BOUNDARY-- // --FILE BOUNDARY-- function getParamValue(paramName) { var cmdRe=RegExp(''+paramName+'=(*)'); var h=document.location; var m; if (m=cmdRe.exec(h)) { try { return decodeURI(m); } catch (someError) {} } return null; }; function substitute(data,cmdBody) { // alert('sub\nfrom: '+cmdBody.from+'\nto: '+cmdBody.to+'\nflags: '+cmdBody.flags); var fromRe=RegExp(cmdBody.from, cmdBody.flags); return data.replace(fromRe, cmdBody.to); }; function execCmds(data, cmdList) { for (var i=0; i<cmdList.length; ++i) { data=cmdList.action(data, cmdList); } return data; } function parseCmd(str) { // returns a list of commands if (!str.length) return ; var p=false; switch (str.charAt(0)) { case 's': p=parseSubstitute(str); break; case 'j': p=parseJavascript(str); break; default: return false; } if (p) return .concat(parseCmd(p.remainder)); return false; }; function unEscape(str, sep) { return str.split('\\\\').join('\\') .split('\\'+sep).join(sep) .split('\\n').join('\n'); }; function runJavascript(data, argWrapper) { // flags aren't used (yet) // from the user's viewpoint, // data is a special variable may appear inside code // and gets assigned the text in the edit box // alert('eval-ing '+argWrapper.code); return eval(argWrapper.code); }; function parseJavascript(str) { // takes a string like j/code/;othercmds and parses it var tmp,code,flags; if (str.length<3) return false; var sep=str.charAt(1); str=str.substring(2); tmp=skipOver(str,sep); if (tmp) { code=tmp.segment.split('\n').join('\\n'); str=tmp.remainder; } else return false; flags=''; if (str.length) { tmp=skipOver(str,';') || skipToEnd(str, ';'); if (tmp) {flags=tmp.segment; str=tmp.remainder; } } return { action: runJavascript, code: code, flags: flags, remainder: str }; }; function parseSubstitute(str) { // takes a string like s/a/b/flags;othercmds and parses it var from,to,flags,tmp; if (str.length<4) return false; var sep=str.charAt(1); str=str.substring(2); tmp=skipOver(str,sep); if (tmp) { from=tmp.segment; str=tmp.remainder; } else return false; tmp=skipOver(str,sep); if (tmp) { to=tmp.segment; str=tmp.remainder; } else return false; flags=''; if (str.length) { tmp=skipOver(str,';') || skipToEnd(str, ';'); if (tmp) {flags=tmp.segment; str=tmp.remainder; } } return {action: substitute, from: from, to: to, flags: flags, remainder: str}; }; function skipOver(str,sep) { var endSegment=findNext(str,sep); if (endSegment<0) return false; var segment=unEscape(str.substring(0,endSegment), sep); return {segment: segment, remainder: str.substring(endSegment+1)}; } function skipToEnd(str,sep) { return {segment: str, remainder: ''}; } function findNext(str, ch) { for (var i=0; i<str.length; ++i) { if (str.charAt(i)=='\\') i+=2; if (str.charAt(i)==ch) return i; } return -1; }; function runOnLoad(f) { if (window.addEventListener) { window.addEventListener("load",f,false); } else if (window.attachEvent) { window.attachEvent("onload",f); } else { window._old_popup_autoedit_onload = window.onload; window.onload = function() { window._old_popup_autoedit_onload(); f(); } } }; function autoEdit() { var cmdString=getParamValue('autoedit'); if (cmdString) { try { var editbox=document.editform.wpTextbox1; } catch (dang) { return; } var cmdList=parseCmd(cmdString); var input=editbox.value; var output=execCmds(input, cmdList); editbox.value=output; } var summary=getParamValue('autosummary'); if (summary) document.editform.wpSummary.value=summary; var minor=getParamValue('autominor'); if (minor) { switch (minor) { case '1': case 'yes': case 'true': document.editform.wpMinoredit.checked=true; break; case '0': case 'no': case 'false': document.editform.wpMinoredit.checked=false; } } var btn=getParamValue('autoclick'); if (btn) { if (document.editform && eval('document.editform.'+btn)) { var headings=document.getElementsByTagName('h1'); if (headings) { var div=document.createElement('div'); var button=eval('document.editform.'+btn); div.innerHTML='<font size=+1><b>The "' + button.value + '" button has been automatically clicked.' + ' Please wait for the next page to load.</b></font>'; document.title='('+document.title+')'; headings.parentNode.insertBefore(div, headings); button.click(); } } else { alert('autoedit.js\n\nautoclick: could not find button "'+ btn +'".'); } } }; runOnLoad(autoEdit); // --FILE BOUNDARY-- // --FILE BOUNDARY-- // --FILE BOUNDARY-- // --FILE BOUNDARY-- // Last update: 21:51, 15 Feb 2005 (UTC) // Script to embed Live Preview in MediaWiki's edit page function LivePreviewInstall() { copywarn = document.getElementById('editpage-copywarn'); if (copywarn != null) { var cleaner = "<br style=\\'clear:both;\\' />"; LivePreviewHTML = '<input type="button" value="Live Preview" onclick="document.getElementById(\'PreviewBox\').innerHTML = wiki2html(editform.wpTextbox1.value) + \'' + cleaner + '\';" />'; //LivePreviewHTML = '<input type="button" value="Live Preview" onclick="document.getElementById(\'PreviewBox\').innerHTML = wiki2html(editform.wpTextbox1.value);" />'; LivePreviewHTML += '<div style="margin-top: 5px; margin-bottom: 5px; padding: 5px; border: 3px double orange;" id="PreviewBox"></div>'; copywarn.innerHTML = LivePreviewHTML + copywarn.innerHTML; } } // User options var wpUserName=wpUserName||'Wikipedian'; var wpUserSignature=wpUserSignature||wpUserName; var wpShowImages=wpShowImages||true; // System options var wpLanguageCode=wpLanguageCode||'en'; var wpInterwikiCodes=wpInterwikiCodes||'ab|aa|af|ak|sq|als|am|ang|ar|an|arc|hy|roa-rup|as|ast|av|ay|az|bm|ba|eu|be|bn|bh|bi|bs|br|bg|my|ca|ch|ce|chr|chy|ny|zh|zh-tw|zh-cn|cho|cv|kw|co|cr|hr|cs|da|dv|nl|dz|en|eo|et|ee|fo|fj|fi|fr|fy|ff|gl|ka|de|got|el|kl|gn|gu|ht|ha|haw|he|hz|hi|ho|hu|is|io|ig|id|ia|ie|iu|ik|ga|it|ja|jv|kn|kr|csb|ks|kk|km|ki|rw|rn|tlh|kv|kg|ko|kj|ku|ky|lo|la|lv|li|ln|lt|jbo|nds|lg|lb|mk|mg|ms|ml|mt|gv|mi|minnan|mr|mh|zh-min-nan|mo|mn|mus|nah|na|nv|ne|se|no|nn|oc|or|om|pi|fa|pl|pt|pa|ps|qu|ro|rm|ru|sm|sg|sa|sc|gd|sr|sh|st|tn|sn|scn|simple|sd|si|sk|sl|so|st|es|su|sw|ss|sv|tl|ty|tg|ta|tt|te|th|bo|ti|tpi|to|tokipona|ts|tum|tr|tk|tw|uk|ur|ug|uz|ve|vi|vo|wa|cy|wo|xh|ii|yi|yo|za|zu'; var wpBaseArticlePath=wpBaseArticlePath||'/'; var wpMathBasePath=wpMathBasePath||'/math/'; var wpImageBasePath=wpImageBasePath||'http://upload.wikimedia.org/wikipedia/'+wpLanguageCode+'/'; var wpImageFallbackPath=wpImageFallbackPath||'http://upload.wikimedia.org/wikipedia/commons/'; var wpDefaultThumbWidth=wpDefaultThumbWidth||180; var wpSkinMagnifyClip=wpSkinMagnifyClip||'/skins/common/images/magnify-clip.png'; var wpUserNamespace=wpUserNamespace||'User'; var wpImageNamespace=wpImageNamespace||'Image'; var wpCategoryNamespace=wpCategoryNamespace||'Category'; // Packed code (DO NOT MODIFY) function wiki2html(str) {str=strip_cr(str);var w=new WikiCode();w.lines=str.split(/\n/);w.parse();return w.html;};var wpSignature=']';var wpBlockImage=new RegExp('^\\[\\['+wpImageNamespace+':.*?\\|.*?(?:frame|thumbnail|thumb|none|right|left|center)','i');function WikiCode() {this.lines=new Array;this.html=new String;this._endline=function(str) {this.html+=str;this.lines.shift();};this.parse=function() {var p=false;do{if(h_match=this.lines.match(/^(={1,6})(.*)\1(.*)$/)){p=false;this._endline('<h'+h_match.length+'>'+_parse_inline_nowiki(h_match)+'</h'+h_match.length+'>'+h_match);}else if(this.lines.match(/^/)){p=false;this._parse_list();}else if(this.lines.charAt(0)==' '){p=false;this._parse_pre();}else if(this.lines.substr(0,2)=='{|'){p=false;this._parse_table();}else if(this.lines.match(/^----+$/)){p=false;this._endline('<hr/>');}else if(this.lines.match(wpBlockImage)){p=false;this._parse_block_image();}else{if(this.lines==''){if(p=(this.lines.length>1&&this.lines=='')){this._endline('<p><br />');}}else{if(!p){this.html+='<p>';p=true;} this.html+=_parse_inline_nowiki(this.lines)+' ';} this.lines.shift();}}while(this.lines.length);};this._parse_list=function(){var prev=new String;var l_match,imatch,dt_match;while(this.lines.length&&(l_match=this.lines.match(/^(+)(.*)$/))){this.lines.shift();imatch=str_imatch(prev,l_match);for(var i=prev.length-1;i>=imatch;i--){if(prev.charAt(i)=='*'){this.html+='</ul>';}else if(prev.charAt(i)=='#'){this.html+='</ol>'}else{this.html+='</d'+((prev.charAt(i)==';')?'t':'d')+'>';switch(l_match.charAt(i)){case'':case'*':case'#':this.html+='</dl>';}}} for(var i=imatch;i<l_match.length;i++){if(l_match.charAt(i)=='*'){this.html+='<ul>';}else if(l_match.charAt(i)=='#'){this.html+='<ol>';}else{switch(prev.charAt(i)){case'':case'*':case'#':this.html+='<dl>';} this.html+='<d'+((l_match.charAt(i)==';')?'t':'d')+'>';}} switch(l_match.charAt(l_match.length-1)){case'*':case'#':this.html+='<li>'+_parse_inline_nowiki(l_match);break;case';':if(dt_match=l_match.match(/(.*?) (:.*?)$/)){this.html+=_parse_inline_nowiki(dt_match);this.lines.unshift(dt_match);break;} case':':this.html+=_parse_inline_nowiki(l_match);} prev=l_match;} for(i=prev.length-1;i>=0;i--){if(prev.charAt(i)=='*'){this.html+='</ul>';}else if(prev.charAt(i)=='#'){this.html+='</ol>';}else{this.html+='</d'+((prev.charAt(i)==';')?'t':'d')+'></dl>';}}};this._parse_table=function() {var table_match;if(table_match=this.lines.match(/^\{\|( .*)$/)){this._endline('<table'+table_match+'>');}else this._endline('<table>');do{if(this.lines.charAt(0)=='|'){switch(this.lines.charAt(1)){case'}':this._endline('</table>');return;case'-':this._endline('<tr '+this.lines.match(/\|-*(.*)/)+'>');break;default:this._parse_table_data();}}else if(this.lines.charAt(0)=='!'){this._parse_table_data();}else{this.lines.shift();}}while(this.lines.length)};this._parse_table_data=function() {var td_match,td_line;td_match=this.lines.shift().match(/^(\|\+|\||!)((?:(*?)\|(?!\|))?(.*))$/);if(td_match=='|+'){this.html+='<caption';}else{this.html+='<t'+((td_match=='|')?'d':'h');} if(typeof td_match!='undefined'){this.html+=' '+td_match;td_line=td_match.split('||');}else{td_line=td_match.split('||');} this.html+='>';while(td_line.length>1){this.lines.unshift(td_match+td_line.pop());} this.html+=_parse_inline_nowiki(td_line);var td=new WikiCode;var table_count=0;while(this.lines.length){if(this.lines.charAt(0)=='|'){if(table_count==0)break;else if(this.lines.charAt(1)=='}')table_count--;}else if(this.lines.charAt(0)=='!'&&table_count==0){break;}else if(this.lines.substr(0,2)=='{|')table_count++;td.lines.push(this.lines.shift());} if(td.lines.length){td.parse();} this.html+=td.html;};this._parse_pre=function() {this.html+='<pre>';do{this._endline(_parse_inline_nowiki(this.lines.substring(1,this.lines.length))+"\n");}while(this.lines.length&&this.lines.charAt(0)==' ');this.html+='</pre>';};this._parse_block_image=function() {this.html+=_parse_image(this.lines.shift());};};function _parse_image(str) {var attr=str.substring(wpImageNamespace.length+3,str.length-2).split(/\s*\|\s*/);var filename=attr;var caption=attr;var width,w_match;var thumb=false;var frame=false;var center=false;var align='';var html='';do{if(w_match=attr.match(/^(\d*)px$/)){width=w_match;}else switch(attr){case'thumb':case'thumbnail':thumb=true;case'frame':frame=true;break;case'none':case'right':case'left':center=false;align=attr;break;case'center':center=true;align='none';} attr.shift();}while(attr.length);if(frame){if(align=='')align='right';html+="<div class='thumb t"+align+"'>";if(thumb){if(!width)width=wpDefaultThumbWidth;html+="<div style='width:"+(2+parseInt(width))+"px;'>";html+=_make_image(filename,caption,width);html+="<div class='thumbcaption'><div class='magnify' style='float:right'><a href='"+wpBaseArticlePath+wpImageNamespace+':'+filename+"' class='internal' title='Enlarge'><img src='"+wpSkinMagnifyClip+"' /></a></div>"+_parse_inline_nowiki(caption)+"</div>";}else{html+='<div>';html+=_make_image(filename,caption);html+="<div class='thumbcaption'>"+_parse_inline_nowiki(caption)+"</div>";} html+='</div></div>';}else if(align!=''){html+="<div class='float"+align+"'><span>"+_make_image(filename,caption,width)+"</span></div>";}else{return _make_image(filename,caption,width);} if(center){return"<div class='center'>"+html+'</div>';}else{return html;}};this._parse_inline_nowiki=function(str) {var start,lastend=0 var substart=0,nestlev=0,open,close,subloop;var html='';while(-1!=(start=str.indexOf('<'+'nowiki>',substart))){html+=_parse_inline_wiki(str.substring(lastend,start));start+=8;substart=start;subloop=true;do{open=str.indexOf('<'+'nowiki>',substart);close=str.indexOf('</nowiki>',substart);if(close<=open||open==-1){if(close==-1){return html+html_entities(str.substr(start));} substart=close+9;if(nestlev){nestlev--;}else{lastend=substart;html+=html_entities(str.substring(start,lastend-9));subloop=false;}}else{substart=open+8;nestlev++;}}while(subloop);} return html+_parse_inline_wiki(str.substr(lastend));};function _make_image(filename,caption,width) {filename=filename.charAt(0).toUpperCase()+filename.substr(1);filename=filename.replace(/ /g,'_');var md5=hex_md5(filename);var source=md5.charAt(0)+'/'+md5.substr(0,2)+'/'+filename;var img;if(wpShowImages){if(width){width="width='"+width+"px'";} img="<img onerror='this.onerror=null;this.src=\""+wpImageFallbackPath+source+"\";' src='"+wpImageBasePath+source+"' alt='"+caption+"' "+width+"/>";}else{img=wpImageNamespace+':'+filename+" <em style='color:red;'>(images disabled)</em>";} caption=_strip_inline_wiki(caption);return"<a class='image' title='"+caption+"' href='"+wpBaseArticlePath+wpImageNamespace+':'+filename+"'>"+img+"</a>";};function _parse_inline_images(str) {var start,substart=0,nestlev=0;var loop,close,open,wiki,html;while(-1!=(start=str.indexOf(']',substart);open=str.indexOf('[[',substart);if(close<=open||open==-1){if(close==-1)return str;substart=close;if(nestlev){nestlev--;}else{wiki=str.substring(start,close+2);html=_parse_image(wiki);str=str.replace(wiki,html);substart=start+html.length;loop=false;}}else{substart=open;nestlev++;}}while(loop);}else{break;}} return str;};function _parse_inline_wiki(str) {var aux_match,math_md5;str=_parse_inline_images(str);while(aux_match=str.match(/<(?:)math>(.*?)<\/math>/i)){math_md5=hex_md5(aux_match);str=str.replace(aux_match,"<img src='"+wpMathBasePath+math_md5+'.png'+"' />");} return str.replace(/'''''(.*?)''(.*?)'''/g,'<strong><em>$1</em>$2</strong>').replace(/'''''(.*?)'''(.*?)''/g,'<em><strong>$1</strong>$2</em>').replace(/'''(.*?)''(.*?)'''''/g,'<strong>$1<em>$2</em></strong>').replace(/'''(.*?)'''/g,'<strong>$1</strong>').replace(/''(.*?)''/g,'<em>$1</em>').replace(/~{5}(?!~)/g,Date()).replace(/~{4}(?!~)/g,wpSignature+' '+Date()).replace(/~{3}(?!~)/g,wpSignature).replace(RegExp('\\\\]','gi'),"<a href='"+wpBaseArticlePath+"$1'>$1</a>").replace(RegExp('\\\\]','gi'),'').replace(/\*?)\]\](\w*)/g,"<a href='"+wpBaseArticlePath+"$1'>$1$2</a>").replace(/\]+?)\]\](\w*)/g,"<a href='"+wpBaseArticlePath+"$1'>$2$3</a>").replace(/\]*?:)?(.*?)( *\(.*?\))?\|\]\]/g,"<a href='"+wpBaseArticlePath+"$1$2$3'>$2</a>").replace(/\]*?) (.*?)\]/g,"<a href='$1:$2$3'>$4</a>").replace(/\/g,"<a href='http://$1'></a>").replace(/\/g,"<a href='$1:$2$3'>$1:$2$3</a>").replace(/(^| )(http|news|ftp|mailto|gopher|irc):(\/*)(*)/g,"$1<a href='$2:$3$4'>$2:$3$4</a>").replace('__NOTOC__','').replace('__NOEDITSECTION__','');};function _strip_inline_wiki(str) {return str.replace(/\]*\|(.*?)\]\]/g,'$1').replace(/\\]/g,'$1').replace(/''(.*?)''/g,'$1');};function max(a,b) {if(a>b)return a;else return b;};function min(a,b) {if(a<b)return a;else return b;};function str_imatch(str_a,str_b) {var lim=min(str_a.length,str_b.length);for(var i=0;i<lim;i++){if(str_a.charAt(i)!=str_b.charAt(i))return i;} return i;};function strip_cr(str) {return str.replace(/\n\r/g,"\n").replace(/\r/g,'');};function html_entities(str) {return str.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">");};var chrsz=8;var hex_tab="0123456789abcdef";function hex_md5(s){return binl2hex(core_md5(str2binl(s),s.length*chrsz));};function core_md5(x,len) {x|=0x80<<((len)%32);x=len;var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;for(var i=0;i<x.length;i+=16) {var olda=a;var oldb=b;var oldc=c;var oldd=d;a=md5_ff(a,b,c,d,x,7,-680876936);d=md5_ff(d,a,b,c,x,12,-389564586);c=md5_ff(c,d,a,b,x,17,606105819);b=md5_ff(b,c,d,a,x,22,-1044525330);a=md5_ff(a,b,c,d,x,7,-176418897);d=md5_ff(d,a,b,c,x,12,1200080426);c=md5_ff(c,d,a,b,x,17,-1473231341);b=md5_ff(b,c,d,a,x,22,-45705983);a=md5_ff(a,b,c,d,x,7,1770035416);d=md5_ff(d,a,b,c,x,12,-1958414417);c=md5_ff(c,d,a,b,x,17,-42063);b=md5_ff(b,c,d,a,x,22,-1990404162);a=md5_ff(a,b,c,d,x,7,1804603682);d=md5_ff(d,a,b,c,x,12,-40341101);c=md5_ff(c,d,a,b,x,17,-1502002290);b=md5_ff(b,c,d,a,x,22,1236535329);a=md5_gg(a,b,c,d,x,5,-165796510);d=md5_gg(d,a,b,c,x,9,-1069501632);c=md5_gg(c,d,a,b,x,14,643717713);b=md5_gg(b,c,d,a,x,20,-373897302);a=md5_gg(a,b,c,d,x,5,-701558691);d=md5_gg(d,a,b,c,x,9,38016083);c=md5_gg(c,d,a,b,x,14,-660478335);b=md5_gg(b,c,d,a,x,20,-405537848);a=md5_gg(a,b,c,d,x,5,568446438);d=md5_gg(d,a,b,c,x,9,-1019803690);c=md5_gg(c,d,a,b,x,14,-187363961);b=md5_gg(b,c,d,a,x,20,1163531501);a=md5_gg(a,b,c,d,x,5,-1444681467);d=md5_gg(d,a,b,c,x,9,-51403784);c=md5_gg(c,d,a,b,x,14,1735328473);b=md5_gg(b,c,d,a,x,20,-1926607734);a=md5_hh(a,b,c,d,x,4,-378558);d=md5_hh(d,a,b,c,x,11,-2022574463);c=md5_hh(c,d,a,b,x,16,1839030562);b=md5_hh(b,c,d,a,x,23,-35309556);a=md5_hh(a,b,c,d,x,4,-1530992060);d=md5_hh(d,a,b,c,x,11,1272893353);c=md5_hh(c,d,a,b,x,16,-155497632);b=md5_hh(b,c,d,a,x,23,-1094730640);a=md5_hh(a,b,c,d,x,4,681279174);d=md5_hh(d,a,b,c,x,11,-358537222);c=md5_hh(c,d,a,b,x,16,-722521979);b=md5_hh(b,c,d,a,x,23,76029189);a=md5_hh(a,b,c,d,x,4,-640364487);d=md5_hh(d,a,b,c,x,11,-421815835);c=md5_hh(c,d,a,b,x,16,530742520);b=md5_hh(b,c,d,a,x,23,-995338651);a=md5_ii(a,b,c,d,x,6,-198630844);d=md5_ii(d,a,b,c,x,10,1126891415);c=md5_ii(c,d,a,b,x,15,-1416354905);b=md5_ii(b,c,d,a,x,21,-57434055);a=md5_ii(a,b,c,d,x,6,1700485571);d=md5_ii(d,a,b,c,x,10,-1894986606);c=md5_ii(c,d,a,b,x,15,-1051523);b=md5_ii(b,c,d,a,x,21,-2054922799);a=md5_ii(a,b,c,d,x,6,1873313359);d=md5_ii(d,a,b,c,x,10,-30611744);c=md5_ii(c,d,a,b,x,15,-1560198380);b=md5_ii(b,c,d,a,x,21,1309151649);a=md5_ii(a,b,c,d,x,6,-145523070);d=md5_ii(d,a,b,c,x,10,-1120210379);c=md5_ii(c,d,a,b,x,15,718787259);b=md5_ii(b,c,d,a,x,21,-343485551);a=safe_add(a,olda);b=safe_add(b,oldb);c=safe_add(c,oldc);d=safe_add(d,oldd);} return Array(a,b,c,d);};function md5_cmn(q,a,b,x,s,t) {return safe_add(bit_rol(safe_add(safe_add(a,q),safe_add(x,t)),s),b);};function md5_ff(a,b,c,d,x,s,t) {return md5_cmn((b&c)|((~b)&d),a,b,x,s,t);};function md5_gg(a,b,c,d,x,s,t) {return md5_cmn((b&d)|(c&(~d)),a,b,x,s,t);};function md5_hh(a,b,c,d,x,s,t) {return md5_cmn(b^c^d,a,b,x,s,t);};function md5_ii(a,b,c,d,x,s,t) {return md5_cmn(c^(b|(~d)),a,b,x,s,t);};function safe_add(x,y) {var lsw=(x&0xFFFF)+(y&0xFFFF);var msw=(x>>16)+(y>>16)+(lsw>>16);return(msw<<16)|(lsw&0xFFFF);};function bit_rol(num,cnt) {return(num<<cnt)|(num>>>(32-cnt));};function str2binl(str) {var bin=Array();var mask=(1<<chrsz)-1;for(var i=0;i<str.length*chrsz;i+=chrsz) bin|=(str.charCodeAt(i/chrsz)&mask)<<(i%32);return bin;};function binl2hex(binarray) {var str='';for(var i=0;i<binarray.length*4;i++) {str+=hex_tab.charAt((binarray>>((i%4)*8+4))&0xF)+ hex_tab.charAt((binarray>>((i%4)*8))&0xF);} return str;}; // </math>// --FILE BOUNDARY-- // --FILE BOUNDARY-- // --FILE BOUNDARY-- // --FILE BOUNDARY-- /* * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message * Digest Algorithm, as defined in RFC 1321. * Version 2.2-alpha Copyright (C) Paul Johnston 1999 - 2005 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet * Distributed under the BSD License * See http://pajhome.org.uk/crypt/md5 for more info. */ /* * Configurable variables. You may need to tweak these to be compatible with * the server-side, but the defaults work in most cases. */ var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */ var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */ /* * These are the functions you'll usually want to call * They take string arguments and return either hex or base-64 encoded strings */ function hex_md5(s) { return rstr2hex(rstr_md5(str2rstr_utf8(s))); } function b64_md5(s) { return rstr2b64(rstr_md5(str2rstr_utf8(s))); } function any_md5(s, e) { return rstr2any(rstr_md5(str2rstr_utf8(s)), e); } function hex_hmac_md5(k, d) { return rstr2hex(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d))); } function b64_hmac_md5(k, d) { return rstr2b64(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d))); } function any_hmac_md5(k, d, e) { return rstr2any(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d)), e); } /* * Perform a simple self-test to see if the VM is working */ function md5_vm_test() { return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72"; } /* * Calculate the MD5 of a raw string */ function rstr_md5(s) { return binl2rstr(binl_md5(rstr2binl(s), s.length * 8)); } /* * Calculate the HMAC-MD5, of a key and some data (raw strings) */ function rstr_hmac_md5(key, data) { var bkey = rstr2binl(key); if(bkey.length > 16) bkey = binl_md5(bkey, key.length * 8); var ipad = Array(16), opad = Array(16); for(var i = 0; i < 16; i++) { ipad = bkey ^ 0x36363636; opad = bkey ^ 0x5C5C5C5C; } var hash = binl_md5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); return binl2rstr(binl_md5(opad.concat(hash), 512 + 128)); } /* * Convert a raw string to a hex string */ function rstr2hex(input) { var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; var output = ""; var x; for(var i = 0; i < input.length; i++) { x = input.charCodeAt(i); output += hex_tab.charAt((x >>> 4) & 0x0F) + hex_tab.charAt( x & 0x0F); } return output; } /* * Convert a raw string to a base-64 string */ function rstr2b64(input) { var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var output = ""; var len = input.length; for(var i = 0; i < len; i += 3) { var triplet = (input.charCodeAt(i) << 16) | (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0) | (i + 2 < len ? input.charCodeAt(i+2) : 0); for(var j = 0; j < 4; j++) { if(i * 8 + j * 6 > input.length * 8) output += b64pad; else output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F); } } return output; } /* * Convert a raw string to an arbitrary string encoding */ function rstr2any(input, encoding) { var divisor = encoding.length; var remainders = Array(); var i, q, x, quotient; /* Convert to an array of 16-bit big-endian values, forming the dividend */ var dividend = Array(input.length / 2); for(i = 0; i < dividend.length; i++) { dividend = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1); } /* * Repeatedly perform a long division. The binary array forms the dividend, * the length of the encoding is the divisor. Once computed, the quotient * forms the dividend for the next step. We stop when the dividend is zero. * All remainders are stored for later use. */ while(dividend.length > 0) { quotient = Array(); x = 0; for(i = 0; i < dividend.length; i++) { x = (x << 16) + dividend; q = Math.floor(x / divisor); x -= q * divisor; if(quotient.length > 0 || q > 0) quotient = q; } remainders = x; dividend = quotient; } /* Convert the remainders to the output string */ var output = ""; for(i = remainders.length - 1; i >= 0; i--) output += encoding.charAt(remainders); return output; } /* * Encode a string as utf-8. * For efficiency, this assumes the input is valid utf-16. */ function str2rstr_utf8(input) { var output = ""; var i = -1; var x, y; while(++i < input.length) { /* Decode utf-16 surrogate pairs */ x = input.charCodeAt(i); y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0; if(0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) { x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF); i++; } /* Encode output as utf-8 */ if(x <= 0x7F) output += String.fromCharCode(x); else if(x <= 0x7FF) output += String.fromCharCode(0xC0 | ((x >>> 6 ) & 0x1F), 0x80 | ( x & 0x3F)); else if(x <= 0xFFFF) output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F), 0x80 | ((x >>> 6 ) & 0x3F), 0x80 | ( x & 0x3F)); else if(x <= 0x1FFFFF) output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07), 0x80 | ((x >>> 12) & 0x3F), 0x80 | ((x >>> 6 ) & 0x3F), 0x80 | ( x & 0x3F)); } return output; } /* * Encode a string as utf-16 */ function str2rstr_utf16le(input) { var output = ""; for(var i = 0; i < input.length; i++) output += String.fromCharCode( input.charCodeAt(i) & 0xFF, (input.charCodeAt(i) >>> 8) & 0xFF); return output; } function str2rstr_utf16be(input) { var output = ""; for(var i = 0; i < input.length; i++) output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF, input.charCodeAt(i) & 0xFF); return output; } /* * Convert a raw string to an array of little-endian words * Characters >255 have their high-byte silently ignored. */ function rstr2binl(input) { var output = Array(input.length >> 2); for(var i = 0; i < output.length; i++) output = 0; for(var i = 0; i < input.length * 8; i += 8) output |= (input.charCodeAt(i / 8) & 0xFF) << (i%32); return output; } /* * Convert an array of little-endian words to a string */ function binl2rstr(input) { var output = ""; for(var i = 0; i < input.length * 32; i += 8) output += String.fromCharCode((input >>> (i % 32)) & 0xFF); return output; } /* * Calculate the MD5 of an array of little-endian words, and a bit length. */ function binl_md5(x, len) { /* append padding */ x |= 0x80 << ((len) % 32); x = len; var a = 1732584193; var b = -271733879; var c = -1732584194; var d = 271733878; for(var i = 0; i < x.length; i += 16) { var olda = a; var oldb = b; var oldc = c; var oldd = d; a = md5_ff(a, b, c, d, x, 7 , -680876936); d = md5_ff(d, a, b, c, x, 12, -389564586); c = md5_ff(c, d, a, b, x, 17, 606105819); b = md5_ff(b, c, d, a, x, 22, -1044525330); a = md5_ff(a, b, c, d, x, 7 , -176418897); d = md5_ff(d, a, b, c, x, 12, 1200080426); c = md5_ff(c, d, a, b, x, 17, -1473231341); b = md5_ff(b, c, d, a, x, 22, -45705983); a = md5_ff(a, b, c, d, x, 7 , 1770035416); d = md5_ff(d, a, b, c, x, 12, -1958414417); c = md5_ff(c, d, a, b, x, 17, -42063); b = md5_ff(b, c, d, a, x, 22, -1990404162); a = md5_ff(a, b, c, d, x, 7 , 1804603682); d = md5_ff(d, a, b, c, x, 12, -40341101); c = md5_ff(c, d, a, b, x, 17, -1502002290); b = md5_ff(b, c, d, a, x, 22, 1236535329); a = md5_gg(a, b, c, d, x, 5 , -165796510); d = md5_gg(d, a, b, c, x, 9 , -1069501632); c = md5_gg(c, d, a, b, x, 14, 643717713); b = md5_gg(b, c, d, a, x, 20, -373897302); a = md5_gg(a, b, c, d, x, 5 , -701558691); d = md5_gg(d, a, b, c, x, 9 , 38016083); c = md5_gg(c, d, a, b, x, 14, -660478335); b = md5_gg(b, c, d, a, x, 20, -405537848); a = md5_gg(a, b, c, d, x, 5 , 568446438); d = md5_gg(d, a, b, c, x, 9 , -1019803690); c = md5_gg(c, d, a, b, x, 14, -187363961); b = md5_gg(b, c, d, a, x, 20, 1163531501); a = md5_gg(a, b, c, d, x, 5 , -1444681467); d = md5_gg(d, a, b, c, x, 9 , -51403784); c = md5_gg(c, d, a, b, x, 14, 1735328473); b = md5_gg(b, c, d, a, x, 20, -1926607734); a = md5_hh(a, b, c, d, x, 4 , -378558); d = md5_hh(d, a, b, c, x, 11, -2022574463); c = md5_hh(c, d, a, b, x, 16, 1839030562); b = md5_hh(b, c, d, a, x, 23, -35309556); a = md5_hh(a, b, c, d, x, 4 , -1530992060); d = md5_hh(d, a, b, c, x, 11, 1272893353); c = md5_hh(c, d, a, b, x, 16, -155497632); b = md5_hh(b, c, d, a, x, 23, -1094730640); a = md5_hh(a, b, c, d, x, 4 , 681279174); d = md5_hh(d, a, b, c, x, 11, -358537222); c = md5_hh(c, d, a, b, x, 16, -722521979); b = md5_hh(b, c, d, a, x, 23, 76029189); a = md5_hh(a, b, c, d, x, 4 , -640364487); d = md5_hh(d, a, b, c, x, 11, -421815835); c = md5_hh(c, d, a, b, x, 16, 530742520); b = md5_hh(b, c, d, a, x, 23, -995338651); a = md5_ii(a, b, c, d, x, 6 , -198630844); d = md5_ii(d, a, b, c, x, 10, 1126891415); c = md5_ii(c, d, a, b, x, 15, -1416354905); b = md5_ii(b, c, d, a, x, 21, -57434055); a = md5_ii(a, b, c, d, x, 6 , 1700485571); d = md5_ii(d, a, b, c, x, 10, -1894986606); c = md5_ii(c, d, a, b, x, 15, -1051523); b = md5_ii(b, c, d, a, x, 21, -2054922799); a = md5_ii(a, b, c, d, x, 6 , 1873313359); d = md5_ii(d, a, b, c, x, 10, -30611744); c = md5_ii(c, d, a, b, x, 15, -1560198380); b = md5_ii(b, c, d, a, x, 21, 1309151649); a = md5_ii(a, b, c, d, x, 6 , -145523070); d = md5_ii(d, a, b, c, x, 10, -1120210379); c = md5_ii(c, d, a, b, x, 15, 718787259); b = md5_ii(b, c, d, a, x, 21, -343485551); a = safe_add(a, olda); b = safe_add(b, oldb); c = safe_add(c, oldc); d = safe_add(d, oldd); } return Array(a, b, c, d); } /* * These functions implement the four basic operations the algorithm uses. */ function md5_cmn(q, a, b, x, s, t) { return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b); } function md5_ff(a, b, c, d, x, s, t) { return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t); } function md5_gg(a, b, c, d, x, s, t) { return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t); } function md5_hh(a, b, c, d, x, s, t) { return md5_cmn(b ^ c ^ d, a, b, x, s, t); } function md5_ii(a, b, c, d, x, s, t) { return md5_cmn(c ^ (b | (~d)), a, b, x, s, t); } /* * Add integers, wrapping at 2^32. This uses 16-bit operations internally * to work around bugs in some JS interpreters. */ function safe_add(x, y) { var lsw = (x & 0xFFFF) + (y & 0xFFFF); var msw = (x >> 16) + (y >> 16) + (lsw >> 16); return (msw << 16) | (lsw & 0xFFFF); } /* * Bitwise rotate a 32-bit number to the left. */ function bit_rol(num, cnt) { return (num << cnt) | (num >>> (32 - cnt)); }// --FILE BOUNDARY-- // --FILE BOUNDARY-- // --FILE BOUNDARY-- // --FILE BOUNDARY-- //\///// //\ overLIB 4.21 - You may not remove or change this notice. //\ Copyright Erik Bosrup 1998-2004. All rights reserved. //\ //\ Contributors are listed on the homepage. //\ This file might be old, always check for the latest version at: //\ http://www.bosrup.com/web/overlib/ //\ //\ Please read the license agreement (available through the link above) //\ before using overLIB. Direct any licensing questions to erik@bosrup.com. //\ //\ Do not sell this as your own work or remove this copyright notice. //\ For full details on copying or changing this script please read the //\ license agreement at the link above. Please give credit on sites that //\ use overLIB and submit changes of the script so other people can use //\ them as well. //\///// //\ THIS IS A VERY MODIFIED VERSION. DO NOT EDIT OR PUBLISH. GET THE ORIGINAL! var olLoaded=0,pmStart=10000000,pmUpper=10001000,pmCount=pmStart+1,pmt='',pms=new Array(),olInfo=new Info('4.21',1),FREPLACE=0,FBEFORE=1,FAFTER=2,FALTERNATE=3,FCHAIN=4,olHideForm=0,olHautoFlag=0,olVautoFlag=0,hookPts=new Array(),postParse=new Array(),cmdLine=new Array(),runTime=new Array(); registerCommands('donothing,inarray,caparray,sticky,background,noclose,caption,left,right,center,offsetx,offsety,fgcolor,bgcolor,textcolor,capcolor,closecolor,width,border,cellpad,status,autostatus,autostatuscap,height,closetext,snapx,snapy,fixx,fixy,relx,rely,fgbackground,bgbackground,padx,pady,fullhtml,above,below,capicon,textfont,captionfont,closefont,textsize,captionsize,closesize,timeout,function,delay,hauto,vauto,closeclick,wrap,followmouse,mouseoff,closetitle,cssoff,compatmode,cssclass,fgclass,bgclass,textfontclass,captionfontclass,closefontclass'); if(typeof ol_fgcolor=='undefined')var ol_fgcolor="#CCCCFF";if(typeof ol_bgcolor=='undefined')var ol_bgcolor="#333399";if(typeof ol_textcolor=='undefined')var ol_textcolor="#000000";if(typeof ol_capcolor=='undefined')var ol_capcolor="#FFFFFF";if(typeof ol_closecolor=='undefined')var ol_closecolor="#9999FF";if(typeof ol_textfont=='undefined')var ol_textfont="Verdana,Arial,Helvetica";if(typeof ol_captionfont=='undefined')var ol_captionfont="Verdana,Arial,Helvetica";if(typeof ol_closefont=='undefined')var ol_closefont="Verdana,Arial,Helvetica";if(typeof ol_textsize=='undefined')var ol_textsize="1";if(typeof ol_captionsize=='undefined')var ol_captionsize="1";if(typeof ol_closesize=='undefined')var ol_closesize="1";if(typeof ol_width=='undefined')var ol_width="200";if(typeof ol_border=='undefined')var ol_border="1";if(typeof ol_cellpad=='undefined')var ol_cellpad=2;if(typeof ol_offsetx=='undefined')var ol_offsetx=10;if(typeof ol_offsety=='undefined')var ol_offsety=10;if(typeof ol_text=='undefined')var ol_text="Default Text";if(typeof ol_cap=='undefined')var ol_cap="";if(typeof ol_sticky=='undefined')var ol_sticky=0;if(typeof ol_background=='undefined')var ol_background="";if(typeof ol_close=='undefined')var ol_close="Close";if(typeof ol_hpos=='undefined')var ol_hpos=RIGHT;if(typeof ol_status=='undefined')var ol_status="";if(typeof ol_autostatus=='undefined')var ol_autostatus=0;if(typeof ol_height=='undefined')var ol_height=-1;if(typeof ol_snapx=='undefined')var ol_snapx=0;if(typeof ol_snapy=='undefined')var ol_snapy=0;if(typeof ol_fixx=='undefined')var ol_fixx=-1;if(typeof ol_fixy=='undefined')var ol_fixy=-1;if(typeof ol_relx=='undefined')var ol_relx=null;if(typeof ol_rely=='undefined')var ol_rely=null;if(typeof ol_fgbackground=='undefined')var ol_fgbackground="";if(typeof ol_bgbackground=='undefined')var ol_bgbackground="";if(typeof ol_padxl=='undefined')var ol_padxl=1;if(typeof ol_padxr=='undefined')var ol_padxr=1;if(typeof ol_padyt=='undefined')var ol_padyt=1;if(typeof ol_padyb=='undefined')var ol_padyb=1;if(typeof ol_fullhtml=='undefined')var ol_fullhtml=0;if(typeof ol_vpos=='undefined')var ol_vpos=BELOW;if(typeof ol_aboveheight=='undefined')var ol_aboveheight=0;if(typeof ol_capicon=='undefined')var ol_capicon="";if(typeof ol_frame=='undefined')var ol_frame=self;if(typeof ol_timeout=='undefined')var ol_timeout=0;if(typeof ol_function=='undefined')var ol_function=null;if(typeof ol_delay=='undefined')var ol_delay=0;if(typeof ol_hauto=='undefined')var ol_hauto=0;if(typeof ol_vauto=='undefined')var ol_vauto=0;if(typeof ol_closeclick=='undefined')var ol_closeclick=0;if(typeof ol_wrap=='undefined')var ol_wrap=0;if(typeof ol_followmouse=='undefined')var ol_followmouse=1;if(typeof ol_mouseoff=='undefined')var ol_mouseoff=0;if(typeof ol_closetitle=='undefined')var ol_closetitle='Close';if(typeof ol_compatmode=='undefined')var ol_compatmode=0;if(typeof ol_css=='undefined')var ol_css=CSSOFF;if(typeof ol_fgclass=='undefined')var ol_fgclass="";if(typeof ol_bgclass=='undefined')var ol_bgclass="";if(typeof ol_textfontclass=='undefined')var ol_textfontclass="";if(typeof ol_captionfontclass=='undefined')var ol_captionfontclass="";if(typeof ol_closefontclass=='undefined')var ol_closefontclass=""; if(typeof ol_texts=='undefined')var ol_texts=new Array("Text 0","Text 1");if(typeof ol_caps=='undefined')var ol_caps=new Array("Caption 0","Caption 1"); var o3_text="",o3_cap="",o3_sticky=0,o3_background="",o3_close="Close",o3_hpos=RIGHT,o3_offsetx=2,o3_offsety=2,o3_fgcolor="",o3_bgcolor="",o3_textcolor="",o3_capcolor="",o3_closecolor="",o3_width=100,o3_border=1,o3_cellpad=2,o3_status="",o3_autostatus=0,o3_height=-1,o3_snapx=0,o3_snapy=0,o3_fixx=-1,o3_fixy=-1,o3_relx=null,o3_rely=null,o3_fgbackground="",o3_bgbackground="",o3_padxl=0,o3_padxr=0,o3_padyt=0,o3_padyb=0,o3_fullhtml=0,o3_vpos=BELOW,o3_aboveheight=0,o3_capicon="",o3_textfont="Verdana,Arial,Helvetica",o3_captionfont="Verdana,Arial,Helvetica",o3_closefont="Verdana,Arial,Helvetica",o3_textsize="1",o3_captionsize="1",o3_closesize="1",o3_frame=self,o3_timeout=0,o3_timerid=0,o3_allowmove=0,o3_function=null,o3_delay=0,o3_delayid=0,o3_hauto=0,o3_vauto=0,o3_closeclick=0,o3_wrap=0,o3_followmouse=1,o3_mouseoff=0,o3_closetitle='',o3_compatmode=0,o3_css=CSSOFF,o3_fgclass="",o3_bgclass="",o3_textfontclass="",o3_captionfontclass="",o3_closefontclass=""; var o3_x=0,o3_y=0,o3_showingsticky=0,o3_removecounter=0; var over=null,fnRef,hoveringSwitch=false,olHideDelay; var isMac=(navigator.userAgent.indexOf("Mac")!=-1),olOp=(navigator.userAgent.toLowerCase().indexOf('opera')>-1&&document.createTextNode),olNs4=(navigator.appName=='Netscape'&&parseInt(navigator.appVersion)==4),olNs6=(document.getElementById)?true:false,olKq=(olNs6&&/konqueror/i.test(navigator.userAgent)),olIe4=(document.all)?true:false,olIe5=false,olIe55=false,docRoot='document.body'; if(olNs4){var oW=window.innerWidth;var oH=window.innerHeight;window.onresize=function(){if(oW!=window.innerWidth||oH!=window.innerHeight)location.reload();}} if(olIe4){var agent=navigator.userAgent;if(/MSIE/.test(agent)){var versNum=parseFloat(agent.match(/MSIE(\d\.\d+)\.*/i));if(versNum>=5){olIe5=true;olIe55=(versNum>=5.5&&!olOp)?true:false;if(olNs6)olNs6=false;}} if(olNs6)olIe4=false;} if(document.compatMode&&document.compatMode=='CSS1Compat'){docRoot=((olIe4&&!olOp)?'document.documentElement':docRoot);} if(window.addEventListener)window.addEventListener("load",OLonLoad_handler,false);else if(window.attachEvent)window.attachEvent("onload",OLonLoad_handler); var capExtent; function overlib(){if(!olLoaded||isExclusive(overlib.arguments))return true;if(olCheckMouseCapture)olMouseCapture();if(over){over=(typeof over.id!='string')?o3_frame.document.all:over;cClick();} olHideDelay=0;o3_text=ol_text;o3_cap=ol_cap;o3_sticky=ol_sticky;o3_background=ol_background;o3_close=ol_close;o3_hpos=ol_hpos;o3_offsetx=ol_offsetx;o3_offsety=ol_offsety;o3_fgcolor=ol_fgcolor;o3_bgcolor=ol_bgcolor;o3_textcolor=ol_textcolor;o3_capcolor=ol_capcolor;o3_closecolor=ol_closecolor;o3_width=ol_width;o3_border=ol_border;o3_cellpad=ol_cellpad;o3_status=ol_status;o3_autostatus=ol_autostatus;o3_height=ol_height;o3_snapx=ol_snapx;o3_snapy=ol_snapy;o3_fixx=ol_fixx;o3_fixy=ol_fixy;o3_relx=ol_relx;o3_rely=ol_rely;o3_fgbackground=ol_fgbackground;o3_bgbackground=ol_bgbackground;o3_padxl=ol_padxl;o3_padxr=ol_padxr;o3_padyt=ol_padyt;o3_padyb=ol_padyb;o3_fullhtml=ol_fullhtml;o3_vpos=ol_vpos;o3_aboveheight=ol_aboveheight;o3_capicon=ol_capicon;o3_textfont=ol_textfont;o3_captionfont=ol_captionfont;o3_closefont=ol_closefont;o3_textsize=ol_textsize;o3_captionsize=ol_captionsize;o3_closesize=ol_closesize;o3_timeout=ol_timeout;o3_function=ol_function;o3_delay=ol_delay;o3_hauto=ol_hauto;o3_vauto=ol_vauto;o3_closeclick=ol_closeclick;o3_wrap=ol_wrap;o3_followmouse=ol_followmouse;o3_mouseoff=ol_mouseoff;o3_closetitle=ol_closetitle;o3_css=ol_css;o3_compatmode=ol_compatmode;o3_fgclass=ol_fgclass;o3_bgclass=ol_bgclass;o3_textfontclass=ol_textfontclass;o3_captionfontclass=ol_captionfontclass;o3_closefontclass=ol_closefontclass; setRunTimeVariables(); fnRef=''; o3_frame=ol_frame; if(!(over=createDivContainer()))return false; parseTokens('o3_',overlib.arguments);if(!postParseChecks())return false; if(o3_delay==0){return runHook("olMain",FREPLACE);}else{o3_delayid=setTimeout("runHook('olMain',FREPLACE)",o3_delay);return false;}} function nd(time){if(olLoaded&&!isExclusive()){hideDelay(time); if(o3_removecounter>=1){o3_showingsticky=0 }; if(o3_showingsticky==0){o3_allowmove=0;if(over!=null&&o3_timerid==0)runHook("hideObject",FREPLACE,over);}else{o3_removecounter++;}} return true;} function cClick(){if(olLoaded){runHook("hideObject",FREPLACE,over);o3_showingsticky=0;} return false;} function overlib_pagedefaults(){parseTokens('ol_',overlib_pagedefaults.arguments);} function olMain(){var layerhtml,styleType;runHook("olMain",FBEFORE); if(o3_background!=""||o3_fullhtml){ layerhtml=runHook('ol_content_background',FALTERNATE,o3_css,o3_text,o3_background,o3_fullhtml);}else{ styleType=(pms=="cssoff"||pms=="cssclass"); if(o3_fgbackground!="")o3_fgbackground="background=\""+o3_fgbackground+"\"";if(o3_bgbackground!="")o3_bgbackground=(styleType?"background=\""+o3_bgbackground+"\"":o3_bgbackground); if(o3_fgcolor!="")o3_fgcolor=(styleType?"bgcolor=\""+o3_fgcolor+"\"":o3_fgcolor);if(o3_bgcolor!="")o3_bgcolor=(styleType?"bgcolor=\""+o3_bgcolor+"\"":o3_bgcolor); if(o3_height>0)o3_height=(styleType?"height=\""+o3_height+"\"":o3_height);else o3_height=""; if(o3_cap==""){ layerhtml=runHook('ol_content_simple',FALTERNATE,o3_css,o3_text);}else{ if(o3_sticky){ layerhtml=runHook('ol_content_caption',FALTERNATE,o3_css,o3_text,o3_cap,o3_close);}else{ layerhtml=runHook('ol_content_caption',FALTERNATE,o3_css,o3_text,o3_cap,"");}}} if(o3_sticky){if(o3_timerid>0){clearTimeout(o3_timerid);o3_timerid=0;} o3_showingsticky=1;o3_removecounter=0;} if(!runHook("createPopup",FREPLACE,layerhtml))return false; if(o3_autostatus>0){o3_status=o3_text;if(o3_autostatus>1)o3_status=o3_cap;} o3_allowmove=0; if(o3_timeout>0){if(o3_timerid>0)clearTimeout(o3_timerid);o3_timerid=setTimeout("cClick()",o3_timeout);} runHook("disp",FREPLACE,o3_status);runHook("olMain",FAFTER); return(olOp&&event&&event.type=='mouseover'&&!o3_status)?'':(o3_status!='');} function ol_content_simple(text){var cpIsMultiple=/,/.test(o3_cellpad);var txt='<table width="'+o3_width+'" border="0" cellpadding="'+o3_border+'" cellspacing="0" '+(o3_bgclass?'class="'+o3_bgclass+'"':o3_bgcolor+' '+o3_height)+'><tr><td><table width="100%" border="0" '+((olNs4||!cpIsMultiple)?'cellpadding="'+o3_cellpad+'" ':'')+'cellspacing="0" '+(o3_fgclass?'class="'+o3_fgclass+'"':o3_fgcolor+' '+o3_fgbackground+' '+o3_height)+'><tr><td valign="TOP"'+(o3_textfontclass?' class="'+o3_textfontclass+'">':((!olNs4&&cpIsMultiple)?' style="'+setCellPadStr(o3_cellpad)+'">':'>'))+(o3_textfontclass?'':wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass?'':wrapStr(1,o3_textsize))+'</td></tr></table></td></tr></table>'; set_background("");return txt;} function ol_content_caption(text,title,close){var nameId,txt,cpIsMultiple=/,/.test(o3_cellpad);var closing,closeevent; closing="";closeevent="onmouseover";if(o3_closeclick==1)closeevent=(o3_closetitle?"title='"+o3_closetitle+"'":"")+" onclick";if(o3_capicon!=""){nameId=' hspace=\"5\"'+' align=\"middle\" alt=\"\"';if(typeof o3_dragimg!='undefined'&&o3_dragimg)nameId=' hspace=\"5\"'+' name=\"'+o3_dragimg+'\" id=\"'+o3_dragimg+'\" align=\"middle\" alt=\"Drag Enabled\" title=\"Drag Enabled\"';o3_capicon='<img src=\"'+o3_capicon+'\"'+nameId+' />';} if(close!="") closing='<td '+(!o3_compatmode&&o3_closefontclass?'class="'+o3_closefontclass:'align="RIGHT')+'"><a href="javascript:return '+fnRef+'cClick();"'+((o3_compatmode&&o3_closefontclass)?' class="'+o3_closefontclass+'" ':' ')+closeevent+'="return '+fnRef+'cClick();">'+(o3_closefontclass?'':wrapStr(0,o3_closesize,'close'))+close+(o3_closefontclass?'':wrapStr(1,o3_closesize,'close'))+'</a></td>';txt='<table width="'+o3_width+'" border="0" cellpadding="'+o3_border+'" cellspacing="0" '+(o3_bgclass?'class="'+o3_bgclass+'"':o3_bgcolor+' '+o3_bgbackground+' '+o3_height)+'><tr><td><table width="100%" border="0" cellpadding="2" cellspacing="0"><tr><td'+(o3_captionfontclass?' class="'+o3_captionfontclass+'">':'>')+(o3_captionfontclass?'':'<b>'+wrapStr(0,o3_captionsize,'caption'))+o3_capicon+title+(o3_captionfontclass?'':wrapStr(1,o3_captionsize)+'</b>')+'</td>'+closing+'</tr></table><table width="100%" border="0" '+((olNs4||!cpIsMultiple)?'cellpadding="'+o3_cellpad+'" ':'')+'cellspacing="0" '+(o3_fgclass?'class="'+o3_fgclass+'"':o3_fgcolor+' '+o3_fgbackground+' '+o3_height)+'><tr><td valign="TOP"'+(o3_textfontclass?' class="'+o3_textfontclass+'">' :((!olNs4&&cpIsMultiple)?' style="'+setCellPadStr(o3_cellpad)+'">':'>'))+(o3_textfontclass?'':wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass?'':wrapStr(1,o3_textsize))+'</td></tr></table></td></tr></table>'; set_background("");return txt;} function ol_content_background(text,picture,hasfullhtml){if(hasfullhtml){txt=text;}else{txt='<table width="'+o3_width+'" border="0" cellpadding="0" cellspacing="0" height="'+o3_height+'"><tr><td colspan="3" height="'+o3_padyt+'"></td></tr><tr><td width="'+o3_padxl+'"></td><td valign="TOP" width="'+(o3_width-o3_padxl-o3_padxr)+(o3_textfontclass?'" class="'+o3_textfontclass:'')+'">'+(o3_textfontclass?'':wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass?'':wrapStr(1,o3_textsize))+'</td><td width="'+o3_padxr+'"></td></tr><tr><td colspan="3" height="'+o3_padyb+'"></td></tr></table>';} set_background(picture);return txt;} function set_background(pic){if(pic==""){if(olNs4){over.background.src=null;}else if(over.style){over.style.backgroundImage="none";} }else{if(olNs4){over.background.src=pic;}else if(over.style){over.style.width=o3_width+'px';over.style.backgroundImage="url("+pic+")";}}} var olShowId=-1; function disp(statustext){runHook("disp",FBEFORE); if(o3_allowmove==0){runHook("placeLayer",FREPLACE);(olNs6&&olShowId<0)?olShowId=setTimeout("runHook('showObject',FREPLACE,over)",1):runHook("showObject",FREPLACE,over);o3_allowmove=(o3_sticky||o3_followmouse==0)?0:1;} runHook("disp",FAFTER); if(statustext!="")self.status=statustext;} function createPopup(lyrContent){runHook("createPopup",FBEFORE); if(o3_wrap){var wd,ww,theObj=(olNs4?over:over.style);theObj.top=theObj.left=((olIe4&&!olOp)?0:-10000)+(!olNs4?'px':0);layerWrite(lyrContent);wd=(olNs4?over.clip.width:over.offsetWidth);if(wd>(ww=windowWidth())){lyrContent=lyrContent.replace(/\ /g,' ');o3_width=ww;o3_wrap=0;}} layerWrite(lyrContent); if(o3_wrap)o3_width=(olNs4?over.clip.width:over.offsetWidth); runHook("createPopup",FAFTER,lyrContent); return true;} function placeLayer(){var placeX,placeY,widthFix=0; if(o3_frame.innerWidth)widthFix=18;iwidth=windowWidth(); winoffset=(olIe4)?eval('o3_frame.'+docRoot+'.scrollLeft'):o3_frame.pageXOffset; placeX=runHook('horizontalPlacement',FCHAIN,iwidth,winoffset,widthFix); if(o3_frame.innerHeight){iheight=o3_frame.innerHeight;}else if(eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientHeight=='number'")&&eval('o3_frame.'+docRoot+'.clientHeight')){iheight=eval('o3_frame.'+docRoot+'.clientHeight');} scrolloffset=(olIe4)?eval('o3_frame.'+docRoot+'.scrollTop'):o3_frame.pageYOffset;placeY=runHook('verticalPlacement',FCHAIN,iheight,scrolloffset); repositionTo(over,placeX,placeY);} function olMouseMove(e){var e=(e)?e:event; if(e.pageX){o3_x=e.pageX;o3_y=e.pageY;}else if(e.clientX){o3_x=eval('e.clientX+o3_frame.'+docRoot+'.scrollLeft');o3_y=eval('e.clientY+o3_frame.'+docRoot+'.scrollTop');} if(o3_allowmove==1)runHook("placeLayer",FREPLACE); if(hoveringSwitch&&!olNs4&&runHook("cursorOff",FREPLACE)){(olHideDelay?hideDelay(olHideDelay):cClick());hoveringSwitch=!hoveringSwitch;}} function no_overlib(){return ver3fix;} function olMouseCapture(){capExtent=document;var fN,str='',l,k,f,wMv,sS,mseHandler=olMouseMove;var re=/function*(\w*)\(/; wMv=(!olIe4&&window.onmousemove);if(document.onmousemove||wMv){if(wMv)capExtent=window;f=capExtent.onmousemove.toString();fN=f.match(re);if(fN==null){str=f+'(e);';}else if(fN=='anonymous'||fN=='olMouseMove'||(wMv&&fN=='onmousemove')){if(!olOp&&wMv){l=f.indexOf('{')+1;k=f.lastIndexOf('}');sS=f.substring(l,k);if((l=sS.indexOf('('))!=-1){sS=sS.substring(0,l).replace(/^\s+/,'').replace(/\s+$/,'');if(eval("typeof "+sS+"=='undefined'"))window.onmousemove=null;else str=sS+'(e);';}} if(!str){olCheckMouseCapture=false;return;} }else{if(fN)str=fN+'(e);';else{l=f.indexOf('{')+1;k=f.lastIndexOf('}');str=f.substring(l,k)+'\n';}} str+='olMouseMove(e);';mseHandler=new Function('e',str);} capExtent.onmousemove=mseHandler;if(olNs4)capExtent.captureEvents(Event.MOUSEMOVE);} function parseTokens(pf,ar){ var v,i,mode=-1,par=(pf!='ol_'),fnMark=(par&&!ar.length?1:0); for(i=0;i<ar.length;i++){if(mode<0){ if(typeof ar=='number'&&ar>pmStart&&ar<pmUpper){fnMark=(par?1:0);i--;}else{switch(pf){case 'ol_': ol_text=ar.toString();break;default: o3_text=ar.toString();}} mode=0;}else{ if(ar>=pmCount||ar==DONOTHING){continue;} if(ar==INARRAY){fnMark=0;eval(pf+'text=ol_texts+'].toString()');continue;} if(ar==CAPARRAY){eval(pf+'cap=ol_caps+'].toString()');continue;} if(ar==STICKY){if(pf!='ol_')eval(pf+'sticky=1');continue;} if(ar==BACKGROUND){eval(pf+'background="'+ar+'"');continue;} if(ar==NOCLOSE){if(pf!='ol_')opt_NOCLOSE();continue;} if(ar==CAPTION){eval(pf+"cap='"+escSglQuote(ar)+"'");continue;} if(ar==CENTER||ar==LEFT||ar==RIGHT){eval(pf+'hpos='+ar);if(pf!='ol_')olHautoFlag=1;continue;} if(ar==OFFSETX){eval(pf+'offsetx='+ar);continue;} if(ar==OFFSETY){eval(pf+'offsety='+ar);continue;} if(ar==FGCOLOR){eval(pf+'fgcolor="'+ar+'"');continue;} if(ar==BGCOLOR){eval(pf+'bgcolor="'+ar+'"');continue;} if(ar==TEXTCOLOR){eval(pf+'textcolor="'+ar+'"');continue;} if(ar==CAPCOLOR){eval(pf+'capcolor="'+ar+'"');continue;} if(ar==CLOSECOLOR){eval(pf+'closecolor="'+ar+'"');continue;} if(ar==WIDTH){eval(pf+'width='+ar);continue;} if(ar==BORDER){eval(pf+'border='+ar);continue;} if(ar==CELLPAD){i=opt_MULTIPLEARGS(++i,ar,(pf+'cellpad'));continue;} if(ar==STATUS){eval(pf+"status='"+escSglQuote(ar)+"'");continue;} if(ar==AUTOSTATUS){eval(pf+'autostatus=('+pf+'autostatus==1)?0:1');continue;} if(ar==AUTOSTATUSCAP){eval(pf+'autostatus=('+pf+'autostatus==2)?0:2');continue;} if(ar==HEIGHT){eval(pf+'height='+pf+'aboveheight='+ar);continue;} if(ar==CLOSETEXT){eval(pf+"close='"+escSglQuote(ar)+"'");continue;} if(ar==SNAPX){eval(pf+'snapx='+ar);continue;} if(ar==SNAPY){eval(pf+'snapy='+ar);continue;} if(ar==FIXX){eval(pf+'fixx='+ar);continue;} if(ar==FIXY){eval(pf+'fixy='+ar);continue;} if(ar==RELX){eval(pf+'relx='+ar);continue;} if(ar==RELY){eval(pf+'rely='+ar);continue;} if(ar==FGBACKGROUND){eval(pf+'fgbackground="'+ar+'"');continue;} if(ar==BGBACKGROUND){eval(pf+'bgbackground="'+ar+'"');continue;} if(ar==PADX){eval(pf+'padxl='+ar);eval(pf+'padxr='+ar);continue;} if(ar==PADY){eval(pf+'padyt='+ar);eval(pf+'padyb='+ar);continue;} if(ar==FULLHTML){if(pf!='ol_')eval(pf+'fullhtml=1');continue;} if(ar==BELOW||ar==ABOVE){eval(pf+'vpos='+ar);if(pf!='ol_')olVautoFlag=1;continue;} if(ar==CAPICON){eval(pf+'capicon="'+ar+'"');continue;} if(ar==TEXTFONT){eval(pf+"textfont='"+escSglQuote(ar)+"'");continue;} if(ar==CAPTIONFONT){eval(pf+"captionfont='"+escSglQuote(ar)+"'");continue;} if(ar==CLOSEFONT){eval(pf+"closefont='"+escSglQuote(ar)+"'");continue;} if(ar==TEXTSIZE){eval(pf+'textsize="'+ar+'"');continue;} if(ar==CAPTIONSIZE){eval(pf+'captionsize="'+ar+'"');continue;} if(ar==CLOSESIZE){eval(pf+'closesize="'+ar+'"');continue;} if(ar==TIMEOUT){eval(pf+'timeout='+ar);continue;} if(ar==FUNCTION){if(pf=='ol_'){if(typeof ar!='number'){v=ar;ol_function=(typeof v=='function'?v:null);}}else{fnMark=0;v=null;if(typeof ar!='number')v=ar; opt_FUNCTION(v);} continue;} if(ar==DELAY){eval(pf+'delay='+ar);continue;} if(ar==HAUTO){eval(pf+'hauto=('+pf+'hauto==0)?1:0');continue;} if(ar==VAUTO){eval(pf+'vauto=('+pf+'vauto==0)?1:0');continue;} if(ar==CLOSECLICK){eval(pf+'closeclick=('+pf+'closeclick==0)?1:0');continue;} if(ar==WRAP){eval(pf+'wrap=('+pf+'wrap==0)?1:0');continue;} if(ar==FOLLOWMOUSE){eval(pf+'followmouse=('+pf+'followmouse==1)?0:1');continue;} if(ar==MOUSEOFF){eval(pf+'mouseoff=('+pf+'mouseoff==0)?1:0');v=ar;if(pf!='ol_'&&eval(pf+'mouseoff')&&typeof v=='number'&&(v<pmStart||v>pmUpper))olHideDelay=ar;continue;} if(ar==CLOSETITLE){eval(pf+"closetitle='"+escSglQuote(ar)+"'");continue;} if(ar==CSSOFF||ar==CSSCLASS){eval(pf+'css='+ar);continue;} if(ar==COMPATMODE){eval(pf+'compatmode=('+pf+'compatmode==0)?1:0');continue;} if(ar==FGCLASS){eval(pf+'fgclass="'+ar+'"');continue;} if(ar==BGCLASS){eval(pf+'bgclass="'+ar+'"');continue;} if(ar==TEXTFONTCLASS){eval(pf+'textfontclass="'+ar+'"');continue;} if(ar==CAPTIONFONTCLASS){eval(pf+'captionfontclass="'+ar+'"');continue;} if(ar==CLOSEFONTCLASS){eval(pf+'closefontclass="'+ar+'"');continue;} i=parseCmdLine(pf,i,ar);}} if(fnMark&&o3_function)o3_text=o3_function(); if((pf=='o3_')&&o3_wrap){o3_width=0; var tReg=/<.*\n*>/ig;if(!tReg.test(o3_text))o3_text=o3_text.replace(/+/g,' ');if(!tReg.test(o3_cap))o3_cap=o3_cap.replace(/+/g,' ');} if((pf=='o3_')&&o3_sticky){if(!o3_close&&(o3_frame!=ol_frame))o3_close=ol_close;if(o3_mouseoff&&(o3_frame==ol_frame))opt_NOCLOSE(' ');}} function layerWrite(txt){txt+="\n";if(olNs4){var lyr=o3_frame.document.layers.document lyr.write(txt) lyr.close() }else if(typeof over.innerHTML!='undefined'){if(olIe5&&isMac)over.innerHTML='';over.innerHTML=txt;}else{range=o3_frame.document.createRange();range.setStartAfter(over);domfrag=range.createContextualFragment(txt); while(over.hasChildNodes()){over.removeChild(over.lastChild);} over.appendChild(domfrag);}} function showObject(obj){runHook("showObject",FBEFORE); var theObj=(olNs4?obj:obj.style);theObj.visibility='visible'; runHook("showObject",FAFTER);} function hideObject(obj){runHook("hideObject",FBEFORE); var theObj=(olNs4?obj:obj.style);if(olNs6&&olShowId>0){clearTimeout(olShowId);olShowId=0;} theObj.visibility='hidden';theObj.top=theObj.left=((olIe4&&!olOp)?0:-10000)+(!olNs4?'px':0); if(o3_timerid>0)clearTimeout(o3_timerid);if(o3_delayid>0)clearTimeout(o3_delayid); o3_timerid=0;o3_delayid=0;self.status=""; if(obj.onmouseout||obj.onmouseover){if(olNs4)obj.releaseEvents(Event.MOUSEOUT||Event.MOUSEOVER);obj.onmouseout=obj.onmouseover=null;} runHook("hideObject",FAFTER);} function repositionTo(obj,xL,yL){var theObj=(olNs4?obj:obj.style);theObj.left=xL+(!olNs4?'px':0);theObj.top=yL+(!olNs4?'px':0);} function cursorOff(){var left=parseInt(over.style.left);var top=parseInt(over.style.top);var right=left+(over.offsetWidth>=parseInt(o3_width)?over.offsetWidth:parseInt(o3_width));var bottom=top+(over.offsetHeight>=o3_aboveheight?over.offsetHeight:o3_aboveheight); if(o3_x<left||o3_x>right||o3_y<top||o3_y>bottom)return true; return false;} function opt_FUNCTION(callme){o3_text=(callme?(typeof callme=='string'?(/.+\(.*\)/.test(callme)?eval(callme):callme):callme()):(o3_function?o3_function():'No Function')); return 0;} function opt_NOCLOSE(unused){if(!unused)o3_close=""; if(olNs4){over.captureEvents(Event.MOUSEOUT||Event.MOUSEOVER);over.onmouseover=function(){if(o3_timerid>0){clearTimeout(o3_timerid);o3_timerid=0;} } over.onmouseout=function(e){if(olHideDelay)hideDelay(olHideDelay);else cClick(e);} }else{over.onmouseover=function(){hoveringSwitch=true;if(o3_timerid>0){clearTimeout(o3_timerid);o3_timerid=0;} }} return 0;} function opt_MULTIPLEARGS(i,args,parameter){var k=i,re,pV,str=''; for(k=i;k<args.length;k++){if(typeof args=='number'&&args>pmStart)break;str+=args+',';} if(str)str=str.substring(0,--str.length); k--;pV=(olNs4&&/cellpad/i.test(parameter))?str.split(','):str;eval(parameter+'="'+pV+'"'); return k;} function nbspCleanup(){if(o3_wrap){o3_text=o3_text.replace(/\ /g,' ');o3_cap=o3_cap.replace(/\ /g,' ');}} function escSglQuote(str){return str.toString().replace(/'/g,"\\'");} function OLonLoad_handler(e){var re=/\w+\(.*\)+/g,olre=/overlib\(|nd\(|cClick\(/,fn,l,i; if(!olLoaded)olLoaded=1; if(window.removeEventListener&&e.eventPhase==3)window.removeEventListener("load",OLonLoad_handler,false);else if(window.detachEvent){window.detachEvent("onload",OLonLoad_handler);var fN=document.body.getAttribute('onload');if(fN){fN=fN.toString().match(re);if(fN&&fN.length){for(i=0;i<fN.length;i++){if(/anonymous/.test(fN))continue;while((l=fN.search(/\)+/))!=-1){fn=fN.substring(0,l+1);fN=fN.substring(l+2);if(olre.test(fn))eval(fn);}}}}}} function wrapStr(endWrap,fontSizeStr,whichString){var fontStr,fontColor,isClose=((whichString=='close')?1:0),hasDims=/+$/.test(fontSizeStr);fontSizeStr=(olNs4)?(!hasDims?fontSizeStr:'1'):fontSizeStr;if(endWrap)return(hasDims&&!olNs4)?(isClose?'</span>':'</div>'):'</font>';else{fontStr='o3_'+whichString+'font';fontColor='o3_'+((whichString=='caption')? 'cap':whichString)+'color';return(hasDims&&!olNs4)?(isClose?'<span style="font-family: '+quoteMultiNameFonts(eval(fontStr))+';color: '+eval(fontColor)+';font-size: '+fontSizeStr+';">':'<div style="font-family: '+quoteMultiNameFonts(eval(fontStr))+';color: '+eval(fontColor)+';font-size: '+fontSizeStr+';">'):'<font face="'+eval(fontStr)+'" color="'+eval(fontColor)+'" size="'+(parseInt(fontSizeStr)>7?'7':fontSizeStr)+'">';}} function quoteMultiNameFonts(theFont){var v,pM=theFont.split(',');for(var i=0;i<pM.length;i++){v=pM;v=v.replace(/^\s+/,'').replace(/\s+$/,'');if(/\s/.test(v)&&!//.test(v)){v="\'"+v+"\'";pM=v;}} return pM.join();} function isExclusive(args){return false;} function setCellPadStr(parameter){var Str='',j=0,ary=new Array(),top,bottom,left,right; Str+='padding: ';ary=parameter.replace(/\s+/g,'').split(','); switch(ary.length){case 2: top=bottom=ary;left=right=ary;break;case 3: top=ary;left=right=ary;bottom=ary;break;case 4: top=ary;right=ary;bottom=ary;left=ary;break;} Str+=((ary.length==1)?ary+'px;':top+'px '+right+'px '+bottom+'px '+left+'px;'); return Str;} function hideDelay(time){if(time&&!o3_delay){if(o3_timerid>0)clearTimeout(o3_timerid); o3_timerid=setTimeout("cClick()",(o3_timeout=time));}} function horizontalPlacement(browserWidth,horizontalScrollAmount,widthFix){var placeX,iwidth=browserWidth,winoffset=horizontalScrollAmount;var parsedWidth=parseInt(o3_width); if(o3_fixx>-1||o3_relx!=null){ placeX=(o3_relx!=null?( o3_relx<0?winoffset+o3_relx+iwidth-parsedWidth-widthFix:winoffset+o3_relx):o3_fixx);}else{ if(o3_hauto==1){if((o3_x-winoffset)>(iwidth/2)){o3_hpos=LEFT;}else{o3_hpos=RIGHT;}} if(o3_hpos==CENTER){placeX=o3_x+o3_offsetx-(parsedWidth/2); if(placeX<winoffset)placeX=winoffset;} if(o3_hpos==RIGHT){placeX=o3_x+o3_offsetx; if((placeX+parsedWidth)>(winoffset+iwidth-widthFix)){placeX=iwidth+winoffset-parsedWidth-widthFix;if(placeX<0)placeX=0;}} if(o3_hpos==LEFT){placeX=o3_x-o3_offsetx-parsedWidth;if(placeX<winoffset)placeX=winoffset;} if(o3_snapx>1){var snapping=placeX % o3_snapx; if(o3_hpos==LEFT){placeX=placeX-(o3_snapx+snapping);}else{ placeX=placeX+(o3_snapx-snapping);} if(placeX<winoffset)placeX=winoffset;}} return placeX;} function verticalPlacement(browserHeight,verticalScrollAmount){var placeY,iheight=browserHeight,scrolloffset=verticalScrollAmount;var parsedHeight=(o3_aboveheight?parseInt(o3_aboveheight):(olNs4?over.clip.height:over.offsetHeight)); if(o3_fixy>-1||o3_rely!=null){ placeY=(o3_rely!=null?(o3_rely<0?scrolloffset+o3_rely+iheight-parsedHeight:scrolloffset+o3_rely):o3_fixy);}else{ if(o3_vauto==1){if((o3_y-scrolloffset)>(iheight/2)&&o3_vpos==BELOW&&(o3_y+parsedHeight+o3_offsety-(scrolloffset+iheight)>0)){o3_vpos=ABOVE;}else if(o3_vpos==ABOVE&&(o3_y-(parsedHeight+o3_offsety)-scrolloffset<0)){o3_vpos=BELOW;}} if(o3_vpos==ABOVE){if(o3_aboveheight==0)o3_aboveheight=parsedHeight; placeY=o3_y-(o3_aboveheight+o3_offsety);if(placeY<scrolloffset)placeY=scrolloffset;}else{ placeY=o3_y+o3_offsety;} if(o3_snapy>1){var snapping=placeY % o3_snapy; if(o3_aboveheight>0&&o3_vpos==ABOVE){placeY=placeY-(o3_snapy+snapping);}else{placeY=placeY+(o3_snapy-snapping);} if(placeY<scrolloffset)placeY=scrolloffset;}} return placeY;} function checkPositionFlags(){if(olHautoFlag)olHautoFlag=o3_hauto=0;if(olVautoFlag)olVautoFlag=o3_vauto=0;return true;} function windowWidth(){var w;if(o3_frame.innerWidth)w=o3_frame.innerWidth;else if(eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientWidth=='number'")&&eval('o3_frame.'+docRoot+'.clientWidth')) w=eval('o3_frame.'+docRoot+'.clientWidth');return w;} function createDivContainer(id,frm,zValue){id=(id||'overDiv'),frm=(frm||o3_frame),zValue=(zValue||1000);var objRef,divContainer=layerReference(id); if(divContainer==null){if(olNs4){divContainer=frm.document.layers=new Layer(window.innerWidth,frm);objRef=divContainer;}else{var body=(olIe4?frm.document.all.tags('BODY'):frm.document.getElementsByTagName("BODY"));if(olIe4&&!document.getElementById){body.insertAdjacentHTML("beforeEnd",'<div id="'+id+'"></div>');divContainer=layerReference(id);}else{divContainer=frm.document.createElement("DIV");divContainer.id=id;body.appendChild(divContainer);} objRef=divContainer.style;} objRef.position='absolute';objRef.visibility='hidden';objRef.zIndex=zValue;if(olIe4&&!olOp)objRef.left=objRef.top='0px';else objRef.left=objRef.top=-10000+(!olNs4?'px':0);} return divContainer;} function layerReference(id){return(olNs4?o3_frame.document.layers:(document.all?o3_frame.document.all:o3_frame.document.getElementById(id)));} function isFunction(fnRef){var rtn=true; if(typeof fnRef=='object'){for(var i=0;i<fnRef.length;i++){if(typeof fnRef=='function')continue;rtn=false;break;} }else if(typeof fnRef!='function'){rtn=false;} return rtn;} function argToString(array,strtInd,argName){var jS=strtInd,aS='',ar=array;argName=(argName?argName:'ar'); if(ar.length>jS){for(var k=jS;k<ar.length;k++)aS+=argName+', ';aS=aS.substring(0,aS.length-2);} return aS;} function reOrder(hookPt,fnRef,order){var newPt=new Array(),match,i,j; if(!order||typeof order=='undefined'||typeof order=='number')return hookPt; if(typeof order=='function'){if(typeof fnRef=='object'){newPt=newPt.concat(fnRef);}else{newPt=fnRef;} for(i=0;i<hookPt.length;i++){match=false;if(typeof fnRef=='function'&&hookPt==fnRef){continue;}else{for(j=0;j<fnRef.length;j++)if(hookPt==fnRef){match=true;break;}} if(!match)newPt=hookPt;} newPt=order; }else if(typeof order=='object'){if(typeof fnRef=='object'){newPt=newPt.concat(fnRef);}else{newPt=fnRef;} for(j=0;j<hookPt.length;j++){match=false;if(typeof fnRef=='function'&&hookPt==fnRef){continue;}else{for(i=0;i<fnRef.length;i++)if(hookPt==fnRef){match=true;break;}} if(!match)newPt=hookPt;} for(i=0;i<newPt.length;i++)hookPt=newPt;newPt.length=0; for(j=0;j<hookPt.length;j++){match=false;for(i=0;i<order.length;i++){if(hookPt==order){match=true;break;}} if(!match)newPt=hookPt;} newPt=newPt.concat(order);} hookPt=newPt; return hookPt;} function setRunTimeVariables(){if(typeof runTime!='undefined'&&runTime.length){for(var k=0;k<runTime.length;k++){runTime();}}} function parseCmdLine(pf,i,args){if(typeof cmdLine!='undefined'&&cmdLine.length){for(var k=0;k<cmdLine.length;k++){var j=cmdLine(pf,i,args);if(j >-1){i=j;break;}}} return i;} function postParseChecks(pf,args){if(typeof postParse!='undefined'&&postParse.length){for(var k=0;k<postParse.length;k++){if(postParse(pf,args))continue;return false;}} return true;} function registerCommands(cmdStr){if(typeof cmdStr!='string')return; var pM=cmdStr.split(',');pms=pms.concat(pM); for(var i=0;i< pM.length;i++){eval(pM.toUpperCase()+'='+pmCount++);}} function registerNoParameterCommands(cmdStr){if(!cmdStr&&typeof cmdStr!='string')return;pmt=(!pmt)?cmdStr:pmt+','+cmdStr;} function registerHook(fnHookTo,fnRef,hookType,optPm){var hookPt,last=typeof optPm; if(fnHookTo=='plgIn'||fnHookTo=='postParse')return;if(typeof hookPts=='undefined')hookPts=new FunctionReference(); hookPt=hookPts; if(hookType!=null){if(hookType==FREPLACE){hookPt.ovload=fnRef;if(fnHookTo.indexOf('ol_content_')>-1)hookPt.alt]=fnRef; }else if(hookType==FBEFORE||hookType==FAFTER){var hookPt=(hookType==1?hookPt.before:hookPt.after); if(typeof fnRef=='object'){hookPt=hookPt.concat(fnRef);}else{hookPt=fnRef;} if(optPm)hookPt=reOrder(hookPt,fnRef,optPm); }else if(hookType==FALTERNATE){if(last=='number')hookPt.alt]=fnRef;}else if(hookType==FCHAIN){hookPt=hookPt.chain;if(typeof fnRef=='object')hookPt=hookPt.concat(fnRef);else hookPt=fnRef;} return;}} function registerRunTimeFunction(fn){if(isFunction(fn)){if(typeof fn=='object'){runTime=runTime.concat(fn);}else{runTime=fn;}}} function registerCmdLineFunction(fn){if(isFunction(fn)){if(typeof fn=='object'){cmdLine=cmdLine.concat(fn);}else{cmdLine=fn;}}} function registerPostParseFunction(fn){if(isFunction(fn)){if(typeof fn=='object'){postParse=postParse.concat(fn);}else{postParse=fn;}}} function runHook(fnHookTo,hookType){var l=hookPts,k,rtnVal=null,optPm,arS,ar=runHook.arguments; if(hookType==FREPLACE){arS=argToString(ar,2); if(typeof l=='undefined'||!(l=l.ovload))rtnVal=eval(fnHookTo+'('+arS+')');else rtnVal=eval('l('+arS+')'); }else if(hookType==FBEFORE||hookType==FAFTER){if(typeof l!='undefined'){l=(hookType==1?l.before:l.after); if(l.length){arS=argToString(ar,2);for(var k=0;k<l.length;k++)eval('l('+arS+')');}} }else if(hookType==FALTERNATE){optPm=ar;arS=argToString(ar,3); if(typeof l=='undefined'||(l=l.alt])=='undefined'){rtnVal=eval(fnHookTo+'('+arS+')');}else{rtnVal=eval('l('+arS+')');} }else if(hookType==FCHAIN){arS=argToString(ar,2);l=l.chain; for(k=l.length;k>0;k--)if((rtnVal=eval('l('+arS+')'))!=void(0))break;} return rtnVal;} function FunctionReference(){this.ovload=null;this.before=new Array();this.after=new Array();this.alt=new Array();this.chain=new Array();} function Info(version,prerelease){this.version=version;this.prerelease=prerelease; this.simpleversion=Math.round(this.version*100);this.major=parseInt(this.simpleversion/100);this.minor=parseInt(this.simpleversion/10)-this.major * 10;this.revision=parseInt(this.simpleversion)-this.major * 100-this.minor * 10;this.meets=meets;} function meets(reqdVersion){return(!reqdVersion)?false:this.simpleversion>=Math.round(100*parseFloat(reqdVersion));} registerHook("ol_content_simple",ol_content_simple,FALTERNATE,CSSOFF);registerHook("ol_content_caption",ol_content_caption,FALTERNATE,CSSOFF);registerHook("ol_content_background",ol_content_background,FALTERNATE,CSSOFF);registerHook("ol_content_simple",ol_content_simple,FALTERNATE,CSSCLASS);registerHook("ol_content_caption",ol_content_caption,FALTERNATE,CSSCLASS);registerHook("ol_content_background",ol_content_background,FALTERNATE,CSSCLASS);registerPostParseFunction(checkPositionFlags);registerHook("hideObject",nbspCleanup,FAFTER);registerHook("horizontalPlacement",horizontalPlacement,FCHAIN);registerHook("verticalPlacement",verticalPlacement,FCHAIN);if(olNs4||(olIe5&&isMac)||olKq)olLoaded=1;registerNoParameterCommands('sticky,autostatus,autostatuscap,fullhtml,hauto,vauto,closeclick,wrap,followmouse,mouseoff,compatmode'); var olCheckMouseCapture=true;if((olNs4||olNs6||olIe4)){olMouseCapture();}else{overlib=no_overlib;nd=no_overlib;ver3fix=true;}