var bookWidth = 600;
var bookHeight = 400;
var bookMinWidth = 200;
var bookScale = 1.2;
var topMenuWidth = 242;
var browserName = "";
var browserPrefix = "";
var isIE = false;
var versionIE = 9;
var fullLink;
function getDocumentSize(doc) { // getting a real size document with scrolling etc.
var r = { width: 0, height: 0 };
var width1 = 0, width2 = 0, width3 = 0, width4 = 0, maxWidth = 0;
var height1 = 0, height2 = 0, height3 = 0, height4 = 0, maxHeight = 0;
if (doc.width) maxWidth = doc.width;
if (doc.body) {
if (doc.body.scrollWidth) width1 = doc.body.scrollWidth;
if (doc.body.offsetWidth) width2 = doc.body.offsetWidth;
}
if (doc.documentElement) {
width3 = doc.documentElement.scrollWidth;
width4 = doc.documentElement.clientWidth;
}
maxWidth = Math.max(Math.max(Math.max(width1, width2), Math.max(width3, width4)), maxWidth);
if (doc.height) maxHeight = doc.height;
if (doc.body) {
if (doc.body.scrollHeight) height1 = doc.body.scrollHeight;
if (doc.body.offsetHeight) height2 = doc.body.offsetHeight;
}
if (doc.documentElement) {
height3 = doc.documentElement.scrollHeight;
height4 = doc.documentElement.clientHeight;
}
maxHeight = Math.max(Math.max(Math.max(height1, height2), Math.max(height3, height4)), maxHeight);
r.width = maxWidth;
r.height = maxHeight;
return r;
}
var noFlashNotification = function (imgUrl, spreadUrl) {
var noteWindow = {
draw: function (imgUrl) {
if (!document.getElementById('NOTE')) {
var div = document.createElement("DIV");
div.id = "NOTE";
document.getElementsByTagName("body")[0].appendChild(div);
div.style.position = "absolute";
div.style.top = "0px";
div.style.left = "0px";
if (isIE && 1 * versionIE < 9) {
div.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=50)";
} else {
div.style.backgroundColor = "rgba(0,0,0,0.5)";
}
div.style.width = window.innerWidth + 'px'; //"100%";
div.style.height = window.innerHeight + 'px'; //"100%";
var title = (browserName == 'firefox') ? document.getElementsByTagName('title')[0].textContent.substr(document.getElementsByTagName('title')[0].textContent.indexOf('-') + 1) : document.getElementsByTagName('title')[0].innerText.substr(document.getElementsByTagName('title')[0].innerText.indexOf('-') + 1);
var divWidth = (window.innerWidth < 600) ? "90%" : "600px";
var margTop = (window.innerHeight / 2 > 200) ? window.innerHeight / 2 - 200 : window.innerHeight / 2;
div.innerHTML = '
' + title + '
To maximize your viewing experience of this digital publication, we recommend installing Adobe Flash Player Plugin. This installation will only take a few moments. Should you experience any issues with installation, please contact your System Administrator.
';
if (document.getElementById('closeButton')) {
noteWindow.setCloseEvent();
} else {
setTimeout(noteWindow.setCloseEvent, 300);
}
if (spreadUrl != "") {
setTimeout(noteWindow.replaceAnimatedImg, 700);
}
}
},
replaceAnimatedImg: function () {
var div = document.getElementById('noteImage');
var title = (browserName == 'firefox') ? document.getElementsByTagName('title')[0].textContent.substr(document.getElementsByTagName('title')[0].textContent.indexOf('-') + 1) : document.getElementsByTagName('title')[0].innerText.substr(document.getElementsByTagName('title')[0].innerText.indexOf('-') + 1);
div.parentNode.innerHTML = '' + title + '
To maximize your viewing experience of this digital publication, we recommend installing Adobe Flash Player Plugin. This installation will only take a few moments. Should you experience any issues with installation, please contact your System Administrator.
';
if (document.getElementById('closeButton')) {
noteWindow.setCloseEvent();
} else {
setTimeout(noteWindow.setCloseEvent, 300);
}
/*
alink = function(){
var iframe = document.getElementById('sprateIframe');
if (iframe && (document.domain.indexOf('publ.com') != -1)){
var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
if(innerDoc.getElementById('publicationLink')){
var id = spreadUrl.split('?')[0].split('/');
id = id[id.length-1]
src = window.location.host + '/Session/DetectBrowser?returnTo='+ spreadUrl.split('?')[0]+'&type=Flash'
}
}
}
setTimeout(alink,300);
*/
div = null;
},
setCloseEvent: function () {
if (isIE && versionIE < 9) {
document.getElementById('closeButton').attachEvent("onclick", noteWindow.close);
} else {
document.getElementById('closeButton').addEventListener("click", noteWindow.close, false);
}
},
close: function () {
document.getElementById("NOTE").parentNode.removeChild(document.getElementById("NOTE"));
}
};
noteWindow.draw(imgUrl);
}
var eventLock = function (event) {
event.preventDefault ? event.preventDefault() : event.returnValue = false;
event.stopPropagation ? event.stopPropagation() : event.returnValue = false;
event = event || window.event; // get window.event if argument is falsy (in IE)
var targetElement = event.target || event.srcElement; // get srcElement if target is falsy (IE)
var href = (targetElement.href) ? targetElement.href : targetElement.parentNode.href;
if (href.split('/')[href.split('/').length - 1].split('.')[1] == 'png') {
href = targetElement.parentNode.href;
}
href = href.split('/')[href.split('/').length - 1].split('.')[0];
loadPage(href);
return false;
}
var linkLock = function (event) {
event = event || window.event; // get window.event if argument is falsy (in IE)
var targetElement = event.target || event.srcElement; // get srcElement if target is falsy (IE)
var href = (targetElement.href) ? targetElement.href : targetElement.parentNode.href;
if (href.split('/')[href.split('/').length - 2] == "basic-html") {
event.preventDefault ? event.preventDefault() : event.returnValue = false;
event.stopPropagation ? event.stopPropagation() : event.returnValue = false;
href = href.split('/')[href.split('/').length - 1].split('.')[0];
loadPage(href);
}
return false;
}
var navigationCorrect = function (event) {
if (document.getElementById("NOTE")) {
document.getElementById("NOTE").style.width = window.innerWidth + "px"; //"100%";
document.getElementById("NOTE").style.height = window.innerHeight + "px"; //"100%";
document.getElementById("NOTE").childNodes[0].style.margin = (window.innerHeight / 2 - 100) + 'px auto';
}
var smallWindow = (document.getElementById("Book").offsetLeft < 20) ? true : false;
if (document.getElementById("rightTool")) {
document.getElementById("rightTool").style.position = "fixed";
document.getElementById("rightTool").style.left = smallWindow ? bookWidth - 52 + "px" : document.getElementById("Book").offsetLeft + bookWidth + 20 + "px";
document.getElementById("rightTool").style.top = (bookHeight > getClientHeight()) ? getClientHeight() / 2 - 50 + "px" : bookHeight / 2 - 50 + document.getElementById("Page").offsetTop + "px";
document.getElementById("rightTool").style.width = (document.getElementById("rightTool").getElementsByTagName("A")[1].scrollWidth > 52) ? document.getElementById("rightTool").getElementsByTagName("A")[1].scrollWidth + "px" : 52 + "px";
}
if (document.getElementById("leftTool")) {
document.getElementById("leftTool").style.position = "fixed";
document.getElementById("leftTool").style.left = smallWindow ? "0px" : (document.getElementById("leftTool").getElementsByTagName("A")[1].scrollWidth > 52) ? document.getElementById("Book").offsetLeft - document.getElementById("leftTool").getElementsByTagName("A")[1].scrollWidth + "px" : document.getElementById("Book").offsetLeft - 52 + "px";
document.getElementById("leftTool").style.top = (bookHeight > getClientHeight()) ? getClientHeight() / 2 - 50 + "px" : bookHeight / 2 - 50 + document.getElementById("Page").offsetTop + "px";
document.getElementById("leftTool").style.width = (document.getElementById("leftTool").getElementsByTagName("A")[1].scrollWidth > 52) ? document.getElementById("leftTool").getElementsByTagName("A")[1].scrollWidth + "px" : 52 + "px";
}
setBG();
}
var pageInit = function () {
browserVer();
paramSet();
INNER = {};
// window.location.hash
if (isIE && versionIE < 9) {
window.attachEvent("onhashchange", hashChangeLoadPage);
} else {
window.addEventListener("hashchange", hashChangeLoadPage, false);
}
if (isIE && versionIE < 9) {
window.attachEvent("onresize", navigationCorrect);
} else {
window.addEventListener("resize", navigationCorrect, false);
}
//INFO!
hashChangeLoadPage();
if (!(isIE && versionIE == 7)) {
var tocLock = function (event) {
event.preventDefault ? event.preventDefault() : event.returnValue = false;
event.stopPropagation ? event.stopPropagation() : event.returnValue = false;
event = event || window.event; // get window.event if argument is falsy (in IE)
var targetElement = event.target || event.srcElement; // get srcElement if target is falsy (IE)
var href = (targetElement.href) ? targetElement.href : targetElement.parentNode.href;
href = 'toc';
loadPage(href);
return false;
}
var tool = (document.getElementById("boxMenu")) ? document.getElementById("boxMenu").getElementsByTagName("A")[0] : [];
if (isIE && versionIE < 9) {
tool.attachEvent("onclick", tocLock);
} else {
tool.addEventListener("click", tocLock, false);
}
var tool = (document.getElementById("rightTool")) ? document.getElementById("rightTool").getElementsByTagName("A") : [];
for (var i = 0; i < tool.length; i++) {
if (isIE && versionIE < 9) {
tool[i].attachEvent("onclick", eventLock);
} else {
tool[i].addEventListener("click", eventLock, false);
}
}
tool = (document.getElementById("leftTool")) ? document.getElementById("leftTool").getElementsByTagName("A") : [];
for (var i = 0; i < tool.length; i++) {
if (isIE && versionIE < 9) {
tool[i].attachEvent("onclick", eventLock, false);
} else {
tool[i].addEventListener("click", eventLock, false);
}
}
}
}
var checkBookSize = function (W, minW) {
if (W < minW) {
bookScale = minW / W;
} else if (W * 1.2 > getClientWidth() - 300) {
if (minW > getClientWidth() - 300) {
bookScale = minW / (W * 1.2);
} else {
bookScale = (getClientWidth() - 300) / (W * 1.2);
}
} else {
bookScale = 1.2;
}
return bookScale;
}
var currentPage = function () {
// CLEAR CONTENT
document.getElementById("Content").parentNode.removeChild(document.getElementById("Content"));
var newDiv = document.createElement('div');
newDiv.className = 'page';
newDiv.id = 'Content';
document.getElementById("Page").insertBefore(newDiv, document.getElementById("Page").firstChild)
// LOAD CONTENT
//INNER = {};
//INNER = eval('(' + this.responseText + ')');
// SET PARAMS
document.title = INNER.title;
document.getElementsByTagName("h1")[0].textContent = INNER.title;
var meta = document.getElementsByTagName("meta");
for (var i = 0; i < meta.length; i++) {
if (meta[i].name == "keywords") meta[i].content = INNER.keywords;
if (meta[i].name == "description") meta[i].content = INNER.title;
}
checkBookSize(INNER.width, bookMinWidth);
document.getElementById("Book").style.width = INNER.width * bookScale + "px";
document.getElementById("Page").style.height = INNER.height * bookScale + "px";
if ((bookWidth != INNER.width * bookScale) | (bookHeight != INNER.height * bookScale)) {
bookWidth = INNER.width * bookScale;
bookHeight = INNER.height * bookScale;
}
if (INNER.fullLink) {
fullLink = (INNER.fullLink.split('#')[1]) ? INNER.fullLink.split('#')[1] : '/1';
//console.log(fullLink)
if (document.getElementById('fullVersionLink')) {
document.getElementById('fullVersionLink').href = document.getElementById('fullVersionLink').href.split('#')[0] + '#' + fullLink;
}
}
//if(document.getElementById("NOTE")) document.getElementById("NOTE").style.height = document.body.scrollHeight + "px";
if (INNER.substrate) {
if (INNER.substrate.background) document.getElementById("Content").style.background = INNER.substrate.background;
if (INNER.substrate.backgroundColor) document.getElementById("Content").style.backgroundColor = INNER.substrate.backgroundColor;
if (INNER.substrate.backgroundSize) document.getElementById("Content").style.backgroundSize = INNER.substrate.backgroundSize;
document.getElementById("Content").style.backgroundPosition = "center";
document.getElementById("Content").style.backgroundRepeat = "no-repeat";
}
if (INNER.rightTool) {
document.getElementById("rightTool").style.display = 'block';
document.getElementById("rightTool").getElementsByTagName("A")[0].href = INNER.rightTool.src;
document.getElementById("rightTool").getElementsByTagName("A")[1].href = INNER.rightTool.src;
document.getElementById("rightTool").getElementsByTagName("A")[1].innerHTML = INNER.rightTool.innerText;
} else {
document.getElementById("rightTool").style.display = 'none';
}
if (INNER.leftTool) {
document.getElementById("leftTool").style.display = 'block';
document.getElementById("leftTool").getElementsByTagName("A")[0].href = INNER.leftTool.src;
document.getElementById("leftTool").style.width = document.getElementById("leftTool").getElementsByTagName("A")[1].scrollWidth + 'px';
document.getElementById("leftTool").getElementsByTagName("A")[1].href = INNER.leftTool.src;
document.getElementById("leftTool").getElementsByTagName("A")[1].innerHTML = INNER.leftTool.innerText;
} else {
document.getElementById("leftTool").style.display = 'none';
}
navigationCorrect();
// SET CONTENT
var pageElem = document.getElementById("Content");
var i = 1;
if (INNER.content[0].tag) {
tocCreate(INNER.content, pageElem);
} else {
while (INNER.content[i]) {
pageCreateDiv(INNER.content[i], pageElem);
i++;
}
}
setSubstrate();
setBG();
function tocCreate(elem, parent) {
// HEADER
var newDiv = document.createElement(elem[0].tag);
if (elem[0].text) newDiv.innerHTML = elem[0].text;
if (elem[0].id) newDiv.id = elem[0].id;
parent.appendChild(newDiv);
newDiv.appendChild(document.createElement("br"));
newDiv.appendChild(document.createElement("hr"));
delete newDiv;
//LIST
function tocCreateElem(el, par) {
var newElem = document.createElement(el.tag);
if (el.className) newElem.className = el.className;
par.appendChild(newElem);
if (el.tag == 'a') {
if (el.text) newElem.innerHTML = el.text;
if (el.href) newElem.href = el.href;
if (isIE && versionIE < 9) {
newElem.attachEvent("onclick", eventLock);
} else {
newElem.addEventListener("click", eventLock, false);
}
}
//
if (el.content) {
if (el.content[0]) {
var j = 0;
while (el.content[j]) {
tocCreateElem(el.content[j], newElem);
j++;
}
} else {
if (el.content.tag == 'ul') {
tocCreateUl(el.content, newElem);
} else {
tocCreateElem(el.content, newElem);
}
}
}
delete newElem;
}
function tocCreateUl(el, par) {
var newUl = document.createElement(el.tag);
if (el.text) newUl.textContent = el.text;
if (el.id) newUl.id = el.id;
if (el.className) newUl.className = el.className;
par.appendChild(newUl);
var j = 1;
while (el.content[j]) {
tocCreateElem(el.content[j], newUl);
j++;
}
delete newUl;
}
if (elem[1]) {
tocCreateUl(elem[1], parent);
}
checkLongString();
var th = document.getElementById("TocList").offsetHeight + document.getElementById("TocHeader").offsetHeight;
var hh = document.getElementById("PageHeader").offsetHeight + document.getElementById("PageMenu").offsetHeight;
var bodyHeight = document.getElementsByTagName('body')[0].offsetHeight;
if (hh + th > bodyHeight) {
document.getElementById("Page").style.height = th + 30 + 'px';
} else if ((bookHeight > bodyHeight)) {
if (th > bodyHeight) {
document.getElementById("Page").style.height = th + 30 + 'px';
} else {
document.getElementById("Page").style.height = bodyHeight - hh + 'px';
}
}
}
function pageCreateDiv(elem, parent) {
var newDiv = document.createElement('div');
if (elem.className) {
newDiv.className = elem.className;
if (elem.top) newDiv.style.top = elem.top * bookScale + "px";
if (elem.left) newDiv.style.left = elem.left * bookScale + "px";
if (elem.right) newDiv.style.right = elem.right * bookScale + "px";
if (elem.width) newDiv.style.width = elem.width * bookScale + "px";
if (elem.height) newDiv.style.height = elem.height * bookScale + "px";
parent.appendChild(newDiv);
if (elem.content) {
if (elem.content[0]) {
var j = 0;
while (elem.content[j]) {
pageCreateElement(elem.content[j], newDiv);
j++;
}
} else {
pageCreateElement(elem.content, newDiv);
}
}
if (elem.TransformOrigin) newDiv.style[browserPrefix + 'TransformOrigin'] = elem.TransformOrigin;
if (elem.Transform) {
//
if (isIE && versionIE <= 9) {
var angle = elem.Transform.substr(7, elem.Transform.length - 11);
rotateContentAngle(newDiv, angle);
}
newDiv.style[browserPrefix + 'Transform'] = elem.Transform;
}
}
delete newDiv;
}
function pageCreateElement(elem, parent) {
if (elem.tag) {
var newElem = document.createElement(elem.tag);
if (elem.className) newElem.className = elem.className;
if (elem.top) newElem.style.top = elem.top * bookScale + "px";
if (elem.left) newElem.style.left = elem.left * bookScale + "px";
if (elem.right) newElem.style.right = elem.right * bookScale + "px";
if (elem.width) newElem.style.width = elem.width * bookScale + "px";
if (elem.height) newElem.style.height = elem.height * bookScale + "px";
if (elem.text) {
if (browserName == 'firefox') newElem.innerHTML = elem.text;
else newElem.innerText = elem.text;
}
if (elem.fontWeight) newElem.style.fontWeight = elem.fontWeight;
if (elem.fontStyle) newElem.style.fontStyle = elem.fontStyle;
if (elem.src) newElem.style.src = elem.src;
if (elem.zIndex) newElem.style.zIndex = elem.zIndex;
if (elem.backgroundColor) newElem.style.backgroundColor = elem.backgroundColor;
parent.appendChild(newElem);
if (elem.tag == "a") {
newElem.setAttribute('href', (elem.href) ? elem.href : "");
if (isIE && versionIE < 9) {
newElem.attachEvent("onclick", linkLock);
} else {
newElem.addEventListener("click", linkLock, false);
}
}
if (elem.tag == "img") {
newElem.setAttribute('alt', (elem.alt) ? elem.alt : "");
newElem.setAttribute('src', (elem.src) ? elem.src : "");
}
if (elem.tag == "iframe") {
if (elem.type == "YouTube") {
newElem.setAttribute('src', 'http://www.youtube.com/embed/' + elem.id);
newElem.setAttribute('frameborder', '0');
}
if (elem.type == "Vimeo") {
newElem.setAttribute('src', 'http://player.vimeo.com/video/' + elem.id);
newElem.setAttribute('frameborder', '0');
}
}
if (elem.tag == "span") {
//
if (elem.content) {
pageCreateElement(elem.content, newElem);
}
var font = newElem;
var computedStyle = font.currentStyle || window.getComputedStyle(font, null);
if (font.style.fontSize) {
scale = (Math.abs(font.style.fontSize.replace("px", "")) * bookScale);
} else {
scale = (Math.abs(computedStyle.fontSize.replace("px", "")) * bookScale);
}
font.style.fontSize = scale + "px";
if (font.offsetWidth > parent.offsetWidth) {
while ((font.offsetWidth > parent.offsetWidth) && (scale > 1)) {
scale = scale - 1;
font.style.fontSize = scale + "px";
}
} else if (font.offsetWidth < parent.offsetWidth) {
var tt = 0;
while ((font.offsetWidth < parent.offsetWidth) && (tt < 5)) {
scale = scale + 1;
tt++;
font.style.fontSize = scale + "px";
}
if (font.offsetWidth > parent.offsetWidth) {
scale = scale - 1;
font.style.fontSize = scale + "px";
}
}
// TO DO: why don't work?????
//font.style.width = elems[i].offsetWidth + "px";
//font.style.textAlign = "justify";
var diff = (parent.offsetHeight - font.offsetHeight) / 2;
diff = diff.toFixed();
if (diff > 0) { font.style.padding = diff + "px 0px"; }
font.style.top = (parent.offsetHeight - font.offsetHeight) / 2 + "px";
}
if ((elem.content) && (elem.tag != "span")) {
if (elem.content[0]) {
var j = 0;
while (elem.content[j]) {
pageCreateElement(elem.content[j], newElem);
j++;
}
} else {
pageCreateElement(elem.content, newElem);
}
}
delete newElem;
}
}
};
function loadPage(name) {
/*
var myRequest = new XMLHttpRequest();
myRequest.open("GET", "./javascript/" + name + ".js?r=" + Math.random());
myRequest.onload = currentPage;
myRequest.onerror = function () { document.write('Error: can`t load JS') };
myRequest.send();
delete myRequest;
*/
var head = document.getElementsByTagName("head")[0];
if (document.getElementById("PageContent")) {
document.getElementById("PageContent").src = "./javascript/" + name + ".js";
} else {
var script = document.createElement('script');
//script.id = 'PageContent';
script.type = 'text/javascript';
script.src = "./javascript/" + name + ".js";
head.appendChild(script);
}
window.location.hash = (window.location.hash.substr(1) != name) ? name : window.location.hash;
checkPublCom();
}
function hashChangeLoadPage() {
/*
var name = window.location.hash.substr(1);
if (name == "noFlash") {
noFlashNotification();
loadPage(page1);
} else {
loadPage(name);
}
*/
var strP = window.location.hash.split('&');
var hash = strP[0].split('#')[1] ? strP[0].split('#')[1] : '';
var IsPubl = (document.domain.indexOf('publ.com') != -1) ? true : false;
//console.log('strP=' + strP)
var SHOW_NOTE = (window.location.hash.indexOf("noFlash") != -1) ? true : false;
if (isIE && versionIE == 7) {
window.location.replace("./page1.html");
} else {
if (SHOW_NOTE) {
for (var i = 0; i < strP.length; i++) {
if (strP[i].indexOf("img=") != -1) {
var u = strP[i].substr(strP[i].indexOf("img=") + 4);
var imgUrl = IsPubl ? u : "./../../../" + u;
}
if (strP[i].indexOf("h=") != -1) {
var imgUrl = IsPubl ? imgUrl + '&' + strP[i] : imgUrl;
}
if (strP[i].indexOf("w=") != -1) {
var imgUrl = IsPubl ? imgUrl + '&' + strP[i] : imgUrl;
}
if (strP[i].indexOf("i=") != -1) {
var imgUrl = IsPubl ? imgUrl + '&' + strP[i] : imgUrl;
}
//console.log('imgUrl=' + imgUrl)
if (strP[i].indexOf("spread=") != -1) {
var s = strP[i].substr(strP[i].indexOf("spread=") + 7);
if (IsPubl) {
var id = s.split('?')[0].split('/');
id = id[id.length - 1];
var publLink = encodeURIComponent(window.location.host + '/Session/DetectBrowser?returnTo=/' + id + '&type=Flash');
//console.log('publLink=' + publLink)
}
var spreadUrl = IsPubl ? s + '&link=' + window.location.protocol + '//' + publLink : "./../flash/spread.html";
//console.log('spreadUrl = ' + spreadUrl)
}
}
noFlashNotification(imgUrl, spreadUrl);
loadPage('page1');
} else if (hash == "") {
loadPage('page1');
} else {
var name = hash;
if (1 * name > 0) {
name = "page" + name;
loadPage(name);
} else if (name.indexOf("page") != -1) {
loadPage(name);
} else if (name.indexOf("toc") != -1) {
loadPage(name);
} else {
loadPage('page1')
}
}
}
}
function pageContentLoad(iin) {
INNER = iin;
currentPage();
}
function bindReady(handler) {
var called = false;
function ready() {
if (called) return
called = true
setTimeout(handler, 50);
}
if (document.addEventListener) {
document.addEventListener("DOMContentLoaded", function () {
ready();
}, false)
} else if (document.attachEvent) {
// (3.1)
if (document.documentElement.doScroll && window == window.top) {
function tryScroll() {
if (called) return
if (!document.body) return
try {
document.documentElement.doScroll("left");
ready();
} catch (e) {
setTimeout(tryScroll, 0);
}
}
tryScroll();
}
document.attachEvent("onreadystatechange", function () {
if (document.readyState === "complete") {
ready();
}
})
}
if (window.addEventListener)
window.addEventListener('load', ready, false)
else if (window.attachEvent)
window.attachEvent('onload', ready)
/* else
window.onload=ready
*/
}
function browserVer() {
var browser = navigator.userAgent.toLowerCase();
var UA = browser.match(/(opera|ie|firefox|chrome|version)[\s\/:]([\w\d\.]+)?.*?(safari|version[\s\/:]([\w\d\.]+)|$)/) || [null, 'unknown', 0];
browserName = (UA[1] == 'version') ? UA[3] : UA[1];
switch (browserName) {
case 'safari':
browserPrefix = 'webkit';
break
case 'firefox':
browserPrefix = 'Moz';
break
case 'opera':
browserPrefix = 'O';
break
case 'ie':
browserPrefix = 'ms';
isIE = true;
if (document.all && !document.querySelector) {
versionIE = 7;
}
if (document.all && document.querySelector && !document.getElementsByClassName) {
versionIE = 8;
}
if (document.all && document.querySelector && document.getElementsByClassName && !window.atob) {
versionIE = 9;
}
if (document.all && document.querySelector && document.getElementsByClassName && window.atob) {
versionIE = 10;
browserPrefix = '';
}
break
case 'chrome':
browserPrefix = 'webkit';
break
case 'unknown':
browserPrefix = 'webkit';
break
};
}
function rotateContent(elem) {
var angle = elem.style.transform.substr(7, elem.style.transform.length - 11);
angle = angle.replace(",", ".");
elem.style.overflow = "visible";
var divWidthIn = 0;
var sizeopt = { w: elem.offsetWidth, h: elem.offsetHeight };
var cos = Math.cos(angle);
var sin = Math.sin(angle);
if (1 * versionIE < 9) {
elem = elem.childNodes[0];
var filter = 'progid:DXImageTransform.Microsoft.Matrix(sizingMethod="auto expand", M11 = ' + cos + ', M12 = ' + (-sin) + ', M21 = ' + sin + ', M22 = ' + cos + ')';
elem.style.filter = filter;
var w = elem.offsetWidth;
var h = elem.offsetHeight;
if (Math.PI / 2 <= angle && angle < Math.PI) {
elem.style.marginLeft = Math.round(sizeopt.w * cos) + "px";
} else if (Math.PI <= angle && angle < 3 * Math.PI / 2) {
elem.style.marginLeft = Math.round(sizeopt.w * cos) + "px";
elem.style.marginTop = Math.round(sizeopt.w * sin) + "px";
} else if (3 * Math.PI / 2 <= angle && angle < 2 * Math.PI) {
elem.style.marginTop = Math.round(sizeopt.w * sin) + "px";
}
} else if (1 * versionIE == 9) {
elem.style[browserPrefix + 'TransformOrigin'] = "0 0 0";
elem.style[browserPrefix + 'Transform'] = " rotate(" + angle + "rad)";
elem.style.left = (1 * (elem.style.left.replace("px", "")) - (elem.style.width.replace("px", "")) / 2 + Math.round(sizeopt.w * cos / 2)) + "px";
elem.style.top = (1 * (elem.style.top.replace("px", "")) + Math.round(sizeopt.w * sin / 2)) + "px";
} else {
elem.style[browserPrefix + 'transformOrigin'] = "0 0 0";
elem.style[browserPrefix + 'transform'] = " rotate(" + angle + "rad)";
}
}
function rotateContentAngle(elem, angle) {
//var angle = elem.style.transform.substr(7, elem.style.transform.length - 11);
angle = angle.replace(",", ".");
elem.style.overflow = "visible";
var divWidthIn = 0;
var sizeopt = { w: elem.offsetWidth, h: elem.offsetHeight };
var cos = Math.cos(angle);
var sin = Math.sin(angle);
if (1 * versionIE < 9) {
elem = elem.childNodes[0];
var filter = 'progid:DXImageTransform.Microsoft.Matrix(sizingMethod="auto expand", M11 = ' + cos + ', M12 = ' + (-sin) + ', M21 = ' + sin + ', M22 = ' + cos + ')';
elem.style.filter = filter;
var w = elem.offsetWidth;
var h = elem.offsetHeight;
if (Math.PI / 2 <= angle && angle < Math.PI) {
elem.style.marginLeft = Math.round(sizeopt.w * cos) + "px";
} else if (Math.PI <= angle && angle < 3 * Math.PI / 2) {
elem.style.marginLeft = Math.round(sizeopt.w * cos) + "px";
elem.style.marginTop = Math.round(sizeopt.w * sin) + "px";
} else if (3 * Math.PI / 2 <= angle && angle < 2 * Math.PI) {
elem.style.marginTop = Math.round(sizeopt.w * sin) + "px";
}
} else if (1 * versionIE == 9) {
elem.style[browserPrefix + 'TransformOrigin'] = "0 0 0";
elem.style[browserPrefix + 'Transform'] = " rotate(" + angle + "rad)";
elem.style.left = (1 * (elem.style.left.replace("px", "")) - (elem.style.width.replace("px", "")) / 2 + Math.round(sizeopt.w * cos / 2)) + "px";
elem.style.top = (1 * (elem.style.top.replace("px", "")) + Math.round(sizeopt.w * sin / 2)) + "px";
} else {
elem.style[browserPrefix + 'transformOrigin'] = "0 0 0";
elem.style[browserPrefix + 'transform'] = " rotate(" + angle + "rad)";
}
}
function setBG() {
if (isIE && versionIE != 9 && versionIE != 10) {
var elem = document.getElementById('bodyBg');
var computedStyle = elem.currentStyle || window.getComputedStyle(elem, null);
if (computedStyle.backgroundImage != "none") {
elem.innerHTML = "";
elem.style.backgroundImage = "none";
}
}
}
function setSubstrate() {
if (isIE && versionIE != 9 && versionIE != 10) {
var elem = document.getElementById('Content');
var computedStyle = elem.currentStyle || window.getComputedStyle(elem, null);
if (computedStyle.backgroundImage != "none") {
var imgBG = document.createElement('img');
imgBG.src = computedStyle.backgroundImage.substr(5, computedStyle.backgroundImage.length - 7);
imgBG.style.width = elem.offsetWidth + "px";
imgBG.style.height = elem.offsetHeight + "px";
imgBG.style.position = "absolute";
imgBG.style.top = "0px";
imgBG.style.left = "0px";
(elem.childNodes[0]) ? elem.insertBefore(imgBG, elem.childNodes[0]) : elem.appendChild(imgBG);
}
}
}
function checkTocInit() {
//browserVer();
paramSet();
if (isIE && versionIE < 9) {
window.attachEvent("onresize", navigationCorrect);
} else {
window.addEventListener("resize", navigationCorrect, false);
}
bookWidth = bookScale * bookWidth;
var windowWidth = getWidth();
if (bookWidth < bookMinWidth) {
bookScale = bookMinWidth / bookWidth;
bookWidth = bookMinWidth;
} else if (bookWidth > windowWidth - 300) {
if (bookMinWidth > windowWidth - 300) {
bookScale = bookMinWidth / bookWidth;
bookWidth = bookMinWidth;
} else {
bookScale = (windowWidth - 300) / bookWidth;
bookWidth = windowWidth - 300;
}
}
checkTocSize();
navigationCorrect();
//setBG();
}
function checkLongString() {
var item = document.getElementsByTagName('td')
for (var i = 0; i < item.length; i++) {
var cell = item[i].parentNode.parentNode.parentNode;
cell = (cell.tagName == "LI") ? cell : (cell.parentNode.tagName == "LI") ? cell.parentNode : NaN;
if (item[i].offsetWidth > cell.offsetWidth - 40) {
var cellWidth = cell.offsetWidth - 40;
var str = item[i].getElementsByTagName('a');
if (str[0].innerText) { str[0].innerText = str[0].innerText.substring(0, cellWidth / 8) + '...'; }
if (str[0].innerHTML) { str[0].innerHTML = str[0].innerHTML.substring(0, cellWidth / 8) + '...'; }
}
}
}
function getWidth() {
if (isIE && versionIE != 9) {
var windowWidth = document.documentElement.clientWidth;
} else {
var windowWidth = document.getElementsByTagName('body')[0].offsetWidth;
}
return windowWidth;
}
function getHeight() {
if (isIE && versionIE != 9) {
var windowHeight = document.documentElement.clientHeight;
} else {
var windowHeight = document.getElementsByTagName('body')[0].offsetHeight;
}
return windowHeight;
}
function getClientWidth() {
return 'CSS1Compat' && !window.opera ? document.documentElement.clientWidth : document.body.clientWidth;
}
function getClientHeight() {
//return 'CSS1Compat' && !window.opera ? document.documentElement.clientHeight : document.body.clientHeight;
return document.documentElement.clientHeight;
}
function checkTocSize() {
var ww = document.getElementById("Page").offsetWidth;
if (ww != bookWidth) {
document.getElementById("Book").style.width = bookWidth + 'px';
document.getElementById("PageHeader").style.width = bookWidth + 'px';
document.getElementById("PageMenu").style.width = bookWidth + 'px';
document.getElementById("Page").style.width = bookWidth + 'px';
if (document.getElementById("PageCopyright")) {
document.getElementById("PageCopyright").style.width = bookWidth + 'px';
}
}
checkLongString();
var th = document.getElementById("TocList").offsetHeight + document.getElementById("TocHeader").offsetHeight;
var hh = document.getElementById("PageHeader").offsetHeight + document.getElementById("PageMenu").offsetHeight;
var bodyHeight = document.getElementsByTagName('body')[0].offsetHeight;
if (hh + th > bodyHeight) {
document.getElementById("Page").style.height = th + 30 + 'px';
} else if ((bookHeight > bodyHeight)) {
if (th > bodyHeight) {
document.getElementById("Page").style.height = th + 30 + 'px';
} else {
document.getElementById("Page").style.height = bodyHeight - hh + 'px';
}
}
}
function checkPageInit() {
browserVer();
paramSet();
if (isIE && versionIE < 9) {
window.attachEvent("onresize", navigationCorrect);
} else {
window.addEventListener("resize", navigationCorrect, false);
}
var windowWidth = getWidth();
bookScale = 1.2;
if (bookWidth < bookMinWidth) {
bookScale = bookMinWidth / bookWidth;
bookWidth = bookMinWidth;
bookHeight = bookScale * bookHeight;
zoom(bookScale);
} else if (bookWidth > windowWidth - 300) {
if (bookMinWidth > windowWidth - 300) {
bookScale = bookMinWidth / bookWidth;
bookWidth = bookMinWidth;
bookHeight = bookScale * bookHeight;
zoom(bookScale);
} else {
bookScale = (windowWidth - 300) / bookWidth;
bookWidth = windowWidth - 300;
bookHeight = bookScale * bookHeight;
zoom(bookScale);
}
} else {
bookWidth = bookScale * bookWidth;
bookHeight = bookScale * bookHeight;
zoom(bookScale);
}
checkPageSize();
navigationCorrect();
//setBG();
setSubstrate();
}
function checkPageSize() {
var ww = document.getElementById("Page").offsetWidth;
if (ww != bookWidth) {
document.getElementById("Book").style.width = bookWidth + 'px';
document.getElementById("PageHeader").style.width = bookWidth + 'px';
document.getElementById("PageMenu").style.width = bookWidth + 'px';
document.getElementById("Page").style.width = bookWidth + 'px';
if (document.getElementById("PageCopyright")) {
document.getElementById("PageCopyright").style.width = bookWidth + 'px';
}
}
if (document.getElementById("Page").offsetHeight != bookHeight) {
document.getElementById("Page").style.height = bookHeight + 'px';
}
if (bookHeight + 80 > getClientHeight()) {
fixedNavigation();
}
}
function fixedNavigation() {
document.getElementById("leftTool").style.left = (document.getElementById("leftTool").offsetLeft + document.getElementById("leftTool").parentNode.offsetLeft) + "px";
document.getElementById("leftTool").style.top = getClientHeight() / 2 + "px";
document.getElementById("leftTool").style.position = "fixed";
document.getElementById("rightTool").style.left = (document.getElementById("rightTool").offsetLeft + document.getElementById("rightTool").parentNode.offsetLeft) + "px";
document.getElementById("rightTool").style.top = getClientHeight() / 2 + "px";
document.getElementById("rightTool").style.position = "fixed";
}
function paramSet() {
bookWidth = document.getElementById("Page").offsetWidth;
var vW = document.getElementById("boxVersion").offsetWidth;
var mW = document.getElementById("boxMenu").offsetWidth;
bookMinWidth = (vW + mW + 40 < 500) ? 500 : vW + mW + 40;
bookHeight = document.getElementById("Page").offsetHeight;
bookScale = 1.2;
}
function zoom(step) {
var item = document.getElementById('Content');
var elems = item.childNodes;
for (var i = 0; i < elems.length; i++) {
if (elems[i].tagName == "DIV") {
if (step != 1) {
if (!elems[i].id) {
elems[i].style.top = (1 * (elems[i].style.top.replace("px", "")) * step) + "px";
elems[i].style.left = (1 * (elems[i].style.left.replace("px", "")) * step) + "px";
elems[i].style.width = (Math.abs(elems[i].style.width.replace("px", "")) * step) + "px";
elems[i].style.height = (Math.abs(elems[i].style.height.replace("px", "")) * step) + "px";
var img = elems[i].getElementsByTagName('img')[0];
if (img) {
var computedStyle = img.currentStyle || window.getComputedStyle(elems[i], null);
img.style.top = (1 * img.style.width.replace("px", "") * step) + "px";
img.style.left = (1 * img.style.width.replace("px", "") * step) + "px";
img.style.width = (1 * img.style.width.replace("px", "") * step) + "px";
img.style.height = (1 * img.style.height.replace("px", "") * step) + "px";
}
var video = elems[i].getElementsByTagName('iframe')[0];
if (video) {
var computedStyle = video.currentStyle || window.getComputedStyle(elems[i], null);
video.style.top = (1 * video.style.width.replace("px", "") * step) + "px";
video.style.left = (1 * video.style.width.replace("px", "") * step) + "px";
video.style.width = (1 * video.style.width.replace("px", "") * step) + "px";
video.style.height = (1 * video.style.height.replace("px", "") * step) + "px";
}
}
}
var font = elems[i].getElementsByTagName('span')[0];
if (font) {
var computedStyle = font.currentStyle || window.getComputedStyle(font, null);
if (font.style.fontSize) {
scale = (Math.abs(font.style.fontSize.replace("px", "")) * step);
} else {
scale = (Math.abs(computedStyle.fontSize.replace("px", "")) * step);
}
font.style.fontSize = scale + "px";
if (font.offsetWidth > elems[i].offsetWidth) {
while ((font.offsetWidth > elems[i].offsetWidth) && (scale > 1)) {
scale = scale - 1;
font.style.fontSize = scale + "px";
}
} else if (font.offsetWidth < elems[i].offsetWidth) {
var tt = 0;
while ((font.offsetWidth < elems[i].offsetWidth) && (tt < 5)) {
scale = scale + 1;
tt++;
font.style.fontSize = scale + "px";
}
if (font.offsetWidth > elems[i].offsetWidth) {
scale = scale - 1;
font.style.fontSize = scale + "px";
}
}
// TO DO: why don't work?????
//font.style.width = elems[i].offsetWidth + "px";
//font.style.textAlign = "justify";
var diff = ((elems[i].offsetHeight - font.offsetHeight) / 2);
diff = diff.toFixed();
if (diff > 0) { font.style.padding = diff + "px 0px"; }
font.style.top = ((elems[i].offsetHeight - font.offsetHeight) / 2) + "px";
}
if (isIE && elems[i].style.transform) {
rotateContent(elems[i]);
}
}
}
}
function checkPublCom() {
if (document.domain.indexOf('publ.com') != -1) {
var parts = document.URL.split('/');
var prevpart = '';
for (var i = 0; i < parts.length; i++) {
if (prevpart.toLowerCase() == 'bookdata')
return replaceBackLink(parts[i]);
if (parts[i].toLowerCase() == 'seo' || parts[i].toLowerCase() == 'basic-html')
return replaceBackLink(prevpart);
prevpart = parts[i];
}
} else {
return replaceBackLink();
//console.log(document.getElementById('fullVersionLink').href.indexOf('#'))
}
}
function replaceBackLink(id) {
var link = document.getElementById('fullVersionLink');
if (link) {
var hash = '';
sss = link.href.split('#');
if (sss[1]) {
hash = '#' + sss[1];
} else {
hash = '';
}
/*
var hash = window.location.hash;
if (hash.indexOf('toc') != -1) {
hash = -1;
} else {
hash = '#/' + hash.substr(4 + 1) + '/';
}
*/
if (hash != -1)
link.href = (document.domain.indexOf('publ.com') != -1) ? 'http://' + document.domain + '/' + id + hash : (link.href.indexOf('#') != -1) ? link.href.substr(0, link.href.indexOf('#')) + hash : link.href + hash;
else
link.href = (document.domain.indexOf('publ.com') != -1) ? 'http://' + document.domain + '/' + id : (link.href.indexOf('#') != -1) ? link.href.substr(0, link.href.indexOf('#')) : link.href;
}
}
function checkIndex() {
browserVer();
if (!(isIE && versionIE == 7)) {
var parts = document.URL.split('/');
var hash = parts[parts.length - 1].split('.')[0];
var link = '';
for (var i = 0; i < parts.length - 1; i++) {
link += parts[i] + '/';
}
link += 'index.html#' + hash;
window.location.replace(link);
}
}