\n'); } document.write(''); } Checker_Flash.prototype.setVersionInfo = function(major, minor) { this.versionArrived = true; this.major = Number(major); this.minor = Number(minor); } } // // *** Windows Media Player checker // // checks Windows Media Player 7up versions function Checker_WindowsMedia() { this.title = "Windows Media Player"; this.requiredMajor = 7; this.requiredMinor = 0; Checker_WindowsMedia.prototype.init = function() { this.writeWindowsMediaChecker(); } Checker_WindowsMedia.prototype.check = function(timeout) { var valid = false; var version = UNKNOWN_VERSION; var detectObject = document.detectWMP; var major = -1; var minor = -1; if (typeof(detectObject) != 'undefined') { valid = true; if (typeof(detectObject.versionInfo) != 'undefined') { version = detectObject.versionInfo; currentVersionString = detectObject.versionInfo; parts = version.split("."); major = parts[0]; minor = parts[1]; valid = checkValidVersion(major, minor, this.requiredMajor, this.requiredMinor); } else { // if ie && no version info = invalid version var browserChecker = Checker_Browser.instance; if (typeof(browserChecker) != 'undefined') { if (browserChecker.getKeyValue(browserChecker.key_ie)) { valid = false; } } else { valid = false; } } } if (valid || timeout) { var result = new RequirementResult(createVersionString(this.requiredMajor, this.requiredMinor), version, valid); return result; } else { return null; } } // Writes checker object and embed tags for Windows Media Player detection Checker_WindowsMedia.prototype.writeWindowsMediaChecker = function() { document.write(''); } } // // *** Global requirements functions *** // var UNKNOWN_VERSION = "unknown"; // represents one requirement check result function RequirementResult(requiredVersion, currentVersion, valid) { this.requiredVersion = requiredVersion; this.currentVersion = currentVersion; this.valid = valid; } // array for instance tracking Checker.instance = null; // main checker class function Checker(contentContainer) { this.checkInterval = 500; this.timeoutCount = 4; // means checkerInterval runs timeoutCount times this.checkers = new Array(); this.contentContainer = contentContainer; this.installUrlBase = ""; Checker.instance = this; this.checkerResults = null; this.checkerIntervalId = 0; this.currentCheckCount = 0; this.dataWriter = null; Checker.prototype.addChecker = function(checker) { this.checkers[this.checkers.length] = checker; } Checker.prototype.start = function() { this.dataWriter = new DataWriter(this.contentContainer); this.dataWriter.writeDIV("A szoftverkövetelmények ellenőrzése folyamatban, kérem várjon...", "waitMessage"); // initialize checkers for (var i = 0; i < this.checkers.length; i++) { this.checkers[i].init(); } if (this.checkerIntervalId != 0) { clearInterval(this.checkerIntervalId); } this.checkerResults = new Array(); this.checkerIntervalId = 0; this.currentCheckCount = 0; // start checking this.checkerIntervalId = setInterval("Checker.instance.checkerIntervalFunction()", 500); } Checker.prototype.checkerIntervalFunction = function() { this.currentCheckCount++; var timeout = (this.currentCheckCount >= this.timeoutCount); var checkerCount = this.checkers.length; for (var i = 0; i < checkerCount; i++) { try { if (typeof(this.checkerResults[i]) == 'undefined' || this.checkerResults[i] == null) { this.checkerResults[i] = this.checkers[i].check(timeout); } } catch (error) { alert(error); } } if (timeout) { clearInterval(this.checkerIntervalId); this.evaluateResults(); } } Checker.prototype.evaluateResults = function() { allValid = true; var checkerCount = this.checkers.length; for (var i = 0; i < checkerCount; i++) { var result = this.checkerResults[i]; if (typeof(result) == 'undefined' || result == null || !result.valid) { allValid = false; break; } } if (allValid) { // everything is ok this.onFinish(true); } else { this.writeResults(this.dataWriter); } } Checker.prototype.writeResults = function(dataWriter) { dataWriter.clear(); dataWriter.beginDIV(); dataWriter.writeP("A jelenlegi szoftverkörnyezet nem felel meg egy vagy több szoftverkövetelménynek. " + "Kérem, telepítse a szükséges szoftvereket az alábbi táblázat információi alapján."); dataWriter.writeP("A telepítés után kérem, indítsa újra a böngészőt!", "warningMessage"); dataWriter.endDIV(); dataWriter.beginTable("mainTable"); // write header dataWriter.beginTableHeader(); dataWriter.beginRow(); dataWriter.writeTH("Szoftver"); dataWriter.writeTH("Szükséges verzió"); dataWriter.writeTH("Jelenlegi verzió"); dataWriter.writeTH("Eredmény"); dataWriter.endRow(); dataWriter.endTableHeader(); dataWriter.beginTableBody(); // write body var checkerCount = this.checkers.length; for (var i = 0; i < checkerCount; i++) { var checker = this.checkers[i]; var result = this.checkerResults[i]; this.writeResult(dataWriter, checker, result); } dataWriter.endTableBody(); dataWriter.endTable(); dataWriter.writeButton("Tovább >", this.nextButtonClicked); } Checker.prototype.nextButtonClicked = function() { if (confirm("Amennyiben telepítette a szükséges szoftvereket, ajánlott, hogy zárja be a böngészőt, majd indítsa újra a tartalmat. Ellenkező esetben problémák adódhatnak a futtatással. Mégis tovább szeretne lépni?")) { Checker.instance.onFinish(false); } } // event method Checker.prototype.onFinish = function(allValid) { } Checker.prototype.writeResult = function(dataWriter, checker, checkerResult) { dataWriter.beginRow(); dataWriter.writeTD(checker.title); var MSG_NOINFORMATION = "Nincs információ"; if (typeof(checkerResult) != 'undefined' && checkerResult != null) { dataWriter.writeTD(checkerResult.requiredVersion); dataWriter.writeTD(checkerResult.currentVersion != null && checkerResult.currentVersion != UNKNOWN_VERSION ? checkerResult.currentVersion : MSG_NOINFORMATION); } else { dataWriter.writeTD(MSG_NOINFORMATION); dataWriter.writeTD(MSG_NOINFORMATION); } var CSS_RESULTIMAGE = "resultImage"; var CSS_RESULTCELL = "resultCell"; dataWriter.beginTD(); dataWriter.beginDIV("result"); if (typeof(checkerResult) != 'undefined' && checkerResult.valid) { dataWriter.beginDIV(CSS_RESULTIMAGE); dataWriter.writeImage("interface/buttons_graphics/prereq_valid.gif"); dataWriter.endDIV(); } else { dataWriter.beginTable("resultTable"); dataWriter.beginTableBody(); dataWriter.beginRow(); dataWriter.beginTD(CSS_RESULTIMAGE); dataWriter.beginDIV(CSS_RESULTIMAGE); dataWriter.writeImage("interface/buttons_graphics/warninga_small.gif"); dataWriter.endDIV(); dataWriter.endTD(); dataWriter.beginTD(); dataWriter.beginDIV("resultMessage"); dataWriter.beginP(); var message = (typeof(checker.getInvalidMessage) != 'undefined') ? checker.getInvalidMessage() : "Nem felel meg a szükséges rendszerkövetelményeknek." dataWriter.writeText(message); dataWriter.endP(); dataWriter.endDIV(); if (typeof(checker.getInstallLink) != 'undefined') { var linkInfo = checker.getInstallLink(); this.createLink(dataWriter, linkInfo); } if (typeof(checker.getHelpLink) != 'undefined') { var linkInfo = checker.getHelpLink(); this.createLink(dataWriter, linkInfo); } dataWriter.endTD(); dataWriter.endRow(); dataWriter.endTableBody(); dataWriter.endTable(); } dataWriter.endDIV(); dataWriter.endTD(); dataWriter.endRow(); } } // linkinfo is array, contains title, href and optional baseUrl for installer Checker.prototype.createLink = function(dataWriter, linkInfo) { dataWriter.beginDIV("resultLink"); var base = (linkInfo.length > 2) ? linkInfo[2] : this.installUrlBase; dataWriter.writeLink(linkInfo[0], base + "/" + linkInfo[1], "_blank"); dataWriter.endDIV(); } // tool functions function checkValidVersion(major, minor, requiredMajor, requiredMinor) { var valid; if (major == requiredMajor) { valid = minor >= requiredMinor; } else if (major > requiredMajor) { valid = true; } else { valid = false; } return valid; } function createVersionString(major, minor) { return major + "." + minor; } // class for writing results function DataWriter(dataHolder) { this.dataHolder = dataHolder; this.activeTable = null; this.activeTableBody = null; this.activeTableHeader = null; this.activeRow = null; this.activeCell = null; this.activeContentTarget = new Array(); DataWriter.prototype.getDataHolder = function() { return this.dataHolder; } DataWriter.prototype.setActiveContentTarget = function(target) { this.activeContentTarget[this.activeContentTarget.length] = target; } DataWriter.prototype.getActiveContentTarget = function() { return this.activeContentTarget[this.activeContentTarget.length - 1]; } DataWriter.prototype.clearActiveContentTarget = function() { this.activeContentTarget.length--; } // initializes first target for data writing this.setActiveContentTarget(this.dataHolder); DataWriter.prototype.clear = function() { var dataHolder = this.getDataHolder(); var childNodes = dataHolder.childNodes; var count = childNodes.length; for (var i = count - 1; i >= 0; i--) { dataHolder.removeChild(childNodes[i]); } } DataWriter.prototype.createHtmlElement = function(name, cssClass) { var element = document.createElement(name); if (typeof(cssClass) != 'undefined') { element.className = cssClass; } return element; } DataWriter.prototype.createDIVElement = function(cssClass) { return this.createHtmlElement("div", cssClass); } DataWriter.prototype.writeDIV = function(text, cssClass) { var div = this.createDIVElement(cssClass); var divText = document.createTextNode(text); div.appendChild(divText); this.getActiveContentTarget().appendChild(div); } DataWriter.prototype.writeText = function(text) { var text = document.createTextNode(text); this.getActiveContentTarget().appendChild(text); } DataWriter.prototype.writeImage = function(src, alt) { var img = document.createElement("img"); img.setAttribute("src", src); if (typeof(alt) != 'undefined') { img.setAttribute("alt", alt); } this.getActiveContentTarget().appendChild(img); } DataWriter.prototype.beginElement = function(name, cssClass) { var element = this.createHtmlElement(name, cssClass); this.setActiveContentTarget(element); } DataWriter.prototype.endElement = function() { var element = this.getActiveContentTarget(); this.clearActiveContentTarget(); this.getActiveContentTarget().appendChild(element); } DataWriter.prototype.beginDIV = function(cssClass) { this.beginElement("div", cssClass); } DataWriter.prototype.endDIV = function() { this.endElement(); } DataWriter.prototype.beginP = function(cssClass) { this.beginElement("p", cssClass); } DataWriter.prototype.endP = function() { this.endElement(); } DataWriter.prototype.writeP = function(text, cssClass) { this.beginP(cssClass); this.writeText(text); this.endP(); } DataWriter.prototype.writeLink = function(title, href, target, cssClass) { var a = document.createElement("a"); var aText = document.createTextNode(title); if (typeof(target) != 'undefined') { a.setAttribute("target", target); } if (typeof(cssClass) != 'undefined') { a.className = cssClass; } a.setAttribute("href", href); a.appendChild(aText); this.getActiveContentTarget().appendChild(a); } DataWriter.prototype.writeHeader = function(headerTitle) { var header = document.createElement("H1"); var headerText = document.createTextNode(headerTitle); header.appendChild(headerText); this.getDataHolder().appendChild(header); } DataWriter.prototype.beginTable = function(cssClass) { this.beginElement("table", cssClass); } DataWriter.prototype.beginTableBody = function() { this.beginElement("tbody"); } DataWriter.prototype.endTableBody = function() { this.endElement(); } DataWriter.prototype.beginTableHeader = function() { this.beginElement("thead"); } DataWriter.prototype.endTableHeader = function() { this.endElement(); } DataWriter.prototype.endTable = function() { this.endElement(); } DataWriter.prototype.beginRow = function() { this.beginElement("tr"); } DataWriter.prototype.endRow = function() { this.endElement(); } DataWriter.prototype.beginTDTH = function(isTH, cssClass) { this.beginElement(isTH ? "th" : "td", cssClass); } DataWriter.prototype.endTDTH = function() { this.endElement(); } DataWriter.prototype.beginTD = function(cssClass) { this.beginTDTH(false, cssClass); } DataWriter.prototype.endTD = function() { this.endTDTH(); } DataWriter.prototype.writeTDTH = function(text, isTH) { var cell = document.createElement(isTH ? "th" : "td"); var cellText = document.createTextNode(text); cell.appendChild(cellText); this.getActiveContentTarget().appendChild(cell); } DataWriter.prototype.writeTH = function(text) { this.writeTDTH(text, true); } DataWriter.prototype.writeTD = function(text) { this.writeTDTH(text, false); } DataWriter.prototype.writeButton = function(title, clickFunction) { var button = document.createElement("input"); if (button.addEventListener) { button.addEventListener('click', clickFunction, false); } else { button.attachEvent('onclick', clickFunction); } button.setAttribute("type", "submit"); button.setAttribute("value", title); this.getActiveContentTarget().appendChild(button); } }