remove Iter.js, thus breaking dygraphs
[dygraphs.git] / dygraph-combined.js
1 /***
2
3 MochiKit.MochiKit 1.4 : PACKED VERSION
4
5 THIS FILE IS AUTOMATICALLY GENERATED. If creating patches, please
6 diff against the source tree, not this file.
7
8 See <http://mochikit.com/> for documentation, downloads, license, etc.
9
10 (c) 2005 Bob Ippolito. All rights Reserved.
11
12 ***/
13
14 if(typeof (dojo)!="undefined"){
15 dojo.provide("MochiKit.Base");
16 }
17 if(typeof (MochiKit)=="undefined"){
18 MochiKit={};
19 }
20 if(typeof (MochiKit.Base)=="undefined"){
21 MochiKit.Base={};
22 }
23 if(typeof (MochiKit.__export__)=="undefined"){
24 MochiKit.__export__=(MochiKit.__compat__||(typeof (JSAN)=="undefined"&&typeof (dojo)=="undefined"));
25 }
26 MochiKit.Base.VERSION="1.4";
27 MochiKit.Base.NAME="MochiKit.Base";
28 MochiKit.Base.update=function(_1,_2){
29 if(_1===null){
30 _1={};
31 }
32 for(var i=1;i<arguments.length;i++){
33 var o=arguments[i];
34 if(typeof (o)!="undefined"&&o!==null){
35 for(var k in o){
36 _1[k]=o[k];
37 }
38 }
39 }
40 return _1;
41 };
42 MochiKit.Base.update(MochiKit.Base,{__repr__:function(){
43 return "["+this.NAME+" "+this.VERSION+"]";
44 },toString:function(){
45 return this.__repr__();
46 },camelize:function(_6){
47 var _7=_6.split("-");
48 var cc=_7[0];
49 for(var i=1;i<_7.length;i++){
50 cc+=_7[i].charAt(0).toUpperCase()+_7[i].substring(1);
51 }
52 return cc;
53 },counter:function(n){
54 if(arguments.length===0){
55 n=1;
56 }
57 return function(){
58 return n++;
59 };
60 },clone:function(_b){
61 var me=arguments.callee;
62 if(arguments.length==1){
63 me.prototype=_b;
64 return new me();
65 }
66 },_flattenArray:function(_d,_e){
67 for(var i=0;i<_e.length;i++){
68 var o=_e[i];
69 if(o instanceof Array){
70 arguments.callee(_d,o);
71 }else{
72 _d.push(o);
73 }
74 }
75 return _d;
76 },flattenArray:function(lst){
77 return MochiKit.Base._flattenArray([],lst);
78 },flattenArguments:function(lst){
79 var res=[];
80 var m=MochiKit.Base;
81 var _15=m.extend(null,arguments);
82 while(_15.length){
83 var o=_15.shift();
84 if(o&&typeof (o)=="object"&&typeof (o.length)=="number"){
85 for(var i=o.length-1;i>=0;i--){
86 _15.unshift(o[i]);
87 }
88 }else{
89 res.push(o);
90 }
91 }
92 return res;
93 },extend:function(_18,obj,_1a){
94 if(!_1a){
95 _1a=0;
96 }
97 if(obj){
98 var l=obj.length;
99 if(typeof (l)!="number"){
100 if(typeof (MochiKit.Iter)!="undefined"){
101 obj=MochiKit.Iter.list(obj);
102 l=obj.length;
103 }else{
104 throw new TypeError("Argument not an array-like and MochiKit.Iter not present");
105 }
106 }
107 if(!_18){
108 _18=[];
109 }
110 for(var i=_1a;i<l;i++){
111 _18.push(obj[i]);
112 }
113 }
114 return _18;
115 },updatetree:function(_1d,obj){
116 if(_1d===null){
117 _1d={};
118 }
119 for(var i=1;i<arguments.length;i++){
120 var o=arguments[i];
121 if(typeof (o)!="undefined"&&o!==null){
122 for(var k in o){
123 var v=o[k];
124 if(typeof (_1d[k])=="object"&&typeof (v)=="object"){
125 arguments.callee(_1d[k],v);
126 }else{
127 _1d[k]=v;
128 }
129 }
130 }
131 }
132 return _1d;
133 },setdefault:function(_23,obj){
134 if(_23===null){
135 _23={};
136 }
137 for(var i=1;i<arguments.length;i++){
138 var o=arguments[i];
139 for(var k in o){
140 if(!(k in _23)){
141 _23[k]=o[k];
142 }
143 }
144 }
145 return _23;
146 },keys:function(obj){
147 var _29=[];
148 for(var _2a in obj){
149 _29.push(_2a);
150 }
151 return _29;
152 },values:function(obj){
153 var _2c=[];
154 for(var _2d in obj){
155 _2c.push(obj[_2d]);
156 }
157 return _2c;
158 },items:function(obj){
159 var _2f=[];
160 var e;
161 for(var _31 in obj){
162 var v;
163 try{
164 v=obj[_31];
165 }
166 catch(e){
167 continue;
168 }
169 _2f.push([_31,v]);
170 }
171 return _2f;
172 },_newNamedError:function(_33,_34,_35){
173 _35.prototype=new MochiKit.Base.NamedError(_33.NAME+"."+_34);
174 _33[_34]=_35;
175 },operator:{truth:function(a){
176 return !!a;
177 },lognot:function(a){
178 return !a;
179 },identity:function(a){
180 return a;
181 },not:function(a){
182 return ~a;
183 },neg:function(a){
184 return -a;
185 },add:function(a,b){
186 return a+b;
187 },sub:function(a,b){
188 return a-b;
189 },div:function(a,b){
190 return a/b;
191 },mod:function(a,b){
192 return a%b;
193 },mul:function(a,b){
194 return a*b;
195 },and:function(a,b){
196 return a&b;
197 },or:function(a,b){
198 return a|b;
199 },xor:function(a,b){
200 return a^b;
201 },lshift:function(a,b){
202 return a<<b;
203 },rshift:function(a,b){
204 return a>>b;
205 },zrshift:function(a,b){
206 return a>>>b;
207 },eq:function(a,b){
208 return a==b;
209 },ne:function(a,b){
210 return a!=b;
211 },gt:function(a,b){
212 return a>b;
213 },ge:function(a,b){
214 return a>=b;
215 },lt:function(a,b){
216 return a<b;
217 },le:function(a,b){
218 return a<=b;
219 },seq:function(a,b){
220 return a===b;
221 },sne:function(a,b){
222 return a!==b;
223 },ceq:function(a,b){
224 return MochiKit.Base.compare(a,b)===0;
225 },cne:function(a,b){
226 return MochiKit.Base.compare(a,b)!==0;
227 },cgt:function(a,b){
228 return MochiKit.Base.compare(a,b)==1;
229 },cge:function(a,b){
230 return MochiKit.Base.compare(a,b)!=-1;
231 },clt:function(a,b){
232 return MochiKit.Base.compare(a,b)==-1;
233 },cle:function(a,b){
234 return MochiKit.Base.compare(a,b)!=1;
235 },logand:function(a,b){
236 return a&&b;
237 },logor:function(a,b){
238 return a||b;
239 },contains:function(a,b){
240 return b in a;
241 }},forwardCall:function(_73){
242 return function(){
243 return this[_73].apply(this,arguments);
244 };
245 },itemgetter:function(_74){
246 return function(arg){
247 return arg[_74];
248 };
249 },typeMatcher:function(){
250 var _76={};
251 for(var i=0;i<arguments.length;i++){
252 var typ=arguments[i];
253 _76[typ]=typ;
254 }
255 return function(){
256 for(var i=0;i<arguments.length;i++){
257 if(!(typeof (arguments[i]) in _76)){
258 return false;
259 }
260 }
261 return true;
262 };
263 },isNull:function(){
264 for(var i=0;i<arguments.length;i++){
265 if(arguments[i]!==null){
266 return false;
267 }
268 }
269 return true;
270 },isUndefinedOrNull:function(){
271 for(var i=0;i<arguments.length;i++){
272 var o=arguments[i];
273 if(!(typeof (o)=="undefined"||o===null)){
274 return false;
275 }
276 }
277 return true;
278 },isEmpty:function(obj){
279 return !MochiKit.Base.isNotEmpty.apply(this,arguments);
280 },isNotEmpty:function(obj){
281 for(var i=0;i<arguments.length;i++){
282 var o=arguments[i];
283 if(!(o&&o.length)){
284 return false;
285 }
286 }
287 return true;
288 },isArrayLike:function(){
289 for(var i=0;i<arguments.length;i++){
290 var o=arguments[i];
291 var typ=typeof (o);
292 if((typ!="object"&&!(typ=="function"&&typeof (o.item)=="function"))||o===null||typeof (o.length)!="number"||o.nodeType===3){
293 return false;
294 }
295 }
296 return true;
297 },isDateLike:function(){
298 for(var i=0;i<arguments.length;i++){
299 var o=arguments[i];
300 if(typeof (o)!="object"||o===null||typeof (o.getTime)!="function"){
301 return false;
302 }
303 }
304 return true;
305 },xmap:function(fn){
306 if(fn===null){
307 return MochiKit.Base.extend(null,arguments,1);
308 }
309 var _87=[];
310 for(var i=1;i<arguments.length;i++){
311 _87.push(fn(arguments[i]));
312 }
313 return _87;
314 },map:function(fn,lst){
315 var m=MochiKit.Base;
316 var itr=MochiKit.Iter;
317 var _8d=m.isArrayLike;
318 if(arguments.length<=2){
319 if(!_8d(lst)){
320 if(itr){
321 lst=itr.list(lst);
322 if(fn===null){
323 return lst;
324 }
325 }else{
326 throw new TypeError("Argument not an array-like and MochiKit.Iter not present");
327 }
328 }
329 if(fn===null){
330 return m.extend(null,lst);
331 }
332 var _8e=[];
333 for(var i=0;i<lst.length;i++){
334 _8e.push(fn(lst[i]));
335 }
336 return _8e;
337 }else{
338 if(fn===null){
339 fn=Array;
340 }
341 var _90=null;
342 for(i=1;i<arguments.length;i++){
343 if(!_8d(arguments[i])){
344 if(itr){
345 return itr.list(itr.imap.apply(null,arguments));
346 }else{
347 throw new TypeError("Argument not an array-like and MochiKit.Iter not present");
348 }
349 }
350 var l=arguments[i].length;
351 if(_90===null||_90>l){
352 _90=l;
353 }
354 }
355 _8e=[];
356 for(i=0;i<_90;i++){
357 var _92=[];
358 for(var j=1;j<arguments.length;j++){
359 _92.push(arguments[j][i]);
360 }
361 _8e.push(fn.apply(this,_92));
362 }
363 return _8e;
364 }
365 },xfilter:function(fn){
366 var _95=[];
367 if(fn===null){
368 fn=MochiKit.Base.operator.truth;
369 }
370 for(var i=1;i<arguments.length;i++){
371 var o=arguments[i];
372 if(fn(o)){
373 _95.push(o);
374 }
375 }
376 return _95;
377 },filter:function(fn,lst,_9a){
378 var _9b=[];
379 var m=MochiKit.Base;
380 if(!m.isArrayLike(lst)){
381 if(MochiKit.Iter){
382 lst=MochiKit.Iter.list(lst);
383 }else{
384 throw new TypeError("Argument not an array-like and MochiKit.Iter not present");
385 }
386 }
387 if(fn===null){
388 fn=m.operator.truth;
389 }
390 if(typeof (Array.prototype.filter)=="function"){
391 return Array.prototype.filter.call(lst,fn,_9a);
392 }else{
393 if(typeof (_9a)=="undefined"||_9a===null){
394 for(var i=0;i<lst.length;i++){
395 var o=lst[i];
396 if(fn(o)){
397 _9b.push(o);
398 }
399 }
400 }else{
401 for(i=0;i<lst.length;i++){
402 o=lst[i];
403 if(fn.call(_9a,o)){
404 _9b.push(o);
405 }
406 }
407 }
408 }
409 return _9b;
410 },_wrapDumbFunction:function(_9f){
411 return function(){
412 switch(arguments.length){
413 case 0:
414 return _9f();
415 case 1:
416 return _9f(arguments[0]);
417 case 2:
418 return _9f(arguments[0],arguments[1]);
419 case 3:
420 return _9f(arguments[0],arguments[1],arguments[2]);
421 }
422 var _a0=[];
423 for(var i=0;i<arguments.length;i++){
424 _a0.push("arguments["+i+"]");
425 }
426 return eval("(func("+_a0.join(",")+"))");
427 };
428 },methodcaller:function(_a2){
429 var _a3=MochiKit.Base.extend(null,arguments,1);
430 if(typeof (_a2)=="function"){
431 return function(obj){
432 return _a2.apply(obj,_a3);
433 };
434 }else{
435 return function(obj){
436 return obj[_a2].apply(obj,_a3);
437 };
438 }
439 },method:function(_a6,_a7){
440 var m=MochiKit.Base;
441 return m.bind.apply(this,m.extend([_a7,_a6],arguments,2));
442 },compose:function(f1,f2){
443 var _ab=[];
444 var m=MochiKit.Base;
445 if(arguments.length===0){
446 throw new TypeError("compose() requires at least one argument");
447 }
448 for(var i=0;i<arguments.length;i++){
449 var fn=arguments[i];
450 if(typeof (fn)!="function"){
451 throw new TypeError(m.repr(fn)+" is not a function");
452 }
453 _ab.push(fn);
454 }
455 return function(){
456 var _af=arguments;
457 for(var i=_ab.length-1;i>=0;i--){
458 _af=[_ab[i].apply(this,_af)];
459 }
460 return _af[0];
461 };
462 },bind:function(_b1,_b2){
463 if(typeof (_b1)=="string"){
464 _b1=_b2[_b1];
465 }
466 var _b3=_b1.im_func;
467 var _b4=_b1.im_preargs;
468 var _b5=_b1.im_self;
469 var m=MochiKit.Base;
470 if(typeof (_b1)=="function"&&typeof (_b1.apply)=="undefined"){
471 _b1=m._wrapDumbFunction(_b1);
472 }
473 if(typeof (_b3)!="function"){
474 _b3=_b1;
475 }
476 if(typeof (_b2)!="undefined"){
477 _b5=_b2;
478 }
479 if(typeof (_b4)=="undefined"){
480 _b4=[];
481 }else{
482 _b4=_b4.slice();
483 }
484 m.extend(_b4,arguments,2);
485 var _b7=function(){
486 var _b8=arguments;
487 var me=arguments.callee;
488 if(me.im_preargs.length>0){
489 _b8=m.concat(me.im_preargs,_b8);
490 }
491 var _ba=me.im_self;
492 if(!_ba){
493 _ba=this;
494 }
495 return me.im_func.apply(_ba,_b8);
496 };
497 _b7.im_self=_b5;
498 _b7.im_func=_b3;
499 _b7.im_preargs=_b4;
500 return _b7;
501 },bindMethods:function(_bb){
502 var _bc=MochiKit.Base.bind;
503 for(var k in _bb){
504 var _be=_bb[k];
505 if(typeof (_be)=="function"){
506 _bb[k]=_bc(_be,_bb);
507 }
508 }
509 },registerComparator:function(_bf,_c0,_c1,_c2){
510 MochiKit.Base.comparatorRegistry.register(_bf,_c0,_c1,_c2);
511 },_primitives:{"boolean":true,"string":true,"number":true},compare:function(a,b){
512 if(a==b){
513 return 0;
514 }
515 var _c5=(typeof (a)=="undefined"||a===null);
516 var _c6=(typeof (b)=="undefined"||b===null);
517 if(_c5&&_c6){
518 return 0;
519 }else{
520 if(_c5){
521 return -1;
522 }else{
523 if(_c6){
524 return 1;
525 }
526 }
527 }
528 var m=MochiKit.Base;
529 var _c8=m._primitives;
530 if(!(typeof (a) in _c8&&typeof (b) in _c8)){
531 try{
532 return m.comparatorRegistry.match(a,b);
533 }
534 catch(e){
535 if(e!=m.NotFound){
536 throw e;
537 }
538 }
539 }
540 if(a<b){
541 return -1;
542 }else{
543 if(a>b){
544 return 1;
545 }
546 }
547 var _c9=m.repr;
548 throw new TypeError(_c9(a)+" and "+_c9(b)+" can not be compared");
549 },compareDateLike:function(a,b){
550 return MochiKit.Base.compare(a.getTime(),b.getTime());
551 },compareArrayLike:function(a,b){
552 var _ce=MochiKit.Base.compare;
553 var _cf=a.length;
554 var _d0=0;
555 if(_cf>b.length){
556 _d0=1;
557 _cf=b.length;
558 }else{
559 if(_cf<b.length){
560 _d0=-1;
561 }
562 }
563 for(var i=0;i<_cf;i++){
564 var cmp=_ce(a[i],b[i]);
565 if(cmp){
566 return cmp;
567 }
568 }
569 return _d0;
570 },registerRepr:function(_d3,_d4,_d5,_d6){
571 MochiKit.Base.reprRegistry.register(_d3,_d4,_d5,_d6);
572 },repr:function(o){
573 if(typeof (o)=="undefined"){
574 return "undefined";
575 }else{
576 if(o===null){
577 return "null";
578 }
579 }
580 try{
581 if(typeof (o.__repr__)=="function"){
582 return o.__repr__();
583 }else{
584 if(typeof (o.repr)=="function"&&o.repr!=arguments.callee){
585 return o.repr();
586 }
587 }
588 return MochiKit.Base.reprRegistry.match(o);
589 }
590 catch(e){
591 if(typeof (o.NAME)=="string"&&(o.toString==Function.prototype.toString||o.toString==Object.prototype.toString)){
592 return o.NAME;
593 }
594 }
595 try{
596 var _d8=(o+"");
597 }
598 catch(e){
599 return "["+typeof (o)+"]";
600 }
601 if(typeof (o)=="function"){
602 o=_d8.replace(/^\s+/,"");
603 var idx=o.indexOf("{");
604 if(idx!=-1){
605 o=o.substr(0,idx)+"{...}";
606 }
607 }
608 return _d8;
609 },reprArrayLike:function(o){
610 var m=MochiKit.Base;
611 return "["+m.map(m.repr,o).join(", ")+"]";
612 },reprString:function(o){
613 return ("\""+o.replace(/(["\\])/g,"\\$1")+"\"").replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r");
614 },reprNumber:function(o){
615 return o+"";
616 },registerJSON:function(_de,_df,_e0,_e1){
617 MochiKit.Base.jsonRegistry.register(_de,_df,_e0,_e1);
618 },evalJSON:function(){
619 return eval("("+arguments[0]+")");
620 },serializeJSON:function(o){
621 var _e3=typeof (o);
622 if(_e3=="number"||_e3=="boolean"){
623 return o+"";
624 }else{
625 if(o===null){
626 return "null";
627 }
628 }
629 var m=MochiKit.Base;
630 var _e5=m.reprString;
631 if(_e3=="string"){
632 return _e5(o);
633 }
634 var me=arguments.callee;
635 var _e7;
636 if(typeof (o.__json__)=="function"){
637 _e7=o.__json__();
638 if(o!==_e7){
639 return me(_e7);
640 }
641 }
642 if(typeof (o.json)=="function"){
643 _e7=o.json();
644 if(o!==_e7){
645 return me(_e7);
646 }
647 }
648 if(_e3!="function"&&typeof (o.length)=="number"){
649 var res=[];
650 for(var i=0;i<o.length;i++){
651 var val=me(o[i]);
652 if(typeof (val)!="string"){
653 val="undefined";
654 }
655 res.push(val);
656 }
657 return "["+res.join(", ")+"]";
658 }
659 try{
660 _e7=m.jsonRegistry.match(o);
661 if(o!==_e7){
662 return me(_e7);
663 }
664 }
665 catch(e){
666 if(e!=m.NotFound){
667 throw e;
668 }
669 }
670 if(_e3=="undefined"){
671 throw new TypeError("undefined can not be serialized as JSON");
672 }
673 if(_e3=="function"){
674 return null;
675 }
676 res=[];
677 for(var k in o){
678 var _ec;
679 if(typeof (k)=="number"){
680 _ec="\""+k+"\"";
681 }else{
682 if(typeof (k)=="string"){
683 _ec=_e5(k);
684 }else{
685 continue;
686 }
687 }
688 val=me(o[k]);
689 if(typeof (val)!="string"){
690 continue;
691 }
692 res.push(_ec+":"+val);
693 }
694 return "{"+res.join(", ")+"}";
695 },objEqual:function(a,b){
696 return (MochiKit.Base.compare(a,b)===0);
697 },arrayEqual:function(_ef,arr){
698 if(_ef.length!=arr.length){
699 return false;
700 }
701 return (MochiKit.Base.compare(_ef,arr)===0);
702 },concat:function(){
703 var _f1=[];
704 var _f2=MochiKit.Base.extend;
705 for(var i=0;i<arguments.length;i++){
706 _f2(_f1,arguments[i]);
707 }
708 return _f1;
709 },keyComparator:function(key){
710 var m=MochiKit.Base;
711 var _f6=m.compare;
712 if(arguments.length==1){
713 return function(a,b){
714 return _f6(a[key],b[key]);
715 };
716 }
717 var _f9=m.extend(null,arguments);
718 return function(a,b){
719 var _fc=0;
720 for(var i=0;(_fc===0)&&(i<_f9.length);i++){
721 var key=_f9[i];
722 _fc=_f6(a[key],b[key]);
723 }
724 return _fc;
725 };
726 },reverseKeyComparator:function(key){
727 var _100=MochiKit.Base.keyComparator.apply(this,arguments);
728 return function(a,b){
729 return _100(b,a);
730 };
731 },partial:function(func){
732 var m=MochiKit.Base;
733 return m.bind.apply(this,m.extend([func,undefined],arguments,1));
734 },listMinMax:function(_105,lst){
735 if(lst.length===0){
736 return null;
737 }
738 var cur=lst[0];
739 var _108=MochiKit.Base.compare;
740 for(var i=1;i<lst.length;i++){
741 var o=lst[i];
742 if(_108(o,cur)==_105){
743 cur=o;
744 }
745 }
746 return cur;
747 },objMax:function(){
748 return MochiKit.Base.listMinMax(1,arguments);
749 },objMin:function(){
750 return MochiKit.Base.listMinMax(-1,arguments);
751 },findIdentical:function(lst,_10c,_10d,end){
752 if(typeof (end)=="undefined"||end===null){
753 end=lst.length;
754 }
755 if(typeof (_10d)=="undefined"||_10d===null){
756 _10d=0;
757 }
758 for(var i=_10d;i<end;i++){
759 if(lst[i]===_10c){
760 return i;
761 }
762 }
763 return -1;
764 },mean:function(){
765 var sum=0;
766 var m=MochiKit.Base;
767 var args=m.extend(null,arguments);
768 var _113=args.length;
769 while(args.length){
770 var o=args.shift();
771 if(o&&typeof (o)=="object"&&typeof (o.length)=="number"){
772 _113+=o.length-1;
773 for(var i=o.length-1;i>=0;i--){
774 sum+=o[i];
775 }
776 }else{
777 sum+=o;
778 }
779 }
780 if(_113<=0){
781 throw new TypeError("mean() requires at least one argument");
782 }
783 return sum/_113;
784 },median:function(){
785 var data=MochiKit.Base.flattenArguments(arguments);
786 if(data.length===0){
787 throw new TypeError("median() requires at least one argument");
788 }
789 data.sort(compare);
790 if(data.length%2==0){
791 var _117=data.length/2;
792 return (data[_117]+data[_117-1])/2;
793 }else{
794 return data[(data.length-1)/2];
795 }
796 },findValue:function(lst,_119,_11a,end){
797 if(typeof (end)=="undefined"||end===null){
798 end=lst.length;
799 }
800 if(typeof (_11a)=="undefined"||_11a===null){
801 _11a=0;
802 }
803 var cmp=MochiKit.Base.compare;
804 for(var i=_11a;i<end;i++){
805 if(cmp(lst[i],_119)===0){
806 return i;
807 }
808 }
809 return -1;
810 },nodeWalk:function(node,_11f){
811 var _120=[node];
812 var _121=MochiKit.Base.extend;
813 while(_120.length){
814 var res=_11f(_120.shift());
815 if(res){
816 _121(_120,res);
817 }
818 }
819 },nameFunctions:function(_123){
820 var base=_123.NAME;
821 if(typeof (base)=="undefined"){
822 base="";
823 }else{
824 base=base+".";
825 }
826 for(var name in _123){
827 var o=_123[name];
828 if(typeof (o)=="function"&&typeof (o.NAME)=="undefined"){
829 try{
830 o.NAME=base+name;
831 }
832 catch(e){
833 }
834 }
835 }
836 },queryString:function(_127,_128){
837 if(typeof (MochiKit.DOM)!="undefined"&&arguments.length==1&&(typeof (_127)=="string"||(typeof (_127.nodeType)!="undefined"&&_127.nodeType>0))){
838 var kv=MochiKit.DOM.formContents(_127);
839 _127=kv[0];
840 _128=kv[1];
841 }else{
842 if(arguments.length==1){
843 if(typeof (_127.length)=="number"&&_127.length==2){
844 return arguments.callee(_127[0],_127[1]);
845 }
846 var o=_127;
847 _127=[];
848 _128=[];
849 for(var k in o){
850 var v=o[k];
851 if(typeof (v)=="function"){
852 continue;
853 }else{
854 if(typeof (v)!="string"&&typeof (v.length)=="number"){
855 for(var i=0;i<v.length;i++){
856 _127.push(k);
857 _128.push(v[i]);
858 }
859 }else{
860 _127.push(k);
861 _128.push(v);
862 }
863 }
864 }
865 }
866 }
867 var rval=[];
868 var len=Math.min(_127.length,_128.length);
869 var _130=MochiKit.Base.urlEncode;
870 for(var i=0;i<len;i++){
871 v=_128[i];
872 if(typeof (v)!="undefined"&&v!==null){
873 rval.push(_130(_127[i])+"="+_130(v));
874 }
875 }
876 return rval.join("&");
877 },parseQueryString:function(_131,_132){
878 var qstr=(_131.charAt(0)=="?")?_131.substring(1):_131;
879 var _134=qstr.replace(/\+/g,"%20").split(/(\&amp\;|\&\#38\;|\&#x26;|\&)/);
880 var o={};
881 var _136;
882 if(typeof (decodeURIComponent)!="undefined"){
883 _136=decodeURIComponent;
884 }else{
885 _136=unescape;
886 }
887 if(_132){
888 for(var i=0;i<_134.length;i++){
889 var pair=_134[i].split("=");
890 var name=_136(pair.shift());
891 if(!name){
892 continue;
893 }
894 var arr=o[name];
895 if(!(arr instanceof Array)){
896 arr=[];
897 o[name]=arr;
898 }
899 arr.push(_136(pair.join("=")));
900 }
901 }else{
902 for(i=0;i<_134.length;i++){
903 pair=_134[i].split("=");
904 var name=pair.shift();
905 if(!name){
906 continue;
907 }
908 o[_136(name)]=_136(pair.join("="));
909 }
910 }
911 return o;
912 }});
913 MochiKit.Base.AdapterRegistry=function(){
914 this.pairs=[];
915 };
916 MochiKit.Base.AdapterRegistry.prototype={register:function(name,_13c,wrap,_13e){
917 if(_13e){
918 this.pairs.unshift([name,_13c,wrap]);
919 }else{
920 this.pairs.push([name,_13c,wrap]);
921 }
922 },match:function(){
923 for(var i=0;i<this.pairs.length;i++){
924 var pair=this.pairs[i];
925 if(pair[1].apply(this,arguments)){
926 return pair[2].apply(this,arguments);
927 }
928 }
929 throw MochiKit.Base.NotFound;
930 },unregister:function(name){
931 for(var i=0;i<this.pairs.length;i++){
932 var pair=this.pairs[i];
933 if(pair[0]==name){
934 this.pairs.splice(i,1);
935 return true;
936 }
937 }
938 return false;
939 }};
940 MochiKit.Base.EXPORT=["flattenArray","noop","camelize","counter","clone","extend","update","updatetree","setdefault","keys","values","items","NamedError","operator","forwardCall","itemgetter","typeMatcher","isCallable","isUndefined","isUndefinedOrNull","isNull","isEmpty","isNotEmpty","isArrayLike","isDateLike","xmap","map","xfilter","filter","methodcaller","compose","bind","bindMethods","NotFound","AdapterRegistry","registerComparator","compare","registerRepr","repr","objEqual","arrayEqual","concat","keyComparator","reverseKeyComparator","partial","merge","listMinMax","listMax","listMin","objMax","objMin","nodeWalk","zip","urlEncode","queryString","serializeJSON","registerJSON","evalJSON","parseQueryString","findValue","findIdentical","flattenArguments","method","average","mean","median"];
941 MochiKit.Base.EXPORT_OK=["nameFunctions","comparatorRegistry","reprRegistry","jsonRegistry","compareDateLike","compareArrayLike","reprArrayLike","reprString","reprNumber"];
942 MochiKit.Base._exportSymbols=function(_144,_145){
943 if(!MochiKit.__export__){
944 return;
945 }
946 var all=_145.EXPORT_TAGS[":all"];
947 for(var i=0;i<all.length;i++){
948 _144[all[i]]=_145[all[i]];
949 }
950 };
951 MochiKit.Base.__new__=function(){
952 var m=this;
953 m.noop=m.operator.identity;
954 m.forward=m.forwardCall;
955 m.find=m.findValue;
956 if(typeof (encodeURIComponent)!="undefined"){
957 m.urlEncode=function(_149){
958 return encodeURIComponent(_149).replace(/\'/g,"%27");
959 };
960 }else{
961 m.urlEncode=function(_14a){
962 return escape(_14a).replace(/\+/g,"%2B").replace(/\"/g,"%22").rval.replace(/\'/g,"%27");
963 };
964 }
965 m.NamedError=function(name){
966 this.message=name;
967 this.name=name;
968 };
969 m.NamedError.prototype=new Error();
970 m.update(m.NamedError.prototype,{repr:function(){
971 if(this.message&&this.message!=this.name){
972 return this.name+"("+m.repr(this.message)+")";
973 }else{
974 return this.name+"()";
975 }
976 },toString:m.forwardCall("repr")});
977 m.NotFound=new m.NamedError("MochiKit.Base.NotFound");
978 m.listMax=m.partial(m.listMinMax,1);
979 m.listMin=m.partial(m.listMinMax,-1);
980 m.isCallable=m.typeMatcher("function");
981 m.isUndefined=m.typeMatcher("undefined");
982 m.merge=m.partial(m.update,null);
983 m.zip=m.partial(m.map,null);
984 m.average=m.mean;
985 m.comparatorRegistry=new m.AdapterRegistry();
986 m.registerComparator("dateLike",m.isDateLike,m.compareDateLike);
987 m.registerComparator("arrayLike",m.isArrayLike,m.compareArrayLike);
988 m.reprRegistry=new m.AdapterRegistry();
989 m.registerRepr("arrayLike",m.isArrayLike,m.reprArrayLike);
990 m.registerRepr("string",m.typeMatcher("string"),m.reprString);
991 m.registerRepr("numbers",m.typeMatcher("number","boolean"),m.reprNumber);
992 m.jsonRegistry=new m.AdapterRegistry();
993 var all=m.concat(m.EXPORT,m.EXPORT_OK);
994 m.EXPORT_TAGS={":common":m.concat(m.EXPORT_OK),":all":all};
995 m.nameFunctions(this);
996 };
997 MochiKit.Base.__new__();
998 if(MochiKit.__export__){
999 compare=MochiKit.Base.compare;
1000 compose=MochiKit.Base.compose;
1001 serializeJSON=MochiKit.Base.serializeJSON;
1002 }
1003 MochiKit.Base._exportSymbols(this,MochiKit.Base);
1004 if(typeof (dojo)!="undefined"){
1005 dojo.provide("MochiKit.DOM");
1006 dojo.require("MochiKit.Base");
1007 }
1008 if(typeof (JSAN)!="undefined"){
1009 JSAN.use("MochiKit.Base",[]);
1010 }
1011 try{
1012 if(typeof (MochiKit.Base)=="undefined"){
1013 throw "";
1014 }
1015 }
1016 catch(e){
1017 throw "MochiKit.DOM depends on MochiKit.Base!";
1018 }
1019 if(typeof (MochiKit.DOM)=="undefined"){
1020 MochiKit.DOM={};
1021 }
1022 MochiKit.DOM.NAME="MochiKit.DOM";
1023 MochiKit.DOM.VERSION="1.4";
1024 MochiKit.DOM.__repr__=function(){
1025 return "["+this.NAME+" "+this.VERSION+"]";
1026 };
1027 MochiKit.DOM.toString=function(){
1028 return this.__repr__();
1029 };
1030 MochiKit.DOM.EXPORT=["removeEmptyTextNodes","formContents","currentWindow","currentDocument","withWindow","withDocument","registerDOMConverter","coerceToDOM","createDOM","createDOMFunc","isChildNode","getNodeAttribute","removeNodeAttribute","setNodeAttribute","updateNodeAttributes","appendChildNodes","insertSiblingNodesAfter","insertSiblingNodesBefore","replaceChildNodes","removeElement","swapDOM","BUTTON","TT","PRE","H1","H2","H3","BR","CANVAS","HR","LABEL","TEXTAREA","FORM","STRONG","SELECT","OPTION","OPTGROUP","LEGEND","FIELDSET","P","UL","OL","LI","TD","TR","THEAD","TBODY","TFOOT","TABLE","TH","INPUT","SPAN","A","DIV","IMG","getElement","$","getElementsByTagAndClassName","addToCallStack","addLoadEvent","focusOnLoad","setElementClass","toggleElementClass","addElementClass","removeElementClass","swapElementClass","hasElementClass","escapeHTML","toHTML","emitHTML","scrapeText","isParent","getFirstParentByTagAndClassName","makeClipping","undoClipping","makePositioned","undoPositioned","getFirstElementByTagAndClassName"];
1031 MochiKit.DOM.EXPORT_OK=["domConverters"];
1032 MochiKit.DOM.DEPRECATED=[["computedStyle","MochiKit.Style.getStyle","1.4"],["elementDimensions","MochiKit.Style.getElementDimensions","1.4"],["elementPosition","MochiKit.Style.getElementPosition","1.4"],["hideElement","MochiKit.Style.hideElement","1.4"],["setElementDimensions","MochiKit.Style.setElementDimensions","1.4"],["setElementPosition","MochiKit.Style.setElementPosition","1.4"],["setDisplayForElement","MochiKit.Style.setDisplayForElement","1.4"],["setOpacity","MochiKit.Style.setOpacity","1.4"],["showElement","MochiKit.Style.showElement","1.4"],["Coordinates","MochiKit.Style.Coordinates","1.4"],["Dimensions","MochiKit.Style.Dimensions","1.4"]];
1033 MochiKit.DOM.getViewportDimensions=new Function(""+"if (!MochiKit[\"Style\"]) {"+" throw new Error(\"This function has been deprecated and depends on MochiKit.Style.\");"+"}"+"return MochiKit.Style.getViewportDimensions.apply(this, arguments);");
1034 MochiKit.Base.update(MochiKit.DOM,{currentWindow:function(){
1035 return MochiKit.DOM._window;
1036 },currentDocument:function(){
1037 return MochiKit.DOM._document;
1038 },withWindow:function(win,func){
1039 var self=MochiKit.DOM;
1040 var _150=self._document;
1041 var _151=self._window;
1042 var rval;
1043 try{
1044 self._window=win;
1045 self._document=win.document;
1046 rval=func();
1047 }
1048 catch(e){
1049 self._window=_151;
1050 self._document=_150;
1051 throw e;
1052 }
1053 self._window=_151;
1054 self._document=_150;
1055 return rval;
1056 },formContents:function(elem){
1057 var _154=[];
1058 var _155=[];
1059 var m=MochiKit.Base;
1060 var self=MochiKit.DOM;
1061 if(typeof (elem)=="undefined"||elem===null){
1062 elem=self._document.body;
1063 }else{
1064 elem=self.getElement(elem);
1065 }
1066 m.nodeWalk(elem,function(elem){
1067 var name=elem.name;
1068 if(m.isNotEmpty(name)){
1069 var _15a=elem.tagName.toUpperCase();
1070 if(_15a==="INPUT"&&(elem.type=="radio"||elem.type=="checkbox")&&!elem.checked){
1071 return null;
1072 }
1073 if(_15a==="SELECT"){
1074 if(elem.type=="select-one"){
1075 if(elem.selectedIndex>=0){
1076 var opt=elem.options[elem.selectedIndex];
1077 var v=opt.value;
1078 if(!v){
1079 var h=opt.outerHTML;
1080 if(h&&!h.match(/^[^>]+\svalue\s*=/i)){
1081 v=opt.text;
1082 }
1083 }
1084 _154.push(name);
1085 _155.push(v);
1086 return null;
1087 }
1088 _154.push(name);
1089 _155.push("");
1090 return null;
1091 }else{
1092 var opts=elem.options;
1093 if(!opts.length){
1094 _154.push(name);
1095 _155.push("");
1096 return null;
1097 }
1098 for(var i=0;i<opts.length;i++){
1099 var opt=opts[i];
1100 if(!opt.selected){
1101 continue;
1102 }
1103 var v=opt.value;
1104 if(!v){
1105 var h=opt.outerHTML;
1106 if(h&&!h.match(/^[^>]+\svalue\s*=/i)){
1107 v=opt.text;
1108 }
1109 }
1110 _154.push(name);
1111 _155.push(v);
1112 }
1113 return null;
1114 }
1115 }
1116 if(_15a==="FORM"||_15a==="P"||_15a==="SPAN"||_15a==="DIV"){
1117 return elem.childNodes;
1118 }
1119 _154.push(name);
1120 _155.push(elem.value||"");
1121 return null;
1122 }
1123 return elem.childNodes;
1124 });
1125 return [_154,_155];
1126 },withDocument:function(doc,func){
1127 var self=MochiKit.DOM;
1128 var _163=self._document;
1129 var rval;
1130 try{
1131 self._document=doc;
1132 rval=func();
1133 }
1134 catch(e){
1135 self._document=_163;
1136 throw e;
1137 }
1138 self._document=_163;
1139 return rval;
1140 },registerDOMConverter:function(name,_166,wrap,_168){
1141 MochiKit.DOM.domConverters.register(name,_166,wrap,_168);
1142 },coerceToDOM:function(node,ctx){
1143 var m=MochiKit.Base;
1144 var im=MochiKit.Iter;
1145 var self=MochiKit.DOM;
1146 if(im){
1147 var iter=im.iter;
1148 var _16f=im.repeat;
1149 var map=m.map;
1150 }
1151 var _171=self.domConverters;
1152 var _172=arguments.callee;
1153 var _173=m.NotFound;
1154 while(true){
1155 if(typeof (node)=="undefined"||node===null){
1156 return null;
1157 }
1158 if(typeof (node)=="function"&&typeof (node.length)=="number"&&!(node instanceof Function)){
1159 node=im.list(node);
1160 }
1161 if(typeof (node.nodeType)!="undefined"&&node.nodeType>0){
1162 return node;
1163 }
1164 if(typeof (node)=="number"||typeof (node)=="boolean"){
1165 node=node.toString();
1166 }
1167 if(typeof (node)=="string"){
1168 return self._document.createTextNode(node);
1169 }
1170 if(typeof (node.__dom__)=="function"){
1171 node=node.__dom__(ctx);
1172 continue;
1173 }
1174 if(typeof (node.dom)=="function"){
1175 node=node.dom(ctx);
1176 continue;
1177 }
1178 if(typeof (node)=="function"){
1179 node=node.apply(ctx,[ctx]);
1180 continue;
1181 }
1182 if(im){
1183 var _174=null;
1184 try{
1185 _174=iter(node);
1186 }
1187 catch(e){
1188 }
1189 if(_174){
1190 return map(_172,_174,_16f(ctx));
1191 }
1192 }
1193 try{
1194 node=_171.match(node,ctx);
1195 continue;
1196 }
1197 catch(e){
1198 if(e!=_173){
1199 throw e;
1200 }
1201 }
1202 return self._document.createTextNode(node.toString());
1203 }
1204 return undefined;
1205 },isChildNode:function(node,_176){
1206 var self=MochiKit.DOM;
1207 if(typeof (node)=="string"){
1208 node=self.getElement(node);
1209 }
1210 if(typeof (_176)=="string"){
1211 _176=self.getElement(_176);
1212 }
1213 if(node===_176){
1214 return true;
1215 }
1216 while(node&&node.tagName.toUpperCase()!="BODY"){
1217 node=node.parentNode;
1218 if(node===_176){
1219 return true;
1220 }
1221 }
1222 return false;
1223 },setNodeAttribute:function(node,attr,_17a){
1224 var o={};
1225 o[attr]=_17a;
1226 try{
1227 return MochiKit.DOM.updateNodeAttributes(node,o);
1228 }
1229 catch(e){
1230 }
1231 return null;
1232 },getNodeAttribute:function(node,attr){
1233 var self=MochiKit.DOM;
1234 var _17f=self.attributeArray.renames[attr];
1235 node=self.getElement(node);
1236 try{
1237 if(_17f){
1238 return node[_17f];
1239 }
1240 return node.getAttribute(attr);
1241 }
1242 catch(e){
1243 }
1244 return null;
1245 },removeNodeAttribute:function(node,attr){
1246 var self=MochiKit.DOM;
1247 var _183=self.attributeArray.renames[attr];
1248 node=self.getElement(node);
1249 try{
1250 if(_183){
1251 return node[_183];
1252 }
1253 return node.removeAttribute(attr);
1254 }
1255 catch(e){
1256 }
1257 return null;
1258 },updateNodeAttributes:function(node,_185){
1259 var elem=node;
1260 var self=MochiKit.DOM;
1261 if(typeof (node)=="string"){
1262 elem=self.getElement(node);
1263 }
1264 if(_185){
1265 var _188=MochiKit.Base.updatetree;
1266 if(self.attributeArray.compliant){
1267 for(var k in _185){
1268 var v=_185[k];
1269 if(typeof (v)=="object"&&typeof (elem[k])=="object"){
1270 if(k=="style"&&MochiKit.Style){
1271 MochiKit.Style.setStyle(elem,v);
1272 }else{
1273 _188(elem[k],v);
1274 }
1275 }else{
1276 if(k.substring(0,2)=="on"){
1277 if(typeof (v)=="string"){
1278 v=new Function(v);
1279 }
1280 elem[k]=v;
1281 }else{
1282 elem.setAttribute(k,v);
1283 }
1284 }
1285 }
1286 }else{
1287 var _18b=self.attributeArray.renames;
1288 for(var k in _185){
1289 v=_185[k];
1290 var _18c=_18b[k];
1291 if(k=="style"&&typeof (v)=="string"){
1292 elem.style.cssText=v;
1293 }else{
1294 if(typeof (_18c)=="string"){
1295 elem[_18c]=v;
1296 }else{
1297 if(typeof (elem[k])=="object"&&typeof (v)=="object"){
1298 if(k=="style"&&MochiKit.Style){
1299 MochiKit.Style.setStyle(elem,v);
1300 }else{
1301 _188(elem[k],v);
1302 }
1303 }else{
1304 if(k.substring(0,2)=="on"){
1305 if(typeof (v)=="string"){
1306 v=new Function(v);
1307 }
1308 elem[k]=v;
1309 }else{
1310 elem.setAttribute(k,v);
1311 }
1312 }
1313 }
1314 }
1315 }
1316 }
1317 }
1318 return elem;
1319 },appendChildNodes:function(node){
1320 var elem=node;
1321 var self=MochiKit.DOM;
1322 if(typeof (node)=="string"){
1323 elem=self.getElement(node);
1324 }
1325 var _190=[self.coerceToDOM(MochiKit.Base.extend(null,arguments,1),elem)];
1326 var _191=MochiKit.Base.concat;
1327 while(_190.length){
1328 var n=_190.shift();
1329 if(typeof (n)=="undefined"||n===null){
1330 }else{
1331 if(typeof (n.nodeType)=="number"){
1332 elem.appendChild(n);
1333 }else{
1334 _190=_191(n,_190);
1335 }
1336 }
1337 }
1338 return elem;
1339 },insertSiblingNodesBefore:function(node){
1340 var elem=node;
1341 var self=MochiKit.DOM;
1342 if(typeof (node)=="string"){
1343 elem=self.getElement(node);
1344 }
1345 var _196=[self.coerceToDOM(MochiKit.Base.extend(null,arguments,1),elem)];
1346 var _197=elem.parentNode;
1347 var _198=MochiKit.Base.concat;
1348 while(_196.length){
1349 var n=_196.shift();
1350 if(typeof (n)=="undefined"||n===null){
1351 }else{
1352 if(typeof (n.nodeType)=="number"){
1353 _197.insertBefore(n,elem);
1354 }else{
1355 _196=_198(n,_196);
1356 }
1357 }
1358 }
1359 return _197;
1360 },insertSiblingNodesAfter:function(node){
1361 var elem=node;
1362 var self=MochiKit.DOM;
1363 if(typeof (node)=="string"){
1364 elem=self.getElement(node);
1365 }
1366 var _19d=[self.coerceToDOM(MochiKit.Base.extend(null,arguments,1),elem)];
1367 if(elem.nextSibling){
1368 return self.insertSiblingNodesBefore(elem.nextSibling,_19d);
1369 }else{
1370 return self.appendChildNodes(elem.parentNode,_19d);
1371 }
1372 },replaceChildNodes:function(node){
1373 var elem=node;
1374 var self=MochiKit.DOM;
1375 if(typeof (node)=="string"){
1376 elem=self.getElement(node);
1377 arguments[0]=elem;
1378 }
1379 var _1a1;
1380 while((_1a1=elem.firstChild)){
1381 elem.removeChild(_1a1);
1382 }
1383 if(arguments.length<2){
1384 return elem;
1385 }else{
1386 return self.appendChildNodes.apply(this,arguments);
1387 }
1388 },createDOM:function(name,_1a3){
1389 var elem;
1390 var self=MochiKit.DOM;
1391 var m=MochiKit.Base;
1392 if(typeof (_1a3)=="string"||typeof (_1a3)=="number"){
1393 var args=m.extend([name,null],arguments,1);
1394 return arguments.callee.apply(this,args);
1395 }
1396 if(typeof (name)=="string"){
1397 var _1a8=self._xhtml;
1398 if(_1a3&&!self.attributeArray.compliant){
1399 var _1a9="";
1400 if("name" in _1a3){
1401 _1a9+=" name=\""+self.escapeHTML(_1a3.name)+"\"";
1402 }
1403 if(name=="input"&&"type" in _1a3){
1404 _1a9+=" type=\""+self.escapeHTML(_1a3.type)+"\"";
1405 }
1406 if(_1a9){
1407 name="<"+name+_1a9+">";
1408 _1a8=false;
1409 }
1410 }
1411 var d=self._document;
1412 if(_1a8&&d===document){
1413 elem=d.createElementNS("http://www.w3.org/1999/xhtml",name);
1414 }else{
1415 elem=d.createElement(name);
1416 }
1417 }else{
1418 elem=name;
1419 }
1420 if(_1a3){
1421 self.updateNodeAttributes(elem,_1a3);
1422 }
1423 if(arguments.length<=2){
1424 return elem;
1425 }else{
1426 var args=m.extend([elem],arguments,2);
1427 return self.appendChildNodes.apply(this,args);
1428 }
1429 },createDOMFunc:function(){
1430 var m=MochiKit.Base;
1431 return m.partial.apply(this,m.extend([MochiKit.DOM.createDOM],arguments));
1432 },removeElement:function(elem){
1433 var e=MochiKit.DOM.getElement(elem);
1434 e.parentNode.removeChild(e);
1435 return e;
1436 },swapDOM:function(dest,src){
1437 var self=MochiKit.DOM;
1438 dest=self.getElement(dest);
1439 var _1b1=dest.parentNode;
1440 if(src){
1441 src=self.getElement(src);
1442 _1b1.replaceChild(src,dest);
1443 }else{
1444 _1b1.removeChild(dest);
1445 }
1446 return src;
1447 },getElement:function(id){
1448 var self=MochiKit.DOM;
1449 if(arguments.length==1){
1450 return ((typeof (id)=="string")?self._document.getElementById(id):id);
1451 }else{
1452 return MochiKit.Base.map(self.getElement,arguments);
1453 }
1454 },getElementsByTagAndClassName:function(_1b4,_1b5,_1b6){
1455 var self=MochiKit.DOM;
1456 if(typeof (_1b4)=="undefined"||_1b4===null){
1457 _1b4="*";
1458 }
1459 if(typeof (_1b6)=="undefined"||_1b6===null){
1460 _1b6=self._document;
1461 }
1462 _1b6=self.getElement(_1b6);
1463 var _1b8=(_1b6.getElementsByTagName(_1b4)||self._document.all);
1464 if(typeof (_1b5)=="undefined"||_1b5===null){
1465 return MochiKit.Base.extend(null,_1b8);
1466 }
1467 var _1b9=[];
1468 for(var i=0;i<_1b8.length;i++){
1469 var _1bb=_1b8[i];
1470 var cls=_1bb.className;
1471 if(!cls){
1472 continue;
1473 }
1474 var _1bd=cls.split(" ");
1475 for(var j=0;j<_1bd.length;j++){
1476 if(_1bd[j]==_1b5){
1477 _1b9.push(_1bb);
1478 break;
1479 }
1480 }
1481 }
1482 return _1b9;
1483 },_newCallStack:function(path,once){
1484 var rval=function(){
1485 var _1c2=arguments.callee.callStack;
1486 for(var i=0;i<_1c2.length;i++){
1487 if(_1c2[i].apply(this,arguments)===false){
1488 break;
1489 }
1490 }
1491 if(once){
1492 try{
1493 this[path]=null;
1494 }
1495 catch(e){
1496 }
1497 }
1498 };
1499 rval.callStack=[];
1500 return rval;
1501 },addToCallStack:function(_1c4,path,func,once){
1502 var self=MochiKit.DOM;
1503 var _1c9=_1c4[path];
1504 var _1ca=_1c9;
1505 if(!(typeof (_1c9)=="function"&&typeof (_1c9.callStack)=="object"&&_1c9.callStack!==null)){
1506 _1ca=self._newCallStack(path,once);
1507 if(typeof (_1c9)=="function"){
1508 _1ca.callStack.push(_1c9);
1509 }
1510 _1c4[path]=_1ca;
1511 }
1512 _1ca.callStack.push(func);
1513 },addLoadEvent:function(func){
1514 var self=MochiKit.DOM;
1515 self.addToCallStack(self._window,"onload",func,true);
1516 },focusOnLoad:function(_1cd){
1517 var self=MochiKit.DOM;
1518 self.addLoadEvent(function(){
1519 _1cd=self.getElement(_1cd);
1520 if(_1cd){
1521 _1cd.focus();
1522 }
1523 });
1524 },setElementClass:function(_1cf,_1d0){
1525 var self=MochiKit.DOM;
1526 var obj=self.getElement(_1cf);
1527 if(self.attributeArray.compliant){
1528 obj.setAttribute("class",_1d0);
1529 }else{
1530 obj.setAttribute("className",_1d0);
1531 }
1532 },toggleElementClass:function(_1d3){
1533 var self=MochiKit.DOM;
1534 for(var i=1;i<arguments.length;i++){
1535 var obj=self.getElement(arguments[i]);
1536 if(!self.addElementClass(obj,_1d3)){
1537 self.removeElementClass(obj,_1d3);
1538 }
1539 }
1540 },addElementClass:function(_1d7,_1d8){
1541 var self=MochiKit.DOM;
1542 var obj=self.getElement(_1d7);
1543 var cls=obj.className;
1544 if(cls==undefined||cls.length===0){
1545 self.setElementClass(obj,_1d8);
1546 return true;
1547 }
1548 if(cls==_1d8){
1549 return false;
1550 }
1551 var _1dc=cls.split(" ");
1552 for(var i=0;i<_1dc.length;i++){
1553 if(_1dc[i]==_1d8){
1554 return false;
1555 }
1556 }
1557 self.setElementClass(obj,cls+" "+_1d8);
1558 return true;
1559 },removeElementClass:function(_1de,_1df){
1560 var self=MochiKit.DOM;
1561 var obj=self.getElement(_1de);
1562 var cls=obj.className;
1563 if(cls==undefined||cls.length===0){
1564 return false;
1565 }
1566 if(cls==_1df){
1567 self.setElementClass(obj,"");
1568 return true;
1569 }
1570 var _1e3=cls.split(" ");
1571 for(var i=0;i<_1e3.length;i++){
1572 if(_1e3[i]==_1df){
1573 _1e3.splice(i,1);
1574 self.setElementClass(obj,_1e3.join(" "));
1575 return true;
1576 }
1577 }
1578 return false;
1579 },swapElementClass:function(_1e5,_1e6,_1e7){
1580 var obj=MochiKit.DOM.getElement(_1e5);
1581 var res=MochiKit.DOM.removeElementClass(obj,_1e6);
1582 if(res){
1583 MochiKit.DOM.addElementClass(obj,_1e7);
1584 }
1585 return res;
1586 },hasElementClass:function(_1ea,_1eb){
1587 var obj=MochiKit.DOM.getElement(_1ea);
1588 var cls=obj.className;
1589 if(!cls){
1590 return false;
1591 }
1592 var _1ee=cls.split(" ");
1593 for(var i=1;i<arguments.length;i++){
1594 var good=false;
1595 for(var j=0;j<_1ee.length;j++){
1596 if(_1ee[j]==arguments[i]){
1597 good=true;
1598 break;
1599 }
1600 }
1601 if(!good){
1602 return false;
1603 }
1604 }
1605 return true;
1606 },escapeHTML:function(s){
1607 return s.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;");
1608 },toHTML:function(dom){
1609 return MochiKit.DOM.emitHTML(dom).join("");
1610 },emitHTML:function(dom,lst){
1611 if(typeof (lst)=="undefined"||lst===null){
1612 lst=[];
1613 }
1614 var _1f6=[dom];
1615 var self=MochiKit.DOM;
1616 var _1f8=self.escapeHTML;
1617 var _1f9=self.attributeArray;
1618 while(_1f6.length){
1619 dom=_1f6.pop();
1620 if(typeof (dom)=="string"){
1621 lst.push(dom);
1622 }else{
1623 if(dom.nodeType==1){
1624 lst.push("<"+dom.tagName.toLowerCase());
1625 var _1fa=[];
1626 var _1fb=_1f9(dom);
1627 for(var i=0;i<_1fb.length;i++){
1628 var a=_1fb[i];
1629 _1fa.push([" ",a.name,"=\"",_1f8(a.value),"\""]);
1630 }
1631 _1fa.sort();
1632 for(i=0;i<_1fa.length;i++){
1633 var _1fe=_1fa[i];
1634 for(var j=0;j<_1fe.length;j++){
1635 lst.push(_1fe[j]);
1636 }
1637 }
1638 if(dom.hasChildNodes()){
1639 lst.push(">");
1640 _1f6.push("</"+dom.tagName.toLowerCase()+">");
1641 var _200=dom.childNodes;
1642 for(i=_200.length-1;i>=0;i--){
1643 _1f6.push(_200[i]);
1644 }
1645 }else{
1646 lst.push("/>");
1647 }
1648 }else{
1649 if(dom.nodeType==3){
1650 lst.push(_1f8(dom.nodeValue));
1651 }
1652 }
1653 }
1654 }
1655 return lst;
1656 },scrapeText:function(node,_202){
1657 var rval=[];
1658 (function(node){
1659 var cn=node.childNodes;
1660 if(cn){
1661 for(var i=0;i<cn.length;i++){
1662 arguments.callee.call(this,cn[i]);
1663 }
1664 }
1665 var _207=node.nodeValue;
1666 if(typeof (_207)=="string"){
1667 rval.push(_207);
1668 }
1669 })(MochiKit.DOM.getElement(node));
1670 if(_202){
1671 return rval;
1672 }else{
1673 return rval.join("");
1674 }
1675 },removeEmptyTextNodes:function(_208){
1676 _208=MochiKit.DOM.getElement(_208);
1677 for(var i=0;i<_208.childNodes.length;i++){
1678 var node=_208.childNodes[i];
1679 if(node.nodeType==3&&!/\S/.test(node.nodeValue)){
1680 node.parentNode.removeChild(node);
1681 }
1682 }
1683 },makeClipping:function(_20b){
1684 _20b=MochiKit.DOM.getElement(_20b);
1685 var _20c=_20b.style.overflow;
1686 if((MochiKit.Style.getStyle(_20b,"overflow")||"visible")!="hidden"){
1687 _20b.style.overflow="hidden";
1688 }
1689 return _20c;
1690 },undoClipping:function(_20d,_20e){
1691 _20d=MochiKit.DOM.getElement(_20d);
1692 if(!_20e){
1693 return;
1694 }
1695 _20d.style.overflow=_20e;
1696 },makePositioned:function(_20f){
1697 _20f=MochiKit.DOM.getElement(_20f);
1698 var pos=MochiKit.Style.getStyle(_20f,"position");
1699 if(pos=="static"||!pos){
1700 _20f.style.position="relative";
1701 if(/Opera/.test(navigator.userAgent)){
1702 _20f.style.top=0;
1703 _20f.style.left=0;
1704 }
1705 }
1706 },undoPositioned:function(_211){
1707 _211=MochiKit.DOM.getElement(_211);
1708 if(_211.style.position=="relative"){
1709 _211.style.position=_211.style.top=_211.style.left=_211.style.bottom=_211.style.right="";
1710 }
1711 },getFirstElementByTagAndClassName:function(_212,_213,_214){
1712 var self=MochiKit.DOM;
1713 if(typeof (_212)=="undefined"||_212===null){
1714 _212="*";
1715 }
1716 if(typeof (_214)=="undefined"||_214===null){
1717 _214=self._document;
1718 }
1719 _214=self.getElement(_214);
1720 var _216=(_214.getElementsByTagName(_212)||self._document.all);
1721 if(typeof (_213)=="undefined"||_213===null){
1722 return _216[0];
1723 }
1724 for(var i=0;i<_216.length;i++){
1725 var _218=_216[i];
1726 var _219=_218.className.split(" ");
1727 for(var j=0;j<_219.length;j++){
1728 if(_219[j]==_213){
1729 return _218;
1730 }
1731 }
1732 }
1733 },getFirstParentByTagAndClassName:function(elem,_21c,_21d){
1734 var self=MochiKit.DOM;
1735 elem=self.getElement(elem);
1736 if(typeof (_21c)=="undefined"||_21c===null){
1737 _21c="*";
1738 }else{
1739 _21c=_21c.toUpperCase();
1740 }
1741 if(typeof (_21d)=="undefined"||_21d===null){
1742 _21d=null;
1743 }
1744 var _21f="";
1745 var _220="";
1746 while(elem&&elem.tagName){
1747 elem=elem.parentNode;
1748 if(_21c=="*"&&_21d===null){
1749 return elem;
1750 }
1751 _21f=elem.className.split(" ");
1752 _220=elem.tagName.toUpperCase();
1753 if(_21d===null&&_21c==_220){
1754 return elem;
1755 }else{
1756 if(_21d!==null){
1757 for(var i=0;i<_21f.length;i++){
1758 if(_21c=="*"&&_21f[i]==_21d){
1759 return elem;
1760 }else{
1761 if(_21c==_220&&_21f[i]==_21d){
1762 return elem;
1763 }
1764 }
1765 }
1766 }
1767 }
1768 }
1769 return elem;
1770 },isParent:function(_222,_223){
1771 if(!_222.parentNode||_222==_223){
1772 return false;
1773 }
1774 if(_222.parentNode==_223){
1775 return true;
1776 }
1777 return MochiKit.DOM.isParent(_222.parentNode,_223);
1778 },__new__:function(win){
1779 var m=MochiKit.Base;
1780 if(typeof (document)!="undefined"){
1781 this._document=document;
1782 var _226="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
1783 this._xhtml=(document.documentElement&&document.createElementNS&&document.documentElement.namespaceURI===_226);
1784 }else{
1785 if(MochiKit.MockDOM){
1786 this._document=MochiKit.MockDOM.document;
1787 }
1788 }
1789 this._window=win;
1790 this.domConverters=new m.AdapterRegistry();
1791 var _227=this._document.createElement("span");
1792 var _228;
1793 if(_227&&_227.attributes&&_227.attributes.length>0){
1794 var _229=m.filter;
1795 _228=function(node){
1796 return _229(_228.ignoreAttrFilter,node.attributes);
1797 };
1798 _228.ignoreAttr={};
1799 var _22b=_227.attributes;
1800 var _22c=_228.ignoreAttr;
1801 for(var i=0;i<_22b.length;i++){
1802 var a=_22b[i];
1803 _22c[a.name]=a.value;
1804 }
1805 _228.ignoreAttrFilter=function(a){
1806 return (_228.ignoreAttr[a.name]!=a.value);
1807 };
1808 _228.compliant=false;
1809 _228.renames={"class":"className","checked":"defaultChecked","usemap":"useMap","for":"htmlFor","readonly":"readOnly","colspan":"colSpan","bgcolor":"bgColor","cellspacing":"cellSpacing","cellpadding":"cellPadding"};
1810 }else{
1811 _228=function(node){
1812 return node.attributes;
1813 };
1814 _228.compliant=true;
1815 _228.renames={};
1816 }
1817 this.attributeArray=_228;
1818 var _231=function(_232,arr){
1819 var _234=arr[1].split(".");
1820 var str="";
1821 var obj={};
1822 str+="if (!MochiKit."+_234[1]+") { throw new Error(\"";
1823 str+="This function has been deprecated and depends on MochiKit.";
1824 str+=_234[1]+".\");}";
1825 str+="return MochiKit."+_234[1]+"."+arr[0];
1826 str+=".apply(this, arguments);";
1827 obj[_234[2]]=new Function(str);
1828 MochiKit.Base.update(MochiKit[_232],obj);
1829 };
1830 for(var i;i<MochiKit.DOM.DEPRECATED.length;i++){
1831 _231("DOM",MochiKit.DOM.DEPRECATED[i]);
1832 }
1833 var _237=this.createDOMFunc;
1834 this.UL=_237("ul");
1835 this.OL=_237("ol");
1836 this.LI=_237("li");
1837 this.TD=_237("td");
1838 this.TR=_237("tr");
1839 this.TBODY=_237("tbody");
1840 this.THEAD=_237("thead");
1841 this.TFOOT=_237("tfoot");
1842 this.TABLE=_237("table");
1843 this.TH=_237("th");
1844 this.INPUT=_237("input");
1845 this.SPAN=_237("span");
1846 this.A=_237("a");
1847 this.DIV=_237("div");
1848 this.IMG=_237("img");
1849 this.BUTTON=_237("button");
1850 this.TT=_237("tt");
1851 this.PRE=_237("pre");
1852 this.H1=_237("h1");
1853 this.H2=_237("h2");
1854 this.H3=_237("h3");
1855 this.BR=_237("br");
1856 this.HR=_237("hr");
1857 this.LABEL=_237("label");
1858 this.TEXTAREA=_237("textarea");
1859 this.FORM=_237("form");
1860 this.P=_237("p");
1861 this.SELECT=_237("select");
1862 this.OPTION=_237("option");
1863 this.OPTGROUP=_237("optgroup");
1864 this.LEGEND=_237("legend");
1865 this.FIELDSET=_237("fieldset");
1866 this.STRONG=_237("strong");
1867 this.CANVAS=_237("canvas");
1868 this.$=this.getElement;
1869 this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
1870 m.nameFunctions(this);
1871 }});
1872 MochiKit.DOM.__new__(((typeof (window)=="undefined")?this:window));
1873 if(MochiKit.__export__){
1874 withWindow=MochiKit.DOM.withWindow;
1875 withDocument=MochiKit.DOM.withDocument;
1876 }
1877 MochiKit.Base._exportSymbols(this,MochiKit.DOM);
1878 if(typeof (dojo)!="undefined"){
1879 dojo.provide("MochiKit.Style");
1880 dojo.require("MochiKit.Base");
1881 dojo.require("MochiKit.DOM");
1882 }
1883 if(typeof (JSAN)!="undefined"){
1884 JSAN.use("MochiKit.Base",[]);
1885 JSAN.use("MochiKit.DOM",[]);
1886 }
1887 try{
1888 if(typeof (MochiKit.Base)=="undefined"){
1889 throw "";
1890 }
1891 }
1892 catch(e){
1893 throw "MochiKit.Style depends on MochiKit.Base!";
1894 }
1895 try{
1896 if(typeof (MochiKit.DOM)=="undefined"){
1897 throw "";
1898 }
1899 }
1900 catch(e){
1901 throw "MochiKit.Style depends on MochiKit.DOM!";
1902 }
1903 if(typeof (MochiKit.Style)=="undefined"){
1904 MochiKit.Style={};
1905 }
1906 MochiKit.Style.NAME="MochiKit.Style";
1907 MochiKit.Style.VERSION="1.4";
1908 MochiKit.Style.__repr__=function(){
1909 return "["+this.NAME+" "+this.VERSION+"]";
1910 };
1911 MochiKit.Style.toString=function(){
1912 return this.__repr__();
1913 };
1914 MochiKit.Style.EXPORT_OK=[];
1915 MochiKit.Style.EXPORT=["setStyle","setOpacity","getStyle","getElementDimensions","elementDimensions","setElementDimensions","getElementPosition","elementPosition","setElementPosition","setDisplayForElement","hideElement","showElement","getViewportDimensions","getViewportPosition","Dimensions","Coordinates"];
1916 MochiKit.Style.Dimensions=function(w,h){
1917 this.w=w;
1918 this.h=h;
1919 };
1920 MochiKit.Style.Dimensions.prototype.__repr__=function(){
1921 var repr=MochiKit.Base.repr;
1922 return "{w: "+repr(this.w)+", h: "+repr(this.h)+"}";
1923 };
1924 MochiKit.Style.Dimensions.prototype.toString=function(){
1925 return this.__repr__();
1926 };
1927 MochiKit.Style.Coordinates=function(x,y){
1928 this.x=x;
1929 this.y=y;
1930 };
1931 MochiKit.Style.Coordinates.prototype.__repr__=function(){
1932 var repr=MochiKit.Base.repr;
1933 return "{x: "+repr(this.x)+", y: "+repr(this.y)+"}";
1934 };
1935 MochiKit.Style.Coordinates.prototype.toString=function(){
1936 return this.__repr__();
1937 };
1938 MochiKit.Base.update(MochiKit.Style,{getStyle:function(elem,_23f){
1939 var dom=MochiKit.DOM;
1940 var d=dom._document;
1941 elem=dom.getElement(elem);
1942 _23f=MochiKit.Base.camelize(_23f);
1943 if(!elem||elem==d){
1944 return undefined;
1945 }
1946 if(_23f=="opacity"&&elem.filters){
1947 var _242=(MochiKit.Style.getStyle(elem,"filter")||"").match(/alpha\(opacity=(.*)\)/);
1948 if(_242&&_242[1]){
1949 return parseFloat(_242[1])/100;
1950 }
1951 return 1;
1952 }
1953 var _243=elem.style?elem.style[_23f]:null;
1954 if(!_243){
1955 if(d.defaultView&&d.defaultView.getComputedStyle){
1956 var css=d.defaultView.getComputedStyle(elem,null);
1957 _23f=_23f.replace(/([A-Z])/g,"-$1").toLowerCase();
1958 _243=css?css.getPropertyValue(_23f):null;
1959 }else{
1960 if(elem.currentStyle){
1961 _243=elem.currentStyle[_23f];
1962 }
1963 }
1964 }
1965 if(_23f=="opacity"){
1966 _243=parseFloat(_243);
1967 }
1968 if(/Opera/.test(navigator.userAgent)&&(MochiKit.Base.find(["left","top","right","bottom"],_23f)!=-1)){
1969 if(MochiKit.Style.getStyle(elem,"position")=="static"){
1970 _243="auto";
1971 }
1972 }
1973 return _243=="auto"?null:_243;
1974 },setStyle:function(elem,_246){
1975 elem=MochiKit.DOM.getElement(elem);
1976 for(var name in _246){
1977 if(name=="opacity"){
1978 MochiKit.Style.setOpacity(elem,_246[name]);
1979 }else{
1980 elem.style[MochiKit.Base.camelize(name)]=_246[name];
1981 }
1982 }
1983 },setOpacity:function(elem,o){
1984 elem=MochiKit.DOM.getElement(elem);
1985 var self=MochiKit.Style;
1986 if(o==1){
1987 var _24b=/Gecko/.test(navigator.userAgent)&&!(/Konqueror|AppleWebKit|KHTML/.test(navigator.userAgent));
1988 elem.style["opacity"]=_24b?0.999999:1;
1989 if(/MSIE/.test(navigator.userAgent)){
1990 elem.style["filter"]=self.getStyle(elem,"filter").replace(/alpha\([^\)]*\)/gi,"");
1991 }
1992 }else{
1993 if(o<0.00001){
1994 o=0;
1995 }
1996 elem.style["opacity"]=o;
1997 if(/MSIE/.test(navigator.userAgent)){
1998 elem.style["filter"]=self.getStyle(elem,"filter").replace(/alpha\([^\)]*\)/gi,"")+"alpha(opacity="+o*100+")";
1999 }
2000 }
2001 },getElementPosition:function(elem,_24d){
2002 var self=MochiKit.Style;
2003 var dom=MochiKit.DOM;
2004 elem=dom.getElement(elem);
2005 if(!elem||(!(elem.x&&elem.y)&&(!elem.parentNode===null||self.getStyle(elem,"display")=="none"))){
2006 return undefined;
2007 }
2008 var c=new self.Coordinates(0,0);
2009 var box=null;
2010 var _252=null;
2011 var d=MochiKit.DOM._document;
2012 var de=d.documentElement;
2013 var b=d.body;
2014 if(!elem.parentNode&&elem.x&&elem.y){
2015 c.x+=elem.x||0;
2016 c.y+=elem.y||0;
2017 }else{
2018 if(elem.getBoundingClientRect){
2019 box=elem.getBoundingClientRect();
2020 c.x+=box.left+(de.scrollLeft||b.scrollLeft)-(de.clientLeft||0);
2021 c.y+=box.top+(de.scrollTop||b.scrollTop)-(de.clientTop||0);
2022 }else{
2023 if(elem.offsetParent){
2024 c.x+=elem.offsetLeft;
2025 c.y+=elem.offsetTop;
2026 _252=elem.offsetParent;
2027 if(_252!=elem){
2028 while(_252){
2029 c.x+=_252.offsetLeft;
2030 c.y+=_252.offsetTop;
2031 _252=_252.offsetParent;
2032 }
2033 }
2034 var ua=navigator.userAgent.toLowerCase();
2035 if((typeof (opera)!="undefined"&&parseFloat(opera.version())<9)||(ua.indexOf("AppleWebKit")!=-1&&self.getStyle(elem,"position")=="absolute")){
2036 c.x-=b.offsetLeft;
2037 c.y-=b.offsetTop;
2038 }
2039 }
2040 }
2041 }
2042 if(typeof (_24d)!="undefined"){
2043 _24d=arguments.callee(_24d);
2044 if(_24d){
2045 c.x-=(_24d.x||0);
2046 c.y-=(_24d.y||0);
2047 }
2048 }
2049 if(elem.parentNode){
2050 _252=elem.parentNode;
2051 }else{
2052 _252=null;
2053 }
2054 while(_252){
2055 var _257=_252.tagName.toUpperCase();
2056 if(_257==="BODY"||_257==="HTML"){
2057 break;
2058 }
2059 var disp=self.getStyle(_252,"display");
2060 if(disp!="inline"&&disp!="table-row"){
2061 c.x-=_252.scrollLeft;
2062 c.y-=_252.scrollTop;
2063 }
2064 if(_252.parentNode){
2065 _252=_252.parentNode;
2066 }else{
2067 _252=null;
2068 }
2069 }
2070 return c;
2071 },setElementPosition:function(elem,_25a,_25b){
2072 elem=MochiKit.DOM.getElement(elem);
2073 if(typeof (_25b)=="undefined"){
2074 _25b="px";
2075 }
2076 var _25c={};
2077 var _25d=MochiKit.Base.isUndefinedOrNull;
2078 if(!_25d(_25a.x)){
2079 _25c["left"]=_25a.x+_25b;
2080 }
2081 if(!_25d(_25a.y)){
2082 _25c["top"]=_25a.y+_25b;
2083 }
2084 MochiKit.DOM.updateNodeAttributes(elem,{"style":_25c});
2085 },getElementDimensions:function(elem){
2086 var self=MochiKit.Style;
2087 var dom=MochiKit.DOM;
2088 if(typeof (elem.w)=="number"||typeof (elem.h)=="number"){
2089 return new self.Dimensions(elem.w||0,elem.h||0);
2090 }
2091 elem=dom.getElement(elem);
2092 if(!elem){
2093 return undefined;
2094 }
2095 var disp=self.getStyle(elem,"display");
2096 if(disp!="none"&&disp!==""&&typeof (disp)!="undefined"){
2097 return new self.Dimensions(elem.offsetWidth||0,elem.offsetHeight||0);
2098 }
2099 var s=elem.style;
2100 var _263=s.visibility;
2101 var _264=s.position;
2102 s.visibility="hidden";
2103 s.position="absolute";
2104 s.display="";
2105 var _265=elem.offsetWidth;
2106 var _266=elem.offsetHeight;
2107 s.display="none";
2108 s.position=_264;
2109 s.visibility=_263;
2110 return new self.Dimensions(_265,_266);
2111 },setElementDimensions:function(elem,_268,_269){
2112 elem=MochiKit.DOM.getElement(elem);
2113 if(typeof (_269)=="undefined"){
2114 _269="px";
2115 }
2116 var _26a={};
2117 var _26b=MochiKit.Base.isUndefinedOrNull;
2118 if(!_26b(_268.w)){
2119 _26a["width"]=_268.w+_269;
2120 }
2121 if(!_26b(_268.h)){
2122 _26a["height"]=_268.h+_269;
2123 }
2124 MochiKit.DOM.updateNodeAttributes(elem,{"style":_26a});
2125 },setDisplayForElement:function(_26c,_26d){
2126 var _26e=MochiKit.Base.extend(null,arguments,1);
2127 var _26f=MochiKit.DOM.getElement;
2128 for(var i=0;i<_26e.length;i++){
2129 _26d=_26f(_26e[i]);
2130 if(_26d){
2131 _26d.style.display=_26c;
2132 }
2133 }
2134 },getViewportDimensions:function(){
2135 var d=new MochiKit.Style.Dimensions();
2136 var w=MochiKit.DOM._window;
2137 var b=MochiKit.DOM._document.body;
2138 if(w.innerWidth){
2139 d.w=w.innerWidth;
2140 d.h=w.innerHeight;
2141 }else{
2142 if(b.parentElement.clientWidth){
2143 d.w=b.parentElement.clientWidth;
2144 d.h=b.parentElement.clientHeight;
2145 }else{
2146 if(b&&b.clientWidth){
2147 d.w=b.clientWidth;
2148 d.h=b.clientHeight;
2149 }
2150 }
2151 }
2152 return d;
2153 },getViewportPosition:function(){
2154 var c=new MochiKit.Style.Coordinates(0,0);
2155 var d=MochiKit.DOM._document;
2156 var de=d.documentElement;
2157 var db=d.body;
2158 if(de&&(de.scrollTop||de.scrollLeft)){
2159 c.x=de.scrollLeft;
2160 c.y=de.scrollTop;
2161 }else{
2162 if(db){
2163 c.x=db.scrollLeft;
2164 c.y=db.scrollTop;
2165 }
2166 }
2167 return c;
2168 },__new__:function(){
2169 var m=MochiKit.Base;
2170 this.elementPosition=this.getElementPosition;
2171 this.elementDimensions=this.getElementDimensions;
2172 this.hideElement=m.partial(this.setDisplayForElement,"none");
2173 this.showElement=m.partial(this.setDisplayForElement,"block");
2174 this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
2175 m.nameFunctions(this);
2176 }});
2177 MochiKit.Style.__new__();
2178 MochiKit.Base._exportSymbols(this,MochiKit.Style);
2179 if(typeof (dojo)!="undefined"){
2180 dojo.provide("MochiKit.Color");
2181 dojo.require("MochiKit.Base");
2182 dojo.require("MochiKit.DOM");
2183 dojo.require("MochiKit.Style");
2184 }
2185 if(typeof (JSAN)!="undefined"){
2186 JSAN.use("MochiKit.Base",[]);
2187 JSAN.use("MochiKit.DOM",[]);
2188 JSAN.use("MochiKit.Style",[]);
2189 }
2190 try{
2191 if(typeof (MochiKit.Base)=="undefined"){
2192 throw "";
2193 }
2194 }
2195 catch(e){
2196 throw "MochiKit.Color depends on MochiKit.Base";
2197 }
2198 try{
2199 if(typeof (MochiKit.DOM)=="undefined"){
2200 throw "";
2201 }
2202 }
2203 catch(e){
2204 throw "MochiKit.Color depends on MochiKit.DOM";
2205 }
2206 try{
2207 if(typeof (MochiKit.Style)=="undefined"){
2208 throw "";
2209 }
2210 }
2211 catch(e){
2212 throw "MochiKit.Color depends on MochiKit.Style";
2213 }
2214 if(typeof (MochiKit.Color)=="undefined"){
2215 MochiKit.Color={};
2216 }
2217 MochiKit.Color.NAME="MochiKit.Color";
2218 MochiKit.Color.VERSION="1.4";
2219 MochiKit.Color.__repr__=function(){
2220 return "["+this.NAME+" "+this.VERSION+"]";
2221 };
2222 MochiKit.Color.toString=function(){
2223 return this.__repr__();
2224 };
2225 MochiKit.Color.Color=function(red,_27a,blue,_27c){
2226 if(typeof (_27c)=="undefined"||_27c===null){
2227 _27c=1;
2228 }
2229 this.rgb={r:red,g:_27a,b:blue,a:_27c};
2230 };
2231 MochiKit.Color.Color.prototype={__class__:MochiKit.Color.Color,colorWithAlpha:function(_27d){
2232 var rgb=this.rgb;
2233 var m=MochiKit.Color;
2234 return m.Color.fromRGB(rgb.r,rgb.g,rgb.b,_27d);
2235 },colorWithHue:function(hue){
2236 var hsl=this.asHSL();
2237 hsl.h=hue;
2238 var m=MochiKit.Color;
2239 return m.Color.fromHSL(hsl);
2240 },colorWithSaturation:function(_283){
2241 var hsl=this.asHSL();
2242 hsl.s=_283;
2243 var m=MochiKit.Color;
2244 return m.Color.fromHSL(hsl);
2245 },colorWithLightness:function(_286){
2246 var hsl=this.asHSL();
2247 hsl.l=_286;
2248 var m=MochiKit.Color;
2249 return m.Color.fromHSL(hsl);
2250 },darkerColorWithLevel:function(_289){
2251 var hsl=this.asHSL();
2252 hsl.l=Math.max(hsl.l-_289,0);
2253 var m=MochiKit.Color;
2254 return m.Color.fromHSL(hsl);
2255 },lighterColorWithLevel:function(_28c){
2256 var hsl=this.asHSL();
2257 hsl.l=Math.min(hsl.l+_28c,1);
2258 var m=MochiKit.Color;
2259 return m.Color.fromHSL(hsl);
2260 },blendedColor:function(_28f,_290){
2261 if(typeof (_290)=="undefined"||_290===null){
2262 _290=0.5;
2263 }
2264 var sf=1-_290;
2265 var s=this.rgb;
2266 var d=_28f.rgb;
2267 var df=_290;
2268 return MochiKit.Color.Color.fromRGB((s.r*sf)+(d.r*df),(s.g*sf)+(d.g*df),(s.b*sf)+(d.b*df),(s.a*sf)+(d.a*df));
2269 },compareRGB:function(_295){
2270 var a=this.asRGB();
2271 var b=_295.asRGB();
2272 return MochiKit.Base.compare([a.r,a.g,a.b,a.a],[b.r,b.g,b.b,b.a]);
2273 },isLight:function(){
2274 return this.asHSL().b>0.5;
2275 },isDark:function(){
2276 return (!this.isLight());
2277 },toHSLString:function(){
2278 var c=this.asHSL();
2279 var ccc=MochiKit.Color.clampColorComponent;
2280 var rval=this._hslString;
2281 if(!rval){
2282 var mid=(ccc(c.h,360).toFixed(0)+","+ccc(c.s,100).toPrecision(4)+"%"+","+ccc(c.l,100).toPrecision(4)+"%");
2283 var a=c.a;
2284 if(a>=1){
2285 a=1;
2286 rval="hsl("+mid+")";
2287 }else{
2288 if(a<=0){
2289 a=0;
2290 }
2291 rval="hsla("+mid+","+a+")";
2292 }
2293 this._hslString=rval;
2294 }
2295 return rval;
2296 },toRGBString:function(){
2297 var c=this.rgb;
2298 var ccc=MochiKit.Color.clampColorComponent;
2299 var rval=this._rgbString;
2300 if(!rval){
2301 var mid=(ccc(c.r,255).toFixed(0)+","+ccc(c.g,255).toFixed(0)+","+ccc(c.b,255).toFixed(0));
2302 if(c.a!=1){
2303 rval="rgba("+mid+","+c.a+")";
2304 }else{
2305 rval="rgb("+mid+")";
2306 }
2307 this._rgbString=rval;
2308 }
2309 return rval;
2310 },asRGB:function(){
2311 return MochiKit.Base.clone(this.rgb);
2312 },toHexString:function(){
2313 var m=MochiKit.Color;
2314 var c=this.rgb;
2315 var ccc=MochiKit.Color.clampColorComponent;
2316 var rval=this._hexString;
2317 if(!rval){
2318 rval=("#"+m.toColorPart(ccc(c.r,255))+m.toColorPart(ccc(c.g,255))+m.toColorPart(ccc(c.b,255)));
2319 this._hexString=rval;
2320 }
2321 return rval;
2322 },asHSV:function(){
2323 var hsv=this.hsv;
2324 var c=this.rgb;
2325 if(typeof (hsv)=="undefined"||hsv===null){
2326 hsv=MochiKit.Color.rgbToHSV(this.rgb);
2327 this.hsv=hsv;
2328 }
2329 return MochiKit.Base.clone(hsv);
2330 },asHSL:function(){
2331 var hsl=this.hsl;
2332 var c=this.rgb;
2333 if(typeof (hsl)=="undefined"||hsl===null){
2334 hsl=MochiKit.Color.rgbToHSL(this.rgb);
2335 this.hsl=hsl;
2336 }
2337 return MochiKit.Base.clone(hsl);
2338 },toString:function(){
2339 return this.toRGBString();
2340 },repr:function(){
2341 var c=this.rgb;
2342 var col=[c.r,c.g,c.b,c.a];
2343 return this.__class__.NAME+"("+col.join(", ")+")";
2344 }};
2345 MochiKit.Base.update(MochiKit.Color.Color,{fromRGB:function(red,_2ac,blue,_2ae){
2346 var _2af=MochiKit.Color.Color;
2347 if(arguments.length==1){
2348 var rgb=red;
2349 red=rgb.r;
2350 _2ac=rgb.g;
2351 blue=rgb.b;
2352 if(typeof (rgb.a)=="undefined"){
2353 _2ae=undefined;
2354 }else{
2355 _2ae=rgb.a;
2356 }
2357 }
2358 return new _2af(red,_2ac,blue,_2ae);
2359 },fromHSL:function(hue,_2b2,_2b3,_2b4){
2360 var m=MochiKit.Color;
2361 return m.Color.fromRGB(m.hslToRGB.apply(m,arguments));
2362 },fromHSV:function(hue,_2b7,_2b8,_2b9){
2363 var m=MochiKit.Color;
2364 return m.Color.fromRGB(m.hsvToRGB.apply(m,arguments));
2365 },fromName:function(name){
2366 var _2bc=MochiKit.Color.Color;
2367 if(name.charAt(0)=="\""){
2368 name=name.substr(1,name.length-2);
2369 }
2370 var _2bd=_2bc._namedColors[name.toLowerCase()];
2371 if(typeof (_2bd)=="string"){
2372 return _2bc.fromHexString(_2bd);
2373 }else{
2374 if(name=="transparent"){
2375 return _2bc.transparentColor();
2376 }
2377 }
2378 return null;
2379 },fromString:function(_2be){
2380 var self=MochiKit.Color.Color;
2381 var _2c0=_2be.substr(0,3);
2382 if(_2c0=="rgb"){
2383 return self.fromRGBString(_2be);
2384 }else{
2385 if(_2c0=="hsl"){
2386 return self.fromHSLString(_2be);
2387 }else{
2388 if(_2be.charAt(0)=="#"){
2389 return self.fromHexString(_2be);
2390 }
2391 }
2392 }
2393 return self.fromName(_2be);
2394 },fromHexString:function(_2c1){
2395 if(_2c1.charAt(0)=="#"){
2396 _2c1=_2c1.substring(1);
2397 }
2398 var _2c2=[];
2399 var i,hex;
2400 if(_2c1.length==3){
2401 for(i=0;i<3;i++){
2402 hex=_2c1.substr(i,1);
2403 _2c2.push(parseInt(hex+hex,16)/255);
2404 }
2405 }else{
2406 for(i=0;i<6;i+=2){
2407 hex=_2c1.substr(i,2);
2408 _2c2.push(parseInt(hex,16)/255);
2409 }
2410 }
2411 var _2c5=MochiKit.Color.Color;
2412 return _2c5.fromRGB.apply(_2c5,_2c2);
2413 },_fromColorString:function(pre,_2c7,_2c8,_2c9){
2414 if(_2c9.indexOf(pre)===0){
2415 _2c9=_2c9.substring(_2c9.indexOf("(",3)+1,_2c9.length-1);
2416 }
2417 var _2ca=_2c9.split(/\s*,\s*/);
2418 var _2cb=[];
2419 for(var i=0;i<_2ca.length;i++){
2420 var c=_2ca[i];
2421 var val;
2422 var _2cf=c.substring(c.length-3);
2423 if(c.charAt(c.length-1)=="%"){
2424 val=0.01*parseFloat(c.substring(0,c.length-1));
2425 }else{
2426 if(_2cf=="deg"){
2427 val=parseFloat(c)/360;
2428 }else{
2429 if(_2cf=="rad"){
2430 val=parseFloat(c)/(Math.PI*2);
2431 }else{
2432 val=_2c8[i]*parseFloat(c);
2433 }
2434 }
2435 }
2436 _2cb.push(val);
2437 }
2438 return this[_2c7].apply(this,_2cb);
2439 },fromComputedStyle:function(elem,_2d1){
2440 var d=MochiKit.DOM;
2441 var cls=MochiKit.Color.Color;
2442 for(elem=d.getElement(elem);elem;elem=elem.parentNode){
2443 var _2d4=MochiKit.Style.getStyle.apply(d,arguments);
2444 if(!_2d4){
2445 continue;
2446 }
2447 var _2d5=cls.fromString(_2d4);
2448 if(!_2d5){
2449 break;
2450 }
2451 if(_2d5.asRGB().a>0){
2452 return _2d5;
2453 }
2454 }
2455 return null;
2456 },fromBackground:function(elem){
2457 var cls=MochiKit.Color.Color;
2458 return cls.fromComputedStyle(elem,"backgroundColor","background-color")||cls.whiteColor();
2459 },fromText:function(elem){
2460 var cls=MochiKit.Color.Color;
2461 return cls.fromComputedStyle(elem,"color","color")||cls.blackColor();
2462 },namedColors:function(){
2463 return MochiKit.Base.clone(MochiKit.Color.Color._namedColors);
2464 }});
2465 MochiKit.Base.update(MochiKit.Color,{clampColorComponent:function(v,_2db){
2466 v*=_2db;
2467 if(v<0){
2468 return 0;
2469 }else{
2470 if(v>_2db){
2471 return _2db;
2472 }else{
2473 return v;
2474 }
2475 }
2476 },_hslValue:function(n1,n2,hue){
2477 if(hue>6){
2478 hue-=6;
2479 }else{
2480 if(hue<0){
2481 hue+=6;
2482 }
2483 }
2484 var val;
2485 if(hue<1){
2486 val=n1+(n2-n1)*hue;
2487 }else{
2488 if(hue<3){
2489 val=n2;
2490 }else{
2491 if(hue<4){
2492 val=n1+(n2-n1)*(4-hue);
2493 }else{
2494 val=n1;
2495 }
2496 }
2497 }
2498 return val;
2499 },hsvToRGB:function(hue,_2e1,_2e2,_2e3){
2500 if(arguments.length==1){
2501 var hsv=hue;
2502 hue=hsv.h;
2503 _2e1=hsv.s;
2504 _2e2=hsv.v;
2505 _2e3=hsv.a;
2506 }
2507 var red;
2508 var _2e6;
2509 var blue;
2510 if(_2e1===0){
2511 red=_2e2;
2512 _2e6=_2e2;
2513 blue=_2e2;
2514 }else{
2515 var i=Math.floor(hue*6);
2516 var f=(hue*6)-i;
2517 var p=_2e2*(1-_2e1);
2518 var q=_2e2*(1-(_2e1*f));
2519 var t=_2e2*(1-(_2e1*(1-f)));
2520 switch(i){
2521 case 1:
2522 red=q;
2523 _2e6=_2e2;
2524 blue=p;
2525 break;
2526 case 2:
2527 red=p;
2528 _2e6=_2e2;
2529 blue=t;
2530 break;
2531 case 3:
2532 red=p;
2533 _2e6=q;
2534 blue=_2e2;
2535 break;
2536 case 4:
2537 red=t;
2538 _2e6=p;
2539 blue=_2e2;
2540 break;
2541 case 5:
2542 red=_2e2;
2543 _2e6=p;
2544 blue=q;
2545 break;
2546 case 6:
2547 case 0:
2548 red=_2e2;
2549 _2e6=t;
2550 blue=p;
2551 break;
2552 }
2553 }
2554 return {r:red,g:_2e6,b:blue,a:_2e3};
2555 },hslToRGB:function(hue,_2ee,_2ef,_2f0){
2556 if(arguments.length==1){
2557 var hsl=hue;
2558 hue=hsl.h;
2559 _2ee=hsl.s;
2560 _2ef=hsl.l;
2561 _2f0=hsl.a;
2562 }
2563 var red;
2564 var _2f3;
2565 var blue;
2566 if(_2ee===0){
2567 red=_2ef;
2568 _2f3=_2ef;
2569 blue=_2ef;
2570 }else{
2571 var m2;
2572 if(_2ef<=0.5){
2573 m2=_2ef*(1+_2ee);
2574 }else{
2575 m2=_2ef+_2ee-(_2ef*_2ee);
2576 }
2577 var m1=(2*_2ef)-m2;
2578 var f=MochiKit.Color._hslValue;
2579 var h6=hue*6;
2580 red=f(m1,m2,h6+2);
2581 _2f3=f(m1,m2,h6);
2582 blue=f(m1,m2,h6-2);
2583 }
2584 return {r:red,g:_2f3,b:blue,a:_2f0};
2585 },rgbToHSV:function(red,_2fa,blue,_2fc){
2586 if(arguments.length==1){
2587 var rgb=red;
2588 red=rgb.r;
2589 _2fa=rgb.g;
2590 blue=rgb.b;
2591 _2fc=rgb.a;
2592 }
2593 var max=Math.max(Math.max(red,_2fa),blue);
2594 var min=Math.min(Math.min(red,_2fa),blue);
2595 var hue;
2596 var _301;
2597 var _302=max;
2598 if(min==max){
2599 hue=0;
2600 _301=0;
2601 }else{
2602 var _303=(max-min);
2603 _301=_303/max;
2604 if(red==max){
2605 hue=(_2fa-blue)/_303;
2606 }else{
2607 if(_2fa==max){
2608 hue=2+((blue-red)/_303);
2609 }else{
2610 hue=4+((red-_2fa)/_303);
2611 }
2612 }
2613 hue/=6;
2614 if(hue<0){
2615 hue+=1;
2616 }
2617 if(hue>1){
2618 hue-=1;
2619 }
2620 }
2621 return {h:hue,s:_301,v:_302,a:_2fc};
2622 },rgbToHSL:function(red,_305,blue,_307){
2623 if(arguments.length==1){
2624 var rgb=red;
2625 red=rgb.r;
2626 _305=rgb.g;
2627 blue=rgb.b;
2628 _307=rgb.a;
2629 }
2630 var max=Math.max(red,Math.max(_305,blue));
2631 var min=Math.min(red,Math.min(_305,blue));
2632 var hue;
2633 var _30c;
2634 var _30d=(max+min)/2;
2635 var _30e=max-min;
2636 if(_30e===0){
2637 hue=0;
2638 _30c=0;
2639 }else{
2640 if(_30d<=0.5){
2641 _30c=_30e/(max+min);
2642 }else{
2643 _30c=_30e/(2-max-min);
2644 }
2645 if(red==max){
2646 hue=(_305-blue)/_30e;
2647 }else{
2648 if(_305==max){
2649 hue=2+((blue-red)/_30e);
2650 }else{
2651 hue=4+((red-_305)/_30e);
2652 }
2653 }
2654 hue/=6;
2655 if(hue<0){
2656 hue+=1;
2657 }
2658 if(hue>1){
2659 hue-=1;
2660 }
2661 }
2662 return {h:hue,s:_30c,l:_30d,a:_307};
2663 },toColorPart:function(num){
2664 num=Math.round(num);
2665 var _310=num.toString(16);
2666 if(num<16){
2667 return "0"+_310;
2668 }
2669 return _310;
2670 },__new__:function(){
2671 var m=MochiKit.Base;
2672 this.Color.fromRGBString=m.bind(this.Color._fromColorString,this.Color,"rgb","fromRGB",[1/255,1/255,1/255,1]);
2673 this.Color.fromHSLString=m.bind(this.Color._fromColorString,this.Color,"hsl","fromHSL",[1/360,0.01,0.01,1]);
2674 var _312=1/3;
2675 var _313={black:[0,0,0],blue:[0,0,1],brown:[0.6,0.4,0.2],cyan:[0,1,1],darkGray:[_312,_312,_312],gray:[0.5,0.5,0.5],green:[0,1,0],lightGray:[2*_312,2*_312,2*_312],magenta:[1,0,1],orange:[1,0.5,0],purple:[0.5,0,0.5],red:[1,0,0],transparent:[0,0,0,0],white:[1,1,1],yellow:[1,1,0]};
2676 var _314=function(name,r,g,b,a){
2677 var rval=this.fromRGB(r,g,b,a);
2678 this[name]=function(){
2679 return rval;
2680 };
2681 return rval;
2682 };
2683 for(var k in _313){
2684 var name=k+"Color";
2685 var _31d=m.concat([_314,this.Color,name],_313[k]);
2686 this.Color[name]=m.bind.apply(null,_31d);
2687 }
2688 var _31e=function(){
2689 for(var i=0;i<arguments.length;i++){
2690 if(!(arguments[i] instanceof Color)){
2691 return false;
2692 }
2693 }
2694 return true;
2695 };
2696 var _320=function(a,b){
2697 return a.compareRGB(b);
2698 };
2699 m.nameFunctions(this);
2700 m.registerComparator(this.Color.NAME,_31e,_320);
2701 this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
2702 }});
2703 MochiKit.Color.EXPORT=["Color"];
2704 MochiKit.Color.EXPORT_OK=["clampColorComponent","rgbToHSL","hslToRGB","rgbToHSV","hsvToRGB","toColorPart"];
2705 MochiKit.Color.__new__();
2706 MochiKit.Base._exportSymbols(this,MochiKit.Color);
2707 MochiKit.Color.Color._namedColors={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};
2708 if(typeof (dojo)!="undefined"){
2709 dojo.provide("MochiKit.Signal");
2710 dojo.require("MochiKit.Base");
2711 dojo.require("MochiKit.DOM");
2712 dojo.require("MochiKit.Style");
2713 }
2714 if(typeof (JSAN)!="undefined"){
2715 JSAN.use("MochiKit.Base",[]);
2716 JSAN.use("MochiKit.DOM",[]);
2717 JSAN.use("MochiKit.Style",[]);
2718 }
2719 try{
2720 if(typeof (MochiKit.Base)=="undefined"){
2721 throw "";
2722 }
2723 }
2724 catch(e){
2725 throw "MochiKit.Signal depends on MochiKit.Base!";
2726 }
2727 try{
2728 if(typeof (MochiKit.DOM)=="undefined"){
2729 throw "";
2730 }
2731 }
2732 catch(e){
2733 throw "MochiKit.Signal depends on MochiKit.DOM!";
2734 }
2735 try{
2736 if(typeof (MochiKit.Style)=="undefined"){
2737 throw "";
2738 }
2739 }
2740 catch(e){
2741 throw "MochiKit.Signal depends on MochiKit.Style!";
2742 }
2743 if(typeof (MochiKit.Signal)=="undefined"){
2744 MochiKit.Signal={};
2745 }
2746 MochiKit.Signal.NAME="MochiKit.Signal";
2747 MochiKit.Signal.VERSION="1.4";
2748 MochiKit.Signal._observers=[];
2749 MochiKit.Signal.Event=function(src,e){
2750 this._event=e||window.event;
2751 this._src=src;
2752 };
2753 MochiKit.Base.update(MochiKit.Signal.Event.prototype,{__repr__:function(){
2754 var repr=MochiKit.Base.repr;
2755 var str="{event(): "+repr(this.event())+", src(): "+repr(this.src())+", type(): "+repr(this.type())+", target(): "+repr(this.target());
2756 if(this.type()&&this.type().indexOf("key")===0||this.type().indexOf("mouse")===0||this.type().indexOf("click")!=-1||this.type()=="contextmenu"){
2757 str+=", modifier(): "+"{alt: "+repr(this.modifier().alt)+", ctrl: "+repr(this.modifier().ctrl)+", meta: "+repr(this.modifier().meta)+", shift: "+repr(this.modifier().shift)+", any: "+repr(this.modifier().any)+"}";
2758 }
2759 if(this.type()&&this.type().indexOf("key")===0){
2760 str+=", key(): {code: "+repr(this.key().code)+", string: "+repr(this.key().string)+"}";
2761 }
2762 if(this.type()&&(this.type().indexOf("mouse")===0||this.type().indexOf("click")!=-1||this.type()=="contextmenu")){
2763 str+=", mouse(): {page: "+repr(this.mouse().page)+", client: "+repr(this.mouse().client);
2764 if(this.type()!="mousemove"){
2765 str+=", button: {left: "+repr(this.mouse().button.left)+", middle: "+repr(this.mouse().button.middle)+", right: "+repr(this.mouse().button.right)+"}}";
2766 }else{
2767 str+="}";
2768 }
2769 }
2770 if(this.type()=="mouseover"||this.type()=="mouseout"){
2771 str+=", relatedTarget(): "+repr(this.relatedTarget());
2772 }
2773 str+="}";
2774 return str;
2775 },toString:function(){
2776 return this.__repr__();
2777 },src:function(){
2778 return this._src;
2779 },event:function(){
2780 return this._event;
2781 },type:function(){
2782 return this._event.type||undefined;
2783 },target:function(){
2784 return this._event.target||this._event.srcElement;
2785 },_relatedTarget:null,relatedTarget:function(){
2786 if(this._relatedTarget!==null){
2787 return this._relatedTarget;
2788 }
2789 var elem=null;
2790 if(this.type()=="mouseover"){
2791 elem=(this._event.relatedTarget||this._event.fromElement);
2792 }else{
2793 if(this.type()=="mouseout"){
2794 elem=(this._event.relatedTarget||this._event.toElement);
2795 }
2796 }
2797 if(elem!==null){
2798 this._relatedTarget=elem;
2799 return elem;
2800 }
2801 return undefined;
2802 },_modifier:null,modifier:function(){
2803 if(this._modifier!==null){
2804 return this._modifier;
2805 }
2806 var m={};
2807 m.alt=this._event.altKey;
2808 m.ctrl=this._event.ctrlKey;
2809 m.meta=this._event.metaKey||false;
2810 m.shift=this._event.shiftKey;
2811 m.any=m.alt||m.ctrl||m.shift||m.meta;
2812 this._modifier=m;
2813 return m;
2814 },_key:null,key:function(){
2815 if(this._key!==null){
2816 return this._key;
2817 }
2818 var k={};
2819 if(this.type()&&this.type().indexOf("key")===0){
2820 if(this.type()=="keydown"||this.type()=="keyup"){
2821 k.code=this._event.keyCode;
2822 k.string=(MochiKit.Signal._specialKeys[k.code]||"KEY_UNKNOWN");
2823 this._key=k;
2824 return k;
2825 }else{
2826 if(this.type()=="keypress"){
2827 k.code=0;
2828 k.string="";
2829 if(typeof (this._event.charCode)!="undefined"&&this._event.charCode!==0&&!MochiKit.Signal._specialMacKeys[this._event.charCode]){
2830 k.code=this._event.charCode;
2831 k.string=String.fromCharCode(k.code);
2832 }else{
2833 if(this._event.keyCode&&typeof (this._event.charCode)=="undefined"){
2834 k.code=this._event.keyCode;
2835 k.string=String.fromCharCode(k.code);
2836 }
2837 }
2838 this._key=k;
2839 return k;
2840 }
2841 }
2842 }
2843 return undefined;
2844 },_mouse:null,mouse:function(){
2845 if(this._mouse!==null){
2846 return this._mouse;
2847 }
2848 var m={};
2849 var e=this._event;
2850 if(this.type()&&(this.type().indexOf("mouse")===0||this.type().indexOf("click")!=-1||this.type()=="contextmenu")){
2851 m.client=new MochiKit.Style.Coordinates(0,0);
2852 if(e.clientX||e.clientY){
2853 m.client.x=(!e.clientX||e.clientX<0)?0:e.clientX;
2854 m.client.y=(!e.clientY||e.clientY<0)?0:e.clientY;
2855 }
2856 m.page=new MochiKit.Style.Coordinates(0,0);
2857 if(e.pageX||e.pageY){
2858 m.page.x=(!e.pageX||e.pageX<0)?0:e.pageX;
2859 m.page.y=(!e.pageY||e.pageY<0)?0:e.pageY;
2860 }else{
2861 var de=MochiKit.DOM._document.documentElement;
2862 var b=MochiKit.DOM._document.body;
2863 m.page.x=e.clientX+(de.scrollLeft||b.scrollLeft)-(de.clientLeft||0);
2864 m.page.y=e.clientY+(de.scrollTop||b.scrollTop)-(de.clientTop||0);
2865 }
2866 if(this.type()!="mousemove"){
2867 m.button={};
2868 m.button.left=false;
2869 m.button.right=false;
2870 m.button.middle=false;
2871 if(e.which){
2872 m.button.left=(e.which==1);
2873 m.button.middle=(e.which==2);
2874 m.button.right=(e.which==3);
2875 }else{
2876 m.button.left=!!(e.button&1);
2877 m.button.right=!!(e.button&2);
2878 m.button.middle=!!(e.button&4);
2879 }
2880 }
2881 this._mouse=m;
2882 return m;
2883 }
2884 return undefined;
2885 },stop:function(){
2886 this.stopPropagation();
2887 this.preventDefault();
2888 },stopPropagation:function(){
2889 if(this._event.stopPropagation){
2890 this._event.stopPropagation();
2891 }else{
2892 this._event.cancelBubble=true;
2893 }
2894 },preventDefault:function(){
2895 if(this._event.preventDefault){
2896 this._event.preventDefault();
2897 }else{
2898 if(this._confirmUnload===null){
2899 this._event.returnValue=false;
2900 }
2901 }
2902 },_confirmUnload:null,confirmUnload:function(msg){
2903 if(this.type()=="beforeunload"){
2904 this._confirmUnload=msg;
2905 this._event.returnValue=msg;
2906 }
2907 }});
2908 MochiKit.Signal._specialMacKeys={3:"KEY_ENTER",63289:"KEY_NUM_PAD_CLEAR",63276:"KEY_PAGE_UP",63277:"KEY_PAGE_DOWN",63275:"KEY_END",63273:"KEY_HOME",63234:"KEY_ARROW_LEFT",63232:"KEY_ARROW_UP",63235:"KEY_ARROW_RIGHT",63233:"KEY_ARROW_DOWN",63302:"KEY_INSERT",63272:"KEY_DELETE"};
2909 (function(){
2910 var _32f=MochiKit.Signal._specialMacKeys;
2911 for(i=63236;i<=63242;i++){
2912 _32f[i]="KEY_F"+(i-63236+1);
2913 }
2914 })();
2915 MochiKit.Signal._specialKeys={8:"KEY_BACKSPACE",9:"KEY_TAB",12:"KEY_NUM_PAD_CLEAR",13:"KEY_ENTER",16:"KEY_SHIFT",17:"KEY_CTRL",18:"KEY_ALT",19:"KEY_PAUSE",20:"KEY_CAPS_LOCK",27:"KEY_ESCAPE",32:"KEY_SPACEBAR",33:"KEY_PAGE_UP",34:"KEY_PAGE_DOWN",35:"KEY_END",36:"KEY_HOME",37:"KEY_ARROW_LEFT",38:"KEY_ARROW_UP",39:"KEY_ARROW_RIGHT",40:"KEY_ARROW_DOWN",44:"KEY_PRINT_SCREEN",45:"KEY_INSERT",46:"KEY_DELETE",59:"KEY_SEMICOLON",91:"KEY_WINDOWS_LEFT",92:"KEY_WINDOWS_RIGHT",93:"KEY_SELECT",106:"KEY_NUM_PAD_ASTERISK",107:"KEY_NUM_PAD_PLUS_SIGN",109:"KEY_NUM_PAD_HYPHEN-MINUS",110:"KEY_NUM_PAD_FULL_STOP",111:"KEY_NUM_PAD_SOLIDUS",144:"KEY_NUM_LOCK",145:"KEY_SCROLL_LOCK",186:"KEY_SEMICOLON",187:"KEY_EQUALS_SIGN",188:"KEY_COMMA",189:"KEY_HYPHEN-MINUS",190:"KEY_FULL_STOP",191:"KEY_SOLIDUS",192:"KEY_GRAVE_ACCENT",219:"KEY_LEFT_SQUARE_BRACKET",220:"KEY_REVERSE_SOLIDUS",221:"KEY_RIGHT_SQUARE_BRACKET",222:"KEY_APOSTROPHE"};
2916 (function(){
2917 var _330=MochiKit.Signal._specialKeys;
2918 for(var i=48;i<=57;i++){
2919 _330[i]="KEY_"+(i-48);
2920 }
2921 for(i=65;i<=90;i++){
2922 _330[i]="KEY_"+String.fromCharCode(i);
2923 }
2924 for(i=96;i<=105;i++){
2925 _330[i]="KEY_NUM_PAD_"+(i-96);
2926 }
2927 for(i=112;i<=123;i++){
2928 _330[i]="KEY_F"+(i-112+1);
2929 }
2930 })();
2931 MochiKit.Signal.Ident=function(_332){
2932 this.source=_332.source;
2933 this.signal=_332.signal;
2934 this.listener=_332.listener;
2935 this.isDOM=_332.isDOM;
2936 this.objOrFunc=_332.objOrFunc;
2937 this.funcOrStr=_332.funcOrStr;
2938 this.connected=_332.connected;
2939 };
2940 MochiKit.Signal.Ident.prototype={};
2941 MochiKit.Base.update(MochiKit.Signal,{__repr__:function(){
2942 return "["+this.NAME+" "+this.VERSION+"]";
2943 },toString:function(){
2944 return this.__repr__();
2945 },_unloadCache:function(){
2946 var self=MochiKit.Signal;
2947 var _334=self._observers;
2948 for(var i=0;i<_334.length;i++){
2949 if(_334[i].signal!=="onload"&&_334[i].signal!=="onunload"){
2950 self._disconnect(_334[i]);
2951 }
2952 }
2953 },_listener:function(src,sig,func,obj,_33a){
2954 var self=MochiKit.Signal;
2955 var E=self.Event;
2956 if(!_33a){
2957 return MochiKit.Base.bind(func,obj);
2958 }
2959 obj=obj||src;
2960 if(typeof (func)=="string"){
2961 if(sig==="onload"||sig==="onunload"){
2962 return function(_33d){
2963 obj[func].apply(obj,[new E(src,_33d)]);
2964 var _33e=new MochiKit.Signal.Ident({source:src,signal:sig,objOrFunc:obj,funcOrStr:func});
2965 MochiKit.Signal._disconnect(_33e);
2966 };
2967 }else{
2968 return function(_33f){
2969 obj[func].apply(obj,[new E(src,_33f)]);
2970 };
2971 }
2972 }else{
2973 if(sig==="onload"||sig==="onunload"){
2974 return function(_340){
2975 func.apply(obj,[new E(src,_340)]);
2976 MochiKit.Signal.disconnect(src,sig,func);
2977 var _341=new MochiKit.Signal.Ident({source:src,signal:sig,objOrFunc:func});
2978 MochiKit.Signal._disconnect(_341);
2979 };
2980 }else{
2981 return function(_342){
2982 func.apply(obj,[new E(src,_342)]);
2983 };
2984 }
2985 }
2986 },_browserAlreadyHasMouseEnterAndLeave:function(){
2987 return /MSIE/.test(navigator.userAgent);
2988 },_mouseEnterListener:function(src,sig,func,obj){
2989 var E=MochiKit.Signal.Event;
2990 return function(_348){
2991 var e=new E(src,_348);
2992 try{
2993 e.relatedTarget().nodeName;
2994 }
2995 catch(err){
2996 return;
2997 }
2998 e.stop();
2999 if(MochiKit.DOM.isChildNode(e.relatedTarget(),src)){
3000 return;
3001 }
3002 e.type=function(){
3003 return sig;
3004 };
3005 if(typeof (func)=="string"){
3006 return obj[func].apply(obj,[e]);
3007 }else{
3008 return func.apply(obj,[e]);
3009 }
3010 };
3011 },_getDestPair:function(_34a,_34b){
3012 var obj=null;
3013 var func=null;
3014 if(typeof (_34b)!="undefined"){
3015 obj=_34a;
3016 func=_34b;
3017 if(typeof (_34b)=="string"){
3018 if(typeof (_34a[_34b])!="function"){
3019 throw new Error("'funcOrStr' must be a function on 'objOrFunc'");
3020 }
3021 }else{
3022 if(typeof (_34b)!="function"){
3023 throw new Error("'funcOrStr' must be a function or string");
3024 }
3025 }
3026 }else{
3027 if(typeof (_34a)!="function"){
3028 throw new Error("'objOrFunc' must be a function if 'funcOrStr' is not given");
3029 }else{
3030 func=_34a;
3031 }
3032 }
3033 return [obj,func];
3034 },connect:function(src,sig,_350,_351){
3035 src=MochiKit.DOM.getElement(src);
3036 var self=MochiKit.Signal;
3037 if(typeof (sig)!="string"){
3038 throw new Error("'sig' must be a string");
3039 }
3040 var _353=self._getDestPair(_350,_351);
3041 var obj=_353[0];
3042 var func=_353[1];
3043 if(typeof (obj)=="undefined"||obj===null){
3044 obj=src;
3045 }
3046 var _356=!!(src.addEventListener||src.attachEvent);
3047 if(_356&&(sig==="onmouseenter"||sig==="onmouseleave")&&!self._browserAlreadyHasMouseEnterAndLeave()){
3048 var _357=self._mouseEnterListener(src,sig.substr(2),func,obj);
3049 if(sig==="onmouseenter"){
3050 sig="onmouseover";
3051 }else{
3052 sig="onmouseout";
3053 }
3054 }else{
3055 var _357=self._listener(src,sig,func,obj,_356);
3056 }
3057 if(src.addEventListener){
3058 src.addEventListener(sig.substr(2),_357,false);
3059 }else{
3060 if(src.attachEvent){
3061 src.attachEvent(sig,_357);
3062 }
3063 }
3064 var _358=new MochiKit.Signal.Ident({source:src,signal:sig,listener:_357,isDOM:_356,objOrFunc:_350,funcOrStr:_351,connected:true});
3065 self._observers.push(_358);
3066 if(!_356&&typeof (src.__connect__)=="function"){
3067 var args=MochiKit.Base.extend([_358],arguments,1);
3068 src.__connect__.apply(src,args);
3069 }
3070 return _358;
3071 },_disconnect:function(_35a){
3072 if(!_35a.connected){
3073 return;
3074 }
3075 _35a.connected=false;
3076 if(!_35a.isDOM){
3077 return;
3078 }
3079 var src=_35a.source;
3080 var sig=_35a.signal;
3081 var _35d=_35a.listener;
3082 if(src.removeEventListener){
3083 src.removeEventListener(sig.substr(2),_35d,false);
3084 }else{
3085 if(src.detachEvent){
3086 src.detachEvent(sig,_35d);
3087 }else{
3088 throw new Error("'src' must be a DOM element");
3089 }
3090 }
3091 },disconnect:function(_35e){
3092 var self=MochiKit.Signal;
3093 var _360=self._observers;
3094 var m=MochiKit.Base;
3095 if(arguments.length>1){
3096 var src=MochiKit.DOM.getElement(arguments[0]);
3097 var sig=arguments[1];
3098 var obj=arguments[2];
3099 var func=arguments[3];
3100 for(var i=_360.length-1;i>=0;i--){
3101 var o=_360[i];
3102 if(o.source===src&&o.signal===sig&&o.objOrFunc===obj&&o.funcOrStr===func){
3103 self._disconnect(o);
3104 if(!self._lock){
3105 _360.splice(i,1);
3106 }else{
3107 self._dirty=true;
3108 }
3109 return true;
3110 }
3111 }
3112 }else{
3113 var idx=m.findIdentical(_360,_35e);
3114 if(idx>=0){
3115 self._disconnect(_35e);
3116 if(!self._lock){
3117 _360.splice(idx,1);
3118 }else{
3119 self._dirty=true;
3120 }
3121 return true;
3122 }
3123 }
3124 return false;
3125 },disconnectAllTo:function(_369,_36a){
3126 var self=MochiKit.Signal;
3127 var _36c=self._observers;
3128 var _36d=self._disconnect;
3129 var _36e=self._lock;
3130 var _36f=self._dirty;
3131 if(typeof (_36a)==="undefined"){
3132 _36a=null;
3133 }
3134 for(var i=_36c.length-1;i>=0;i--){
3135 var _371=_36c[i];
3136 if(_371.objOrFunc===_369&&(_36a===null||_371.funcOrStr===_36a)){
3137 _36d(_371);
3138 if(_36e){
3139 _36f=true;
3140 }else{
3141 _36c.splice(i,1);
3142 }
3143 }
3144 }
3145 self._dirty=_36f;
3146 },disconnectAll:function(src,sig){
3147 src=MochiKit.DOM.getElement(src);
3148 var m=MochiKit.Base;
3149 var _375=m.flattenArguments(m.extend(null,arguments,1));
3150 var self=MochiKit.Signal;
3151 var _377=self._disconnect;
3152 var _378=self._observers;
3153 var i,_37a;
3154 var _37b=self._lock;
3155 var _37c=self._dirty;
3156 if(_375.length===0){
3157 for(i=_378.length-1;i>=0;i--){
3158 _37a=_378[i];
3159 if(_37a.source===src){
3160 _377(_37a);
3161 if(!_37b){
3162 _378.splice(i,1);
3163 }else{
3164 _37c=true;
3165 }
3166 }
3167 }
3168 }else{
3169 var sigs={};
3170 for(i=0;i<_375.length;i++){
3171 sigs[_375[i]]=true;
3172 }
3173 for(i=_378.length-1;i>=0;i--){
3174 _37a=_378[i];
3175 if(_37a.source===src&&_37a.signal in sigs){
3176 _377(_37a);
3177 if(!_37b){
3178 _378.splice(i,1);
3179 }else{
3180 _37c=true;
3181 }
3182 }
3183 }
3184 }
3185 self._dirty=_37c;
3186 },signal:function(src,sig){
3187 var self=MochiKit.Signal;
3188 var _381=self._observers;
3189 src=MochiKit.DOM.getElement(src);
3190 var args=MochiKit.Base.extend(null,arguments,2);
3191 var _383=[];
3192 self._lock=true;
3193 for(var i=0;i<_381.length;i++){
3194 var _385=_381[i];
3195 if(_385.source===src&&_385.signal===sig){
3196 try{
3197 _385.listener.apply(src,args);
3198 }
3199 catch(e){
3200 _383.push(e);
3201 }
3202 }
3203 }
3204 self._lock=false;
3205 if(self._dirty){
3206 self._dirty=false;
3207 for(var i=_381.length-1;i>=0;i--){
3208 if(!_381[i].connected){
3209 _381.splice(i,1);
3210 }
3211 }
3212 }
3213 if(_383.length==1){
3214 throw _383[0];
3215 }else{
3216 if(_383.length>1){
3217 var e=new Error("Multiple errors thrown in handling 'sig', see errors property");
3218 e.errors=_383;
3219 throw e;
3220 }
3221 }
3222 }});
3223 MochiKit.Signal.EXPORT_OK=[];
3224 MochiKit.Signal.EXPORT=["connect","disconnect","signal","disconnectAll","disconnectAllTo"];
3225 MochiKit.Signal.__new__=function(win){
3226 var m=MochiKit.Base;
3227 this._document=document;
3228 this._window=win;
3229 this._lock=false;
3230 this._dirty=false;
3231 try{
3232 this.connect(window,"onunload",this._unloadCache);
3233 }
3234 catch(e){
3235 }
3236 this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
3237 m.nameFunctions(this);
3238 };
3239 MochiKit.Signal.__new__(this);
3240 if(MochiKit.__export__){
3241 connect=MochiKit.Signal.connect;
3242 disconnect=MochiKit.Signal.disconnect;
3243 disconnectAll=MochiKit.Signal.disconnectAll;
3244 signal=MochiKit.Signal.signal;
3245 }
3246 MochiKit.Base._exportSymbols(this,MochiKit.Signal);
3247
3248
3249 Date.ext={};Date.ext.util={};Date.ext.util.xPad=function(x,pad,r){if(typeof (r)=="undefined"){r=10}for(;parseInt(x,10)<r&&r>1;r/=10){x=pad.toString()+x}return x.toString()};Date.prototype.locale="en-GB";if(document.getElementsByTagName("html")&&document.getElementsByTagName("html")[0].lang){Date.prototype.locale=document.getElementsByTagName("html")[0].lang}Date.ext.locales={};Date.ext.locales.en={a:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],A:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],b:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],B:["January","February","March","April","May","June","July","August","September","October","November","December"],c:"%a %d %b %Y %T %Z",p:["AM","PM"],P:["am","pm"],x:"%d/%m/%y",X:"%T"};Date.ext.locales["en-US"]=Date.ext.locales.en;Date.ext.locales["en-US"].c="%a %d %b %Y %r %Z";Date.ext.locales["en-US"].x="%D";Date.ext.locales["en-US"].X="%r";Date.ext.locales["en-GB"]=Date.ext.locales.en;Date.ext.locales["en-AU"]=Date.ext.locales["en-GB"];Date.ext.formats={a:function(d){return Date.ext.locales[d.locale].a[d.getDay()]},A:function(d){return Date.ext.locales[d.locale].A[d.getDay()]},b:function(d){return Date.ext.locales[d.locale].b[d.getMonth()]},B:function(d){return Date.ext.locales[d.locale].B[d.getMonth()]},c:"toLocaleString",C:function(d){return Date.ext.util.xPad(parseInt(d.getFullYear()/100,10),0)},d:["getDate","0"],e:["getDate"," "],g:function(d){return Date.ext.util.xPad(parseInt(Date.ext.util.G(d)/100,10),0)},G:function(d){var y=d.getFullYear();var V=parseInt(Date.ext.formats.V(d),10);var W=parseInt(Date.ext.formats.W(d),10);if(W>V){y++}else{if(W===0&&V>=52){y--}}return y},H:["getHours","0"],I:function(d){var I=d.getHours()%12;return Date.ext.util.xPad(I===0?12:I,0)},j:function(d){var ms=d-new Date(""+d.getFullYear()+"/1/1 GMT");ms+=d.getTimezoneOffset()*60000;var doy=parseInt(ms/60000/60/24,10)+1;return Date.ext.util.xPad(doy,0,100)},m:function(d){return Date.ext.util.xPad(d.getMonth()+1,0)},M:["getMinutes","0"],p:function(d){return Date.ext.locales[d.locale].p[d.getHours()>=12?1:0]},P:function(d){return Date.ext.locales[d.locale].P[d.getHours()>=12?1:0]},S:["getSeconds","0"],u:function(d){var dow=d.getDay();return dow===0?7:dow},U:function(d){var doy=parseInt(Date.ext.formats.j(d),10);var rdow=6-d.getDay();var woy=parseInt((doy+rdow)/7,10);return Date.ext.util.xPad(woy,0)},V:function(d){var woy=parseInt(Date.ext.formats.W(d),10);var dow1_1=(new Date(""+d.getFullYear()+"/1/1")).getDay();var idow=woy+(dow1_1>4||dow1_1<=1?0:1);if(idow==53&&(new Date(""+d.getFullYear()+"/12/31")).getDay()<4){idow=1}else{if(idow===0){idow=Date.ext.formats.V(new Date(""+(d.getFullYear()-1)+"/12/31"))}}return Date.ext.util.xPad(idow,0)},w:"getDay",W:function(d){var doy=parseInt(Date.ext.formats.j(d),10);var rdow=7-Date.ext.formats.u(d);var woy=parseInt((doy+rdow)/7,10);return Date.ext.util.xPad(woy,0,10)},y:function(d){return Date.ext.util.xPad(d.getFullYear()%100,0)},Y:"getFullYear",z:function(d){var o=d.getTimezoneOffset();var H=Date.ext.util.xPad(parseInt(Math.abs(o/60),10),0);var M=Date.ext.util.xPad(o%60,0);return(o>0?"-":"+")+H+M},Z:function(d){return d.toString().replace(/^.*\(([^)]+)\)$/,"$1")},"%":function(d){return"%"}};Date.ext.aggregates={c:"locale",D:"%m/%d/%y",h:"%b",n:"\n",r:"%I:%M:%S %p",R:"%H:%M",t:"\t",T:"%H:%M:%S",x:"locale",X:"locale"};Date.ext.aggregates.z=Date.ext.formats.z(new Date());Date.ext.aggregates.Z=Date.ext.formats.Z(new Date());Date.ext.unsupported={};Date.prototype.strftime=function(fmt){if(!(this.locale in Date.ext.locales)){if(this.locale.replace(/-[a-zA-Z]+$/,"") in Date.ext.locales){this.locale=this.locale.replace(/-[a-zA-Z]+$/,"")}else{this.locale="en-GB"}}var d=this;while(fmt.match(/%[cDhnrRtTxXzZ]/)){fmt=fmt.replace(/%([cDhnrRtTxXzZ])/g,function(m0,m1){var f=Date.ext.aggregates[m1];return(f=="locale"?Date.ext.locales[d.locale][m1]:f)})}var str=fmt.replace(/%([aAbBCdegGHIjmMpPSuUVwWyY%])/g,function(m0,m1){var f=Date.ext.formats[m1];if(typeof (f)=="string"){return d[f]()}else{if(typeof (f)=="function"){return f.call(d,d)}else{if(typeof (f)=="object"&&typeof (f[0])=="string"){return Date.ext.util.xPad(d[f[0]](),f[1])}else{return m1}}}});d=null;return str};
3250 DygraphLayout=function(_1,_2){
3251 this.dygraph_=_1;
3252 this.options={};
3253 MochiKit.Base.update(this.options,_2?_2:{});
3254 this.datasets=new Array();
3255 };
3256 DygraphLayout.prototype.attr_=function(_3){
3257 return this.dygraph_.attr_(_3);
3258 };
3259 DygraphLayout.prototype.addDataset=function(_4,_5){
3260 this.datasets[_4]=_5;
3261 };
3262 DygraphLayout.prototype.evaluate=function(){
3263 this._evaluateLimits();
3264 this._evaluateLineCharts();
3265 this._evaluateLineTicks();
3266 };
3267 DygraphLayout.prototype._evaluateLimits=function(){
3268 this.minxval=this.maxxval=null;
3269 for(var _6 in this.datasets){
3270 var _7=this.datasets[_6];
3271 var x1=_7[0][0];
3272 if(!this.minxval||x1<this.minxval){
3273 this.minxval=x1;
3274 }
3275 var x2=_7[_7.length-1][0];
3276 if(!this.maxxval||x2>this.maxxval){
3277 this.maxxval=x2;
3278 }
3279 }
3280 this.xrange=this.maxxval-this.minxval;
3281 this.xscale=(this.xrange!=0?1/this.xrange:1);
3282 this.minyval=this.options.yAxis[0];
3283 this.maxyval=this.options.yAxis[1];
3284 this.yrange=this.maxyval-this.minyval;
3285 this.yscale=(this.yrange!=0?1/this.yrange:1);
3286 };
3287 DygraphLayout.prototype._evaluateLineCharts=function(){
3288 this.points=new Array();
3289 for(var _10 in this.datasets){
3290 var _11=this.datasets[_10];
3291 for(var j=0;j<_11.length;j++){
3292 var _13=_11[j];
3293 var _14={x:((parseFloat(_13[0])-this.minxval)*this.xscale),y:1-((parseFloat(_13[1])-this.minyval)*this.yscale),xval:parseFloat(_13[0]),yval:parseFloat(_13[1]),name:_10};
3294 if(_14.y<=0){
3295 _14.y=0;
3296 }
3297 if(_14.y>=1){
3298 _14.y=1;
3299 }
3300 if((_14.x>=0)&&(_14.x<=1)){
3301 this.points.push(_14);
3302 }
3303 }
3304 }
3305 };
3306 DygraphLayout.prototype._evaluateLineTicks=function(){
3307 this.xticks=new Array();
3308 for(var i=0;i<this.options.xTicks.length;i++){
3309 var _16=this.options.xTicks[i];
3310 var _17=_16.label;
3311 var pos=this.xscale*(_16.v-this.minxval);
3312 if((pos>=0)&&(pos<=1)){
3313 this.xticks.push([pos,_17]);
3314 }
3315 }
3316 this.yticks=new Array();
3317 for(var i=0;i<this.options.yTicks.length;i++){
3318 var _16=this.options.yTicks[i];
3319 var _17=_16.label;
3320 var pos=1-(this.yscale*(_16.v-this.minyval));
3321 if((pos>=0)&&(pos<=1)){
3322 this.yticks.push([pos,_17]);
3323 }
3324 }
3325 };
3326 DygraphLayout.prototype.evaluateWithError=function(){
3327 this.evaluate();
3328 if(!this.options.errorBars){
3329 return;
3330 }
3331 var i=0;
3332 for(var _19 in this.datasets){
3333 var j=0;
3334 var _20=this.datasets[_19];
3335 for(var j=0;j<_20.length;j++,i++){
3336 var _21=_20[j];
3337 var xv=parseFloat(_21[0]);
3338 var yv=parseFloat(_21[1]);
3339 if(xv==this.points[i].xval&&yv==this.points[i].yval){
3340 this.points[i].errorMinus=parseFloat(_21[2]);
3341 this.points[i].errorPlus=parseFloat(_21[3]);
3342 }
3343 }
3344 }
3345 };
3346 DygraphLayout.prototype.removeAllDatasets=function(){
3347 delete this.datasets;
3348 this.datasets=new Array();
3349 };
3350 DygraphLayout.prototype.updateOptions=function(_24){
3351 MochiKit.Base.update(this.options,_24?_24:{});
3352 };
3353 DygraphCanvasRenderer=function(_25,_26,_27,_28){
3354 this.dygraph_=_25;
3355 this.options={"strokeWidth":0.5,"drawXAxis":true,"drawYAxis":true,"axisLineColor":Color.blackColor(),"axisLineWidth":0.5,"axisTickSize":3,"axisLabelColor":Color.blackColor(),"axisLabelFont":"Arial","axisLabelFontSize":9,"axisLabelWidth":50,"drawYGrid":true,"drawXGrid":true,"gridLineColor":MochiKit.Color.Color.grayColor()};
3356 MochiKit.Base.update(this.options,_28);
3357 this.layout=_27;
3358 this.element=MochiKit.DOM.getElement(_26);
3359 this.container=this.element.parentNode;
3360 this.isIE=(/MSIE/.test(navigator.userAgent)&&!window.opera);
3361 if(this.isIE&&!isNil(G_vmlCanvasManager)){
3362 this.IEDelay=0.5;
3363 this.maxTries=5;
3364 this.renderDelay=null;
3365 this.clearDelay=null;
3366 this.element=G_vmlCanvasManager.initElement(this.element);
3367 }
3368 this.height=this.element.height;
3369 this.width=this.element.width;
3370 if(!this.isIE&&!(DygraphCanvasRenderer.isSupported(this.element))){
3371 throw "Canvas is not supported.";
3372 }
3373 this.xlabels=new Array();
3374 this.ylabels=new Array();
3375 this.area={x:this.options.yAxisLabelWidth+2*this.options.axisTickSize,y:0};
3376 this.area.w=this.width-this.area.x-this.options.rightGap;
3377 this.area.h=this.height-this.options.axisLabelFontSize-2*this.options.axisTickSize;
3378 MochiKit.DOM.updateNodeAttributes(this.container,{"style":{"position":"relative","width":this.width+"px"}});
3379 };
3380 DygraphCanvasRenderer.prototype.clear=function(){
3381 if(this.isIE){
3382 try{
3383 if(this.clearDelay){
3384 this.clearDelay.cancel();
3385 this.clearDelay=null;
3386 }
3387 var _29=this.element.getContext("2d");
3388 }
3389 catch(e){
3390 this.clearDelay=MochiKit.Async.wait(this.IEDelay);
3391 this.clearDelay.addCallback(bind(this.clear,this));
3392 return;
3393 }
3394 }
3395 var _29=this.element.getContext("2d");
3396 _29.clearRect(0,0,this.width,this.height);
3397 for(var i=0;i<this.xlabels.length;i++){
3398 MochiKit.DOM.removeElement(this.xlabels[i]);
3399 }
3400 for(var i=0;i<this.ylabels.length;i++){
3401 MochiKit.DOM.removeElement(this.ylabels[i]);
3402 }
3403 this.xlabels=new Array();
3404 this.ylabels=new Array();
3405 };
3406 DygraphCanvasRenderer.isSupported=function(_30){
3407 var _31=null;
3408 try{
3409 if(MochiKit.Base.isUndefinedOrNull(_30)){
3410 _31=MochiKit.DOM.CANVAS({});
3411 }else{
3412 _31=MochiKit.DOM.getElement(_30);
3413 }
3414 var _32=_31.getContext("2d");
3415 }
3416 catch(e){
3417 var ie=navigator.appVersion.match(/MSIE (\d\.\d)/);
3418 var _34=(navigator.userAgent.toLowerCase().indexOf("opera")!=-1);
3419 if((!ie)||(ie[1]<6)||(_34)){
3420 return false;
3421 }
3422 return true;
3423 }
3424 return true;
3425 };
3426 DygraphCanvasRenderer.prototype.render=function(){
3427 var ctx=this.element.getContext("2d");
3428 if(this.options.drawYGrid){
3429 var _36=this.layout.yticks;
3430 ctx.save();
3431 ctx.strokeStyle=this.options.gridLineColor.toRGBString();
3432 ctx.lineWidth=this.options.axisLineWidth;
3433 for(var i=0;i<_36.length;i++){
3434 var x=this.area.x;
3435 var y=this.area.y+_36[i][0]*this.area.h;
3436 ctx.beginPath();
3437 ctx.moveTo(x,y);
3438 ctx.lineTo(x+this.area.w,y);
3439 ctx.closePath();
3440 ctx.stroke();
3441 }
3442 }
3443 if(this.options.drawXGrid){
3444 var _36=this.layout.xticks;
3445 ctx.save();
3446 ctx.strokeStyle=this.options.gridLineColor.toRGBString();
3447 ctx.lineWidth=this.options.axisLineWidth;
3448 for(var i=0;i<_36.length;i++){
3449 var x=this.area.x+_36[i][0]*this.area.w;
3450 var y=this.area.y+this.area.h;
3451 ctx.beginPath();
3452 ctx.moveTo(x,y);
3453 ctx.lineTo(x,this.area.y);
3454 ctx.closePath();
3455 ctx.stroke();
3456 }
3457 }
3458 this._renderLineChart();
3459 this._renderAxis();
3460 };
3461 DygraphCanvasRenderer.prototype._renderAxis=function(){
3462 if(!this.options.drawXAxis&&!this.options.drawYAxis){
3463 return;
3464 }
3465 var _39=this.element.getContext("2d");
3466 var _40={"style":{"position":"absolute","fontSize":this.options.axisLabelFontSize+"px","zIndex":10,"color":this.options.axisLabelColor.toRGBString(),"width":this.options.axisLabelWidth+"px","overflow":"hidden"}};
3467 _39.save();
3468 _39.strokeStyle=this.options.axisLineColor.toRGBString();
3469 _39.lineWidth=this.options.axisLineWidth;
3470 if(this.options.drawYAxis){
3471 if(this.layout.yticks){
3472 for(var i=0;i<this.layout.yticks.length;i++){
3473 var _41=this.layout.yticks[i];
3474 if(typeof (_41)=="function"){
3475 return;
3476 }
3477 var x=this.area.x;
3478 var y=this.area.y+_41[0]*this.area.h;
3479 _39.beginPath();
3480 _39.moveTo(x,y);
3481 _39.lineTo(x-this.options.axisTickSize,y);
3482 _39.closePath();
3483 _39.stroke();
3484 var _42=DIV(_40,_41[1]);
3485 var top=(y-this.options.axisLabelFontSize/2);
3486 if(top<0){
3487 top=0;
3488 }
3489 if(top+this.options.axisLabelFontSize+3>this.height){
3490 _42.style.bottom="0px";
3491 }else{
3492 _42.style.top=top+"px";
3493 }
3494 _42.style.left="0px";
3495 _42.style.textAlign="right";
3496 _42.style.width=this.options.yAxisLabelWidth+"px";
3497 MochiKit.DOM.appendChildNodes(this.container,_42);
3498 this.ylabels.push(_42);
3499 }
3500 var _44=this.ylabels[0];
3501 var _45=this.options.axisLabelFontSize;
3502 var _46=parseInt(_44.style.top)+_45;
3503 if(_46>this.height-_45){
3504 _44.style.top=(parseInt(_44.style.top)-_45/2)+"px";
3505 }
3506 }
3507 _39.beginPath();
3508 _39.moveTo(this.area.x,this.area.y);
3509 _39.lineTo(this.area.x,this.area.y+this.area.h);
3510 _39.closePath();
3511 _39.stroke();
3512 }
3513 if(this.options.drawXAxis){
3514 if(this.layout.xticks){
3515 for(var i=0;i<this.layout.xticks.length;i++){
3516 var _41=this.layout.xticks[i];
3517 if(typeof (dataset)=="function"){
3518 return;
3519 }
3520 var x=this.area.x+_41[0]*this.area.w;
3521 var y=this.area.y+this.area.h;
3522 _39.beginPath();
3523 _39.moveTo(x,y);
3524 _39.lineTo(x,y+this.options.axisTickSize);
3525 _39.closePath();
3526 _39.stroke();
3527 var _42=DIV(_40,_41[1]);
3528 _42.style.textAlign="center";
3529 _42.style.bottom="0px";
3530 var _47=(x-this.options.axisLabelWidth/2);
3531 if(_47+this.options.axisLabelWidth>this.width){
3532 _47=this.width-this.options.xAxisLabelWidth;
3533 _42.style.textAlign="right";
3534 }
3535 if(_47<0){
3536 _47=0;
3537 _42.style.textAlign="left";
3538 }
3539 _42.style.left=_47+"px";
3540 _42.style.width=this.options.xAxisLabelWidth+"px";
3541 MochiKit.DOM.appendChildNodes(this.container,_42);
3542 this.xlabels.push(_42);
3543 }
3544 }
3545 _39.beginPath();
3546 _39.moveTo(this.area.x,this.area.y+this.area.h);
3547 _39.lineTo(this.area.x+this.area.w,this.area.y+this.area.h);
3548 _39.closePath();
3549 _39.stroke();
3550 }
3551 _39.restore();
3552 };
3553 DygraphCanvasRenderer.prototype._renderLineChart=function(){
3554 var _48=this.element.getContext("2d");
3555 var _49=this.options.colorScheme.length;
3556 var _50=this.options.colorScheme;
3557 var _51=MochiKit.Base.keys(this.layout.datasets);
3558 var _52=this.layout.options.errorBars;
3559 var _53=_51.length;
3560 var _54=MochiKit.Base.bind;
3561 var _55=MochiKit.Base.partial;
3562 for(var i=0;i<this.layout.points.length;i++){
3563 var _56=this.layout.points[i];
3564 _56.canvasx=this.area.w*_56.x+this.area.x;
3565 _56.canvasy=this.area.h*_56.y+this.area.y;
3566 }
3567 var _57=function(x){
3568 return x&&!isNaN(x);
3569 };
3570 var _58=function(ctx){
3571 for(var i=0;i<_53;i++){
3572 var _59=_51[i];
3573 var _60=_50[i%_49];
3574 var _61=this.options.strokeColorTransform;
3575 _48.save();
3576 _48.strokeStyle=_60.toRGBString();
3577 _48.lineWidth=this.options.strokeWidth;
3578 var _56=this.layout.points[0];
3579 var _62=this.dygraph_.attr_("pointSize");
3580 var _63=null,prevY=null;
3581 var _64=this.dygraph_.attr_("drawPoints");
3582 var _65=this.layout.points;
3583 for(var j=0;j<_65.length;j++){
3584 var _56=_65[j];
3585 if(_56.name==_59){
3586 if(!_57(_56.canvasy)){
3587 _63=prevY=null;
3588 }else{
3589 var _66=(!_63&&(j==_65.length-1||!_57(_65[j+1].canvasy)));
3590 if(!_63){
3591 _63=_56.canvasx;
3592 prevY=_56.canvasy;
3593 }else{
3594 ctx.beginPath();
3595 ctx.moveTo(_63,prevY);
3596 _63=_56.canvasx;
3597 prevY=_56.canvasy;
3598 ctx.lineTo(_63,prevY);
3599 ctx.stroke();
3600 }
3601 if(_64||_66){
3602 ctx.beginPath();
3603 ctx.fillStyle=_60.toRGBString();
3604 ctx.arc(_56.canvasx,_56.canvasy,_62,0,360,false);
3605 ctx.fill();
3606 }
3607 }
3608 }
3609 }
3610 }
3611 };
3612 var _67=function(ctx){
3613 for(var i=0;i<_53;i++){
3614 var _68=_51[i];
3615 var _69=_50[i%_49];
3616 var _70=this.options.strokeColorTransform;
3617 _48.save();
3618 _48.strokeStyle=_69.toRGBString();
3619 _48.lineWidth=this.options.strokeWidth;
3620 var _71=-1;
3621 var _72=[-1,-1];
3622 var _73=0;
3623 var _74=this.layout.yscale;
3624 var _75=function(_76,_77){
3625 _73++;
3626 if(_77.name==_68){
3627 if(!_77.y||isNaN(_77.y)){
3628 _71=-1;
3629 return;
3630 }
3631 var _78=[_77.y-_77.errorPlus*_74,_77.y+_77.errorMinus*_74];
3632 _78[0]=this.area.h*_78[0]+this.area.y;
3633 _78[1]=this.area.h*_78[1]+this.area.y;
3634 if(_71>=0){
3635 _76.moveTo(_71,_72[0]);
3636 _76.lineTo(_77.canvasx,_78[0]);
3637 _76.lineTo(_77.canvasx,_78[1]);
3638 _76.lineTo(_71,_72[1]);
3639 _76.closePath();
3640 }
3641 _72[0]=_78[0];
3642 _72[1]=_78[1];
3643 _71=_77.canvasx;
3644 }
3645 };
3646 var _79=_69.colorWithAlpha(0.15);
3647 ctx.fillStyle=_79.toRGBString();
3648 ctx.beginPath();
3649 MochiKit.Iter.forEach(this.layout.points,_55(_75,ctx),this);
3650 ctx.fill();
3651 }
3652 };
3653 if(_52){
3654 _54(_67,this)(_48);
3655 }
3656 _54(_58,this)(_48);
3657 _48.restore();
3658 };
3659 Dygraph=function(div,_81,_82){
3660 if(arguments.length>0){
3661 if(arguments.length==4){
3662 this.warn("Using deprecated four-argument dygraph constructor");
3663 this.__old_init__(div,_81,arguments[2],arguments[3]);
3664 }else{
3665 this.__init__(div,_81,_82);
3666 }
3667 }
3668 };
3669 Dygraph.NAME="Dygraph";
3670 Dygraph.VERSION="1.2";
3671 Dygraph.__repr__=function(){
3672 return "["+this.NAME+" "+this.VERSION+"]";
3673 };
3674 Dygraph.toString=function(){
3675 return this.__repr__();
3676 };
3677 Dygraph.DEFAULT_ROLL_PERIOD=1;
3678 Dygraph.DEFAULT_WIDTH=480;
3679 Dygraph.DEFAULT_HEIGHT=320;
3680 Dygraph.AXIS_LINE_WIDTH=0.3;
3681 Dygraph.DEFAULT_ATTRS={highlightCircleSize:3,pixelsPerXLabel:60,pixelsPerYLabel:30,labelsDivWidth:250,labelsDivStyles:{},labelsSeparateLines:false,labelsKMB:false,strokeWidth:1,axisTickSize:3,axisLabelFontSize:14,xAxisLabelWidth:50,yAxisLabelWidth:50,rightGap:5,showRoller:false,xValueFormatter:Dygraph.dateString_,xValueParser:Dygraph.dateParser,xTicker:Dygraph.dateTicker,sigma:2,errorBars:false,fractions:false,wilsonInterval:true,customBars:false};
3682 Dygraph.DEBUG=1;
3683 Dygraph.INFO=2;
3684 Dygraph.WARNING=3;
3685 Dygraph.ERROR=3;
3686 Dygraph.prototype.__old_init__=function(div,_83,_84,_85){
3687 if(_84!=null){
3688 var _86=["Date"];
3689 for(var i=0;i<_84.length;i++){
3690 _86.push(_84[i]);
3691 }
3692 MochiKit.Base.update(_85,{"labels":_86});
3693 }
3694 this.__init__(div,_83,_85);
3695 };
3696 Dygraph.prototype.__init__=function(div,_87,_88){
3697 if(_88==null){
3698 _88={};
3699 }
3700 this.maindiv_=div;
3701 this.file_=_87;
3702 this.rollPeriod_=_88.rollPeriod||Dygraph.DEFAULT_ROLL_PERIOD;
3703 this.previousVerticalX_=-1;
3704 this.fractions_=_88.fractions||false;
3705 this.dateWindow_=_88.dateWindow||null;
3706 this.valueRange_=_88.valueRange||null;
3707 this.wilsonInterval_=_88.wilsonInterval||true;
3708 div.innerHTML="";
3709 if(div.style.width==""){
3710 div.style.width=Dygraph.DEFAULT_WIDTH+"px";
3711 }
3712 if(div.style.height==""){
3713 div.style.height=Dygraph.DEFAULT_HEIGHT+"px";
3714 }
3715 this.width_=parseInt(div.style.width,10);
3716 this.height_=parseInt(div.style.height,10);
3717 this.user_attrs_={};
3718 MochiKit.Base.update(this.user_attrs_,_88);
3719 this.attrs_={};
3720 MochiKit.Base.update(this.attrs_,Dygraph.DEFAULT_ATTRS);
3721 this.labelsFromCSV_=(this.attr_("labels")==null);
3722 this.createInterface_();
3723 this.layoutOptions_={"errorBars":(this.attr_("errorBars")||this.attr_("customBars")),"xOriginIsZero":false};
3724 MochiKit.Base.update(this.layoutOptions_,this.attrs_);
3725 MochiKit.Base.update(this.layoutOptions_,this.user_attrs_);
3726 this.layout_=new DygraphLayout(this,this.layoutOptions_);
3727 this.renderOptions_={colorScheme:this.colors_,strokeColor:null,axisLineWidth:Dygraph.AXIS_LINE_WIDTH};
3728 MochiKit.Base.update(this.renderOptions_,this.attrs_);
3729 MochiKit.Base.update(this.renderOptions_,this.user_attrs_);
3730 this.plotter_=new DygraphCanvasRenderer(this,this.hidden_,this.layout_,this.renderOptions_);
3731 this.createStatusMessage_();
3732 this.createRollInterface_();
3733 this.createDragInterface_();
3734 this.start_();
3735 };
3736 Dygraph.prototype.attr_=function(_89){
3737 if(typeof (this.user_attrs_[_89])!="undefined"){
3738 return this.user_attrs_[_89];
3739 }else{
3740 if(typeof (this.attrs_[_89])!="undefined"){
3741 return this.attrs_[_89];
3742 }else{
3743 return null;
3744 }
3745 }
3746 };
3747 Dygraph.prototype.log=function(_90,_91){
3748 if(typeof (console)!="undefined"){
3749 switch(_90){
3750 case Dygraph.DEBUG:
3751 console.debug("dygraphs: "+_91);
3752 break;
3753 case Dygraph.INFO:
3754 console.info("dygraphs: "+_91);
3755 break;
3756 case Dygraph.WARNING:
3757 console.warn("dygraphs: "+_91);
3758 break;
3759 case Dygraph.ERROR:
3760 console.error("dygraphs: "+_91);
3761 break;
3762 }
3763 }
3764 };
3765 Dygraph.prototype.info=function(_92){
3766 this.log(Dygraph.INFO,_92);
3767 };
3768 Dygraph.prototype.warn=function(_93){
3769 this.log(Dygraph.WARNING,_93);
3770 };
3771 Dygraph.prototype.error=function(_94){
3772 this.log(Dygraph.ERROR,_94);
3773 };
3774 Dygraph.prototype.rollPeriod=function(){
3775 return this.rollPeriod_;
3776 };
3777 Dygraph.prototype.createInterface_=function(){
3778 var _95=this.maindiv_;
3779 this.graphDiv=MochiKit.DOM.DIV({style:{"width":this.width_+"px","height":this.height_+"px"}});
3780 appendChildNodes(_95,this.graphDiv);
3781 var _96=MochiKit.DOM.CANVAS;
3782 this.canvas_=_96({style:{"position":"absolute"},width:this.width_,height:this.height_});
3783 appendChildNodes(this.graphDiv,this.canvas_);
3784 this.hidden_=this.createPlotKitCanvas_(this.canvas_);
3785 connect(this.hidden_,"onmousemove",this,function(e){
3786 this.mouseMove_(e);
3787 });
3788 connect(this.hidden_,"onmouseout",this,function(e){
3789 this.mouseOut_(e);
3790 });
3791 };
3792 Dygraph.prototype.createPlotKitCanvas_=function(_98){
3793 var h=document.createElement("canvas");
3794 h.style.position="absolute";
3795 h.style.top=_98.style.top;
3796 h.style.left=_98.style.left;
3797 h.width=this.width_;
3798 h.height=this.height_;
3799 MochiKit.DOM.appendChildNodes(this.graphDiv,h);
3800 return h;
3801 };
3802 Dygraph.prototype.setColors_=function(){
3803 var num=this.attr_("labels").length-1;
3804 this.colors_=[];
3805 var _101=this.attr_("colors");
3806 if(!_101){
3807 var sat=this.attr_("colorSaturation")||1;
3808 var val=this.attr_("colorValue")||0.5;
3809 for(var i=1;i<=num;i++){
3810 var hue=(1*i/(1+num));
3811 this.colors_.push(MochiKit.Color.Color.fromHSV(hue,sat,val));
3812 }
3813 }else{
3814 for(var i=0;i<num;i++){
3815 var _105=_101[i%_101.length];
3816 this.colors_.push(MochiKit.Color.Color.fromString(_105));
3817 }
3818 }
3819 this.renderOptions_.colorScheme=this.colors_;
3820 MochiKit.Base.update(this.plotter_.options,this.renderOptions_);
3821 MochiKit.Base.update(this.layoutOptions_,this.user_attrs_);
3822 MochiKit.Base.update(this.layoutOptions_,this.attrs_);
3823 };
3824 Dygraph.findPosX=function(obj){
3825 var _107=0;
3826 if(obj.offsetParent){
3827 while(obj.offsetParent){
3828 _107+=obj.offsetLeft;
3829 obj=obj.offsetParent;
3830 }
3831 }else{
3832 if(obj.x){
3833 _107+=obj.x;
3834 }
3835 }
3836 return _107;
3837 };
3838 Dygraph.findPosY=function(obj){
3839 var _108=0;
3840 if(obj.offsetParent){
3841 while(obj.offsetParent){
3842 _108+=obj.offsetTop;
3843 obj=obj.offsetParent;
3844 }
3845 }else{
3846 if(obj.y){
3847 _108+=obj.y;
3848 }
3849 }
3850 return _108;
3851 };
3852 Dygraph.prototype.createStatusMessage_=function(){
3853 if(!this.attr_("labelsDiv")){
3854 var _109=this.attr_("labelsDivWidth");
3855 var _110={"style":{"position":"absolute","fontSize":"14px","zIndex":10,"width":_109+"px","top":"0px","left":(this.width_-_109-2)+"px","background":"white","textAlign":"left","overflow":"hidden"}};
3856 MochiKit.Base.update(_110["style"],this.attr_("labelsDivStyles"));
3857 var div=MochiKit.DOM.DIV(_110);
3858 MochiKit.DOM.appendChildNodes(this.graphDiv,div);
3859 this.attrs_.labelsDiv=div;
3860 }
3861 };
3862 Dygraph.prototype.createRollInterface_=function(){
3863 var _111=this.attr_("showRoller")?"block":"none";
3864 var _112={"type":"text","size":"2","value":this.rollPeriod_,"style":{"position":"absolute","zIndex":10,"top":(this.plotter_.area.h-25)+"px","left":(this.plotter_.area.x+1)+"px","display":_111}};
3865 var _113=MochiKit.DOM.INPUT(_112);
3866 var pa=this.graphDiv;
3867 MochiKit.DOM.appendChildNodes(pa,_113);
3868 connect(_113,"onchange",this,function(){
3869 this.adjustRoll(_113.value);
3870 });
3871 return _113;
3872 };
3873 Dygraph.prototype.createDragInterface_=function(){
3874 var self=this;
3875 var _116=false;
3876 var _117=null;
3877 var _118=null;
3878 var _119=null;
3879 var _120=null;
3880 var _121=null;
3881 var px=0;
3882 var py=0;
3883 var getX=function(e){
3884 return e.mouse().page.x-px;
3885 };
3886 var getY=function(e){
3887 return e.mouse().page.y-py;
3888 };
3889 connect(this.hidden_,"onmousemove",function(_126){
3890 if(_116){
3891 _119=getX(_126);
3892 _120=getY(_126);
3893 self.drawZoomRect_(_117,_119,_121);
3894 _121=_119;
3895 }
3896 });
3897 connect(this.hidden_,"onmousedown",function(_127){
3898 _116=true;
3899 px=Dygraph.findPosX(self.canvas_);
3900 py=Dygraph.findPosY(self.canvas_);
3901 _117=getX(_127);
3902 _118=getY(_127);
3903 });
3904 connect(document,"onmouseup",this,function(_128){
3905 if(_116){
3906 _116=false;
3907 _117=null;
3908 _118=null;
3909 }
3910 });
3911 connect(this.hidden_,"onmouseout",this,function(_129){
3912 if(_116){
3913 _119=null;
3914 _120=null;
3915 }
3916 });
3917 connect(this.hidden_,"onmouseup",this,function(_130){
3918 if(_116){
3919 _116=false;
3920 _119=getX(_130);
3921 _120=getY(_130);
3922 var _131=Math.abs(_119-_117);
3923 var _132=Math.abs(_120-_118);
3924 if(_131<2&&_132<2&&self.attr_("clickCallback")!=null&&self.lastx_!=undefined){
3925 self.attr_("clickCallback")(_130,new Date(self.lastx_));
3926 }
3927 if(_131>=10){
3928 self.doZoom_(Math.min(_117,_119),Math.max(_117,_119));
3929 }else{
3930 self.canvas_.getContext("2d").clearRect(0,0,self.canvas_.width,self.canvas_.height);
3931 }
3932 _117=null;
3933 _118=null;
3934 }
3935 });
3936 connect(this.hidden_,"ondblclick",this,function(_133){
3937 self.dateWindow_=null;
3938 self.drawGraph_(self.rawData_);
3939 var _134=self.rawData_[0][0];
3940 var _135=self.rawData_[self.rawData_.length-1][0];
3941 if(self.attr_("zoomCallback")){
3942 self.attr_("zoomCallback")(_134,_135);
3943 }
3944 });
3945 };
3946 Dygraph.prototype.drawZoomRect_=function(_136,endX,_138){
3947 var ctx=this.canvas_.getContext("2d");
3948 if(_138){
3949 ctx.clearRect(Math.min(_136,_138),0,Math.abs(_136-_138),this.height_);
3950 }
3951 if(endX&&_136){
3952 ctx.fillStyle="rgba(128,128,128,0.33)";
3953 ctx.fillRect(Math.min(_136,endX),0,Math.abs(endX-_136),this.height_);
3954 }
3955 };
3956 Dygraph.prototype.doZoom_=function(lowX,_140){
3957 var _141=this.layout_.points;
3958 var _142=null;
3959 var _143=null;
3960 for(var i=0;i<_141.length;i++){
3961 var cx=_141[i].canvasx;
3962 var x=_141[i].xval;
3963 if(cx<lowX&&(_142==null||x>_142)){
3964 _142=x;
3965 }
3966 if(cx>_140&&(_143==null||x<_143)){
3967 _143=x;
3968 }
3969 }
3970 if(_142==null){
3971 _142=_141[0].xval;
3972 }
3973 if(_143==null){
3974 _143=_141[_141.length-1].xval;
3975 }
3976 this.dateWindow_=[_142,_143];
3977 this.drawGraph_(this.rawData_);
3978 if(this.attr_("zoomCallback")){
3979 this.attr_("zoomCallback")(_142,_143);
3980 }
3981 };
3982 Dygraph.prototype.mouseMove_=function(_145){
3983 var _146=_145.mouse().page.x-Dygraph.findPosX(this.hidden_);
3984 var _147=this.layout_.points;
3985 var _148=-1;
3986 var _149=-1;
3987 var _150=1e+100;
3988 var idx=-1;
3989 for(var i=0;i<_147.length;i++){
3990 var dist=Math.abs(_147[i].canvasx-_146);
3991 if(dist>_150){
3992 break;
3993 }
3994 _150=dist;
3995 idx=i;
3996 }
3997 if(idx>=0){
3998 _148=_147[idx].xval;
3999 }
4000 if(_146>_147[_147.length-1].canvasx){
4001 _148=_147[_147.length-1].xval;
4002 }
4003 var _153=[];
4004 for(var i=0;i<_147.length;i++){
4005 if(_147[i].xval==_148){
4006 _153.push(_147[i]);
4007 }
4008 }
4009 var _154=this.attr_("highlightCircleSize");
4010 var ctx=this.canvas_.getContext("2d");
4011 if(this.previousVerticalX_>=0){
4012 var px=this.previousVerticalX_;
4013 ctx.clearRect(px-_154-1,0,2*_154+2,this.height_);
4014 }
4015 var isOK=function(x){
4016 return x&&!isNaN(x);
4017 };
4018 if(_153.length>0){
4019 var _146=_153[0].canvasx;
4020 var _156=this.attr_("xValueFormatter")(_148,this)+":";
4021 var clen=this.colors_.length;
4022 for(var i=0;i<_153.length;i++){
4023 if(!isOK(_153[i].canvasy)){
4024 continue;
4025 }
4026 if(this.attr_("labelsSeparateLines")){
4027 _156+="<br/>";
4028 }
4029 var _158=_153[i];
4030 _156+=" <b><font color='"+this.colors_[i%clen].toHexString()+"'>"+_158.name+"</font></b>:"+this.round_(_158.yval,2);
4031 }
4032 this.attr_("labelsDiv").innerHTML=_156;
4033 this.lastx_=_148;
4034 ctx.save();
4035 for(var i=0;i<_153.length;i++){
4036 if(!isOK(_153[i%clen].canvasy)){
4037 continue;
4038 }
4039 ctx.beginPath();
4040 ctx.fillStyle=this.colors_[i%clen].toRGBString();
4041 ctx.arc(_146,_153[i%clen].canvasy,_154,0,360,false);
4042 ctx.fill();
4043 }
4044 ctx.restore();
4045 this.previousVerticalX_=_146;
4046 }
4047 };
4048 Dygraph.prototype.mouseOut_=function(_159){
4049 var ctx=this.canvas_.getContext("2d");
4050 ctx.clearRect(0,0,this.width_,this.height_);
4051 this.attr_("labelsDiv").innerHTML="";
4052 };
4053 Dygraph.zeropad=function(x){
4054 if(x<10){
4055 return "0"+x;
4056 }else{
4057 return ""+x;
4058 }
4059 };
4060 Dygraph.prototype.hmsString_=function(date){
4061 var _161=Dygraph.zeropad;
4062 var d=new Date(date);
4063 if(d.getSeconds()){
4064 return _161(d.getHours())+":"+_161(d.getMinutes())+":"+_161(d.getSeconds());
4065 }else{
4066 if(d.getMinutes()){
4067 return _161(d.getHours())+":"+_161(d.getMinutes());
4068 }else{
4069 return _161(d.getHours());
4070 }
4071 }
4072 };
4073 Dygraph.dateString_=function(date,self){
4074 var _163=Dygraph.zeropad;
4075 var d=new Date(date);
4076 var year=""+d.getFullYear();
4077 var _165=_163(d.getMonth()+1);
4078 var day=_163(d.getDate());
4079 var ret="";
4080 var frac=d.getHours()*3600+d.getMinutes()*60+d.getSeconds();
4081 if(frac){
4082 ret=" "+self.hmsString_(date);
4083 }
4084 return year+"/"+_165+"/"+day+ret;
4085 };
4086 Dygraph.prototype.round_=function(num,_169){
4087 var _170=Math.pow(10,_169);
4088 return Math.round(num*_170)/_170;
4089 };
4090 Dygraph.prototype.loadedEvent_=function(data){
4091 this.rawData_=this.parseCSV_(data);
4092 this.drawGraph_(this.rawData_);
4093 };
4094 Dygraph.prototype.months=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
4095 Dygraph.prototype.quarters=["Jan","Apr","Jul","Oct"];
4096 Dygraph.prototype.addXTicks_=function(){
4097 var _172,endDate;
4098 if(this.dateWindow_){
4099 _172=this.dateWindow_[0];
4100 endDate=this.dateWindow_[1];
4101 }else{
4102 _172=this.rawData_[0][0];
4103 endDate=this.rawData_[this.rawData_.length-1][0];
4104 }
4105 var _173=this.attr_("xTicker")(_172,endDate,this);
4106 this.layout_.updateOptions({xTicks:_173});
4107 };
4108 Dygraph.SECONDLY=0;
4109 Dygraph.TEN_SECONDLY=1;
4110 Dygraph.THIRTY_SECONDLY=2;
4111 Dygraph.MINUTELY=3;
4112 Dygraph.TEN_MINUTELY=4;
4113 Dygraph.THIRTY_MINUTELY=5;
4114 Dygraph.HOURLY=6;
4115 Dygraph.SIX_HOURLY=7;
4116 Dygraph.DAILY=8;
4117 Dygraph.WEEKLY=9;
4118 Dygraph.MONTHLY=10;
4119 Dygraph.QUARTERLY=11;
4120 Dygraph.BIANNUAL=12;
4121 Dygraph.ANNUAL=13;
4122 Dygraph.DECADAL=14;
4123 Dygraph.NUM_GRANULARITIES=15;
4124 Dygraph.SHORT_SPACINGS=[];
4125 Dygraph.SHORT_SPACINGS[Dygraph.SECONDLY]=1000*1;
4126 Dygraph.SHORT_SPACINGS[Dygraph.TEN_SECONDLY]=1000*10;
4127 Dygraph.SHORT_SPACINGS[Dygraph.THIRTY_SECONDLY]=1000*30;
4128 Dygraph.SHORT_SPACINGS[Dygraph.MINUTELY]=1000*60;
4129 Dygraph.SHORT_SPACINGS[Dygraph.TEN_MINUTELY]=1000*60*10;
4130 Dygraph.SHORT_SPACINGS[Dygraph.THIRTY_MINUTELY]=1000*60*30;
4131 Dygraph.SHORT_SPACINGS[Dygraph.HOURLY]=1000*3600;
4132 Dygraph.SHORT_SPACINGS[Dygraph.HOURLY]=1000*3600*6;
4133 Dygraph.SHORT_SPACINGS[Dygraph.DAILY]=1000*86400;
4134 Dygraph.SHORT_SPACINGS[Dygraph.WEEKLY]=1000*604800;
4135 Dygraph.prototype.NumXTicks=function(_174,_175,_176){
4136 if(_176<Dygraph.MONTHLY){
4137 var _177=Dygraph.SHORT_SPACINGS[_176];
4138 return Math.floor(0.5+1*(_175-_174)/_177);
4139 }else{
4140 var _178=1;
4141 var _179=12;
4142 if(_176==Dygraph.QUARTERLY){
4143 _179=3;
4144 }
4145 if(_176==Dygraph.BIANNUAL){
4146 _179=2;
4147 }
4148 if(_176==Dygraph.ANNUAL){
4149 _179=1;
4150 }
4151 if(_176==Dygraph.DECADAL){
4152 _179=1;
4153 _178=10;
4154 }
4155 var _180=365.2524*24*3600*1000;
4156 var _181=1*(_175-_174)/_180;
4157 return Math.floor(0.5+1*_181*_179/_178);
4158 }
4159 };
4160 Dygraph.prototype.GetXAxis=function(_182,_183,_184){
4161 var _185=[];
4162 if(_184<Dygraph.MONTHLY){
4163 var _186=Dygraph.SHORT_SPACINGS[_184];
4164 var _187="%d%b";
4165 if(_184<Dygraph.HOURLY){
4166 _182=_186*Math.floor(0.5+_182/_186);
4167 }
4168 for(var t=_182;t<=_183;t+=_186){
4169 var d=new Date(t);
4170 var frac=d.getHours()*3600+d.getMinutes()*60+d.getSeconds();
4171 if(frac==0||_184>=Dygraph.DAILY){
4172 _185.push({v:t,label:new Date(t+3600*1000).strftime(_187)});
4173 }else{
4174 _185.push({v:t,label:this.hmsString_(t)});
4175 }
4176 }
4177 }else{
4178 var _189;
4179 var _190=1;
4180 if(_184==Dygraph.MONTHLY){
4181 _189=[0,1,2,3,4,5,6,7,8,9,10,11,12];
4182 }else{
4183 if(_184==Dygraph.QUARTERLY){
4184 _189=[0,3,6,9];
4185 }else{
4186 if(_184==Dygraph.BIANNUAL){
4187 _189=[0,6];
4188 }else{
4189 if(_184==Dygraph.ANNUAL){
4190 _189=[0];
4191 }else{
4192 if(_184==Dygraph.DECADAL){
4193 _189=[0];
4194 _190=10;
4195 }
4196 }
4197 }
4198 }
4199 }
4200 var _191=new Date(_182).getFullYear();
4201 var _192=new Date(_183).getFullYear();
4202 var _193=Dygraph.zeropad;
4203 for(var i=_191;i<=_192;i++){
4204 if(i%_190!=0){
4205 continue;
4206 }
4207 for(var j=0;j<_189.length;j++){
4208 var _194=i+"/"+_193(1+_189[j])+"/01";
4209 var t=Date.parse(_194);
4210 if(t<_182||t>_183){
4211 continue;
4212 }
4213 _185.push({v:t,label:new Date(t).strftime("%b %y")});
4214 }
4215 }
4216 }
4217 return _185;
4218 };
4219 Dygraph.dateTicker=function(_195,_196,self){
4220 var _197=-1;
4221 for(var i=0;i<Dygraph.NUM_GRANULARITIES;i++){
4222 var _198=self.NumXTicks(_195,_196,i);
4223 if(self.width_/_198>=self.attr_("pixelsPerXLabel")){
4224 _197=i;
4225 break;
4226 }
4227 }
4228 if(_197>=0){
4229 return self.GetXAxis(_195,_196,_197);
4230 }else{
4231 }
4232 };
4233 Dygraph.numericTicks=function(minV,maxV,self){
4234 var _201=[1,2,5];
4235 var _202,low_val,high_val,nTicks;
4236 var _203=self.attr_("pixelsPerYLabel");
4237 for(var i=-10;i<50;i++){
4238 var _204=Math.pow(10,i);
4239 for(var j=0;j<_201.length;j++){
4240 _202=_204*_201[j];
4241 low_val=Math.floor(minV/_202)*_202;
4242 high_val=Math.ceil(maxV/_202)*_202;
4243 nTicks=(high_val-low_val)/_202;
4244 var _205=self.height_/nTicks;
4245 if(_205>_203){
4246 break;
4247 }
4248 }
4249 if(_205>_203){
4250 break;
4251 }
4252 }
4253 var _206=[];
4254 for(var i=0;i<nTicks;i++){
4255 var _207=low_val+i*_202;
4256 var _208=self.round_(_207,2);
4257 if(self.attr_("labelsKMB")){
4258 var k=1000;
4259 if(_207>=k*k*k){
4260 _208=self.round_(_207/(k*k*k),1)+"B";
4261 }else{
4262 if(_207>=k*k){
4263 _208=self.round_(_207/(k*k),1)+"M";
4264 }else{
4265 if(_207>=k){
4266 _208=self.round_(_207/k,1)+"K";
4267 }
4268 }
4269 }
4270 }
4271 _206.push({label:_208,v:_207});
4272 }
4273 return _206;
4274 };
4275 Dygraph.prototype.addYTicks_=function(minY,maxY){
4276 var _212=Dygraph.numericTicks(minY,maxY,this);
4277 this.layout_.updateOptions({yAxis:[minY,maxY],yTicks:_212});
4278 };
4279 Dygraph.prototype.extremeValues_=function(_213){
4280 var minY=null,maxY=null;
4281 var bars=this.attr_("errorBars")||this.attr_("customBars");
4282 if(bars){
4283 for(var j=0;j<_213.length;j++){
4284 var y=_213[j][1][0];
4285 if(!y){
4286 continue;
4287 }
4288 var low=y-_213[j][1][1];
4289 var high=y+_213[j][1][2];
4290 if(low>y){
4291 low=y;
4292 }
4293 if(high<y){
4294 high=y;
4295 }
4296 if(maxY==null||high>maxY){
4297 maxY=high;
4298 }
4299 if(minY==null||low<minY){
4300 minY=low;
4301 }
4302 }
4303 }else{
4304 for(var j=0;j<_213.length;j++){
4305 var y=_213[j][1];
4306 if(!y){
4307 continue;
4308 }
4309 if(maxY==null||y>maxY){
4310 maxY=y;
4311 }
4312 if(minY==null||y<minY){
4313 minY=y;
4314 }
4315 }
4316 }
4317 return [minY,maxY];
4318 };
4319 Dygraph.prototype.drawGraph_=function(data){
4320 var minY=null,maxY=null;
4321 this.layout_.removeAllDatasets();
4322 this.setColors_();
4323 this.attrs_["pointSize"]=0.5*this.attr_("highlightCircleSize");
4324 for(var i=1;i<data[0].length;i++){
4325 var _217=[];
4326 for(var j=0;j<data.length;j++){
4327 var date=data[j][0];
4328 _217[j]=[date,data[j][i]];
4329 }
4330 _217=this.rollingAverage(_217,this.rollPeriod_);
4331 var bars=this.attr_("errorBars")||this.attr_("customBars");
4332 if(this.dateWindow_){
4333 var low=this.dateWindow_[0];
4334 var high=this.dateWindow_[1];
4335 var _218=[];
4336 for(var k=0;k<_217.length;k++){
4337 if(_217[k][0]>=low&&_217[k][0]<=high){
4338 _218.push(_217[k]);
4339 }
4340 }
4341 _217=_218;
4342 }
4343 var _219=this.extremeValues_(_217);
4344 var _220=_219[0];
4345 var _221=_219[1];
4346 if(!minY||_220<minY){
4347 minY=_220;
4348 }
4349 if(!maxY||_221>maxY){
4350 maxY=_221;
4351 }
4352 if(bars){
4353 var vals=[];
4354 for(var j=0;j<_217.length;j++){
4355 vals[j]=[_217[j][0],_217[j][1][0],_217[j][1][1],_217[j][1][2]];
4356 }
4357 this.layout_.addDataset(this.attr_("labels")[i],vals);
4358 }else{
4359 this.layout_.addDataset(this.attr_("labels")[i],_217);
4360 }
4361 }
4362 if(this.valueRange_!=null){
4363 this.addYTicks_(this.valueRange_[0],this.valueRange_[1]);
4364 }else{
4365 var span=maxY-minY;
4366 var _224=maxY+0.1*span;
4367 var _225=minY-0.1*span;
4368 if(_225<0&&minY>=0){
4369 _225=0;
4370 }
4371 if(_224>0&&maxY<=0){
4372 _224=0;
4373 }
4374 if(this.attr_("includeZero")){
4375 if(maxY<0){
4376 _224=0;
4377 }
4378 if(minY>0){
4379 _225=0;
4380 }
4381 }
4382 this.addYTicks_(_225,_224);
4383 }
4384 this.addXTicks_();
4385 this.layout_.evaluateWithError();
4386 this.plotter_.clear();
4387 this.plotter_.render();
4388 this.canvas_.getContext("2d").clearRect(0,0,this.canvas_.width,this.canvas_.height);
4389 };
4390 Dygraph.prototype.rollingAverage=function(_226,_227){
4391 if(_226.length<2){
4392 return _226;
4393 }
4394 var _227=Math.min(_227,_226.length-1);
4395 var _228=[];
4396 var _229=this.attr_("sigma");
4397 if(this.fractions_){
4398 var num=0;
4399 var den=0;
4400 var mult=100;
4401 for(var i=0;i<_226.length;i++){
4402 num+=_226[i][1][0];
4403 den+=_226[i][1][1];
4404 if(i-_227>=0){
4405 num-=_226[i-_227][1][0];
4406 den-=_226[i-_227][1][1];
4407 }
4408 var date=_226[i][0];
4409 var _232=den?num/den:0;
4410 if(this.attr_("errorBars")){
4411 if(this.wilsonInterval_){
4412 if(den){
4413 var p=_232<0?0:_232,n=den;
4414 var pm=_229*Math.sqrt(p*(1-p)/n+_229*_229/(4*n*n));
4415 var _235=1+_229*_229/den;
4416 var low=(p+_229*_229/(2*den)-pm)/_235;
4417 var high=(p+_229*_229/(2*den)+pm)/_235;
4418 _228[i]=[date,[p*mult,(p-low)*mult,(high-p)*mult]];
4419 }else{
4420 _228[i]=[date,[0,0,0]];
4421 }
4422 }else{
4423 var _236=den?_229*Math.sqrt(_232*(1-_232)/den):1;
4424 _228[i]=[date,[mult*_232,mult*_236,mult*_236]];
4425 }
4426 }else{
4427 _228[i]=[date,mult*_232];
4428 }
4429 }
4430 }else{
4431 if(this.attr_("customBars")){
4432 var low=0;
4433 var mid=0;
4434 var high=0;
4435 var _238=0;
4436 for(var i=0;i<_226.length;i++){
4437 var data=_226[i][1];
4438 var y=data[1];
4439 _228[i]=[_226[i][0],[y,y-data[0],data[2]-y]];
4440 low+=data[0];
4441 mid+=y;
4442 high+=data[2];
4443 _238+=1;
4444 if(i-_227>=0){
4445 var prev=_226[i-_227];
4446 low-=prev[1][0];
4447 mid-=prev[1][1];
4448 high-=prev[1][2];
4449 _238-=1;
4450 }
4451 _228[i]=[_226[i][0],[1*mid/_238,1*(mid-low)/_238,1*(high-mid)/_238]];
4452 }
4453 }else{
4454 var _240=Math.min(_227-1,_226.length-2);
4455 if(!this.attr_("errorBars")){
4456 if(_227==1){
4457 return _226;
4458 }
4459 for(var i=0;i<_226.length;i++){
4460 var sum=0;
4461 var _242=0;
4462 for(var j=Math.max(0,i-_227+1);j<i+1;j++){
4463 var y=_226[j][1];
4464 if(!y||isNaN(y)){
4465 continue;
4466 }
4467 _242++;
4468 sum+=_226[j][1];
4469 }
4470 if(_242){
4471 _228[i]=[_226[i][0],sum/_242];
4472 }else{
4473 _228[i]=[_226[i][0],null];
4474 }
4475 }
4476 }else{
4477 for(var i=0;i<_226.length;i++){
4478 var sum=0;
4479 var _243=0;
4480 var _242=0;
4481 for(var j=Math.max(0,i-_227+1);j<i+1;j++){
4482 var y=_226[j][1][0];
4483 if(!y||isNaN(y)){
4484 continue;
4485 }
4486 _242++;
4487 sum+=_226[j][1][0];
4488 _243+=Math.pow(_226[j][1][1],2);
4489 }
4490 if(_242){
4491 var _236=Math.sqrt(_243)/_242;
4492 _228[i]=[_226[i][0],[sum/_242,_229*_236,_229*_236]];
4493 }else{
4494 _228[i]=[_226[i][0],[null,null,null]];
4495 }
4496 }
4497 }
4498 }
4499 }
4500 return _228;
4501 };
4502 Dygraph.dateParser=function(_244,self){
4503 var _245;
4504 var d;
4505 if(_244.length==10&&_244.search("-")!=-1){
4506 _245=_244.replace("-","/","g");
4507 while(_245.search("-")!=-1){
4508 _245=_245.replace("-","/");
4509 }
4510 d=Date.parse(_245);
4511 }else{
4512 if(_244.length==8){
4513 _245=_244.substr(0,4)+"/"+_244.substr(4,2)+"/"+_244.substr(6,2);
4514 d=Date.parse(_245);
4515 }else{
4516 d=Date.parse(_244);
4517 }
4518 }
4519 if(!d||isNaN(d)){
4520 self.error("Couldn't parse "+_244+" as a date");
4521 }
4522 return d;
4523 };
4524 Dygraph.prototype.detectTypeFromString_=function(str){
4525 var _247=false;
4526 if(str.indexOf("-")>=0||str.indexOf("/")>=0||isNaN(parseFloat(str))){
4527 _247=true;
4528 }else{
4529 if(str.length==8&&str>"19700101"&&str<"20371231"){
4530 _247=true;
4531 }
4532 }
4533 if(_247){
4534 this.attrs_.xValueFormatter=Dygraph.dateString_;
4535 this.attrs_.xValueParser=Dygraph.dateParser;
4536 this.attrs_.xTicker=Dygraph.dateTicker;
4537 }else{
4538 this.attrs_.xValueFormatter=function(x){
4539 return x;
4540 };
4541 this.attrs_.xValueParser=function(x){
4542 return parseFloat(x);
4543 };
4544 this.attrs_.xTicker=Dygraph.numericTicks;
4545 }
4546 };
4547 Dygraph.prototype.parseCSV_=function(data){
4548 var ret=[];
4549 var _248=data.split("\n");
4550 var _249=0;
4551 if(this.labelsFromCSV_){
4552 _249=1;
4553 this.attrs_.labels=_248[0].split(",");
4554 }
4555 var _250;
4556 var _251=false;
4557 var _252=this.attr_("labels").length;
4558 for(var i=_249;i<_248.length;i++){
4559 var line=_248[i];
4560 if(line.length==0){
4561 continue;
4562 }
4563 var _254=line.split(",");
4564 if(_254.length<2){
4565 continue;
4566 }
4567 var _255=[];
4568 if(!_251){
4569 this.detectTypeFromString_(_254[0]);
4570 _250=this.attr_("xValueParser");
4571 _251=true;
4572 }
4573 _255[0]=_250(_254[0],this);
4574 if(this.fractions_){
4575 for(var j=1;j<_254.length;j++){
4576 var vals=_254[j].split("/");
4577 _255[j]=[parseFloat(vals[0]),parseFloat(vals[1])];
4578 }
4579 }else{
4580 if(this.attr_("errorBars")){
4581 for(var j=1;j<_254.length;j+=2){
4582 _255[(j+1)/2]=[parseFloat(_254[j]),parseFloat(_254[j+1])];
4583 }
4584 }else{
4585 if(this.attr_("customBars")){
4586 for(var j=1;j<_254.length;j++){
4587 var vals=_254[j].split(";");
4588 _255[j]=[parseFloat(vals[0]),parseFloat(vals[1]),parseFloat(vals[2])];
4589 }
4590 }else{
4591 for(var j=1;j<_254.length;j++){
4592 _255[j]=parseFloat(_254[j]);
4593 }
4594 }
4595 }
4596 }
4597 ret.push(_255);
4598 if(_255.length!=_252){
4599 this.error("Number of columns in line "+i+" ("+_255.length+") does not agree with number of labels ("+_252+") "+line);
4600 }
4601 }
4602 return ret;
4603 };
4604 Dygraph.prototype.parseArray_=function(data){
4605 if(data.length==0){
4606 this.error("Can't plot empty data set");
4607 return null;
4608 }
4609 if(data[0].length==0){
4610 this.error("Data set cannot contain an empty row");
4611 return null;
4612 }
4613 if(this.attr_("labels")==null){
4614 this.warn("Using default labels. Set labels explicitly via 'labels' "+"in the options parameter");
4615 this.attrs_.labels=["X"];
4616 for(var i=1;i<data[0].length;i++){
4617 this.attrs_.labels.push("Y"+i);
4618 }
4619 }
4620 if(MochiKit.Base.isDateLike(data[0][0])){
4621 this.attrs_.xValueFormatter=Dygraph.dateString_;
4622 this.attrs_.xTicker=Dygraph.dateTicker;
4623 var _256=MochiKit.Base.clone(data);
4624 for(var i=0;i<data.length;i++){
4625 if(_256[i].length==0){
4626 this.error("Row "<<(1+i)<<" of data is empty");
4627 return null;
4628 }
4629 if(_256[i][0]==null||typeof (_256[i][0].getTime)!="function"){
4630 this.error("x value in row "<<(1+i)<<" is not a Date");
4631 return null;
4632 }
4633 _256[i][0]=_256[i][0].getTime();
4634 }
4635 return _256;
4636 }else{
4637 this.attrs_.xValueFormatter=function(x){
4638 return x;
4639 };
4640 this.attrs_.xTicker=Dygraph.numericTicks;
4641 return data;
4642 }
4643 };
4644 Dygraph.prototype.parseDataTable_=function(data){
4645 var cols=data.getNumberOfColumns();
4646 var rows=data.getNumberOfRows();
4647 var _259=[];
4648 for(var i=0;i<cols;i++){
4649 _259.push(data.getColumnLabel(i));
4650 }
4651 this.attrs_.labels=_259;
4652 var _260=data.getColumnType(0);
4653 if(_260=="date"){
4654 this.attrs_.xValueFormatter=Dygraph.dateString_;
4655 this.attrs_.xValueParser=Dygraph.dateParser;
4656 this.attrs_.xTicker=Dygraph.dateTicker;
4657 }else{
4658 if(_260=="number"){
4659 this.attrs_.xValueFormatter=function(x){
4660 return x;
4661 };
4662 this.attrs_.xValueParser=function(x){
4663 return parseFloat(x);
4664 };
4665 this.attrs_.xTicker=Dygraph.numericTicks;
4666 }else{
4667 this.error("only 'date' and 'number' types are supported for column 1 "+"of DataTable input (Got '"+_260+"')");
4668 return null;
4669 }
4670 }
4671 var ret=[];
4672 for(var i=0;i<rows;i++){
4673 var row=[];
4674 if(!data.getValue(i,0)){
4675 continue;
4676 }
4677 if(_260=="date"){
4678 row.push(data.getValue(i,0).getTime());
4679 }else{
4680 row.push(data.getValue(i,0));
4681 }
4682 for(var j=1;j<cols;j++){
4683 row.push(data.getValue(i,j));
4684 }
4685 ret.push(row);
4686 }
4687 return ret;
4688 };
4689 Dygraph.prototype.start_=function(){
4690 if(typeof this.file_=="function"){
4691 this.loadedEvent_(this.file_());
4692 }else{
4693 if(MochiKit.Base.isArrayLike(this.file_)){
4694 this.rawData_=this.parseArray_(this.file_);
4695 this.drawGraph_(this.rawData_);
4696 }else{
4697 if(typeof this.file_=="object"&&typeof this.file_.getColumnRange=="function"){
4698 this.rawData_=this.parseDataTable_(this.file_);
4699 this.drawGraph_(this.rawData_);
4700 }else{
4701 if(typeof this.file_=="string"){
4702 if(this.file_.indexOf("\n")>=0){
4703 this.loadedEvent_(this.file_);
4704 }else{
4705 var req=new XMLHttpRequest();
4706 var _263=this;
4707 req.onreadystatechange=function(){
4708 if(req.readyState==4){
4709 if(req.status==200){
4710 _263.loadedEvent_(req.responseText);
4711 }
4712 }
4713 };
4714 req.open("GET",this.file_,true);
4715 req.send(null);
4716 }
4717 }else{
4718 this.error("Unknown data format: "+(typeof this.file_));
4719 }
4720 }
4721 }
4722 }
4723 };
4724 Dygraph.prototype.updateOptions=function(_264){
4725 if(_264.rollPeriod){
4726 this.rollPeriod_=_264.rollPeriod;
4727 }
4728 if(_264.dateWindow){
4729 this.dateWindow_=_264.dateWindow;
4730 }
4731 if(_264.valueRange){
4732 this.valueRange_=_264.valueRange;
4733 }
4734 MochiKit.Base.update(this.user_attrs_,_264);
4735 this.labelsFromCSV_=(this.attr_("labels")==null);
4736 this.layout_.updateOptions({"errorBars":this.attr_("errorBars")});
4737 if(_264["file"]&&_264["file"]!=this.file_){
4738 this.file_=_264["file"];
4739 this.start_();
4740 }else{
4741 this.drawGraph_(this.rawData_);
4742 }
4743 };
4744 Dygraph.prototype.adjustRoll=function(_265){
4745 this.rollPeriod_=_265;
4746 this.drawGraph_(this.rawData_);
4747 };
4748 Dygraph.GVizChart=function(_266){
4749 this.container=_266;
4750 };
4751 Dygraph.GVizChart.prototype.draw=function(data,_267){
4752 this.container.innerHTML="";
4753 this.date_graph=new Dygraph(this.container,data,_267);
4754 };
4755 DateGraph=Dygraph;
4756