blob: 1bf6039bbf7e3b2074adec5847132ecf76556b53 [file] [log] [blame]
qiaoweif044a742019-07-10 16:04:20 +08001/**
2 * aui-skin.js
3 * @author 流浪男
4 * @todo more things to abstract, e.g. Loading css etc.
5 * Licensed under the MIT license.
6 * http://www.opensource.org/licenses/mit-license.php
7 */
8(function( window, undefined ) {
9 "use strict";
10 var auiSkin = function(params) {
11 this.extend(this.params, params);
12 this._init();
13 };
14 var fileRef;
15 auiSkin.prototype = {
16 params: {
17 name: "", //主题名字
18 skinPath: "",//主题路径
19 default: false, //默认是否立即使用
20 beginTime: "",//开始时间
21 endTime: ""//结束时间
22 },
23 _init: function() {
24 var self = this;
25 if(!self.params.name)return;
26 if(!self.params.skinPath)return;
27 fileRef = document.createElement('link');
28 fileRef.setAttribute("rel","stylesheet");
29 fileRef.setAttribute("type","text/css");
30 fileRef.setAttribute("aui-skin-name",self.params.name);
31 fileRef.setAttribute("href",self.params.skinPath);
32 if(self.params.default){
33 document.getElementsByTagName("head")[0].appendChild(fileRef);
34 }else{
35 if(!self.params.beginTime || !self.params.endTime)return;
36 if(!self.check(self.params.beginTime,self.params.endTime))return;
37 var _date = new Date();
38 if(_date.getMinutes() < 10){
39 var nowM = "0"+_date.getMinutes();
40 }else{
41 var nowM = _date.getMinutes();
42 }
43 var nowTime = _date.getHours()+":"+nowM;
44 var b = parseInt(self.params.beginTime.replace(":", ''));
45 var e = parseInt(self.params.endTime.replace(":", ''));
46 var n = parseInt(nowTime.replace(":", ''));
47 if(b > e){
48 if(n >= b || n <= e)self.setSkin();
49 }else if(b < e){
50 if(n >= b && n <= e)self.setSkin();
51 }else{
52 self.removeSkin();
53 }
54 }
55 },
56 setSkin:function(){
57 document.getElementsByTagName("head")[0].appendChild(fileRef);
58 },
59 removeSkin:function(){
60 var self = this;
61 if(document.querySelector("link[aui-skin-name='"+self.params.name+"']"))
62 document.querySelector("link[aui-skin-name='"+self.params.name+"']").parentNode.removeChild(document.querySelector("link[aui-skin-name='"+self.params.name+"']"));
63 },
64 check:function(beginTime,endTime){
65 var strb = beginTime.split (":");
66 if (strb.length != 2)return false;
67 var stre = endTime.split (":");
68 if (stre.length != 2)return false;
69 var b = new Date ();
70 var e = new Date ();
71 b.setHours (strb[0]);
72 b.setMinutes (strb[1]);
73 e.setHours (stre[0]);
74 e.setMinutes (stre[1]);
75 if(strb[0] > 24 || strb[0] < 0 || stre[0] > 24 || stre[0] < 0)return false;
76 if(strb[1] > 59 || strb[1] < 0 || stre[1] > 59 || stre[1] < 0)return false;
77 return true;
78 },
79 extend: function(a, b) {
80 for (var key in b) {
81 if (b.hasOwnProperty(key)) {
82 a[key] = b[key];
83 }
84 }
85 return a;
86 }
87 };
88 window.auiSkin = auiSkin;
89})(window);