¡¡¡¡function CLASS_AUTOUPDATE(instanceName,win)
¡¡¡¡{
¡¡¡¡this.instanceName = instanceName;
¡¡¡¡this.updating = false;
¡¡¡¡this.error = false;
¡¡¡¡this.updateInfo = "";
¡¡¡¡this.nextVersion = "";
¡¡¡¡this.ver = "";
¡¡¡¡this.win = win;
¡¡¡¡this.updatePath = "";
¡¡¡¡this.updateFileName = "";
¡¡¡¡this.softName = "";
¡¡¡¡this.refresh();
¡¡¡¡}
¡¡¡¡CLASS_AUTOUPDATE.prototype.onafterupdate = function()
¡¡¡¡{
¡¡¡¡var _window = this.win;
¡¡¡¡var tempMessageWidth = 360;
¡¡¡¡var tempMessageHeight = 160;
¡¡¡¡var tempMessageLeft = (document.body.clientWidth - tempMessageWidth) /2;
¡¡¡¡var tempMessageTop = (document.body.clientHeight - tempMessageHeight) /2;
¡¡¡¡var feature = {
¡¡¡¡title:"¸üÐÂÍê±Ï",
¡¡¡¡width:tempMessageWidth,
¡¡¡¡height:tempMessageHeight,
¡¡¡¡left:tempMessageLeft,
¡¡¡¡top:tempMessageTop,
¡¡¡¡borderColor:"#8B89A1",
¡¡¡¡backgroundColor:"#FFFFFF",
¡¡¡¡color:"#000000",
¡¡¡¡titleBackgroundColor:"#8B89A1",
¡¡¡¡titleColor:"#FFFFFF",
¡¡¡¡dragable:true
¡¡¡¡};
¡¡¡¡var THIS = this;
¡¡¡¡var tempMessageContent = [];
¡¡¡¡//tempMessageContent[tempMessageContent.length] = "<div style='font-size:12px;padding:5px'>";
¡¡¡¡tempMessageContent[tempMessageContent.length] = this.updateInfo;
¡¡¡¡//tempMessageContent[tempMessageContent.length] = "<br/><br/>";
¡¡¡¡tempMessageContent[tempMessageContent.length] = "<div align=center><span class='bt'><input type='button' value=' OK ' class='bt' id='bt_update_ok'></span></div>";
¡¡¡¡tempMessageContent[tempMessageContent.length] = "</div>";
¡¡¡¡_window.open("updateOk",feature);
¡¡¡¡_window.write("updateOk",tempMessageContent.join(""),false);
¡¡¡¡_window.items["updateOk"].all("bt_update_ok").onclick = function()
¡¡¡¡{
¡¡¡¡_window.close("updateOk");
¡¡¡¡}
¡¡¡¡_window.items["updateOk"].onunload = function()
¡¡¡¡{
¡¡¡¡if(THIS.error==false&&THIS.updateFileList.length>0)
¡¡¡¡{
¡¡¡¡document.location.reload();
¡¡¡¡}
¡¡¡¡}
¡¡¡¡}
¡¡¡¡CLASS_AUTOUPDATE.prototype.check = function()
¡¡¡¡{
¡¡¡¡var _current_version,_new_version,_exist_new_ver;
¡¡¡¡//¼ì²éÅäÖÃÎļþ
¡¡¡¡var configXML = new CLASS_XML("xml\\autoupdate.xml");
¡¡¡¡if(configXML.error==false)
¡¡¡¡{
¡¡¡¡var _update_date,_autoupdate_day,_current_version;
¡¡¡¡var _save_or_not;
¡¡¡¡var _d = new Date();
¡¡¡¡var _dd = _d.getFullYear() + "-" + (_d.getMonth()+1) + "-" + _d.getDate();
¡¡¡¡//¼ì²éÊÇ·ñÓиüÐÂʱ¼ä¶ÎÉèÖÃ
¡¡¡¡if(configXML.selectSingleNode("/Config/UpdateDate")==null)
¡¡¡¡{
¡¡¡¡configXML.setText("/Config","UpdateDate", _dd);
¡¡¡¡_update_date = _dd;
¡¡¡¡_save_or_not = true;
¡¡¡¡}
¡¡¡¡else
¡¡¡¡{
¡¡¡¡_update_date = configXML.getText("/Config","UpdateDate", "1900-01-01");
¡¡¡¡}
¡¡¡¡if(configXML.selectSingleNode("/Config/AutoUpdateDay")==null)
¡¡¡¡{
¡¡¡¡configXML.setText("/Config","AutoUpdateDay", "10");
¡¡¡¡_autoupdate_day = "10";
¡¡¡¡_save_or_not = true;
¡¡¡¡}
¡¡¡¡else
¡¡¡¡{
¡¡¡¡_autoupdate_day = configXML.getText("/Config","AutoUpdateDay", "10");
¡¡¡¡}
¡¡¡¡_autoupdate_day = _autoupdate_day *1;
¡¡¡¡if(configXML.selectSingleNode("/Config/CurrentVersion")==null)
¡¡¡¡{
¡¡¡¡configXML.setText("/Config","CurrentVersion", "0.32");
¡¡¡¡_current_version = "0.32";
¡¡¡¡_save_or_not = true;
¡¡¡¡}
¡¡¡¡else
¡¡¡¡{
¡¡¡¡_current_version = configXML.getText("/Config","CurrentVersion", "0.32");
¡¡¡¡}
¡¡¡¡_current_version = _current_version * 1;
¡¡¡¡//ÅжÏÊÇ·ñ½ñÌìÈ¥Á¬½Ó·þÎñÆ÷
¡¡¡¡var _od = new Date(_update_date.replace(/-/g, "\/"));
¡¡¡¡if(_d.getTime()-_od.getTime()>_autoupdate_day*24*3600*1000)
¡¡¡¡{
¡¡¡¡var newDoc = new CLASS_XML();
¡¡¡¡newDoc.loadRemoteFile(this.updatePath + this.softName + "/" + this.updateFileName);
¡¡¡¡if(newDoc.selectSingleNode("/Config/CurrentVersion")==null)
¡¡¡¡{
¡¡¡¡newDoc.setText("/Config","CurrentVersion", "0.32");
¡¡¡¡_new_version = "0.32";
¡¡¡¡}
¡¡¡¡else
¡¡¡¡{
¡¡¡¡_new_version = newDoc.getText("/Config","CurrentVersion", "0.32");
¡¡¡¡}
¡¡¡¡_new_version = _new_version * 1;
¡¡¡¡//¼ì²éÊÇ·ñÓÐа汾
¡¡¡¡if(_new_version>_current_version)
¡¡¡¡{
¡¡¡¡_exist_new_ver = true;
¡¡¡¡}
¡¡¡¡configXML.setText("/Config","UpdateDate",_dd);
¡¡¡¡_save_or_not = true;
¡¡¡¡}
¡¡¡¡if(_save_or_not)
¡¡¡¡{
¡¡¡¡configXML.save();
¡¡¡¡}
¡¡¡¡}
¡¡¡¡if(_exist_new_ver)
¡¡¡¡{
¡¡¡¡var _window = this.win;
¡¡¡¡var tempMessageWidth = 260;
¡¡¡¡var tempMessageHeight = 120;
¡¡¡¡var tempMessageLeft = (document.body.clientWidth - tempMessageWidth) /2;
¡¡¡¡var tempMessageTop = (document.body.clientHeight - tempMessageHeight) /2;
¡¡¡¡var feature = {
¡¡¡¡title:"Éý¼¶",
¡¡¡¡width:tempMessageWidth,
¡¡¡¡height:tempMessageHeight,
¡¡¡¡left:tempMessageLeft,
¡¡¡¡top:tempMessageTop,
¡¡¡¡borderColor:"#8B89A1",
¡¡¡¡backgroundColor:"#FFFFFF",
¡¡¡¡color:"#000000",
¡¡¡¡titleBackgroundColor:"#8B89A1",
¡¡¡¡titleColor:"#FFFFFF",
¡¡¡¡dragable:true
¡¡¡¡};
¡¡¡¡var THIS = this;
¡¡¡¡var tempMessageContent = [];
¡¡¡¡//tempMessageContent[tempMessageContent.length] = "<div style='font-size:12px;padding:5px'>";
¡¡¡¡tempMessageContent[tempMessageContent.length] = "<table width='100%' height='60' cellPadding='10'><tr><td valign='top'>ÓÐа汾£¬ÊÇ·ñ¸üУ¿<!--insert//--></td></tr></table>";
¡¡¡¡//tempMessageContent[tempMessageContent.length] = "<br/><br/>";
¡¡¡¡tempMessageContent[tempMessageContent.length] = "<div align=center><span class='bt'><input type='button' value=' Yes ' class='bt' id='bt_update_yes'></span> <span class='bt'><input type='button' value=' No ' class='bt' id='bt_update_no'></span></div>";
¡¡¡¡tempMessageContent[tempMessageContent.length] = "</div>";
¡¡¡¡_window.open("update_or_not",feature);
¡¡¡¡_window.write("update_or_not",tempMessageContent.join(""),false);
¡¡¡¡THIS.ver = _current_version;
¡¡¡¡_window.items["update_or_not"].all("bt_update_yes").onclick = function()
¡¡¡¡{
¡¡¡¡THIS.ver = _new_version;
¡¡¡¡_window.close("update_or_not");
¡¡¡¡THIS.update();
¡¡¡¡}
¡¡¡¡_window.items["update_or_not"].all("bt_update_no").onclick = function()
¡¡¡¡{
¡¡¡¡_window.close("update_or_not");
¡¡¡¡}
¡¡¡¡_window.items["update_or_not"].onunload = function()
¡¡¡¡{
¡¡¡¡}
¡¡¡¡}
¡¡¡¡}
¡¡¡¡CLASS_AUTOUPDATE.prototype.update = function()
¡¡¡¡{
¡¡¡¡this.updating = !this.updating;
¡¡¡¡var t = new Date();
¡¡¡¡var THIS = this;
¡¡¡¡if(this.error == false)
¡¡¡¡{
¡¡¡¡//µÃµ½ÐÂÅäÖÃÎĵµ
¡¡¡¡var newDoc = new CLASS_XML();
¡¡¡¡newDoc.loadRemoteFile(this.updatePath + this.softName + "/" + this.updateFileName);
¡¡¡¡this.error = newDoc.error;
¡¡¡¡if(this.error)
¡¡¡¡{
¡¡¡¡THIS.updating = false;
¡¡¡¡THIS.updateInfo = "<table width='100%' height='100' cellPadding='10'><tr><td valign='top'>Á¬½Ó·þÎñÆ÷ʧ°Ü<!--insert//--></td></tr></table>";
¡¡¡¡}
¡¡¡¡else
¡¡¡¡{
¡¡¡¡var updateFileNodes = newDoc.selectNodes("//SystemFile");
¡¡¡¡var updateInfoNode = newDoc.selectSingleNode("//UpdateInfo");
¡¡¡¡var nextVersion = newDoc.selectSingleNode("//nextversion");
¡¡¡¡if(updateInfoNode != null)
¡¡¡¡{
¡¡¡¡THIS.updateInfo = updateInfoNode.childNodes[0].text;
¡¡¡¡}
¡¡¡¡if(nextVersion != null)
¡¡¡¡{
¡¡¡¡THIS.nextVersion = nextVersion.childNodes[0].text;
¡¡¡¡}
¡¡¡¡THIS.updateFileList = [];
¡¡¡¡for(var i=0;i<updateFileNodes.length;i++)
¡¡¡¡{
¡¡¡¡var curUpdateFileName = updateFileNodes[i].getAttribute("name").toLowerCase();
¡¡¡¡var curUpdateFileVersion = updateFileNodes[i].getAttribute("version").toLowerCase();
¡¡¡¡var curUpdateFilePath = updateFileNodes[i].getAttribute("path").toLowerCase();
¡¡¡¡if(THIS.systemFiles[curUpdateFileName] == null || THIS.systemFiles[curUpdateFileName] != curUpdateFileVersion)
¡¡¡¡{
¡¡¡¡//±¾µØÃ»ÓиÃÎļþ»òÕß°æ±¾ºÅ²»Ò»ÖÂ
¡¡¡¡THIS.updateFileList[THIS.updateFileList.length] =
¡¡¡¡{
¡¡¡¡name :curUpdateFileName,
¡¡¡¡version :curUpdateFileVersion,
¡¡¡¡path :curUpdateFilePath,
¡¡¡¡type :"text"
¡¡¡¡};
¡¡¡¡}
¡¡¡¡}
¡¡¡¡newDoc.dispose();
¡¡¡¡if(THIS.updateFileList.length == 0)
¡¡¡¡{
¡¡¡¡THIS.updating = false;
¡¡¡¡THIS.updateInfo = "<table width='100%' height='100' cellPadding='10'><tr><td valign='top'>ûÓÐÐèÒª¸üеÄÎļþ<!--insert//--></td></tr></table>";
¡¡¡¡}
¡¡¡¡else
¡¡¡¡{
¡¡¡¡var configXML = new CLASS_XML("xml\\autoupdate.xml");
¡¡¡¡//Ìí¼Ó¸üÐÂÐÅÏ¢
¡¡¡¡if(configXML.error==false&&THIS.updateInfo.length>0)
¡¡¡¡{
¡¡¡¡var _updateInfo = configXML.createElement("UpdateInfo");
¡¡¡¡var _cdata = configXML.createCDATASection(THIS.updateInfo);
¡¡¡¡_updateInfo .appendChild(_cdata);
¡¡¡¡configXML.root().appendChild(_updateInfo);
¡¡¡¡//Ìí¼Óϰ汾Ԥ¸æ
¡¡¡¡var _nextVersion = configXML.selectSingleNode("//nextversion");
¡¡¡¡if( _nextVersion==null)
¡¡¡¡{
¡¡¡¡var __next = configXML.createElement("nextversion");
¡¡¡¡var __cdata= configXML.createCDATASection(THIS.nextVersion);
¡¡¡¡__next.appendChild(__cdata);
¡¡¡¡configXML.root().appendChild(__next);
¡¡¡¡}
¡¡¡¡else
¡¡¡¡{
¡¡¡¡if(_nextVersion.childNodes.length==0)
¡¡¡¡{
¡¡¡¡_nextVersion.appendChild(configXML.createCDATASection(""));
¡¡¡¡}
¡¡¡¡_nextVersion.childNodes[0].text = THIS.nextVersion;
¡¡¡¡}
¡¡¡¡configXML.setText("/Config","CurrentVersion",THIS.ver);
¡¡¡¡configXML.save();
¡¡¡¡}
¡¡¡¡configXML.dispose();
¡¡¡¡THIS.updateFile();
¡¡¡¡}
¡¡¡¡}
¡¡¡¡}
¡¡¡¡else
¡¡¡¡{
¡¡¡¡this.updateInfo = "<table width='100%' height='100' cellPadding='10'><tr><td valign='top'>¼ÓÔØÅäÖÃÎļþʧ°Ü£¡<!--insert//--></td></tr></table>";
¡¡¡¡}
¡¡¡¡this.updating = false;
¡¡¡¡this.onafterupdate();
¡¡¡¡}
¡¡¡¡CLASS_AUTOUPDATE.prototype.updateFile = function(curUpdateId)
¡¡¡¡{
¡¡¡¡var t = new Date();
¡¡¡¡var THIS = this;
¡¡¡¡for(var i= 0;i<this.updateFileList.length;i++)
¡¡¡¡{
¡¡¡¡var curUpdateFile = this.updateFileList[i];
¡¡¡¡if(curUpdateFile.type == "base64")
¡¡¡¡{
¡¡¡¡var url = this.updatePath + this.softName + "/base64.aspx?src=" + curUpdateFile.name + "&t=" + t.valueOf();
¡¡¡¡}
¡¡¡¡else if(curUpdateFile.type == "text")
¡¡¡¡{
¡¡¡¡var url = this.updatePath + this.softName + "/" + curUpdateFile.path + "/" + curUpdateFile.name;
¡¡¡¡}
¡¡¡¡//ÏÂÔØÎļþ
¡¡¡¡var errors = this.downloadFile(url,curUpdateFile.path,curUpdateFile.name);
¡¡¡¡if(this.error==false)
¡¡¡¡{
¡¡¡¡//¼Ç¼µ±Ç°°æ±¾ÐÅÏ¢
¡¡¡¡var configXML = new CLASS_XML("xml\\autoupdate.xml");
¡¡¡¡if(configXML.error==false)
¡¡¡¡{
¡¡¡¡var systemFiles = configXML.selectSingleNode("//SystemFiles");
¡¡¡¡if(systemFiles == null)
¡¡¡¡{
¡¡¡¡systemFiles = configXML.createElement("SystemFiles");
¡¡¡¡configXML.selectSingleNode("/Config").appendChild(systemFiles);
¡¡¡¡}
¡¡¡¡var systemFile = configXML.selectSingleNode("//SystemFiles/SystemFile[@name='" + curUpdateFile.name.toLowerCase() + "']");
¡¡¡¡if(systemFile == null)
¡¡¡¡{
¡¡¡¡systemFile = configXML.createElement("SystemFile");
¡¡¡¡systemFile.setAttribute("name",curUpdateFile.name.toLowerCase());
¡¡¡¡systemFile.setAttribute("path",curUpdateFile.path.toLowerCase());
¡¡¡¡configXML.selectSingleNode("//SystemFiles").appendChild(systemFile);
¡¡¡¡}
¡¡¡¡systemFile.setAttribute("version",curUpdateFile.version);
¡¡¡¡configXML.save();
¡¡¡¡configXML.dispose();
¡¡¡¡this.error = false;
¡¡¡¡this.updateInfo += errors + "\n";
¡¡¡¡}
¡¡¡¡else
¡¡¡¡{
¡¡¡¡this.updateInfo += "<table width='100%' height='100' cellPadding='10'><tr><td valign='top'>¼ÓÔØÅäÖÃÎļþ³ö´í£¡<!--insert//--></td></tr></table>";
¡¡¡¡}
¡¡¡¡}
¡¡¡¡}
¡¡¡¡}
¡¡¡¡CLASS_AUTOUPDATE.prototype.downloadFile = function(url,path,filename)
¡¡¡¡{
¡¡¡¡try
¡¡¡¡{
¡¡¡¡var xmlHTTP = new ActiveXObject("Microsoft.XMLHTTP");
¡¡¡¡xmlHTTP.open("Get",url,false);
¡¡¡¡xmlHTTP.send();
¡¡¡¡if(xmlHTTP.readyState==4&&xmlHTTP.status==200)
¡¡¡¡{
¡¡¡¡var adodbStream = new ActiveXObject("ADODB" + "." + "Stream");
¡¡¡¡//ÅжÏĿ¼ÊÇ·ñ´æÔÚ£¬²»´æÔÚÔò´´½¨
¡¡¡¡this.buildPath(path);
¡¡¡¡var strLocalURL = path.length>0?path + "\\" +filename:filename;
¡¡¡¡//1=adTypeBinary
¡¡¡¡adodbStream.Type= 1;
¡¡¡¡adodbStream.Open();
¡¡¡¡adodbStream.write(xmlHTTP.responseBody);
¡¡¡¡adodbStream.SaveToFile(strLocalURL,2);
¡¡¡¡adodbStream.Close();
¡¡¡¡adodbStream = null;
¡¡¡¡xmlHTTP = null;
¡¡¡¡}
¡¡¡¡else
¡¡¡¡{
¡¡¡¡this.error = true;
¡¡¡¡return filename + "ÏÂÔØÊ§°Ü";
¡¡¡¡}
¡¡¡¡return "";
¡¡¡¡}
¡¡¡¡catch(e)
¡¡¡¡{
¡¡¡¡this.error = true;
¡¡¡¡return e.description;
¡¡¡¡}
¡¡¡¡}
¡¡¡¡CLASS_AUTOUPDATE.prototype.refresh = function()
¡¡¡¡{
¡¡¡¡var configXML = new CLASS_XML("xml\\autoupdate.xml");
¡¡¡¡if(configXML.error==false)
¡¡¡¡{
¡¡¡¡var _softName = configXML.selectSingleNode ("/Config/SoftName");
¡¡¡¡var _updatePath = configXML.selectSingleNode ("/Config/UpdatePath");
¡¡¡¡var _updateFileName = configXML.selectSingleNode ("/Config/UpdateFileName");
¡¡¡¡this.updatePath = _updatePath !=null?_updatePath.text :"http://dooit.3322.org/";
¡¡¡¡this.softName = _softName !=null?_softName.text :"cc";
¡¡¡¡this.updateFileName = _updateFileName!=null?_updateFileName.text:"autoupdate.xml";
¡¡¡¡this.systemFiles = {};
¡¡¡¡var tempSystemFileNodes = configXML.selectNodes("/Config/SystemFiles/SystemFile");
¡¡¡¡for(var i=0;i<tempSystemFileNodes.length;i++)
¡¡¡¡{
¡¡¡¡this.systemFiles[tempSystemFileNodes[i].getAttribute("name")] = tempSystemFileNodes[i].getAttribute("version");
¡¡¡¡}
¡¡¡¡}
¡¡¡¡else
¡¡¡¡{
¡¡¡¡this.error = true;
¡¡¡¡}
¡¡¡¡configXML.dispose();
¡¡¡¡}
¡¡¡¡CLASS_AUTOUPDATE.prototype.buildPath = function(path)
¡¡¡¡{
¡¡¡¡var _baseUrl = unescape(document.location.href.substring(document.location.href.lastIndexOf("/")+1,-1)).replace(/^file\:\/\/\//i,"").replace(/\//g,"\\");
¡¡¡¡var _path = path.replace(/^\s*|\s*$/g,"");
¡¡¡¡var _fullPath = "";
¡¡¡¡//µÃµ½È«Â·¾¶
¡¡¡¡if(/^\w\:\\/.test(_path) == false){
¡¡¡¡_fullPath = _baseUrl + _path;
¡¡¡¡}else{
¡¡¡¡_fullPath = _path;
¡¡¡¡}
¡¡¡¡var p = _fullPath.split(/\\|\//g);
¡¡¡¡var fso = new ActiveXObject("Scripting.FileSystemObject");
¡¡¡¡var t = "";
¡¡¡¡for(var i=0;i<p.length;i++){
¡¡¡¡t += p[i] + "\\";
¡¡¡¡try
¡¡¡¡{
¡¡¡¡if(!fso.FolderExists(t))
¡¡¡¡{
¡¡¡¡fso.CreateFolder(t);
¡¡¡¡}
¡¡¡¡}
¡¡¡¡catch(e)
¡¡¡¡{
¡¡¡¡return false;
¡¡¡¡}
¡¡¡¡}
¡¡¡¡return true;
¡¡¡¡}