var widgetName = NDgetKeyValue("Info.plist", "CFBundleName"); var location = 'http://novisdesign.net/WidgetResorces/Updates/ChiPet.txt'; var current = NDgetKeyValue("Info.plist", "CFBundleVersion"); var downloadPage = 'http://www.novisdesign.net/Widgets?chipet'; var checkDays = 5; var newestVersion; function NDupdate() { if (window.widget) { var lastDate = widget.preferenceForKey('lastDate'); if (lastDate != undefined) { NDcheckAmount(); } else { NDsetTimeForNow(); } } } var NDreq; function NDcheck() { NDreq = new XMLHttpRequest(); NDreq.onreadystatechange = NDcompare; NDreq.open("GET", location, true); NDreq.setRequestHeader("Cache-Control", "no-cache"); NDreq.send(null); } function NDcompare() { if (NDreq.readyState == 4) { if (NDreq.status == 200) { var newNumber = NDreq.responseText; if (newNumber > current) { newestVersion = newNumber; NDshow() } else { NDaddTime() } } } } var w = window.innerWidth; var h = window.innerHeight; var leftPx = Math.round(((w - 20) - 54) / 2) var topPx = Math.round(((h - 30) - 36) / 2) function NDshow() { if (!document.getElementById('NDmain')) { var newElm = document.createElement('div'); newElm.id = 'NDmain'; var title = document.createElement('div'); title.id = 'NDtitle'; title.innerHTML = 'Update Avaliable'; var update = document.createElement('div'); update.id = 'NDupdate'; update.innerHTML = widgetName + ' version ' + newestVersion + '
now available'; var buttons = document.createElement('div'); buttons.id = 'NDbuttons'; var bElm = document.createElement('div'); bElm.id = 'NDbElm'; bElm.innerHTML = ' '; buttons.appendChild(bElm); var top = document.createElement('div'); top.id = 'NDtop'; var topFill = document.createElement('div'); topFill.id = 'NDtopFill'; var topLeft = document.createElement('div'); topLeft.id = 'NDtopLeft'; var topRight = document.createElement('div'); topRight.id = 'NDtopRight'; top.appendChild(topFill); top.appendChild(topLeft); top.appendChild(topRight); var mid = document.createElement('div'); mid.id = 'NDmid'; var midLogo = document.createElement('div'); midLogo.id = 'NDmidLogo'; midLogo.style.left = leftPx + 'px'; midLogo.style.top = topPx + 'px'; var midTop = document.createElement('div'); midTop.id = 'NDmidTop'; midTop.style.height = topPx + 'px'; var midBottom = document.createElement('div'); midBottom.id = 'NDmidBottom'; midBottom.style.top = topPx + 36 + 'px'; var midLeft = document.createElement('div'); midLeft.id = 'NDmidLeft'; midLeft.style.top = topPx + 'px'; midLeft.style.width = leftPx + 'px'; var midRight = document.createElement('div'); midRight.id = 'NDmidRight'; midRight.style.top = topPx + 'px'; midRight.style.left = leftPx + 54 + 'px'; mid.appendChild(midLogo); mid.appendChild(midTop); mid.appendChild(midBottom); mid.appendChild(midLeft); mid.appendChild(midRight); var bottom = document.createElement('div'); bottom.id = 'NDbottom'; var bottomFill = document.createElement('div'); bottomFill.id = 'NDbottomFill'; var bottomLeft = document.createElement('div'); bottomLeft.id = 'NDbottomLeft'; var bottomRight = document.createElement('div'); bottomRight.id = 'NDbottomRight'; bottom.appendChild(bottomFill); bottom.appendChild(bottomLeft); bottom.appendChild(bottomRight); var gloss = document.createElement('div'); gloss.id = 'NDgloss'; var glossFill = document.createElement('div'); glossFill.id = 'NDglossFill'; var glossLeft = document.createElement('div'); glossLeft.id = 'NDglossLeft'; var glossRight = document.createElement('div'); glossRight.id = 'NDglossRight'; gloss.appendChild(glossFill); gloss.appendChild(glossLeft); gloss.appendChild(glossRight); var shadow = document.createElement('div'); shadow.id = 'NDshadow'; var shadowBottom = document.createElement('div'); shadowBottom.id = 'NDshadowBottom'; var shadowBottomLeft = document.createElement('div'); shadowBottomLeft.id = 'NDshadowBottomLeft'; var shadowBottomFill = document.createElement('div'); shadowBottomFill.id = 'NDshadowBottomFill'; var shadowBottomRight = document.createElement('div'); shadowBottomRight.id = 'NDshadowBottomRight'; shadowBottom.appendChild(shadowBottomLeft) shadowBottom.appendChild(shadowBottomFill) shadowBottom.appendChild(shadowBottomRight) var shadowRight = document.createElement('div'); shadowRight.id = 'NDshadowRight'; var shadowRightFill = document.createElement('div'); shadowRightFill.id = 'NDshadowRightFill'; var shadowTopRight = document.createElement('div'); shadowTopRight.id = 'NDshadowTopRight'; shadowRight.appendChild(shadowRightFill) shadowRight.appendChild(shadowTopRight) shadow.appendChild(shadowBottom) shadow.appendChild(shadowRight) newElm.appendChild(title); newElm.appendChild(update); newElm.appendChild(buttons); newElm.appendChild(top); newElm.appendChild(mid); newElm.appendChild(bottom); newElm.appendChild(gloss); newElm.appendChild(shadow); document.body.appendChild(newElm) } } function NDgoToDownlaod() { if (window.widget) { widget.openURL(downloadPage); } } function NDaddTime() { if (window.widget) { var d = new Date(); var mil = d.getTime(); widget.setPreferenceForKey(mil,'lastDate'); } document.body.removeChild(document.getElementById('NDmain')); } function NDcheckAmount() { if (window.widget) { var d = new Date(); var lastDate = widget.preferenceForKey('lastDate'); var nowDate = d.getTime(); if ((nowDate - lastDate) > (86400000 * checkDays)) { NDcheck(); } } } function NDsetTimeForNow() { if (window.widget) { var d = new Date(); var mil = d.getTime(); widget.setPreferenceForKey(mil,'lastDate'); } } // Adapted from Jon Brown's Tutorial function NDgetKeyValue(plist, key) { var xml_http = new XMLHttpRequest(); xml_http.open("GET", plist, false); xml_http.send(null); var xml = xml_http.responseXML; var key_value = null; var nodes = xml.getElementsByTagName("dict")[0].childNodes; for (var i=0; i < nodes.length; i++) { if (nodes[i].nodeType == 1 && nodes[i].tagName.toLowerCase() == "key" && nodes[i].firstChild.data == key) { if (nodes[i+2].tagName.toLowerCase() != "array") { key_value = nodes[i+2].firstChild.data; } else { key_value = new Array(); var ar_nodes = nodes[i+2].childNodes; for (var j=0; j < ar_nodes.length; j++) { if (ar_nodes[j].nodeType == 1) key_value.push(ar_nodes[j].firstChild.data); } } break; } } return key_value; }