×Ô¶¯¸üÐÂ×÷ÓÃ

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡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;

¡¡¡¡}