// JScript source code // common JavaScript code // Author: Akzhan Abdulin // This code is common to all my DarkClan scripts. var dcACommonScriptVersion = 200; var popupDivId = "popupDiv"; var defaultTipOpacity = 85; var popupXOffset = 30; var popupYOffset = 10; var popupWidth = 200; var popupTimer = ""; var popupActive = false; var menuDivId = "menuDiv"; var pmenuDivId = "pmenuDiv"; var defaultMenuOpacity = 92; var menuXOffset = -64; var menuYOffset = 5; var clearMenuOnceWhenClosed = false; var dc_menuItemCount = 0; var persistMenuReady = false; var persistMenuOpened = false; var cursorX = 0; var cursorY = 0; var moz = (document.getElementById && !document.all); // string manipulation function replacestr(source, what, replaceWith) { var retValue = []; var i; while (true) { i = source.indexOf(what); if (i >= 0) { retValue.push(source.substr(0, i)); retValue.push(replaceWith); source = source.substr(i + what.length); } else { break; } } retValue.push(source); return retValue.join(''); } var htmlEntities = new Array( { what: '<', replaceWith: '<' }, { what: '>', replaceWith: '>' }, { what: "'", replaceWith: ''' }, { what: '"', replaceWith: '"' } ); function htmlstring(s) { for (var i = 0; i < htmlEntities.length; i++) { s = replacestr(s, htmlEntities[i].what, htmlEntities[i].replaceWith); } return s; } function format(fmt) { var retValue = fmt; for (var i = 1; i < format.arguments.length; i++) { var sp = '{' + (i - 1) + '}'; retValue = replacestr(retValue, sp, '' + format.arguments[i]); } return retValue; } function trim(s) { var li = 0; var ri = s.length - 1; for (; li < ri; li++) { if (s.charAt(li) != ' ') { break; } } for (; ri >= li; ri--) { if (s.charAt(ri) != ' ') { break; } } return s.substring(li, ri); } // browser compatibility if(document.all && !document.getElementById) { document.getElementById = function(id) { return document.all[id]; } } // images preloading function dc_preimg() { for (var i = 0; i < dc_preimg.arguments.length; i++) { var img = new Image(); img.src = dc_preimg.arguments[i]; } } // popups function showPopup(message) { var obj_id = document.getElementById(popupDivId); obj_id.innerHTML = message; objWidth = obj_id.offsetWidth; popupActive = true; if (uiOptions.useTransitionEffects) { obj_id.filters['blendtrans'].apply(); } obj_id.style.visibility = "visible"; if (uiOptions.useTransitionEffects) { obj_id.filters['blendtrans'].play(); } followMouse(); } function followMouse() { if (!popupActive) { return; } var obj_id = document.getElementById(popupDivId); var x = 0; var y = 0; if(cursorX > document.body.clientWidth / 2 && cursorX < document.body.clientWidth) { x = cursorX - objWidth; y = cursorY + popupYOffset; } else { x = cursorX + popupXOffset; y = cursorY + popupYOffset; } obj_id.style.left = x + "px"; obj_id.style.top = y + "px"; popupTimer = setTimeout("followMouse()", 50); } function hidePopup() { var obj_id = document.getElementById(popupDivId); obj_id.style.visibility = "hidden"; clearTimeout(popupTimer); popupActive = false; } // menus function prepareMenuCore(menu) { if (is.ie) { menu.style.backgroundColor = 'window'; menu.style.color = 'windowtext'; menu.style.borderColor = 'windowtext'; } } function prepareMenu() { var menu = document.getElementById(menuDivId); prepareMenuCore(menu); } function showMenuCore(menu, capture) { var x = cursorX; var y = cursorY; menu.style.left = x + "px"; menu.style.top = y + "px"; hidePopup(); if (menu.style.visibility != "visible") { if (uiOptions.useTransitionEffects) { menu.filters['blendtrans'].apply(); } menu.style.visibility = "visible"; if (uiOptions.useTransitionEffects) { menu.filters['blendtrans'].play(); } if (is.ie) { var trange = document.body.createTextRange(); trange.moveToElementText(menu); trange.scrollIntoView(); } } if ((capture == null || capture) && menu.setCapture && uiOptions.captureMouse) { menu.setCapture(false); } } function showMenu(content, capture) { if (document.releaseCapture) { document.releaseCapture(); } if (persistMenuOpened) { hideMenuCore(); } var menu = document.getElementById(menuDivId); menu.innerHTML = content; showMenuCore(menu, capture); persistMenuOpened = false; } function initPersistMenu(menu) { prepareMenuCore(menu); } function dropPersistMenuSection(pid) { pid = 'pmid_' + pid; var pd = document.getElementById(pid); if (pd != null) { pd.style.display = 'none'; pd.innerHTML = ''; } } function hasPersistMenuSection(pid) { pid = 'pmid_' + pid; var pd = document.getElementById(pid); return (pd != null) && (pd.innerHTML != ''); } function hidePersistSections(menu) { if (!menu.childNodes) { return; } for (var i = 0; i < menu.childNodes.length; i++) { var elt = menu.childNodes[i]; if (elt.id.indexOf('pmid_') != 0) { continue; } elt.style.display = 'none'; } } function showPersistMenuSection(pid, capture) { if (document.releaseCapture) { document.releaseCapture(); } hideMenuCore(); var menu = document.getElementById(pmenuDivId); hidePersistSections(menu); pid = 'pmid_' + pid; var pd = document.getElementById(pid); pd.style.display = ''; showMenuCore(menu, capture); persistMenuOpened = true; } function showPersistMenu(pid, content, capture) { if (document.releaseCapture) { document.releaseCapture(); } hideMenuCore(); var menu = document.getElementById(pmenuDivId); if (!persistMenuReady) { initPersistMenu(menu); } hidePersistSections(menu); pid = 'pmid_' + pid; var pd = document.getElementById(pid); if (pd == null) { pd = document.createElement('div'); pd.id = pid; pd.innerHTML = content; menu.appendChild(pd); } else { if (pd.innerHTML != content) { pd.innerHTML = content; } pd.style.display = ''; } showMenuCore(menu, capture); persistMenuOpened = true; } function reshowMenu(capture) { var menu = document.getElementById(persistMenuOpened ? pmenuDivId : menuDivId); hidePopup(); menu.style.visibility = "visible"; if ((capture == null || capture) && menu.setCapture && uiOptions.captureMouse) { menu.setCapture(false); } } function hideMenu() { if (document.releaseCapture) { document.releaseCapture(); } hideMenuCore(); } function hideMenuCore() { var menu = document.getElementById(menuDivId); if (clearMenuOnceWhenClosed) { menu.innerHTML = ''; clearMenuOnceWhenClosed = false; } menu.style.visibility = 'hidden'; var menu = document.getElementById(pmenuDivId); menu.style.visibility = 'hidden'; hidePersistSections(menu); hidePopup(); closeInfoSpace(); } function onMenuClick() { var menu = document.getElementById(persistMenuOpened ? pmenuDivId : menuDivId); if (!is.ie) { return; } var o = window.event.srcElement; if (menu != o && !menu.contains(o)) { hideMenu(); } } function getMenuItemHtml(html, action) { return format('{0}', html, action); } function onCellOver(id) { var elt = document.getElementById(id); if (elt != null) { elt.className = "ABLinkH"; } } function onCellOut(id) { var elt = document.getElementById(id); if (elt == null) { return; } elt.className = "ABLink"; } function onCellClick_Core(id) { var oldv = clearMenuOnceWhenClosed; clearMenuOnceWhenClosed = false; var r = onCellClick(id); clearMenuOnceWhenClosed = oldv; return r; } function onCellClick(id) { onCellOut(id); hideMenu(); return true; } function getCellMenuItemHtml_Core(html, action, over, out) { if (over == null) { over = ''; } if (out == null) { out = ''; } var newid = 'cmi_' + dc_menuItemCount; dc_menuItemCount++; var qnewid = "'" + newid + "'"; return format('', html, action, over, out, newid, qnewid); } function getCellMenuItemHtml(html, action, over, out) { if (over == null) { over = ''; } if (out == null) { out = ''; } var newid = 'cmi_' + dc_menuItemCount; dc_menuItemCount++; var qnewid = "'" + newid + "'"; return format('', html, action, over, out, newid, qnewid); } function getCellMenuSeparatorHtml() { return '|'; } function getRowMenuItemHtml(html, action, over, out) { return '' + getCellMenuItemHtml(html, action, over, out) + ''; } function getRowMenuSeparatorHtml() { return '
'; } function onCellOver2(id) { var elt = document.getElementById(id); if (elt != null) { elt.className = "ABLinkH2"; } } function onCellOut2(id) { var elt = document.getElementById(id); if (elt != null) { elt.className = "ABLink2"; } } function onCellClick2(id) { onCellOut2(id); return true; } function getCell2MenuItemHtml(html, action, over, out) { if (over == null) { over = ''; } if (out == null) { out = ''; } var newid = 'cmi2_' + dc_menuItemCount; dc_menuItemCount++; var qnewid = "'" + newid + "'"; return format('{0}', html, action, over, out, newid, qnewid); } function getCell2MenuControlHtml(text) { return format('{0}', text); } function getCell2MenuFillerHtml(text) { return ' '; } function getCell2MenuSeparatorHtml() { return '|'; } function getCell2MenuLabelHtml(html) { if (html == null) { html = ''; } return '' + html + ''; } // blending //change the opacity for different browsers function changeOpac(opacity, id) { var object = document.getElementById(id).style; object.opacity = (opacity / 100); object.MozOpacity = (opacity / 100); object.KhtmlOpacity = (opacity / 100); object.filter = "alpha(opacity=" + opacity + ")"; } function blendimage(divid, imageid, imagefile, millisec) { var div = document.getElementById(divid); var img = document.getElementById(imageid); var speed = Math.round(millisec / 100); var timer = 0; //set the current image as background div.style.backgroundImage = "url(" + img.src + ")"; //make image transparent changeOpac(0, imageid); //make new image img.src = imagefile; //fade in image for(i = 0; i <= 100; i++) { setTimeout("changeOpac(" + i + ",'" + imageid + "')",(timer * speed)); timer++; } } // scroll and fade var DarkClanScrollFade = new Array(); function DarkClanScrollFade(divid, texts) { divid = divid.toString(); var div = document.getElementById(divid); var odivid = divid + '_DarkClanScrollFade_odiv'; var odiv = document.createElement('DIV'); div.appendChild(odiv); odiv.id = odivid; odiv.style.position = 'absolute'; odiv.style.posLeft = 0; odiv.style.posTop = 0; odiv.style.posWidth = div.style.posWidth; odiv.style.posHeight = div.style.posHeight; this.timer = ''; this.speed = 50; this.step = -1; this.message = 0; this.IE = is.ie; this.opac = 100; this.contid = divid; this.odiv = odivid; this.texts = texts; this.index = DarkClanScrollFade.length; this.init = DarkClanScrollFade_init; DarkClanScrollFade[this.index] = this; } function DarkClanScrollFade_motion(index) { var data = DarkClanScrollFade[index]; clearTimeout(data.timer); var cont_elm = document.getElementById(data.contid); var display_elm = document.getElementById(data.odiv); var posnow = parseInt(display_elm.style.top); var step = 100 / ((cont_elm.offsetHeight - (cont_elm.offsetHeight / 4)) / -data.step) if (data.message >= data.texts.length) { data.message = 0 } if (parseInt(display_elm.style.top) < -display_elm.scrollHeight) { display_elm.style.top = cont_elm.offsetHeight - 20; display_elm.innerHTML = data.texts[data.message]; data.message++; data.opac = 0; changeOpac(opac, data.odiv); DarkClanScrollFade_motion(index); } else { posnow += data.step; display_elm.style.top = posnow; data.opac += step; changeOpac(opac, data.odiv); } data.timer = setTimeout("DarkClanScrollFade_motion(" + index + ")", data.speed); } function DarkClanScrollFade_init() { var cont_elm = document.getElementById(this.contid); var display_elm = document.getElementById(this.odiv); var w = cont_elm.style.posWidth; var h = cont_elm.style.posHeight; var cw = w; var ch = h; if (!this.IE) { // for ns clip size add border and padding x 2 cw -= 8; ch -= 8; } cont_elm.style.clip = format('rect(0 {0} {1} 0)', cw, ch); display_elm.style.posWidth = w; display_elm.style.posHeight = h; changeOpac(100, this.odiv); this.timer = setTimeout("DarkClanScrollFade_motion(" + this.index + ")", this.speed); } // tabs function tabOn(eltn, useFX) { var elt = document.getElementById(eltn); if (elt == null) { return; } if ((useFX == null || useFX == true) && (elt.filters) && (elt.filters.length > 0)) { elt.filters[0].apply(); } document.getElementById('eltn').className = 'tab-on'; if ((useFX == null || useFX == true) && (elt.filters) && (elt.filters.length > 0)) { elt.filters[0].play(); } } function tabOn(eltn, useFX) { var elt = document.getElementById(eltn); if (elt == null || elt.className == 'tab-on') { return; } if ((useFX == null || useFX == true) && is.ie && (elt.filters) && (elt.filters.length > 0)) { elt.filters[0].apply(); } elt.className = 'tab-on'; if ((useFX == null || useFX == true) && is.ie && (elt.filters) && (elt.filters.length > 0)) { elt.filters[0].play(); } } function tabOff(eltn, useFX) { var elt = document.getElementById(eltn); if (elt == null || elt.className == 'tab-off') { return; } if ((useFX == null || useFX == true) && is.ie && (elt.filters) && (elt.filters.length > 0)) { elt.filters[0].apply(); } elt.className = 'tab-off'; if ((useFX == null || useFX == true) && is.ie && (elt.filters) && (elt.filters.length > 0)) { elt.filters[0].play(); } } function tabTo(eltn, isOn, useFX) { if (isOn) { tabOn(eltn, useFX); } else { tabOff(eltn, useFX); } } // utils function CurPos(e) { cursorX = !moz ? event.clientX : e.clientX; cursorY = !moz ? event.clientY : e.clientY; cursorX += document.body.scrollLeft; cursorY += document.body.scrollTop; if (!is.opera) { cursorX += document.documentElement.scrollLeft; cursorY += document.documentElement.scrollTop; } } function isDeveloperMode() { return (window.location.search && window.location.search.indexOf("dev=") >= 0); } function d2h(d) {return d.toString(16);} function h2d(h) {return parseInt(h,16);} function urlesc(s) { var r = []; var cFL = 'А'.charCodeAt(0); var cLL = 'А'.charCodeAt(0); var cFS = 'а'.charCodeAt(0); var cLS = 'я'.charCodeAt(0); for (var i = 0; i < s.length; i++) { var c = s.charAt(i); var cc = s.charCodeAt(i); if (cc >= cFL && cc <= cLL) { r.push('%'); var ccv = 192 + (cc - cFL); if (ccv < 16) r.push('0'); r.push(d2h(ccv)); } else if (cc >= cFS && cc <= cLS) { r.push('%'); var ccv = 224 + (cc - cFS); if (ccv < 16) r.push('0'); r.push(d2h(ccv)); } else { if (window.encodeURIComponent) c = window.encodeURIComponent(c); else if (window.encodeURI) c = window.encodeURI(c); else c = window.escape(c); r.push(c); } } return r.join(''); } // init if (typeof (uiOptions) == 'undefined') { uiOptions = { useAlphaForMenuAndTip: true, useTransitionEffects: false, captureMouse: false }; } document.onmousemove = CurPos;