1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068 |
-
- var JSON = function () {
- var m = {
- '\b': '\\b',
- '\t': '\\t',
- '\n': '\\n',
- '\f': '\\f',
- '\r': '\\r',
- '"' : '\\"',
- '\\': '\\\\'
- },
- s = {
- 'boolean': function (x) {
- return String(x);
- },
- number: function (x) {
- return isFinite(x) ? String(x) : 'null';
- },
- string: function (x) {
- if (/["\\\x00-\x1f]/.test(x)) {
- x = x.replace(/([\x00-\x1f\\"])/g, function(a, b) {
- var c = m[b];
- if (c) {
- return c;
- }
- c = b.charCodeAt();
- return '\\u00' +
- Math.floor(c / 16).toString(16) +
- (c % 16).toString(16);
- });
- }
- return '"' + x + '"';
- },
- object: function (x) {
- if (x) {
- var a = [], b, f, i, l, v;
- if (x instanceof Array) {
- a[0] = '[';
- l = x.length;
- for (i = 0; i < l; i += 1) {
- v = x[i];
- f = s[typeof v];
- if (f) {
- v = f(v);
- if (typeof v == 'string') {
- if (b) {
- a[a.length] = ',';
- }
- a[a.length] = v;
- b = true;
- }
- }
- }
- a[a.length] = ']';
- } else if (x instanceof Object) {
- a[0] = '{';
- for (i in x) {
- v = x[i];
- f = s[typeof v];
- if (f) {
- v = f(v);
- if (typeof v == 'string') {
- if (b) {
- a[a.length] = ',';
- }
- a.push(s.string(i), ':', v);
- b = true;
- }
- }
- }
- a[a.length] = '}';
- } else {
- return;
- }
- return a.join('');
- }
- return 'null';
- }
- };
- return {
- copyright: '(c)2005 JSON.org',
- license: 'http://www.crockford.com/JSON/license.html',
-
- stringify: function (v) {
- var f = s[typeof v];
- if (f) {
- v = f(v);
- if (typeof v == 'string') {
- return v;
- }
- }
- return null;
- },
-
- parse: function (text) {
- try {
- return !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(
- text.replace(/"(\\.|[^"\\])*"/g, ''))) &&
- eval('(' + text + ')');
- } catch (e) {
- return false;
- }
- }
- };
- }();
- var lunarInfo=new Array(
- 0x4bd8,0x4ae0,0xa570,0x54d5,0xd260,0xd950,0x5554,0x56af,0x9ad0,0x55d2,
- 0x4ae0,0xa5b6,0xa4d0,0xd250,0xd295,0xb54f,0xd6a0,0xada2,0x95b0,0x4977,
- 0x497f,0xa4b0,0xb4b5,0x6a50,0x6d40,0xab54,0x2b6f,0x9570,0x52f2,0x4970,
- 0x6566,0xd4a0,0xea50,0x6a95,0x5adf,0x2b60,0x86e3,0x92ef,0xc8d7,0xc95f,
- 0xd4a0,0xd8a6,0xb55f,0x56a0,0xa5b4,0x25df,0x92d0,0xd2b2,0xa950,0xb557,
- 0x6ca0,0xb550,0x5355,0x4daf,0xa5b0,0x4573,0x52bf,0xa9a8,0xe950,0x6aa0,
- 0xaea6,0xab50,0x4b60,0xaae4,0xa570,0x5260,0xf263,0xd950,0x5b57,0x56a0,
- 0x96d0,0x4dd5,0x4ad0,0xa4d0,0xd4d4,0xd250,0xd558,0xb540,0xb6a0,0x95a6,
- 0x95bf,0x49b0,0xa974,0xa4b0,0xb27a,0x6a50,0x6d40,0xaf46,0xab60,0x9570,
- 0x4af5,0x4970,0x64b0,0x74a3,0xea50,0x6b58,0x5ac0,0xab60,0x96d5,0x92e0,
- 0xc960,0xd954,0xd4a0,0xda50,0x7552,0x56a0,0xabb7,0x25d0,0x92d0,0xcab5,
- 0xa950,0xb4a0,0xbaa4,0xad50,0x55d9,0x4ba0,0xa5b0,0x5176,0x52bf,0xa930,
- 0x7954,0x6aa0,0xad50,0x5b52,0x4b60,0xa6e6,0xa4e0,0xd260,0xea65,0xd530,
- 0x5aa0,0x76a3,0x96d0,0x4afb,0x4ad0,0xa4d0,0xd0b6,0xd25f,0xd520,0xdd45,
- 0xb5a0,0x56d0,0x55b2,0x49b0,0xa577,0xa4b0,0xaa50,0xb255,0x6d2f,0xada0,
- 0x4b63,0x937f,0x49f8,0x4970,0x64b0,0x68a6,0xea5f,0x6b20,0xa6c4,0xaaef,
- 0x92e0,0xd2e3,0xc960,0xd557,0xd4a0,0xda50,0x5d55,0x56a0,0xa6d0,0x55d4,
- 0x52d0,0xa9b8,0xa950,0xb4a0,0xb6a6,0xad50,0x55a0,0xaba4,0xa5b0,0x52b0,
- 0xb273,0x6930,0x7337,0x6aa0,0xad50,0x4b55,0x4b6f,0xa570,0x54e4,0xd260,
- 0xe968,0xd520,0xdaa0,0x6aa6,0x56df,0x4ae0,0xa9d4,0xa4d0,0xd150,0xf252,
- 0xd520);
- var solarMonth=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
- var Gan=new Array("甲","乙","丙","丁","戊","己","庚","辛","壬","癸");
- var Zhi=new Array("子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥");
- var Animals=new Array("鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪");
- var solarTerm = new Array("小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至");
- var sTermInfo = new Array(0,21208,42467,63836,85337,107014,128867,150921,173149,195551,218072,240693,263343,285989,308563,331033,353350,375494,397447,419210,440795,462224,483532,504758);
- var nStr1 = new Array('日','一','二','三','四','五','六','七','八','九','十');
- var nStr2 = new Array('初','十','廿','卅','□');
- var monthName = new Array("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC");
- var cmonthName = new Array('正','二','三','四','五','六','七','八','九','十','十一','腊');
- var sFtv = new Array(
- "0101*元旦",
- "0210 气象节",
- "0214 情人节",
- "0303 爱耳日",
- "0308 妇女节",
- "0312 植树节",
- "0314 国际警察节",
- "0315 国际消费者权益日",
- "0323 世界气象日",
- "0401 愚人节",
- "0422 地球日",
- "0501 劳动节",
- "0512 护士节",
- "0515 国际家庭日",
- "0519 中国旅游日",
- "0504 青年节",
- "0531 无烟日",
- "0601 儿童节",
- "0605 世界环境日",
- "0626 国际反毒品日",
- "0701 建党日",
- "0707 七七事变",
- "0711 中国航海日",
- "0801 建军节",
- "0805 里约热内卢奥运会",
- "0815 日本投降日",
- "0903 抗战胜利日",
- "0910 教师节",
- "0920 爱牙日",
- "0930 烈士纪念日",
- "0910 教师节",
- "0918 九·一八事变纪念日",
- "1001*国庆节",
- "1009 重阳节",
- "1031 万圣节",
- "1016 世界粮食日",
- "1108 记者节",
- "1111 光棍节",
- "1117 国际大学生节",
- "1201 艾滋病日",
- "1210 世界人权日",
- "1213 南京大屠杀纪念日",
- "1220 澳门回归纪念日",
- "1224 平安夜",
- "1225 圣诞节");
- var wFtv = new Array(
- "0508 母亲节",
- "0619 父亲节",
- "1124 感恩节");
- var lFtv = new Array(
- "0101*春节",
- "0115 元宵节",
- "0202 龙抬头",
- "0505 端午节",
- "0707 七夕",
- "0715 中元节",
- "0815 中秋节",
- "0909 重阳节",
- "1208 腊八节",
- "1223 北方小年",
- "1224 南方小年",
- "0100*除夕");
- function lYearDays(y) {
- var i, sum = 348;
- for(i=0x8000; i>0x8; i>>=1) sum += (lunarInfo[y-1900] & i)? 1: 0;
- return(sum+leapDays(y));
- }
- function leapDays(y) {
- if(leapMonth(y)) return( (lunarInfo[y-1899]&0xf)==0xf? 30: 29);
- else return(0);
- }
- function leapMonth(y) {
- var lm = lunarInfo[y-1900] & 0xf;
- return(lm==0xf?0:lm);
- }
- function monthDays(y,m) {
- return( (lunarInfo[y-1900] & (0x10000>>m))? 30: 29 );
- }
- function Lunar(objDate) {
- var i, leap=0, temp=0;
- var offset = (Date.UTC(objDate.getFullYear(),objDate.getMonth(),objDate.getDate()) - Date.UTC(1900,0,31))/86400000;
- for(i=1900; i<2100 && offset>0; i++) { temp=lYearDays(i); offset-=temp; }
- if(offset<0) { offset+=temp; i--; }
- this.year = i;
- leap = leapMonth(i);
- this.isLeap = false;
- for(i=1; i<13 && offset>0; i++) {
-
- if(leap>0 && i==(leap+1) && this.isLeap==false)
- { --i; this.isLeap = true; temp = leapDays(this.year); }
- else
- { temp = monthDays(this.year, i); }
-
- if(this.isLeap==true && i==(leap+1)) this.isLeap = false;
- offset -= temp;
- }
- if(offset==0 && leap>0 && i==leap+1)
- if(this.isLeap)
- { this.isLeap = false; }
- else
- { this.isLeap = true; --i; }
- if(offset<0){ offset += temp; --i; }
- this.month = i;
- this.day = offset + 1;
- }
- function getSolarDate(lyear, lmonth, lday, isLeap) {
- var offset = 0;
-
-
- for(var i = 1900; i < lyear; i++) {
- offset += lYearDays(i);
- }
-
-
- for (var i = 1; i < lmonth; i++) {
-
- if (i == leapMonth(lyear)) {
- offset += leapDays(lyear);
- }
- offset += monthDays(lyear, i);
- }
-
- if (isLeap) {
- offset += monthDays(lyear, i);
- }
-
-
- offset += parseInt(lday) - 1;
- var baseDate = new Date(1900,0,31);
- var solarDate = new Date(baseDate.valueOf() + offset * 86400000);
- return solarDate;
- }
- function solarDays(y,m) {
- if(m==1)
- return(((y%4 == 0) && (y%100 != 0) || (y%400 == 0))? 29: 28);
- else
- return(solarMonth[m]);
- }
- function cyclical(num) {
- return(Gan[num%10]+Zhi[num%12]);
- }
- function calElement(sYear,sMonth,sDay,week,lYear,lMonth,lDay,isLeap,cYear,cMonth,cDay,cMnum,cDnum) {
- this.isToday = false;
-
- this.sYear = sYear;
- this.sMonth = sMonth;
- this.sDay = sDay;
- this.week = week;
-
- this.lYear = lYear;
- this.lMonth = lMonth;
- this.lDay = lDay;
- this.isLeap = isLeap;
-
- this.cYear = cYear;
- this.cMonth = cMonth;
- this.cDay = cDay;
- this.color = '';
- this.lunarFestival = '';
- this.solarFestival = '';
- this.solarTerms = '';
-
- this.cMnumber=cMnum;
- this.cDnumber=cDnum;
- }
- function sTerm(y,n) {
- if(!!jieqiJson["y"+y])
- return jieqiJson["y"+y][n];
- var offDate = new Date( ( 31556925974.7*(y-1900) + sTermInfo[n]*60000 ) + Date.UTC(1900,0,6,2,5) );
- return(offDate.getDate());
- }
- function calendar(y,m) {
- var sDObj, lDObj, lY, lM, lD=1, lL, lX=0, tmp1, tmp2, tmp3;
- var cY, cM, cD;
- var lDPOS = new Array(3);
- var n = 0;
- var firstLM = 0;
- sDObj = new Date(y,m,1,0,0,0,0);
- this.length = solarDays(y,m);
- this.firstWeek = sDObj.getDay();
-
- if(m<2) cY=cyclical(y-1900+36-1);
- else cY=cyclical(y-1900+36);
- var term2=sTerm(y,2);
-
- var firstNode = sTerm(y,m*2);
-
- var cMnum=(y-1900)*12+m+12;
-
- cM = cyclical(cMnum);
-
-
-
- var dayCyclical = Date.UTC(y,m,1,0,0,0,0)/86400000+25567+10;
- for(var i=0;i<this.length;i++) {
- if(lD>lX) {
- sDObj = new Date(y,m,i+1);
- lDObj = new Lunar(sDObj);
- lY = lDObj.year;
- lM = lDObj.month;
- lD = lDObj.day;
- lL = lDObj.isLeap;
- lX = lL? leapDays(lY): monthDays(lY,lM);
- if(n==0) firstLM = lM;
- lDPOS[n++] = i-lD+1;
- }
-
- if(m==1 && (i+1)==term2) cY=cyclical(y-1900+36);
-
- if((i+1)==firstNode) cM = cyclical((y-1900)*12+m+13);
-
- var cDnum=dayCyclical+i;
- if((i+1)>=firstNode){
- cMnum=(y-1900)*12+m+13;
- }
- cD = cyclical(cDnum);
-
-
-
-
-
- this[i] = new calElement(y, m+1, i+1, nStr1[(i+this.firstWeek)%7],
- lY, lM, lD++, lL,
- cY ,cM, cD,cMnum,cDnum);
- }
-
- tmp1=sTerm(y,m*2 )-1;
- tmp2=sTerm(y,m*2+1)-1;
- this[tmp1].solarTerms = solarTerm[m*2];
- this[tmp2].solarTerms = solarTerm[m*2+1];
-
-
- for(var i= 0; i < sFtv.length ; i++){
- if(sFtv[i].match(/^(\d{2})(\d{2})([\s\*])(.+)$/))
- if(Number(RegExp.$1)==(m+1)) {
- this[Number(RegExp.$2)-1].solarFestival += RegExp.$4 + ' ';
- if(RegExp.$3=='*') this[Number(RegExp.$2)-1].color = 'red';
- }
- }
-
- for(var i=0;i < wFtv.length;i++)
- if(wFtv[i].match(/^(\d{2})(\d)(\d)([\s\*])(.+)$/))
- if(Number(RegExp.$1)==(m+1)) {
- tmp1=Number(RegExp.$2);
- tmp2=Number(RegExp.$3);
- if(tmp1<5)
- this[((this.firstWeek>tmp2)?7:0) + 7*(tmp1-1) + tmp2 - this.firstWeek].solarFestival += RegExp.$5 + ' ';
- else {
- tmp1 -= 5;
- tmp3 = (this.firstWeek+this.length-1)%7;
- this[this.length - tmp3 - 7*tmp1 + tmp2 - (tmp2>tmp3?7:0) - 1 ].solarFestival += RegExp.$5 + ' ';
- }
- }
-
- for(var i=0;i < lFtv.length;i++)
- if(lFtv[i].match(/^(\d{2})(.{2})([\s\*])(.+)$/)) {
- tmp1=Number(RegExp.$1)-firstLM;
- if(tmp1==-11) tmp1=1;
- if(tmp1 >=0 && tmp1<n) {
- tmp2 = lDPOS[tmp1] + Number(RegExp.$2) -1;
- if( tmp2 >= 0 && tmp2<this.length && this[tmp2].isLeap!=true) {
- this[tmp2].lunarFestival += RegExp.$4 + ' ';
- if(RegExp.$3=='*') this[tmp2].color = 'red';
- }
- }
- }
-
-
-
-
- }
- function easter(y) {
- var term2=sTerm(y,5);
- var dayTerm2 = new Date(Date.UTC(y,2,term2,0,0,0,0));
- var lDayTerm2 = new Lunar(dayTerm2);
- if(lDayTerm2.day<15)
- var lMlen= 15-lDayTerm2.day;
- else
- var lMlen= (lDayTerm2.isLeap? leapDays(y): monthDays(y,lDayTerm2.month)) - lDayTerm2.day + 15;
-
- var l15 = new Date(dayTerm2.getTime() + 86400000*lMlen );
- var dayEaster = new Date(l15.getTime() + 86400000*( 7-l15.getUTCDay() ) );
- this.m = dayEaster.getUTCMonth();
- this.d = dayEaster.getUTCDate();
- }
- function cDay(d){
- var s;
- switch (d) {
- case 10:
- s = '初十'; break;
- case 20:
- s = '二十'; break;
- break;
- case 30:
- s = '三十'; break;
- break;
- default :
- s = nStr2[Math.floor(d/10)];
- s += nStr1[d%10];
- }
- return(s);
- }
- var worktime = {};
- worktime.years= [2016];
- worktime.y2016 = JSON.parse('{"d0101":{"w":"假"},"d0102":{"w":"假"},"d0103":{"w":"假"},"d0206":{"w":"班"},"d0207":{"w":"假"},"d0208":{"w":"假"},"d0209":{"w":"假"},"d0210":{"w":"假"},"d0211":{"w":"假"},"d0212":{"w":"假"},"d0213":{"w":"假"},"d0214":{"w":"班"},"d0402":{"w":"假"},"d0403":{"w":"假"},"d0404":{"w":"假"},"d0430":{"w":"假"},"d0501":{"w":"假"},"d0502":{"w":"假"},"d0609":{"w":"假"},"d0610":{"w":"假"},"d0611":{"w":"假"},"d0612":{"w":"班"},"d0915":{"w":"假"},"d0916":{"w":"假"},"d0917":{"w":"假"},"d0918":{"w":"班"},"d1001":{"w":"假"},"d1002":{"w":"假"},"d1003":{"w":"假"},"d1004":{"w":"假"},"d1005":{"w":"假"},"d1006":{"w":"假"},"d1007":{"w":"假"},"d1008":{"w":"班"},"d1009":{"w":"班"}}');
- worktime.y2016.workRestStr = 'd0101 d0102 d0103 d0206 d0207 d0208 d0209 d0210 d0211 d0212 d0213 d0214 d0402 d0403 d0404 d0430 d0501 d0502 d0609 d0610 d0611 d0612 d0915 d0916 d0917 d0918 d1001 d1002 d1003 d1004 d1005 d1006 d1007 d1008 d1009';
- $.ajax({
- url: "http://static.etouch.cn/apis/holiday-in-law.jsonp",
- dataType: "jsonp",
- jsonp: "aaa"
- });
- function cbreturn(data){
- var cnArr = data.holidays.cn;
- for(var i=0;i<cnArr.length;i++){
- var year = cnArr[i].date.toString().substr(0,4);
- var yyearJson = worktime["y"+year];
- if(!!yyearJson){
- yyearJson["workRestStr"] += "d"+cnArr[i].date.toString().replace(year,"")+" ";
- if(cnArr[i].status == 0){
- yyearJson["d"+cnArr[i].date.toString().replace(year,"")] = {"w":"假"}
- }else{
- yyearJson["d"+cnArr[i].date.toString().replace(year,"")] = {"w":"班"}
- }
- }else{
- worktime.years.push(year);
- worktime["y"+year] = {};
- yyearJson = worktime["y"+year];
- yyearJson["workRestStr"] = "d"+cnArr[i].date.toString().replace(year,"")+" ";
- if(cnArr[i].status == 0){
- yyearJson["d"+cnArr[i].date.toString().replace(year,"")] = {"w":"假"}
- }else{
- yyearJson["d"+cnArr[i].date.toString().replace(year,"")] = {"w":"班"}
- }
- }
- }
-
- calander.init();
- }
- var jieqiJson = {}
- jieqiJson.y2016 = [6,20,4,19,5,20,4,19,5,20,5,21,7,22,7,23,7,22,8,23,7,22,7,21];
- jieqiJson.y2015 = [6,20,4,19,6,21,5,20,6,21,6,22,7,23,8,23,8,23,8,24,8,22,7,22];
- jieqiJson.y2014 = [5,20,4,19,6,21,5,20,5,21,6,21,7,23,7,23,8,23,8,23,7,22,7,22];
- jieqiJson.y2013 = [5,20,4,18,5,20,4,20,5,21,5,21,7,22,7,23,7,23,8,23,7,22,7,22];
- var festival_main = {
- "2016/01/01":"元旦",
- "2016/02/08":"春节",
- "2016/02/22":"元宵节",
- "2016/04/04":"清明节" ,
- "2016/05/01":"劳动节" ,
- "2016/06/09":"端午节",
- "2016/09/15":"中秋节",
- "2016/10/01":"国庆节"
- };
- $.dom = function(elementId) {
- return document.getElementById(elementId);
- };
- function StringBuffer() {
- this._strings = new Array();
- };
- StringBuffer.prototype.append = function(str) {
- this._strings.push(str);
- return this;
- };
- StringBuffer.prototype.toString = function() {
- var str = arguments.length == 0 ? '' : arguments[0];
- return this._strings.join(str);
- };
- String.prototype.leftpad = function(len, str) {
- if (!str) {
- str = '0';
- }
- var s = '';
- for (var i = 0; i < len - this.length; i++) {
- s += str;
- }
- return s + this;
- };
- String.prototype.htmlspecialchars = function(){
-
- return this;
- };
- function getMonthKey(year, month) {
- return year.toString() + (month + 1).toString().leftpad(2);
- }
- function getDateKey(date) {
- return date.getFullYear().toString() +"-"+(date.getMonth() + 1).toString().leftpad(2)+"-"+date.getDate().toString().leftpad(2);
- }
- function is_leap_year(cur_year){
- if(cur_year % 400 == 0 || (cur_year % 100 !=0 && cur_year % 4 == 0)) return 1;
- return 0;
- }
- function getDaysByMonth(date){
- var days = [[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
- [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]];
- return days[is_leap_year(date.getFullYear())][date.getMonth()];
- }
- function dateDiff(now, date){
- var diff = dateDiffDays(now, date);
- if(diff == 0) return "今天";
- else if(diff < 0) return (0-diff) + "天前";
- else return diff + "天后";
- }
- function dateDiffDays(now, date){
- var n = new Date(now.getFullYear(), now.getMonth(), now.getDate());
- var d = new Date(date.getFullYear(), date.getMonth(), date.getDate());
- var diff = parseInt((d - n)/(24 * 60 * 60 * 1000));
- return diff;
- }
-
- var utils = {
- getEvent : function(ev) {
- return window.event ? window.event : (ev ? ev : null);
- },
- getMousePosition : function(ev) {
- var evt = this.getEvent(ev);
- if (evt.pageX || evt.pageY) {
- return {
- x : evt.pageX,
- y : evt.pageY
- };
- }
- return {
- x : evt.clientX + document.documentElement.scrollLeft
- - document.documentElement.clientLeft,
- y : evt.clientY + document.documentElement.scrollTop
- - document.documentElement.clientTop
- };
- },
- getClientWidth : function() {
- return $.browser.msie ? ieBody.clientWidth : window.innerWidth;
- },
- getClientHeight : function() {
- return $.browser.msie ? ieBody.clientHeight : window.innerHeight;
- },
- getRandomColor : function() {
-
- var index = Math.round(Math.random() * (colors.length - 1));
- return {
- index : index,
- value : colors[index]
- };
- },
-
- getOffsetXY : function(obj, parentId) {
-
- var pos= {};
- if(parentId) {
- pos = $(obj).position();
- return {
- x : pos.left,
- y : pos.top
- };
- }
- pos = $(obj).offset();
- return {
- x : pos.left,
- y : pos.top
- };
- },
- hideDialog:function(id){
- for(var i=0;i<id.length;i++)
- {
- $("#"+id[i]).hide();
- $(document).unbind("mousedown."+id[i]);
- }
- },
- mousedown_hide_ele : function(id,parent_id,descard_id) {
- $(document).bind("mousedown."+id, function(r) {
- var p = r.target;
- var q = document.getElementById(id);
- while (true) {
- if (p == q) {
- return true;
- } else {
- try {
- if (p.id == parent_id) {
- $(document).unbind("mousedown."+id);
- $("#"+id).hide();
- return false;
- } else {
- if(p.id==descard_id){
- return;
- }
- p = $(p).parent()[0];
- }
- } catch(e) {
- return false;
- }
- }
- }
- });
- }
- };
- var cacheMgr = {
- cldCache : {},
- getCld : function(year, month) {
- var key = getMonthKey(year, month);
- var cld = this.cldCache[key];
- if (typeof cld == 'undefined') {
- cld = new calendar(year, month);
- this.cldCache[key] = cld;
- }
- return cld;
- }
- };
- var calwnl = {};
- calwnl.date= {
- date_part: function(date) {
- date.setHours(0);
- date.setMinutes(0);
- date.setSeconds(0);
- date.setMilliseconds(0);
- return date;
- },
- month_day : function(date) {
- var d = date || new Date();
- return d.getDate();
- },
- time_part: function(date) {
- return (date.valueOf()/1000 - date.getTimezoneOffset()*60)%86400;
- },
- week_start: function(date,start_on_monday) {
- var shift=date.getDay();
- if (start_on_monday) {
- if (shift==0)
- shift=6;
- else
- shift--;
- }
- return this.date_part(this.add(date,-1*shift,"day"));
- },
- month_start: function(date) {
- date.setDate(1);
- return this.date_part(date);
- },
- month_view_start : function(date, start_on_monday) {
- return this.week_start(this.month_start(date), start_on_monday);
- },
- year_start: function(date) {
- date.setMonth(0);
- return this.month_start(date);
- },
- day_start: function(date) {
- return this.date_part(date);
- },
- add: function(date,inc,mode) {
- var ndate=new Date(date.valueOf());
- switch(mode) {
- case "day":
- ndate.setDate(ndate.getDate()+inc);
- break;
- case "week":
- ndate.setDate(ndate.getDate()+7*inc);
- break;
- case "month":
- ndate.setMonth(ndate.getMonth()+inc);
- break;
- case "year":
- ndate.setYear(ndate.getFullYear()+inc);
- break;
- case "hour":
- ndate.setHours(ndate.getHours()+inc);
- break;
- case "minute":
- ndate.setMinutes(ndate.getMinutes()+inc);
- break;
- default:
- return defaults.date["add_"+mode](date,inc,mode);
- }
- return ndate;
- },
- to_fixed: function(num) {
- if (num<10)
- return "0"+num;
- return num;
- },
- copy: function(date) {
- return new Date(date.valueOf());
- },
- getChinaNum : function(Num) {
- var monthEn;
- switch(Num) {
- case 1 :
- monthEn = "一";
- break;
- case 2 :
- monthEn = "二";
- break;
- case 3 :
- monthEn = "三";
- break;
- case 4 :
- monthEn = "四";
- break;
- case 5 :
- monthEn = "五";
- break;
- case 6 :
- monthEn = "六";
- break;
- case 7 :
- monthEn = "七";
- break;
- case 8 :
- monthEn = "八";
- break;
- case 9 :
- monthEn = "九";
- break;
- case 10 :
- monthEn = "十";
- break;
- case 11 :
- monthEn = "十一";
- break;
- case 12 :
- monthEn = "腊";
- break;
- }
- return monthEn;
- },
- getLundarMD : function(md,split){
- var month='';
- var day='';
- if(!split){
- month = md.substr(0,2);
- day = md.substr(2,2);
- }else{
- var arr = md.split(split);
- month = arr[0];
- day = arr[1];
- }
- return this.getChinaNum(parseFloat(month))+"月"+cDay(parseFloat(day));
-
- },
- getDayNameBrief: function(day_index) {
- var day_name = ['SUN','MON','TUE','WED','THU','FRI','SAT'];
- return day_name[day_index];
- },
- daynameToIndex: function(dayname) {
- var dayname_index_map = {'SUN':0,'MON':1,'TUE':2,'WED':3,'THU':4,'FRI':5,'SAT':6};
- return dayname_index_map[dayname];
- },
-
- getWeekOfMonth: function(date_time, start_on_monday) {
- var date = this.copy(date_time);
- return Math.floor((this.date_part(date).getTime() - this.month_view_start(date, start_on_monday).getTime())/604800000) + 1;
- },
- lunar_year : function(date) {
- var l_year = date.getFullYear()+'年'+(date.getMonth()+1)+'月 '+cyclical(date.getFullYear() - 1900 + 36) + Animals[(date.getFullYear() - 4) % 12] + '年';
- return l_year;
- },
- lunar_Info : function(date) {
- var cld = cacheMgr.getCld(date.getFullYear(), date.getMonth());
- var day = date.getDate();
- var cld_day = cld[day - 1];
- var lunar_detail = {
- l_day : "",
- l_month : "",
- l_day_full:""
- };
- lunar_detail.l_day = cDay(cld_day.lDay);
- lunar_detail.l_month = cld_day.lMonth;
- lunar_detail.color = "";
- var s,s2;
- s=cld_day.lunarFestival;
- if(s.length>0) {
- if(s.length>6) {
- s2 = s.toString();
- s = s.substr(0, 4)+'...';
- }
- lunar_detail.color = "#32CD32";
- } else {
- s=cld_day.solarTerms;
- s2=s.toString();
- if(s.length>0) {
- lunar_detail.color = "#32CD32";
- if((s =='清明')||(s =='芒种')||(s =='夏至')||(s =='冬至')) {
- lunar_detail.color = "#32CD32";
- if(s =='清明')
- s = '清明节';
- }
- }
-
- }
- lunar_detail.l_day_y = cDay(cld_day.lDay);
- if(s.length>0) {
- lunar_detail.l_day = s;
- lunar_detail.l_day_full = s2;
-
- }
-
-
- return lunar_detail;
- },
- date_to_str: function(format,utc) {
- format=format.replace(/%[a-zA-Z]/g, function(a) {
- switch(a) {
- case "%d":
- return "\"+calwnl.date.to_fixed(date.getDate())+\"";
- case "%m":
- return "\"+calwnl.date.to_fixed((date.getMonth()+1))+\"";
- case "%j":
- return "\"+date.getDate()+\"";
- case "%n":
- return "\"+(date.getMonth()+1)+\"";
- case "%y":
- return "\"+calwnl.date.to_fixed(date.getYear()%100)+\"";
- case "%Y":
- return "\"+date.getFullYear()+\"";
- case "%D":
- return "\"+calwnl.locale.date.day_short[date.getDay()]+\"";
- case "%l":
- return "\"+calwnl.locale.date.day_full[date.getDay()]+\"";
- case "%M":
- return "\"+calwnl.locale.date.month_short[date.getMonth()]+\"";
- case "%F":
- return "\"+calwnl.locale.date.month_full[date.getMonth()]+\"";
- case "%h":
- return "\"+calwnl.date.to_fixed((date.getHours()+11)%12+1)+\"";
- case "%H":
- return "\"+calwnl.date.to_fixed(date.getHours())+\"";
- case "%i":
- return "\"+calwnl.date.to_fixed(date.getMinutes())+\"";
- case "%a":
- return "\"+(date.getHours()>11?\"pm\":\"am\")+\"";
- case "%A":
- return "\"+(date.getHours()>11?\"PM\":\"AM\")+\"";
- case "%s":
- return "\"+calwnl.date.to_fixed(date.getSeconds())+\"";
- default:
- return a;
- }
- });
- if (utc)
- format=format.replace(/date\.get/g,"date.getUTC");
- return new Function("date","return \""+format+"\";");
- },
- numToWeek: function(inStr) {
- switch (inStr) {
- case 1:
- return '一';
- case 2:
- return '二';
- case 3:
- return '三';
- case 4:
- return '四';
- case 5:
- return '五';
- case 6:
- return '六';
- case 0:
- return '日';
- }
- },
- str_to_date: function(format,utc) {
- var splt="var temp=date.split(/[^0-9a-zA-Z]+/g);";
- var mask=format.match(/%[a-zA-Z]/g);
- for (var i=0; i<mask.length; i++) {
- switch(mask[i]) {
- case "%j":
- case "%d":
- splt+="set[2]=temp["+i+"]||0;";
- break;
- case "%n":
- case "%m":
- splt+="set[1]=(temp["+i+"]||1)-1;";
- break;
- case "%y":
- splt+="set[0]=temp["+i+"]*1+(temp["+i+"]>50?1900:2000);";
- break;
- case "%h":
- case "%H":
- splt+="set[3]=temp["+i+"]||0;";
- break;
- case "%i":
- splt+="set[4]=temp["+i+"]||0;";
- break;
- case "%Y":
- splt+="set[0]=temp["+i+"]||0;";
- break;
- case "%a":
- case "%A":
- splt+="set[3]=set[3]%12+((temp["+i+"]||'').toLowerCase()=='am'?0:12);";
- break;
- case "%s":
- splt+="set[5]=temp["+i+"]||0;";
- break;
- }
- }
- var code ="set[0],set[1],set[2],set[3],set[4],set[5]";
- if (utc)
- code =" Date.UTC("+code+")";
- return new Function("date","var set=[0,0,0,0,0,0]; "+splt+" return new Date("+code+");");
- }
- };
- calwnl.templates= {};
- calwnl.config= {
- default_date: "%Y-%m-%d %H:%i",
- month_date: "%F %Y",
- load_date: "%Y-%m-%d",
- week_date: "%l",
- day_date: "%D, %F %j",
- hour_date: "%H:%i",
- month_day : "%d",
- xml_date:"%Y/%m/%d %H:%i",
- api_date:"%Y-%m-%d %H:%i",
- server_utc:false
- };
- calwnl.init_templates= function() {
- var d=calwnl.date.date_to_str;
- var c=calwnl.config;
- var f = function(a,b) {
- for (var c in b)
- if (!a[c])
- a[c]=b[c];
- };
- f(calwnl.templates, {
- day_date:d(c.default_date),
- month_date:d(c.month_date),
- week_date: function(d1,d2) {
- return calwnl.templates.day_date(d1)+" – "+calwnl.templates.day_date(calwnl.date.add(d2,-1,"day"));
- },
- day_scale_date:d(c.default_date),
- month_scale_date:d(c.week_date),
- week_scale_date:d(c.day_date),
- hour_scale:d(c.hour_date),
- time_picker:d(c.hour_date),
- event_date:d(c.hour_date),
- month_day:d(c.month_day),
- xml_date:calwnl.date.str_to_date(c.xml_date,c.server_utc),
- load_format:d(c.load_date,c.server_utc),
- xml_format:d(c.xml_date,c.server_utc),
- api_date:calwnl.date.str_to_date(c.api_date),
- event_header: function(start,end,ev) {
- return calwnl.templates.event_date(start)+" - "+calwnl.templates.event_date(end);
- },
- event_text: function(start,end,ev) {
- return ev.text;
- },
- event_class: function(start,end,ev) {
- return "";
- },
- month_date_class: function(d) {
- return "";
- },
- week_date_class: function(d) {
- return "";
- },
- event_bar_date: function(start,end,ev) {
- return calwnl.templates.event_date(start)+" ";
- },
- event_bar_text: function(start,end,ev) {
- return ev.text;
- }
- });
- };
- calwnl.locale= {
- date: {
- month_full: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
- month_short: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"],
- day_full: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"],
- day_short: ["日", "一", "二", "三", "四", "五", "六"]
- }
- };
- var tplMgr = {
- tplMap : {},
- getInstance : function(id) {
- var instance = this.tplMap[id];
- if (!instance) {
- instance = new jCT($.dom(id).value);
- instance.Build();
- this.tplMap[id] = instance;
- }
- return instance;
- },
- getTemplate : function(id) {
- var element = $.dom(id);
- var content = element.value;
- if (content == null)
- content = element.innerHTML;
- content = content.replace(/</g, "<").replace(/>/g, ">");
- return content;
- },
- loadTemplate : function(id, url, callback) {
- if ($('textarea[id=' + id + ']').length > 0) {
- if (callback) {
- callback();
- }
- } else {
-
- $.get(url, {
- t : Math.ceil(Math.random() * 100)
- }, function(data) {
-
-
- $('<textarea id="' + id
- + '" style="display:none"></textarea>')
- .appendTo('body').val(data);
- if (callback) {
- callback();
- }
- });
- }
- }
- };
- var dialogMgr = {
- dialog : null,
- option : null,
- moving : false,
- pos : null,
- show : function(el, options) {
- var op = {
- width : 428,
- title : '',
- draggable : true
-
- };
- var options = options || {};
- for (var p in options) {
- op[p] = options[p];
- }
- if (this.dialog) {
- this.hide();
- }
- this.option = op;
- this.dialog = $.dom(el);
- var width = this.option.width;
- var w = utils.getClientWidth();
- var left = 0;
- if (w > width) {
- left = (w - width) / 2;
- }
- this.dialog.style.left = left + 'px';
- var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
- var top = 30 + scrollTop;
- this.dialog.style.top = top + 'px';
- },
- hide : function() {
- if (this.dialog) {
- $(this.dialog).hide();
- if (this.option.hideCallback) {
- try {
- this.option.hideCallback();
- } catch (ex) {
- }
- }
- this.option = null;
- this.dialog = null;
- this.moving = false;
- this.pos = null;
- }
- }
- };
- var CalUtil = {
-
- monthViewInfo : function(date, startOnMonday) {
- var dateUtil = calwnl.date;
- var info = {};
- var s_date = dateUtil.copy(date);
- s_date = dateUtil.month_view_start(s_date, startOnMonday);
- info.start = dateUtil.copy(dateUtil.week_start(s_date, startOnMonday));
- var e_date = dateUtil.copy(date);
- e_date.setMonth(date.getMonth() + 1);
- e_date.setDate(1);
- info.row = Math.ceil((e_date.valueOf()-s_date.valueOf()) / 604800000);
- info.end = dateUtil.add(info.start, 7*info.row, 'day');
- return info;
- }
- };
- jQuery.cookie = function(name, value, options) {
- if (typeof value != 'undefined') {
- options = options || {};
- if (value === null) {
- value = '';
- options.expires = -1;
- }
- var expires = '';
- if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
- var date;
- if (typeof options.expires == 'number') {
- date = new Date();
- date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
- } else {
- date = options.expires;
- }
- expires = '; expires=' + date.toUTCString();
- }
-
-
-
- var path = options.path ? '; path=' + (options.path) : '';
- var domain = options.domain ? '; domain=' + (options.domain) : '';
- var secure = options.secure ? '; secure' : '';
- document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
- } else {
- var cookieValue = null;
- if (document.cookie && document.cookie != '') {
- var cookies = document.cookie.split(';');
- for (var i = 0; i < cookies.length; i++) {
- var cookie = jQuery.trim(cookies[i]);
-
- if (cookie.substring(0, name.length + 1) == (name + '=')) {
- cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
- break;
- }
- }
- }
- return cookieValue;
- }
- };
- var colors = ['#CC3333', '#DD4477', '#994499', '#6633CC', '#336699', '#3366CC',
- '#22AA99', '#329262', '#109618', '#66AA00', '#AAAA11', '#D6AE00',
- '#EE8800', '#DD5511', '#A87070', '#8C6D8C', '#627487', '#7083A8',
- '#5C8D87', '#898951', '#B08B59'];
- var DataHandler = {
-
- cachedData : {
- from : new Date(),
- to : new Date()
- },
- loadCld : {},
- getLoadCld : function(dateStart, dateEnd,cld){
- var sel = [];
- var str = getDateKey(dateStart)+"-"+getDateKey(dateEnd);
- for(var i=0;i<cld.length;i++)
- {
- var signal = str+"-"+cld[i];
- if(typeof DataHandler.loadCld[signal] == 'undefined')
- {
- sel.push(cld[i]);
- DataHandler.loadCld[signal] = {};
- }
-
- }
- if(sel.length>0)
- return sel.join(",");
- else
- return false;
- },
-
- resultData: {},
-
-
- resultDataById: {},
-
-
- getSchByPeriod : function(dateStart, dateEnd, callback) {
- var s_time = dateStart, e_time = dateEnd;
- if (dateStart >= this.cachedData.from) {
- s_time = this.cachedData.to;
- }
- if (dateEnd <= this.cachedData.to) {
- e_time = this.cachedData.from;
- }
- var cld = calendarHandler.getSelectedArray();
-
- var cldStr = DataHandler.getLoadCld(dateStart, dateEnd,cld);
- if(cldStr) {
-
-
- $.ajax({
- url: '/schedule/list.do',
- async: true,
- type: 'post',
- dataType: 'json',
- data: {
- fromDate: calwnl.templates.load_format(dateStart),
- toDate: calwnl.templates.load_format(dateEnd),
- timeZone: - (new Date()).getTimezoneOffset() / 60,
- calendarId: cldStr
- },
- success: function(result) {
- for(var i=0;i<result.length;i++)
- {
- var cldObj = result[i];
- DataHandler.formatSchData(cldObj.schlist, e_time);
- }
- if(DataHandler.cachedData.from > s_time)
- DataHandler.cachedData.from = s_time;
- if(DataHandler.cachedData.to < e_time)
- DataHandler.cachedData.to = e_time;
- if(callback) {
- callback();
- }
- }
- });
- } else {
- if(callback) {
- callback();
- }
- }
- },
-
-
- getSchByMonth : function(date, callback, startOnMonday) {
- var s_date = calwnl.date.month_view_start(date, startOnMonday);
- var e_date = calwnl.date.add(s_date, CalUtil.monthViewInfo(date, startOnMonday).row*7, 'day');
- this.getSchByPeriod(s_date, e_date, callback);
- },
-
-
- getSchedulesByRange: function(sTime,eTime,data,cld) {
- var result= {};
- var dataSch = data||DataHandler.resultData;
- if(typeof sTime=="string") {
- sTime = calwnl.templates.api_date(sTime);
- }
- if(typeof eTime=="string") {
- eTime = calwnl.templates.api_date(eTime);
- }
- sTime = calwnl.date.date_part(sTime);
- eTime = calwnl.date.date_part(eTime);
- for(;sTime<=eTime;) {
- var k = "d"+getDateKey(sTime);
- result[k]= {
- schList:[],
- num:0
- };
- if(dataSch[k]) {
- var schList_temp = [];
- for(var j = 0; j<dataSch[k].schList.length;j++)
- {
- var sch_t = dataSch[k].schList[j];
- for(var q = 0;q<cld.length;q++)
- {
- if(sch_t.cid==cld[q])
- {
- schList_temp.push(sch_t);
- break;
- }
- }
- }
- result[k].schList = schList_temp;
- result[k].num = schList_temp.length;
- }
- sTime = calwnl.date.add(sTime,1,"day");
- }
- var maxNum = 0;
- for(var i in result) {
- var k = result[i];
- if(k.num>maxNum)
- maxNum = k.num;
- }
- result.maxNum = maxNum;
- return JSON.parse(JSON.stringify(result));
- },
-
-
- formatSchData : function(data,dateScope) {
- var result = {};
-
- for(var i=0;i<data.length;i++) {
- var sch = data[i];
- if('' == sch.text) sch.text = '(无标题)';
- var sTime = calwnl.templates.api_date(sch.start_time);
- var eTime = new Date(sTime.valueOf()+sch.duration*1000);
- var sTemp = calwnl.date.copy(sTime);
- var sideTime = calwnl.date.add(calwnl.date.date_part(sTemp),1,"day");
- sch.isDisplay = 0;
- if(sideTime>=eTime) {
- var key = "d"+getDateKey(sTime);
- if(!result[key])
- result[key]= {
- schList:[]
- };
- result[key].schList.push(sch);
- } else {
- var s_t = calwnl.date.copy(sTime);
- for(;s_t<eTime&&s_t<dateScope;)
- {
- var k = "d"+getDateKey(s_t);
- var sch_temp = DataHandler.copySch(sch);
- sch_temp.cross_st = calwnl.templates.day_date(s_t)+":00";
- var e_t = calwnl.date.add(calwnl.date.date_part(s_t),1,"day");
- if(e_t<=eTime)
- sch_temp.cross_et = calwnl.templates.day_date(e_t)+":00";
- else
- sch_temp.cross_et = calwnl.templates.day_date(eTime)+":00";
- if(!result[k])
- result[k]= {
- schList:[]
- };
- result[k].schList.push(sch_temp);
- s_t = e_t;
- }
- }
- }
- DataHandler.mergeData(DataHandler.resultData, result);
- DataHandler.formatSchDataById(data);
- },
-
-
- formatSchDataById : function(data) {
- var result = {};
- for(var i=0;i<data.length;i++) {
- result[data[i].id] = data[i];
- }
- $.extend(true, DataHandler.resultDataById, result);
- },
-
- mergeData: function (target, source) {
- for(var dailySch in source) {
- if(target[dailySch]) {
- var src = source[dailySch]['schList'];
- var tgt = target[dailySch]['schList'];
- for(var i = 0; i < src.length; ++i) {
- var flag = false;
- for(var j = 0; j < tgt.length; ++j) {
- if(tgt[j].id == src[i].id) {
- tgt[j] = src[i];
- flag = true;
- break;
- }
- }
- if(!flag) {
- tgt.push(src[i]);
- }
- }
- } else {
- target[dailySch] = source[dailySch];
- }
-
- target[dailySch].schList.sort(function(a, b) {
- if(a.allday_event) return -1;
- if(b.allday_event) return 1;
- var a_stime = calwnl.templates.api_date(a.start_time).getTime();
- var b_stime = calwnl.templates.api_date(b.start_time).getTime();
- return (a_stime - b_stime);
- });
- }
- },
-
-
- delSchById: function(id) {
- for (var dailySch in DataHandler.resultData) {
- var schList = DataHandler.resultData[dailySch]['schList'];
- for (var i = 0; i < schList.length; ++i) {
- if (schList[i].id == id) {
- schList.splice(i, 1);
- --i;
- }
- }
- }
- delete DataHandler.resultDataById[id];
- },
-
-
- updateSch: function(schList, dateScope) {
- DataHandler.delSchById(schList[0].id);
- DataHandler.formatSchData(schList, dateScope);
- },
-
-
- copySch : function(sch) {
- var t = function() {
- };
- t.prototype = sch;
- return new t();
- }
- };
- (function(window){
-
- var startOnMonday=true,
- reg=/^d(\d{4})-(\d{2})-(\d{2})/,
- r2=/^0/,
- calendarId=null,
- navDate=null,
- seletedDate=null,
- hoverDate = null,
- schData=null;
-
-
- var log=function(message){
- },
-
-
- setNavDate=function(date){
- if(date instanceof Date)
- navDate=date;
- else
- navDate=null;
- },
-
-
- getCurrentMonthViewData=function(callback){
- if(navDate){
- DataHandler.getSchByMonth(navDate, function(){
- var monthInfo = CalUtil.monthViewInfo(navDate,startOnMonday);
- var s=monthInfo.start,
- e=monthInfo.end;
- var cld=new Array();
- cld.push(calendarId);
- schData = DataHandler.getSchedulesByRange(s,e,DataHandler.resultData,cld);
-
- if(callback){
- callback();
- }
- }, startOnMonday);
-
- }
- },
-
-
- creatSch=function(text,allday,hour,second,callback){
- var sch = {};
- sch.schTitle = text;
- sch.alldayEvent = allday;
- if(allday) {
- sch.startTime = getDateKey(seletedDate) + ' ' + '09:00:00';
- } else {
- hour = hour + "";
- second = second + "";
- sch.startTime = getDateKey(seletedDate) + ' ' + hour.leftpad(2) + ':' + second.leftpad(2) + ":00";
- }
- sch['timeZone'] = - (new Date()).getTimezoneOffset() / 60;
-
- var dateScope = calwnl.date.add(calwnl.templates.api_date(sch.startTime), 1, 'day');
- $.ajax({
- type: 'post',
- data: sch,
- url: '/schedule/update.do',
- success: function(result) {
- for(var i=0;i<result.length;i++)
- {
- var cldObj = result[i];
- DataHandler.formatSchData(cldObj.schlist, dateScope);
- }
- getCurrentMonthViewData(function(){
- for(var key in schData){
- if(key!="maxNum"){
- var num = schData[key].num;
- var k= key.replace(reg,function(all,year,month,date){
- return year+"-"+month.replace(r2,"")+"-"+date.replace(r2,"");
- });
- if(num > 0){
- callback(calwnl.templates.api_date(k));
- }
- }
- }
- });
- },
- dataType: 'json'
- });
- },
-
- cutByRealLength=function(str,size){
- var totalCount=0;
- var i;
- for(i=0;i<str.length;i++){
- var c=str.charCodeAt(i);
- if((c>=0x0001&&c<=0x007e)||(0xff60<=c&&c<=0xff9f)){
- totalCount++;
- }else{
- totalCount+=2;
- }if(totalCount>=size){
- return str.substring(0,i+1);
- }
- }
- return str;
- };
- var UI={
-
- drawSch:function(schList){
-
- $("#taskList").children().remove();
- var schs = [];
- if(schList.length>0){
- for(var i = 0; i < 3 && i < schList.length; i++){
- var showTxt=cutByRealLength(schList[i].text,10);
- if(showTxt.length<schList[i].text.length){
- showTxt+="...";
- }
- var showTime = " ";
- if(! schList[i].allday_event){
- var raw = schList[i].start_time.split(' ')[1].split(':');
- raw.splice(2);
- showTime = raw.join(':') + " ";
- }
-
-
- schs.push("<div class='workitem'>");
- schs.push("<div class='tastWorkDot'></div>");
- if(! schList[i].allday_event){
- schs.push("<div class='taskWorkTime'>" + showTime + "</div>");
- schs.push("<div style='margin-left:5px;'>" + showTxt + "</div>");
- }else{
- schs.push("<div style='margin-left:11px;'>" + showTxt + "</div>");
- }
-
- schs.push("</div>");
- }
- }
- $("#taskList").html(schs.join(''));
- }
- };
-
-
- var calendarHandler={
- init:function(id){
- if(typeof id == 'number')
- calendarId=id;
- else if(typeof id == 'string')
- calendarId=parseInt(id);
- navDate=seletedDate=new Date();
- calwnl.init_templates();
- },
-
- isLogin:function(){
- return !!calendarId;
- },
-
- getSelectedArray:function(){
- var t=new Array();
- t.push(calendarId);
- return t;
- },
-
- prepareData4:function(year,month , callback){
- var date=new Date();
- date.setYear(year);
- date.setMonth(month-1);
- date.setDate(1);
- setNavDate(date);
- getCurrentMonthViewData(function(){
- for(var key in schData){
- if(key!="maxNum"){
- var num = schData[key].num;
- var k= key.replace(reg,function(all,year,month,date){
- return year+"-"+month.replace(r2,"")+"-"+date.replace(r2,"");
- });
- if(num > 0){
- var tttt = calwnl.templates.api_date(k);
- callback(tttt);
- }
- }
- }
-
- });
- },
-
- getSelectedDate:function(){
- return seletedDate;
- },
-
- setSelectedDate:function(date){
- if(typeof date == "string")
- seletedDate = calwnl.templates.api_date(date);
- else if(date instanceof Date)
- seletedDate = date;
- },
-
- getSch:function(){
- return schData["d"+getDateKey(hoverDate)];
- },
-
- addSch:function(text,allday,hour,second,callback){
- creatSch(text,allday,hour,second,callback);
- },
-
- drawSch:function(){
- if(this.isLogin()){
- UI.drawSch(this.getSch().schList);
- }
- },
-
- setHoverDate:function(date){
- if(typeof date == "string")
- hoverDate = calwnl.templates.api_date(date);
- else if(date instanceof Date)
- hoverDate = date;
- }
- };
-
- if(window.calendarHandler){
- window._calendarHandler=window.calendarHandler;
- }
- window.calendarHandler=calendarHandler;
- })(window);
-
|