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