function LogoutTimer(param) { this.checkUrl = './TimeoutCheck!check'; this.resetUrl = './TimeoutCheck!reset'; this.min = 'timeoutMin'; this.sec = 'timeoutSec'; this.dialogId = 'timeoutDialog'; this.spantime = 0; this.asking = false; this.logoutUrl = '/portal/Logout'; var self = this; if (param != null) { for (p in param) { self[p] = param[p]; } } this.start = function() { this.reset(); $(this).everyTime('1s', function(i) { self.spantime--; //alert(self.spantime); var m = Math.floor(self.spantime / 60); var s = Math.floor(self.spantime % 60); //每一分鐘,檢察一次 if (s == 0) { $.ajax({ 'url' : self.checkUrl, 'async' : false, 'success' : function(result) { self.spantime = result['data']; }, 'dataType' : 'json', 'cache' : false, global: false }); } // 剩下2分鐘時,跳出視窗,提示timeoutMin分timeoutSec秒後自動登出。 if (self.spantime < 120 && self.asking == false) { self.asking = true; //跳出dialog視窗(main的) parent.main.$('#' + self.dialogId).dialog('open'); } else if (self.spantime > 0) { //設定header的倒數分秒文字 $(self.min).text(m); $(self.sec).text(s); //設定main的倒數分秒文字 parent.main.$(self.min).text(m); parent.main.$(self.sec).text(s); } else { // logout //location.href = self.logoutUrl; logout(); } }); }; this.reset = function() { var apContext = location.pathname.split('/')[1]; //skip APGQ if(apContext == 'APGQ'){ return ; } $.ajax({ 'url' : self.resetUrl, 'async' : false, 'success' : function(result) { self.spantime = result['data']; self.asking = false; }, 'dataType' : 'json', 'cache' : false, global: false }); }; }