MediaWiki:Common.js
Catatan: Setelah menyimpan preferensi, Anda perlu membersihkan kas penjelajah web Anda untuk melihat perubahan.
- Mozilla / Firefox / Safari: tekan Ctrl-Shift-R (Cmd-Shift-R pada Apple Mac);
- Opera bersihkan melalui menu Tools→Preferences.
- Internet Explorer: tekan Ctrl-F5;
- Konqueror:: tekan F5;
//<source lang="javascript">
/* Import more specific scripts if necessary */
if (wgAction == "edit" || wgAction == "submit") //scripts specific to editing pages
{
importScript("MediaWiki:Common.js/edit.js")
}
else if (wgPageName == "Special:Watchlist") //watchlist scripts
{
importScript("MediaWiki:Common.js/watchlist.js")
}
else if (wgPageName == "Special:Search") //scripts specific to Special:Search
{
importScript("MediaWiki:Common.js/search.js")
}
/** Sysop Javascript *******************************************************
*
* Description: Allows for sysop-specific Javascript at [[MediaWiki:Sysop.js]].
*/
function sysopFunctions() {
if ( wgUserGroups && !window.disableSysopJS ) {
for ( var g = 0; g < wgUserGroups.length; ++g ) {
if ( wgUserGroups[g] == "sysop" ) {
importScript( "MediaWiki:Sysop.js" );
break;
}
}
}
}
addOnloadHook( sysopFunctions );
/* Scripts specific to Internet Explorer */
if (navigator.appName == "Microsoft Internet Explorer")
{
/** Internet Explorer bug fix **************************************************
*
* Description: Fixes IE horizontal scrollbar bug
* Maintainers: [[User:Tom-]]?
*/
var oldWidth;
var docEl = document.documentElement;
function fixIEScroll()
{
if (!oldWidth || docEl.clientWidth > oldWidth)
doFixIEScroll();
else
setTimeout(doFixIEScroll, 1);
oldWidth = docEl.clientWidth;
}
function doFixIEScroll() {
docEl.style.overflowX = (docEl.scrollWidth - docEl.clientWidth < 4) ? "hidden" : "";
}
document.attachEvent("onreadystatechange", fixIEScroll);
document.attachEvent("onresize", fixIEScroll);
/**
* Remove need for CSS hacks regarding MSIE and IPA.
*/
if (document.createStyleSheet) {
document.createStyleSheet().addRule('.IPA', 'font-family: "Doulos SIL", "Charis SIL", Gentium, "DejaVu Sans", Code2000, "TITUS Cyberbit Basic", "Arial Unicode MS", "Lucida Sans Unicode", "Chrysanthi Unicode";');
}
//Import scripts specific to Internet Explorer 6
if (navigator.appVersion.substr(22, 1) == "6")
{
importScript("MediaWiki:Common.js/IE60Fixes.js")
}
}
/*<pre>*/
/* Hook that enables ED's collapsing objects. */
addOnloadHook(createToggleLinks);
/* Function that toggles ED's collapsing objects. */
function toggleCollapse(objToToggle, collapseText, expandText) {
var linkText = "";
var targetObject = returnObjById(objToToggle);
if ( targetObject ) {
if ( targetObject.style.display == "none" ) {
targetObject.style.display = "block";
linkText = collapseText;
}
else {
targetObject.style.display = "none";
linkText = expandText;
}
var toggleLink = document.createElement("a");
toggleLink.appendChild(document.createTextNode(linkText));
toggleLink.setAttribute("href", "javascript:toggleCollapse('" + objToToggle + "','" + collapseText + "','" + expandText + "')");
returnObjById(objToToggle + "Link").innerHTML = "";
returnObjById(objToToggle + "Link").appendChild(toggleLink);
}
}
/* Functions that performs the morph operation. */
function performMorph(targetID, targetNumber) {
var counter = 1;
while ( returnObjById(targetID + "Content" + counter) ) {
if ( counter == targetNumber )
returnObjById(targetID + "Content" + counter).style.display = "block";
else
returnObjById(targetID + "Content" + counter).style.display = "none";
counter++;
}
returnObjById(targetID + "Master").innerHTML = targetNumber;
}
function morphForward(targetID) {
var nextPane = parseInt(returnObjById(targetID + "Master").innerHTML) + 1;
if ( returnObjById(targetID + "Content" + nextPane) )
performMorph(targetID, nextPane);
else
performMorph(targetID, "1");
}
function morphBackward(targetID) {
var prevPane = parseInt(returnObjById(targetID + "Master").innerHTML) - 1;
if ( prevPane > 0 )
performMorph(targetID, prevPane);
else {
var maxIndex = 1;
while ( returnObjById(targetID + "Content" + maxIndex) )
maxIndex++;
performMorph(targetID, maxIndex - 1);
}
}
/* Function that creates collapsing objects and toggle links. */
function createToggleLinks() {
var spanCollection = document.getElementsByTagName("span");
for ( i = 0; i < spanCollection.length; i++ ) {
if ( spanCollection[i].className == "toggleLink" ) {
var spanID = spanCollection[i].getAttribute("id");
var targetID = spanID.substr(0, spanID.length - 4);
var collapseText = returnObjById(targetID + "CollapseText").innerHTML;
var expandText = returnObjById(targetID + "ExpandText").innerHTML;
var initialState = returnObjById(targetID + "InitialState").innerHTML;
var toggleLink = document.createElement("a");
if ( initialState == "0" ) {
returnObjById(targetID).style.display = "none";
toggleLink.appendChild(document.createTextNode(expandText));
}
else {
returnObjById(targetID).style.display = "block";
toggleLink.appendChild(document.createTextNode(collapseText));
}
toggleLink.setAttribute("href", "javascript:toggleCollapse('" + targetID + "','" + collapseText + "','" + expandText + "')");
spanCollection[i].appendChild(toggleLink);
}
else if ( spanCollection[i].className == "morphMaster" ) {
var spanID = spanCollection[i].getAttribute("id");
var targetID = spanID.substr(0, spanID.length - 6);
var counter = 1;
// Create forward and backward paging if the paging elements exist
if ( returnObjById(targetID + "LinkNext") && returnObjById(targetID + "LinkPrev") && returnObjById(targetID + "Content1") ) {
// Create the forward link
var nextLink = document.createElement("a");
nextLink.appendChild(document.createTextNode(returnObjById(targetID + "LinkNext").innerHTML));
nextLink.setAttribute("href", "javascript:morphForward('" + targetID + "')");
returnObjById(targetID + "LinkNext").innerHTML = "";
returnObjById(targetID + "LinkNext").appendChild(nextLink, 0);
// Create the backward link
var prevLink = document.createElement("a");
prevLink.appendChild(document.createTextNode(returnObjById(targetID + "LinkPrev").innerHTML));
prevLink.setAttribute("href", "javascript:morphBackward('" + targetID + "')");
returnObjById(targetID + "LinkPrev").innerHTML = "";
returnObjById(targetID + "LinkPrev").appendChild(prevLink, 0);
// Initialize content panes
while ( returnObjById(targetID + "Content" + counter) ) {
if ( counter == 1 )
returnObjById(targetID + "Content" + counter).style.display = "block";
else
returnObjById(targetID + "Content" + counter).style.display = "none";
counter++;
}
}
counter = 1;
// Whether or not there is paging, generate normal links
while ( returnObjById(targetID + "Link" + counter) && returnObjById(targetID + "Content" + counter) ) {
var morphLink = document.createElement("a");
morphLink.appendChild(document.createTextNode(returnObjById(targetID + "Link" + counter).innerHTML));
morphLink.setAttribute("href", "javascript:performMorph('" + targetID + "','" + counter + "')");
returnObjById(targetID + "Link" + counter).innerHTML = "";
returnObjById(targetID + "Link" + counter).appendChild(morphLink, 0);
// Initialize content panes
if ( counter == 1 )
returnObjById(targetID + "Content" + counter).style.display = "block";
else
returnObjById(targetID + "Content" + counter).style.display = "none";
counter++;
}
spanCollection[i].innerHTML = "1";
spanCollection[i].style.display = "none";
}
}
}
/* Function that toggles ED's collapsing objects. */
function returnObjById( id ) {
if (document.getElementById)
var returnVar = document.getElementById(id);
else if (document.all)
var returnVar = document.all[id];
else if (document.layers)
var returnVar = document.layers[id];
return returnVar;
}
/*</pre>*/
/* Test if an element has a certain class **************************************
*
* Description: Uses regular expressions and caching for better performance.
* Maintainers: [[User:Mike Dillon]], [[User:R. Koot]], [[User:SG]]
*/
var hasClass = (function () {
var reCache = {};
return function (element, className) {
return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
};
})();
/** ExtraEditButtons *********************************************************
*
* Description:
* <pre><nowiki>
*/
function addCustomEditButton( imageFile, speedTip, tagOpen, tagClose, sampleText ) {
var imagePath = 'http://upload.wikimedia.org/wikipedia/commons/';
mwCustomEditButtons[mwCustomEditButtons.length] = {
"imageFile" : imagePath + imageFile,
"speedTip" : speedTip,
"tagOpen" : tagOpen,
"tagClose" : tagClose,
"sampleText" : sampleText
};
}
if ( mwCustomEditButtons && LoadExtraEditButtons ) {
addCustomEditButton( "e/e9/Button_headline2.png", "Subbagian tingkat 2",
"\n=== ", " ===\n", "Subbagian2" );
addCustomEditButton( "3/3a/Button_headline3.png", "Subbagian tingkat 3",
"\n==== ", " ====\n", "Subbagian3" );
addCustomEditButton( "f/fd/Button_underline.png", "Garis bawah",
"<u>", "</u>", "Text garis bawah" );
addCustomEditButton( "c/c9/Button_strike.png", "Coret",
"<s>", "</s>", "Text dicoret" );
addCustomEditButton( "6/6a/Button_sup_letter.png", "Superscript",
"<sup>", "</sup>", "Teks superscript" );
addCustomEditButton( "a/aa/Button_sub_letter.png", "Subscript",
"<sub>", "</sub>", "Teks subscript" );
addCustomEditButton( "1/11/Btn_toolbar_liste.png", "Daftar biasa",
"\n* ", "\n* Elemen contoh B\n* Elemen contoh C", "Elemen contoh A" );
addCustomEditButton( "8/88/Btn_toolbar_enum.png", "Daftar bernomor",
"\n# ", "\n# Elemen contoh 2\n# Elemen contoh 3", "Elemen contoh 1" );
addCustomEditButton( "d/d3/Button_definition_list.png", "Daftar definisi",
"\n; ", "\n: Contoh item 1\n: Contoh item 2", "Contoh definisi" );
addCustomEditButton( "e/eb/Button_plantilla.png", "Templat",
"{{", "}}", "Templat" );
addCustomEditButton( "b/b4/Button_category03.png", "Kategori",
"[[Kategori:", "]]", "Kategori" );
addCustomEditButton( "7/79/Button_reflink.png", "Rujukan", "<ref>",
"</ref>", "Rujukan" );
addCustomEditButton( "3/3b/Button_template_alt.png", "Catatan kaki",
"\n== Catatan kaki ==\n\n" + "{{" + "reflist" + "}}" + "\n", "", "" );
addCustomEditButton( "c/c8/Button_redirect.png", "Pengalihan",
"#ALIH[[", "]]", "Artikel" );
addCustomEditButton( "7/74/Button_comment.png", "Komentar tersembunyi",
"<!-- ", " -->", "Komentar" );
addCustomEditButton( "9/9e/Btn_toolbar_gallery.png", "Galeri gambar",
"\n<gallery>\n", "\n</gallery>", "Berkas:Contoh.jpg|Judul1\nBerkas:Contoh.jpg|Judul2" );
addCustomEditButton( "0/04/Button_array.png", "Tabel",
'{| class="wikitable"\n|-\n', "\n|}", "! kepala1\n! kepala2\n|-\n" +
"| baris1, kolom1\n| baris1, kolom2\n|-\n| baris2, kolom1\n| baris2, kolom2" );
}
/*</nowiki></pre>*/
/**
/** Collapsible tables *********************************************************
*
* Description: Allows tables to be collapsed, showing only the header.
*
*/
var autoCollapse = 2;
var collapseCaption = "hide";
var expandCaption = "show";
function collapseTable( tableIndex )
{
var Button = document.getElementById( "collapseButton" + tableIndex );
var Table = document.getElementById( "collapsibleTable" + tableIndex );
if ( !Table || !Button ) {
return false;
}
var Rows = Table.rows;
if ( Button.firstChild.data == collapseCaption ) {
for ( var i = 1; i < Rows.length; i++ ) {
Rows[i].style.display = "none";
}
Button.firstChild.data = expandCaption;
} else {
for ( var i = 1; i < Rows.length; i++ ) {
Rows[i].style.display = Rows[0].style.display;
}
Button.firstChild.data = collapseCaption;
}
}
function createCollapseButtons()
{
var tableIndex = 0;
var NavigationBoxes = new Object();
var Tables = document.getElementsByTagName( "table" );
for ( var i = 0; i < Tables.length; i++ ) {
if ( hasClass( Tables[i], "collapsible" ) ) {
/* only add button and increment count if there is a header row to work with */
var HeaderRow = Tables[i].getElementsByTagName( "tr" )[0];
if (!HeaderRow) continue;
var Header = HeaderRow.getElementsByTagName( "th" )[0];
if (!Header) continue;
NavigationBoxes[ tableIndex ] = Tables[i];
Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex );
var Button = document.createElement( "span" );
var ButtonLink = document.createElement( "a" );
var ButtonText = document.createTextNode( collapseCaption );
Button.style.styleFloat = "right";
Button.style.cssFloat = "right";
Button.style.fontWeight = "normal";
Button.style.textAlign = "right";
Button.style.width = "6em";
ButtonLink.style.color = Header.style.color;
ButtonLink.setAttribute( "id", "collapseButton" + tableIndex );
ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" );
ButtonLink.appendChild( ButtonText );
Button.appendChild( document.createTextNode( "[" ) );
Button.appendChild( ButtonLink );
Button.appendChild( document.createTextNode( "]" ) );
Header.insertBefore( Button, Header.childNodes[0] );
tableIndex++;
}
}
for ( var i = 0; i < tableIndex; i++ ) {
if ( hasClass( NavigationBoxes[i], "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], "autocollapse" ) ) ) {
collapseTable( i );
}
}
}
addOnloadHook( createCollapseButtons );
/** Dynamic Navigation Bars (experimental) *************************************
*
* Description:
* Maintainers:
*/
// set up the words in your language
var NavigationBarHide = '[' + collapseCaption + ']';
var NavigationBarShow = '[' + expandCaption + ']';
// shows and hides content and picture (if available) of navigation bars
// Parameters:
// indexNavigationBar: the index of navigation bar to be toggled
function toggleNavigationBar(indexNavigationBar)
{
var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
if (!NavFrame || !NavToggle) {
return false;
}
// if shown now
if (NavToggle.firstChild.data == NavigationBarHide) {
for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
if ( hasClass( NavChild, 'NavPic' ) ) {
NavChild.style.display = 'none';
}
if ( hasClass( NavChild, 'NavContent') ) {
NavChild.style.display = 'none';
}
}
NavToggle.firstChild.data = NavigationBarShow;
// if hidden now
} else if (NavToggle.firstChild.data == NavigationBarShow) {
for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
if (hasClass(NavChild, 'NavPic')) {
NavChild.style.display = 'block';
}
if (hasClass(NavChild, 'NavContent')) {
NavChild.style.display = 'block';
}
}
NavToggle.firstChild.data = NavigationBarHide;
}
}
// adds show/hide-button to navigation bars
function createNavigationBarToggleButton()
{
var indexNavigationBar = 0;
// iterate over all < div >-elements
var divs = document.getElementsByTagName("div");
for (var i = 0; NavFrame = divs[i]; i++) {
// if found a navigation bar
if (hasClass(NavFrame, "NavFrame")) {
indexNavigationBar++;
var NavToggle = document.createElement("a");
NavToggle.className = 'NavToggle';
NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
var NavToggleText = document.createTextNode(NavigationBarHide);
for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) {
if (NavChild.style.display == 'none') {
NavToggleText = document.createTextNode(NavigationBarShow);
break;
}
}
}
NavToggle.appendChild(NavToggleText);
// Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
for(var j=0; j < NavFrame.childNodes.length; j++) {
if (hasClass(NavFrame.childNodes[j], "NavHead")) {
NavFrame.childNodes[j].appendChild(NavToggle);
}
}
NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
}
}
}
addOnloadHook( createNavigationBarToggleButton );
/** "Technical restrictions" title fix *****************************************
*
* Description: For pages that have something like Template:Wrongtitle, replace
* the title, but only if it is cut-and-pasteable as a valid
* wikilink. For instance, "NZR WB class" can be changed to
* "NZR W<sup>B</sup> class", but [[C#]] is not an equivalent wikilink,
* so [[C Sharp]] doesn't have its main title changed.
*
* The function looks for a banner like this:
* <div id="RealTitleBanner"> ... <span id="RealTitle">title</span> ... </div>
* An element with id=DisableRealTitle disables the function.
* Maintainers: Remember_the_dot
*/
if (wgIsArticle) //prevents the "Editing " prefix from disappearing during preview
{
addOnloadHook(function()
{
var realTitle = document.getElementById("RealTitle")
if (realTitle)
{
//normalizes a title or a namespace name (but not both)
//trims leading and trailing underscores and converts (possibly multiple) spaces and underscores to single underscores
function normalizeTitle(title)
{
return title.replace(/^_+/, "").replace(/_+$/, "").replace(/[\s_]+/g, "_")
}
if (realTitle.textContent) //everyone but IE
{
var realTitleText = realTitle.textContent
}
else //IE
{
var realTitleText = realTitle.innerText
}
var normalizedRealTitle
var normalizedPageTitle
var indexOfColon = realTitleText.indexOf(":")
var normalizedNamespaceName = normalizeTitle(realTitleText.substring(0, indexOfColon)).toLowerCase()
//make namespace prefix lowercase and uppercase the first letter of the title
if (indexOfColon == -1 || wgCanonicalNamespace.toLowerCase() != normalizedNamespaceName) //no namespace prefix - either no colon or a nonsensical namespace prefix (for example, "Foo" in "Foo: The Story of My Life")
{
normalizedRealTitle = normalizeTitle(realTitleText)
normalizedRealTitle = normalizedRealTitle.charAt(0).toUpperCase() + normalizedRealTitle.substring(1)
normalizedPageTitle = wgPageName.charAt(0).toUpperCase() + wgPageName.substring(1)
}
else //using a namespace prefix
{
var normalizedRealPageTitle = normalizeTitle(realTitleText.substring(indexOfColon + 1))
normalizedRealTitle = normalizedNamespaceName
if (normalizedNamespaceName != "") //namespace 0 is a special case where the leading colon should never be shown
{
normalizedRealTitle += ":"
}
normalizedRealTitle += normalizedRealPageTitle.charAt(0).toUpperCase() + normalizedRealPageTitle.substring(1)
normalizedPageTitle = wgPageName.substring(0, wgPageName.indexOf(":") + 1).toLowerCase() + wgPageName.substring(wgPageName.indexOf(":") + 1)
}
if (normalizedRealTitle == normalizedPageTitle) //normalized titles match, so we can do full replacement
{
var h1 = document.getElementsByTagName("h1")[0]
//remove all child nodes, including text
while (h1.firstChild)
{
h1.removeChild(h1.firstChild)
}
//populate with nodes of real title
while (realTitle.firstChild) //the children are moved to a new parent element
{
h1.appendChild(realTitle.firstChild)
}
//delete the real title banner since the problem is solved
var realTitleBanner = document.getElementById("RealTitleBanner")
realTitleBanner.parentNode.removeChild(realTitleBanner)
}
//no matter what, correct the page title
document.title = realTitleText + " - Wiki Indonesia Kristen In-Christ"
}
})
}
/** Secure upload link fix ************************************************
*
* Description: Fix "Upload file" link when using the secure proxy.
* This is a workaround that can be removed when [[bugzilla:10843]] is fixed.
* Maintainers: [[User:Remember the dot]]
*/
addOnloadHook(function()
{
if (document.getElementById("t-upload"))
{
document.getElementById("t-upload").getElementsByTagName("a")[0].href = wgArticlePath.replace("$1", "Bantuan:Pemuatan")
}
})
/** Table sorting fixes ************************************************
*
* Description: Disables code in table sorting routine to set classes on even/odd rows
* Maintainers: [[User:Random832]]
*/
ts_alternate_row_colors = false;
/***** uploadwizard_newusers ********
* Switches in a message for non-autoconfirmed users at [[Bantuan:Pemuatan]]
*
* Maintainers: [[User:Krimpet]]
****/
function uploadwizard_newusers() {
if (wgNamespaceNumber == 4 && wgTitle == "Upload" && wgAction == "view") {
var oldDiv = document.getElementById("autoconfirmedusers"),
newDiv = document.getElementById("newusers");
if (oldDiv && newDiv) {
if (typeof wgUserGroups == "object" && wgUserGroups) {
for (i = 0; i < wgUserGroups.length; i++) {
if (wgUserGroups[i] == "autoconfirmed") {
oldDiv.style.display = "block";
newDiv.style.display = "none";
return;
}
}
}
oldDiv.style.display = "none";
newDiv.style.display = "block";
return;
}
}
}
addOnloadHook(uploadwizard_newusers);
/** IPv6 AAAA connectivity testing *******************************************************
*
* Description: Uses hidden images to measure the possible negative impact of IPv6
* enabling the Wikimedia sites.
* This works by adding a hidden div to the footer with several image tags.
* The source addresses of the image tags are set to domainnames which have v4, v6 and
* both address types set. The script times how long objects take to load.
* Results are sent back to the server. http://ipv6and4.labs.wikimedia.org/stats.html
* Based on http://www.braintrust.co.nz/ipv6wwwtest/
* Contact: [[User:Gmaxwell]], [[User:Mark Bergsma]], [[User:Mindspillage]]
*/
var __ipv6wwwtest_factor = 100;
var __ipv6wwwtest_done = 0;
if ((wgServer != "https://secure.wikimedia.org") && (Math.floor(Math.random()*__ipv6wwwtest_factor)==42)) {
var __ipv6wwwtest_timeoutMsec = 10000; // Timeout for 'final' result message in milliseconds
var __ipv6wwwtest_hostSuffix = ".labs.wikimedia.org"; // Suffix to go on the IMG hostnames
var __ipv6wwwtest_stopAtTimeout = true; // Whether to stop when the timeout is reached or not
var __ipv6wwwtest_pageLoadTime;
var __ipv6wwwtest_timeout = false;
var __ipv6wwwtest_ipv4LoadTime = false;
var __ipv6wwwtest_ipv4relLoadTime = false;
var __ipv6wwwtest_ipv6LoadTime = false;
var __ipv6wwwtest_ipv6bigLoadTime = false;
var __ipv6wwwtest_ipv6and4LoadTime = false;
var __ipv6wwwtest_id = Math.floor(Math.random()*Math.pow(2,31));
function __ipv6wwwtest_startTest() {
__ipv6wwwtest_pageLoadTime = new Date();
document.getElementById("__ipv6wwwtest_ipv4Img").src = "http://ipv4" + __ipv6wwwtest_hostSuffix +"/ipv4.gif?id=" + __ipv6wwwtest_id;
document.getElementById("__ipv6wwwtest_ipv4relImg").src = "//ipv4" + __ipv6wwwtest_hostSuffix +"/ipv4.gif?rel=1&id=" + __ipv6wwwtest_id;
document.getElementById("__ipv6wwwtest_ipv6Img").src = "http://ipv6" + __ipv6wwwtest_hostSuffix +"/ipv6.gif?id=" + __ipv6wwwtest_id;
document.getElementById("__ipv6wwwtest_ipv6and4Img").src = "http://ipv6and4" + __ipv6wwwtest_hostSuffix +"/ipv6and4.gif?id=" + __ipv6wwwtest_id;
document.getElementById("__ipv6wwwtest_ipv6bigImg").src = "http://ipv6" + __ipv6wwwtest_hostSuffix +"/ipv6big.gif?id=" + __ipv6wwwtest_id;
}
function __ipv6wwwtest_sendResults(stage) {
document.getElementById("__ipv6wwwtest_resultsImg").src = "http://results" + __ipv6wwwtest_hostSuffix +"/results.gif?id=" + __ipv6wwwtest_id + "&stage=" + stage + "&timeout=" + __ipv6wwwtest_timeoutMsec + "&stop_at_timeout=" + __ipv6wwwtest_stopAtTimeout + "&ipv4=" + __ipv6wwwtest_getLoadTime(__ipv6wwwtest_ipv4LoadTime) + "&ipv6=" + __ipv6wwwtest_getLoadTime(__ipv6wwwtest_ipv6LoadTime) + "&ipv6and4=" + __ipv6wwwtest_getLoadTime(__ipv6wwwtest_ipv6and4LoadTime) + "&ipv6big=" + __ipv6wwwtest_getLoadTime(__ipv6wwwtest_ipv6bigLoadTime) +"&ipv4rel="+ __ipv6wwwtest_getLoadTime(__ipv6wwwtest_ipv4relLoadTime) + "&rate=" + __ipv6wwwtest_factor;
};
function __ipv6wwwtest_getLoadTime(item) {
if (item == false) {
return "NaN";
} else {
return (item.getTime() - __ipv6wwwtest_pageLoadTime.getTime());
}
}
function __ipv6wwwtest_checkFinished() {
if ( (! __ipv6wwwtest_ipv6LoadTime) || (! __ipv6wwwtest_ipv4LoadTime) || (! __ipv6wwwtest_ipv6and4LoadTime) || (! __ipv6wwwtest_ipv6bigLoadTime) || (! __ipv6wwwtest_getLoadTime)) {
if (!__ipv6wwwtest_timeout) {
__ipv6wwwtest_timeout = window.setTimeout('__ipv6wwwtest_sendFinalResults()',__ipv6wwwtest_timeoutMsec);
}
__ipv6wwwtest_sendResults('partial');
} else {
__ipv6wwwtest_sendFinalResults();
}
}
function __ipv6wwwtest_sendFinalResults() {
if (__ipv6wwwtest_done==0) {
if (__ipv6wwwtest_timeout) {
window.clearTimeout(__ipv6wwwtest_timeout);
}
__ipv6wwwtest_sendResults('final');
if (__ipv6wwwtest_stopAtTimeout) {
document.getElementById("__ipv6wwwtest_ipv4Img").src = "";
document.getElementById("__ipv6wwwtest_ipv4relImg").src = "";
document.getElementById("__ipv6wwwtest_ipv6Img").src = "";
document.getElementById("__ipv6wwwtest_ipv6and4Img").src = "";
document.getElementById("__ipv6wwwtest_ipv6bigImg").src = "";
}
}
__ipv6wwwtest_done=1;
}
addOnloadHook(function() {
v6sub=document.getElementById("footer");
v6sub.innerHTML=v6sub.innerHTML+'<div style="visibility: hidden;"> <img height="1" width="1" src="" id="__ipv6wwwtest_ipv4Img" onload="__ipv6wwwtest_ipv4LoadTime = new Date(); __ipv6wwwtest_checkFinished();" /> <img height="1" width="1" src="" id="__ipv6wwwtest_ipv4relImg" onload="__ipv6wwwtest_ipv4relLoadTime = new Date(); __ipv6wwwtest_checkFinished();" /> <img height="1" width="1" src="" id="__ipv6wwwtest_ipv6and4Img" onload="__ipv6wwwtest_ipv6and4LoadTime = new Date(); __ipv6wwwtest_checkFinished();" /> <img height="1" width="1" src="" id="__ipv6wwwtest_ipv6Img" onload="__ipv6wwwtest_ipv6LoadTime = new Date(); __ipv6wwwtest_checkFinished();" /> <img height="1" width="1" src="" id="__ipv6wwwtest_ipv6bigImg" onload="__ipv6wwwtest_ipv6bigLoadTime = new Date(); __ipv6wwwtest_checkFinished();" /> <img height="1" width="1" src="" id="__ipv6wwwtest_resultsImg" /> </div>';
if (document.getElementById("__ipv6wwwtest_ipv4Img") && document.getElementById("__ipv6wwwtest_ipv6Img") && document.getElementById("__ipv6wwwtest_ipv6and4Img") && document.getElementById("__ipv6wwwtest_ipv6bigImg")) {
__ipv6wwwtest_startTest();
}
});
}
//</source>