/***
    MochiKit.MochiKit 1.4.2 : PACKED VERSION
    THIS FILE IS AUTOMATICALLY GENERATED.  If creating patches, please
    diff against the source tree, not this file.
    See <http://mochikit.com/> for documentation, downloads, license, etc.
    (c) 2005 Bob Ippolito.  All rights Reserved.

	Modified 2010 [Added TTips] by Dzwiedz [at] yafud [dot] pl
***/

if(typeof (dojo)!="undefined"){
dojo.provide("MochiKit.Base");
}
if(typeof (MochiKit)=="undefined"){
MochiKit={};
}
if(typeof (MochiKit.Base)=="undefined"){
MochiKit.Base={};
}
if(typeof (MochiKit.__export__)=="undefined"){
MochiKit.__export__=(MochiKit.__compat__||(typeof (JSAN)=="undefined"&&typeof (dojo)=="undefined"));
}
MochiKit.Base.VERSION="1.4.2";
MochiKit.Base.NAME="MochiKit.Base";
MochiKit.Base.update=function(_1,_2){
if(_1===null||_1===undefined){
_1={};
}
for(var i=1;i<arguments.length;i++){
var o=arguments[i];
if(typeof (o)!="undefined"&&o!==null){
for(var k in o){
_1[k]=o[k];
}
}
}
return _1;
};
MochiKit.Base.update(MochiKit.Base,{__repr__:function(){
return "["+this.NAME+" "+this.VERSION+"]";
},toString:function(){
return this.__repr__();
},camelize:function(_6){
var _7=_6.split("-");
var cc=_7[0];
for(var i=1;i<_7.length;i++){
cc+=_7[i].charAt(0).toUpperCase()+_7[i].substring(1);
}
return cc;
},counter:function(n){
if(arguments.length===0){
n=1;
}
return function(){
return n++;
};
},clone:function(_b){
var me=arguments.callee;
if(arguments.length==1){
me.prototype=_b;
return new me();
}
},_deps:function(_d,_e){
if(!(_d in MochiKit)){
MochiKit[_d]={};
}
if(typeof (dojo)!="undefined"){
dojo.provide("MochiKit."+_d);
}
for(var i=0;i<_e.length;i++){
if(typeof (dojo)!="undefined"){
dojo.require("MochiKit."+_e[i]);
}
if(typeof (JSAN)!="undefined"){
JSAN.use("MochiKit."+_e[i],[]);
}
if(!(_e[i] in MochiKit)){
throw "MochiKit."+_d+" depends on MochiKit."+_e[i]+"!";
}
}
},_flattenArray:function(res,lst){
for(var i=0;i<lst.length;i++){
var o=lst[i];
if(o instanceof Array){
arguments.callee(res,o);
}else{
res.push(o);
}
}
return res;
},flattenArray:function(lst){
return MochiKit.Base._flattenArray([],lst);
},flattenArguments:function(lst){
var res=[];
var m=MochiKit.Base;
var _18=m.extend(null,arguments);
while(_18.length){
var o=_18.shift();
if(o&&typeof (o)=="object"&&typeof (o.length)=="number"){
for(var i=o.length-1;i>=0;i--){
_18.unshift(o[i]);
}
}else{
res.push(o);
}
}
return res;
},extend:function(_1b,obj,_1d){
if(!_1d){
_1d=0;
}
if(obj){
var l=obj.length;
if(typeof (l)!="number"){
if(typeof (MochiKit.Iter)!="undefined"){
obj=MochiKit.Iter.list(obj);
l=obj.length;
}else{
throw new TypeError("Argument not an array-like and MochiKit.Iter not present");
}
}
if(!_1b){
_1b=[];
}
for(var i=_1d;i<l;i++){
_1b.push(obj[i]);
}
}
return _1b;
},updatetree:function(_20,obj){
if(_20===null||_20===undefined){
_20={};
}
for(var i=1;i<arguments.length;i++){
var o=arguments[i];
if(typeof (o)!="undefined"&&o!==null){
for(var k in o){
var v=o[k];
if(typeof (_20[k])=="object"&&typeof (v)=="object"){
arguments.callee(_20[k],v);
}else{
_20[k]=v;
}
}
}
}
return _20;
},setdefault:function(_26,obj){
if(_26===null||_26===undefined){
_26={};
}
for(var i=1;i<arguments.length;i++){
var o=arguments[i];
for(var k in o){
if(!(k in _26)){
_26[k]=o[k];
}
}
}
return _26;
},keys:function(obj){
var _2c=[];
for(var _2d in obj){
_2c.push(_2d);
}
return _2c;
},values:function(obj){
var _2f=[];
for(var _30 in obj){
_2f.push(obj[_30]);
}
return _2f;
},items:function(obj){
var _32=[];
var e;
for(var _34 in obj){
var v;
try{
v=obj[_34];
}
catch(e){
continue;
}
_32.push([_34,v]);
}
return _32;
},_newNamedError:function(_36,_37,_38){
_38.prototype=new MochiKit.Base.NamedError(_36.NAME+"."+_37);
_36[_37]=_38;
},operator:{truth:function(a){
return !!a;
},lognot:function(a){
return !a;
},identity:function(a){
return a;
},not:function(a){
return ~a;
},neg:function(a){
return -a;
},add:function(a,b){
return a+b;
},sub:function(a,b){
return a-b;
},div:function(a,b){
return a/b;
},mod:function(a,b){
return a%b;
},mul:function(a,b){
return a*b;
},and:function(a,b){
return a&b;
},or:function(a,b){
return a|b;
},xor:function(a,b){
return a^b;
},lshift:function(a,b){
return a<<b;
},rshift:function(a,b){
return a>>b;
},zrshift:function(a,b){
return a>>>b;
},eq:function(a,b){
return a==b;
},ne:function(a,b){
return a!=b;
},gt:function(a,b){
return a>b;
},ge:function(a,b){
return a>=b;
},lt:function(a,b){
return a<b;
},le:function(a,b){
return a<=b;
},seq:function(a,b){
return a===b;
},sne:function(a,b){
return a!==b;
},ceq:function(a,b){
return MochiKit.Base.compare(a,b)===0;
},cne:function(a,b){
return MochiKit.Base.compare(a,b)!==0;
},cgt:function(a,b){
return MochiKit.Base.compare(a,b)==1;
},cge:function(a,b){
return MochiKit.Base.compare(a,b)!=-1;
},clt:function(a,b){
return MochiKit.Base.compare(a,b)==-1;
},cle:function(a,b){
return MochiKit.Base.compare(a,b)!=1;
},logand:function(a,b){
return a&&b;
},logor:function(a,b){
return a||b;
},contains:function(a,b){
return b in a;
}},forwardCall:function(_76){
return function(){
return this[_76].apply(this,arguments);
};
},itemgetter:function(_77){
return function(arg){
return arg[_77];
};
},typeMatcher:function(){
var _79={};
for(var i=0;i<arguments.length;i++){
var typ=arguments[i];
_79[typ]=typ;
}
return function(){
for(var i=0;i<arguments.length;i++){
if(!(typeof (arguments[i]) in _79)){
return false;
}
}
return true;
};
},isNull:function(){
for(var i=0;i<arguments.length;i++){
if(arguments[i]!==null){
return false;
}
}
return true;
},isUndefinedOrNull:function(){
for(var i=0;i<arguments.length;i++){
var o=arguments[i];
if(!(typeof (o)=="undefined"||o===null)){
return false;
}
}
return true;
},isEmpty:function(obj){
return !MochiKit.Base.isNotEmpty.apply(this,arguments);
},isNotEmpty:function(obj){
for(var i=0;i<arguments.length;i++){
var o=arguments[i];
if(!(o&&o.length)){
return false;
}
}
return true;
},isArrayLike:function(){
for(var i=0;i<arguments.length;i++){
var o=arguments[i];
var typ=typeof (o);
if((typ!="object"&&!(typ=="function"&&typeof (o.item)=="function"))||o===null||typeof (o.length)!="number"||o.nodeType===3||o.nodeType===4){
return false;
}
}
return true;
},isDateLike:function(){
for(var i=0;i<arguments.length;i++){
var o=arguments[i];
if(typeof (o)!="object"||o===null||typeof (o.getTime)!="function"){
return false;
}
}
return true;
},xmap:function(fn){
if(fn===null){
return MochiKit.Base.extend(null,arguments,1);
}
var _8a=[];
for(var i=1;i<arguments.length;i++){
_8a.push(fn(arguments[i]));
}
return _8a;
},map:function(fn,lst){
var m=MochiKit.Base;
var itr=MochiKit.Iter;
var _90=m.isArrayLike;
if(arguments.length<=2){
if(!_90(lst)){
if(itr){
lst=itr.list(lst);
if(fn===null){
return lst;
}
}else{
throw new TypeError("Argument not an array-like and MochiKit.Iter not present");
}
}
if(fn===null){
return m.extend(null,lst);
}
var _91=[];
for(var i=0;i<lst.length;i++){
_91.push(fn(lst[i]));
}
return _91;
}else{
if(fn===null){
fn=Array;
}
var _93=null;
for(i=1;i<arguments.length;i++){
if(!_90(arguments[i])){
if(itr){
return itr.list(itr.imap.apply(null,arguments));
}else{
throw new TypeError("Argument not an array-like and MochiKit.Iter not present");
}
}
var l=arguments[i].length;
if(_93===null||_93>l){
_93=l;
}
}
_91=[];
for(i=0;i<_93;i++){
var _95=[];
for(var j=1;j<arguments.length;j++){
_95.push(arguments[j][i]);
}
_91.push(fn.apply(this,_95));
}
return _91;
}
},xfilter:function(fn){
var _98=[];
if(fn===null){
fn=MochiKit.Base.operator.truth;
}
for(var i=1;i<arguments.length;i++){
var o=arguments[i];
if(fn(o)){
_98.push(o);
}
}
return _98;
},filter:function(fn,lst,_9d){
var _9e=[];
var m=MochiKit.Base;
if(!m.isArrayLike(lst)){
if(MochiKit.Iter){
lst=MochiKit.Iter.list(lst);
}else{
throw new TypeError("Argument not an array-like and MochiKit.Iter not present");
}
}
if(fn===null){
fn=m.operator.truth;
}
if(typeof (Array.prototype.filter)=="function"){
return Array.prototype.filter.call(lst,fn,_9d);
}else{
if(typeof (_9d)=="undefined"||_9d===null){
for(var i=0;i<lst.length;i++){
var o=lst[i];
if(fn(o)){
_9e.push(o);
}
}
}else{
for(i=0;i<lst.length;i++){
o=lst[i];
if(fn.call(_9d,o)){
_9e.push(o);
}
}
}
}
return _9e;
},_wrapDumbFunction:function(_a2){
return function(){
switch(arguments.length){
case 0:
return _a2();
case 1:
return _a2(arguments[0]);
case 2:
return _a2(arguments[0],arguments[1]);
case 3:
return _a2(arguments[0],arguments[1],arguments[2]);
}
var _a3=[];
for(var i=0;i<arguments.length;i++){
_a3.push("arguments["+i+"]");
}
return eval("(func("+_a3.join(",")+"))");
};
},methodcaller:function(_a5){
var _a6=MochiKit.Base.extend(null,arguments,1);
if(typeof (_a5)=="function"){
return function(obj){
return _a5.apply(obj,_a6);
};
}else{
return function(obj){
return obj[_a5].apply(obj,_a6);
};
}
},method:function(_a9,_aa){
var m=MochiKit.Base;
return m.bind.apply(this,m.extend([_aa,_a9],arguments,2));
},compose:function(f1,f2){
var _ae=[];
var m=MochiKit.Base;
if(arguments.length===0){
throw new TypeError("compose() requires at least one argument");
}
for(var i=0;i<arguments.length;i++){
var fn=arguments[i];
if(typeof (fn)!="function"){
throw new TypeError(m.repr(fn)+" is not a function");
}
_ae.push(fn);
}
return function(){
var _b2=arguments;
for(var i=_ae.length-1;i>=0;i--){
_b2=[_ae[i].apply(this,_b2)];
}
return _b2[0];
};
},bind:function(_b4,_b5){
if(typeof (_b4)=="string"){
_b4=_b5[_b4];
}
var _b6=_b4.im_func;
var _b7=_b4.im_preargs;
var _b8=_b4.im_self;
var m=MochiKit.Base;
if(typeof (_b4)=="function"&&typeof (_b4.apply)=="undefined"){
_b4=m._wrapDumbFunction(_b4);
}
if(typeof (_b6)!="function"){
_b6=_b4;
}
if(typeof (_b5)!="undefined"){
_b8=_b5;
}
if(typeof (_b7)=="undefined"){
_b7=[];
}else{
_b7=_b7.slice();
}
m.extend(_b7,arguments,2);
var _ba=function(){
var _bb=arguments;
var me=arguments.callee;
if(me.im_preargs.length>0){
_bb=m.concat(me.im_preargs,_bb);
}
var _bd=me.im_self;
if(!_bd){
_bd=this;
}
return me.im_func.apply(_bd,_bb);
};
_ba.im_self=_b8;
_ba.im_func=_b6;
_ba.im_preargs=_b7;
return _ba;
},bindLate:function(_be,_bf){
var m=MochiKit.Base;
if(typeof (_be)!="string"){
return m.bind.apply(this,arguments);
}
var _c1=m.extend([],arguments,2);
var _c2=function(){
var _c3=arguments;
var me=arguments.callee;
if(me.im_preargs.length>0){
_c3=m.concat(me.im_preargs,_c3);
}
var _c5=me.im_self;
if(!_c5){
_c5=this;
}
return _c5[me.im_func].apply(_c5,_c3);
};
_c2.im_self=_bf;
_c2.im_func=_be;
_c2.im_preargs=_c1;
return _c2;
},bindMethods:function(_c6){
var _c7=MochiKit.Base.bind;
for(var k in _c6){
var _c9=_c6[k];
if(typeof (_c9)=="function"){
_c6[k]=_c7(_c9,_c6);
}
}
},registerComparator:function(_ca,_cb,_cc,_cd){
MochiKit.Base.comparatorRegistry.register(_ca,_cb,_cc,_cd);
},_primitives:{"boolean":true,"string":true,"number":true},compare:function(a,b){
if(a==b){
return 0;
}
var _d0=(typeof (a)=="undefined"||a===null);
var _d1=(typeof (b)=="undefined"||b===null);
if(_d0&&_d1){
return 0;
}else{
if(_d0){
return -1;
}else{
if(_d1){
return 1;
}
}
}
var m=MochiKit.Base;
var _d3=m._primitives;
if(!(typeof (a) in _d3&&typeof (b) in _d3)){
try{
return m.comparatorRegistry.match(a,b);
}
catch(e){
if(e!=m.NotFound){
throw e;
}
}
}
if(a<b){
return -1;
}else{
if(a>b){
return 1;
}
}
var _d4=m.repr;
throw new TypeError(_d4(a)+" and "+_d4(b)+" can not be compared");
},compareDateLike:function(a,b){
return MochiKit.Base.compare(a.getTime(),b.getTime());
},compareArrayLike:function(a,b){
var _d9=MochiKit.Base.compare;
var _da=a.length;
var _db=0;
if(_da>b.length){
_db=1;
_da=b.length;
}else{
if(_da<b.length){
_db=-1;
}
}
for(var i=0;i<_da;i++){
var cmp=_d9(a[i],b[i]);
if(cmp){
return cmp;
}
}
return _db;
},registerRepr:function(_de,_df,_e0,_e1){
MochiKit.Base.reprRegistry.register(_de,_df,_e0,_e1);
},repr:function(o){
if(typeof (o)=="undefined"){
return "undefined";
}else{
if(o===null){
return "null";
}
}
try{
if(typeof (o.__repr__)=="function"){
return o.__repr__();
}else{
if(typeof (o.repr)=="function"&&o.repr!=arguments.callee){
return o.repr();
}
}
return MochiKit.Base.reprRegistry.match(o);
}
catch(e){
if(typeof (o.NAME)=="string"&&(o.toString==Function.prototype.toString||o.toString==Object.prototype.toString)){
return o.NAME;
}
}
try{
var _e3=(o+"");
}
catch(e){
return "["+typeof (o)+"]";
}
if(typeof (o)=="function"){
_e3=_e3.replace(/^\s+/,"").replace(/\s+/g," ");
_e3=_e3.replace(/,(\S)/,", $1");
var idx=_e3.indexOf("{");
if(idx!=-1){
_e3=_e3.substr(0,idx)+"{...}";
}
}
return _e3;
},reprArrayLike:function(o){
var m=MochiKit.Base;
return "["+m.map(m.repr,o).join(", ")+"]";
},reprString:function(o){
return ("\""+o.replace(/(["\\])/g,"\\$1")+"\"").replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\v]/g,"\\v").replace(/[\r]/g,"\\r");
},reprNumber:function(o){
return o+"";
},registerJSON:function(_e9,_ea,_eb,_ec){
MochiKit.Base.jsonRegistry.register(_e9,_ea,_eb,_ec);
},evalJSON:function(){
return eval("("+MochiKit.Base._filterJSON(arguments[0])+")");
},_filterJSON:function(s){
var m=s.match(/^\s*\/\*(.*)\*\/\s*$/);
if(m){
return m[1];
}
return s;
},serializeJSON:function(o){
var _f0=typeof (o);
if(_f0=="number"||_f0=="boolean"){
return o+"";
}else{
if(o===null){
return "null";
}else{
if(_f0=="string"){
var res="";
for(var i=0;i<o.length;i++){
var c=o.charAt(i);
if(c=="\""){
res+="\\\"";
}else{
if(c=="\\"){
res+="\\\\";
}else{
if(c=="\b"){
res+="\\b";
}else{
if(c=="\f"){
res+="\\f";
}else{
if(c=="\n"){
res+="\\n";
}else{
if(c=="\r"){
res+="\\r";
}else{
if(c=="\t"){
res+="\\t";
}else{
if(o.charCodeAt(i)<=31){
var hex=o.charCodeAt(i).toString(16);
if(hex.length<2){
hex="0"+hex;
}
res+="\\u00"+hex.toUpperCase();
}else{
res+=c;
}
}
}
}
}
}
}
}
}
return "\""+res+"\"";
}
}
}
var me=arguments.callee;
var _f6;
if(typeof (o.__json__)=="function"){
_f6=o.__json__();
if(o!==_f6){
return me(_f6);
}
}
if(typeof (o.json)=="function"){
_f6=o.json();
if(o!==_f6){
return me(_f6);
}
}
if(_f0!="function"&&typeof (o.length)=="number"){
var res=[];
for(var i=0;i<o.length;i++){
var val=me(o[i]);
if(typeof (val)!="string"){
continue;
}
res.push(val);
}
return "["+res.join(", ")+"]";
}
var m=MochiKit.Base;
try{
_f6=m.jsonRegistry.match(o);
if(o!==_f6){
return me(_f6);
}
}
catch(e){
if(e!=m.NotFound){
throw e;
}
}
if(_f0=="undefined"){
throw new TypeError("undefined can not be serialized as JSON");
}
if(_f0=="function"){
return null;
}
res=[];
for(var k in o){
var _fa;
if(typeof (k)=="number"){
_fa="\""+k+"\"";
}else{
if(typeof (k)=="string"){
_fa=me(k);
}else{
continue;
}
}
val=me(o[k]);
if(typeof (val)!="string"){
continue;
}
res.push(_fa+":"+val);
}
return "{"+res.join(", ")+"}";
},objEqual:function(a,b){
return (MochiKit.Base.compare(a,b)===0);
},arrayEqual:function(_fd,arr){
if(_fd.length!=arr.length){
return false;
}
return (MochiKit.Base.compare(_fd,arr)===0);
},concat:function(){
var _ff=[];
var _100=MochiKit.Base.extend;
for(var i=0;i<arguments.length;i++){
_100(_ff,arguments[i]);
}
return _ff;
},keyComparator:function(key){
var m=MochiKit.Base;
var _104=m.compare;
if(arguments.length==1){
return function(a,b){
return _104(a[key],b[key]);
};
}
var _107=m.extend(null,arguments);
return function(a,b){
var rval=0;
for(var i=0;(rval===0)&&(i<_107.length);i++){
var key=_107[i];
rval=_104(a[key],b[key]);
}
return rval;
};
},reverseKeyComparator:function(key){
var _10e=MochiKit.Base.keyComparator.apply(this,arguments);
return function(a,b){
return _10e(b,a);
};
},partial:function(func){
var m=MochiKit.Base;
return m.bind.apply(this,m.extend([func,undefined],arguments,1));
},listMinMax:function(_113,lst){
if(lst.length===0){
return null;
}
var cur=lst[0];
var _116=MochiKit.Base.compare;
for(var i=1;i<lst.length;i++){
var o=lst[i];
if(_116(o,cur)==_113){
cur=o;
}
}
return cur;
},objMax:function(){
return MochiKit.Base.listMinMax(1,arguments);
},objMin:function(){
return MochiKit.Base.listMinMax(-1,arguments);
},findIdentical:function(lst,_11a,_11b,end){
if(typeof (end)=="undefined"||end===null){
end=lst.length;
}
if(typeof (_11b)=="undefined"||_11b===null){
_11b=0;
}
for(var i=_11b;i<end;i++){
if(lst[i]===_11a){
return i;
}
}
return -1;
},mean:function(){
var sum=0;
var m=MochiKit.Base;
var args=m.extend(null,arguments);
var _121=args.length;
while(args.length){
var o=args.shift();
if(o&&typeof (o)=="object"&&typeof (o.length)=="number"){
_121+=o.length-1;
for(var i=o.length-1;i>=0;i--){
sum+=o[i];
}
}else{
sum+=o;
}
}
if(_121<=0){
throw new TypeError("mean() requires at least one argument");
}
return sum/_121;
},median:function(){
var data=MochiKit.Base.flattenArguments(arguments);
if(data.length===0){
throw new TypeError("median() requires at least one argument");
}
data.sort(compare);
if(data.length%2==0){
var _125=data.length/2;
return (data[_125]+data[_125-1])/2;
}else{
return data[(data.length-1)/2];
}
},findValue:function(lst,_127,_128,end){
if(typeof (end)=="undefined"||end===null){
end=lst.length;
}
if(typeof (_128)=="undefined"||_128===null){
_128=0;
}
var cmp=MochiKit.Base.compare;
for(var i=_128;i<end;i++){
if(cmp(lst[i],_127)===0){
return i;
}
}
return -1;
},nodeWalk:function(node,_12d){
var _12e=[node];
var _12f=MochiKit.Base.extend;
while(_12e.length){
var res=_12d(_12e.shift());
if(res){
_12f(_12e,res);
}
}
},nameFunctions:function(_131){
var base=_131.NAME;
if(typeof (base)=="undefined"){
base="";
}else{
base=base+".";
}
for(var name in _131){
var o=_131[name];
if(typeof (o)=="function"&&typeof (o.NAME)=="undefined"){
try{
o.NAME=base+name;
}
catch(e){
}
}
}
},queryString:function(_135,_136){
if(typeof (MochiKit.DOM)!="undefined"&&arguments.length==1&&(typeof (_135)=="string"||(typeof (_135.nodeType)!="undefined"&&_135.nodeType>0))){
var kv=MochiKit.DOM.formContents(_135);
_135=kv[0];
_136=kv[1];
}else{
if(arguments.length==1){
if(typeof (_135.length)=="number"&&_135.length==2){
return arguments.callee(_135[0],_135[1]);
}
var o=_135;
_135=[];
_136=[];
for(var k in o){
var v=o[k];
if(typeof (v)=="function"){
continue;
}else{
if(MochiKit.Base.isArrayLike(v)){
for(var i=0;i<v.length;i++){
_135.push(k);
_136.push(v[i]);
}
}else{
_135.push(k);
_136.push(v);
}
}
}
}
}
var rval=[];
var len=Math.min(_135.length,_136.length);
var _13e=MochiKit.Base.urlEncode;
for(var i=0;i<len;i++){
v=_136[i];
if(typeof (v)!="undefined"&&v!==null){
rval.push(_13e(_135[i])+"="+_13e(v));
}
}
return rval.join("&");
},parseQueryString:function(_13f,_140){
var qstr=(_13f.charAt(0)=="?")?_13f.substring(1):_13f;
var _142=qstr.replace(/\+/g,"%20").split(/\&amp\;|\&\#38\;|\&#x26;|\&/);
var o={};
var _144;
if(typeof (decodeURIComponent)!="undefined"){
_144=decodeURIComponent;
}else{
_144=unescape;
}
if(_140){
for(var i=0;i<_142.length;i++){
var pair=_142[i].split("=");
var name=_144(pair.shift());
if(!name){
continue;
}
var arr=o[name];
if(!(arr instanceof Array)){
arr=[];
o[name]=arr;
}
arr.push(_144(pair.join("=")));
}
}else{
for(i=0;i<_142.length;i++){
pair=_142[i].split("=");
var name=pair.shift();
if(!name){
continue;
}
o[_144(name)]=_144(pair.join("="));
}
}
return o;
}});
MochiKit.Base.AdapterRegistry=function(){
this.pairs=[];
};
MochiKit.Base.AdapterRegistry.prototype={register:function(name,_14a,wrap,_14c){
if(_14c){
this.pairs.unshift([name,_14a,wrap]);
}else{
this.pairs.push([name,_14a,wrap]);
}
},match:function(){
for(var i=0;i<this.pairs.length;i++){
var pair=this.pairs[i];
if(pair[1].apply(this,arguments)){
return pair[2].apply(this,arguments);
}
}
throw MochiKit.Base.NotFound;

},unregister:function(name){
for(var i=0;i<this.pairs.length;i++){
var pair=this.pairs[i];
if(pair[0]==name){
this.pairs.splice(i,1);
return true;
}
}
return false;
}};
MochiKit.Base.EXPORT=["flattenArray","noop","camelize","counter","clone","extend","update","updatetree","setdefault","keys","values","items","NamedError","operator","forwardCall","itemgetter","typeMatcher","isCallable","isUndefined","isUndefinedOrNull","isNull","isEmpty","isNotEmpty","isArrayLike","isDateLike","xmap","map","xfilter","filter","methodcaller","compose","bind","bindLate","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"];
MochiKit.Base.EXPORT_OK=["nameFunctions","comparatorRegistry","reprRegistry","jsonRegistry","compareDateLike","compareArrayLike","reprArrayLike","reprString","reprNumber"];
MochiKit.Base._exportSymbols=function(_152,_153){
if(!MochiKit.__export__){
return;
}
var all=_153.EXPORT_TAGS[":all"];
for(var i=0;i<all.length;i++){
_152[all[i]]=_153[all[i]];
}
};
MochiKit.Base.__new__=function(){
var m=this;
m.noop=m.operator.identity;
m.forward=m.forwardCall;
m.find=m.findValue;
if(typeof (encodeURIComponent)!="undefined"){
m.urlEncode=function(_157){
return encodeURIComponent(_157).replace(/\'/g,"%27");
};
}else{
m.urlEncode=function(_158){
return escape(_158).replace(/\+/g,"%2B").replace(/\"/g,"%22").rval.replace(/\'/g,"%27");
};
}
m.NamedError=function(name){
this.message=name;
this.name=name;
};
m.NamedError.prototype=new Error();
m.update(m.NamedError.prototype,{repr:function(){
if(this.message&&this.message!=this.name){
return this.name+"("+m.repr(this.message)+")";
}else{
return this.name+"()";
}
},toString:m.forwardCall("repr")});
m.NotFound=new m.NamedError("MochiKit.Base.NotFound");
m.listMax=m.partial(m.listMinMax,1);
m.listMin=m.partial(m.listMinMax,-1);
m.isCallable=m.typeMatcher("function");
m.isUndefined=m.typeMatcher("undefined");
m.merge=m.partial(m.update,null);
m.zip=m.partial(m.map,null);
m.average=m.mean;
m.comparatorRegistry=new m.AdapterRegistry();
m.registerComparator("dateLike",m.isDateLike,m.compareDateLike);
m.registerComparator("arrayLike",m.isArrayLike,m.compareArrayLike);
m.reprRegistry=new m.AdapterRegistry();
m.registerRepr("arrayLike",m.isArrayLike,m.reprArrayLike);
m.registerRepr("string",m.typeMatcher("string"),m.reprString);
m.registerRepr("numbers",m.typeMatcher("number","boolean"),m.reprNumber);
m.jsonRegistry=new m.AdapterRegistry();
var all=m.concat(m.EXPORT,m.EXPORT_OK);
m.EXPORT_TAGS={":common":m.concat(m.EXPORT_OK),":all":all};
m.nameFunctions(this);
};
MochiKit.Base.__new__();
if(MochiKit.__export__){
compare=MochiKit.Base.compare;
compose=MochiKit.Base.compose;
serializeJSON=MochiKit.Base.serializeJSON;
mean=MochiKit.Base.mean;
median=MochiKit.Base.median;
}
MochiKit.Base._exportSymbols(this,MochiKit.Base);
MochiKit.Base._deps("Iter",["Base"]);
MochiKit.Iter.NAME="MochiKit.Iter";
MochiKit.Iter.VERSION="1.4.2";
MochiKit.Base.update(MochiKit.Iter,{__repr__:function(){
return "["+this.NAME+" "+this.VERSION+"]";
},toString:function(){
return this.__repr__();
},registerIteratorFactory:function(name,_15c,_15d,_15e){
MochiKit.Iter.iteratorRegistry.register(name,_15c,_15d,_15e);
},isIterable:function(o){
return o!=null&&(typeof (o.next)=="function"||typeof (o.iter)=="function");
},iter:function(_160,_161){
var self=MochiKit.Iter;
if(arguments.length==2){
return self.takewhile(function(a){
return a!=_161;
},_160);
}
if(typeof (_160.next)=="function"){
return _160;
}else{
if(typeof (_160.iter)=="function"){
return _160.iter();
}
}
try{
return self.iteratorRegistry.match(_160);
}
catch(e){
var m=MochiKit.Base;
if(e==m.NotFound){

e=new TypeError(typeof (_160)+": "+m.repr(_160)+" is not iterable");
}
throw e;
}
},count:function(n){
if(!n){
n=0;
}
var m=MochiKit.Base;
return {repr:function(){
return "count("+n+")";
},toString:m.forwardCall("repr"),next:m.counter(n)};
},cycle:function(p){
var self=MochiKit.Iter;
var m=MochiKit.Base;
var lst=[];
var _16b=self.iter(p);
return {repr:function(){
return "cycle(...)";
},toString:m.forwardCall("repr"),next:function(){
try{
var rval=_16b.next();
lst.push(rval);
return rval;
}
catch(e){
if(e!=self.StopIteration){
throw e;
}
if(lst.length===0){
this.next=function(){
throw self.StopIteration;
};
}else{
var i=-1;
this.next=function(){
i=(i+1)%lst.length;
return lst[i];
};
}
return this.next();
}
}};
},repeat:function(elem,n){
var m=MochiKit.Base;
if(typeof (n)=="undefined"){
return {repr:function(){
return "repeat("+m.repr(elem)+")";
},toString:m.forwardCall("repr"),next:function(){
return elem;
}};
}
return {repr:function(){
return "repeat("+m.repr(elem)+", "+n+")";
},toString:m.forwardCall("repr"),next:function(){
if(n<=0){
throw MochiKit.Iter.StopIteration;
}
n-=1;
return elem;
}};
},next:function(_171){
return _171.next();
},izip:function(p,q){
var m=MochiKit.Base;
var self=MochiKit.Iter;
var next=self.next;
var _177=m.map(self.iter,arguments);
return {repr:function(){
return "izip(...)";
},toString:m.forwardCall("repr"),next:function(){
return m.map(next,_177);
}};
},ifilter:function(pred,seq){
var m=MochiKit.Base;
seq=MochiKit.Iter.iter(seq);
if(pred===null){
pred=m.operator.truth;
}
return {repr:function(){
return "ifilter(...)";
},toString:m.forwardCall("repr"),next:function(){
while(true){
var rval=seq.next();
if(pred(rval)){
return rval;
}
}
return undefined;
}};
},ifilterfalse:function(pred,seq){
var m=MochiKit.Base;
seq=MochiKit.Iter.iter(seq);
if(pred===null){
pred=m.operator.truth;
}
return {repr:function(){
return "ifilterfalse(...)";
},toString:m.forwardCall("repr"),next:function(){
while(true){
var rval=seq.next();
if(!pred(rval)){
return rval;
}
}
return undefined;
}};
},islice:function(seq){
var self=MochiKit.Iter;
var m=MochiKit.Base;
seq=self.iter(seq);
var _183=0;
var stop=0;
var step=1;
var i=-1;
if(arguments.length==2){
stop=arguments[1];
}else{
if(arguments.length==3){
_183=arguments[1];
stop=arguments[2];
}else{
_183=arguments[1];
stop=arguments[2];
step=arguments[3];
}
}
return {repr:function(){
return "islice("+["...",_183,stop,step].join(", ")+")";
},toString:m.forwardCall("repr"),next:function(){
var rval;
while(i<_183){
rval=seq.next();
i++;
}
if(_183>=stop){
throw self.StopIteration;
}
_183+=step;
return rval;
}};
},imap:function(fun,p,q){
var m=MochiKit.Base;
var self=MochiKit.Iter;
var _18d=m.map(self.iter,m.extend(null,arguments,1));
var map=m.map;
var next=self.next;
return {repr:function(){
return "imap(...)";
},toString:m.forwardCall("repr"),next:function(){
return fun.apply(this,map(next,_18d));
}};
},applymap:function(fun,seq,self){
seq=MochiKit.Iter.iter(seq);
var m=MochiKit.Base;
return {repr:function(){
return "applymap(...)";
},toString:m.forwardCall("repr"),next:function(){
return fun.apply(self,seq.next());
}};
},chain:function(p,q){
var self=MochiKit.Iter;
var m=MochiKit.Base;
if(arguments.length==1){
return self.iter(arguments[0]);
}
var _198=m.map(self.iter,arguments);
return {repr:function(){
return "chain(...)";
},toString:m.forwardCall("repr"),next:function(){
while(_198.length>1){
try{
var _199=_198[0].next();
return _199;
}
catch(e){
if(e!=self.StopIteration){
throw e;
}
_198.shift();
var _199=_198[0].next();
return _199;
}
}
if(_198.length==1){
var arg=_198.shift();
this.next=m.bind("next",arg);
return this.next();
}
throw self.StopIteration;
}};
},takewhile:function(pred,seq){
var self=MochiKit.Iter;
seq=self.iter(seq);
return {repr:function(){
return "takewhile(...)";
},toString:MochiKit.Base.forwardCall("repr"),next:function(){
var rval=seq.next();
if(!pred(rval)){
this.next=function(){
throw self.StopIteration;
};
this.next();
}
return rval;
}};
},dropwhile:function(pred,seq){
seq=MochiKit.Iter.iter(seq);
var m=MochiKit.Base;
var bind=m.bind;
return {"repr":function(){
return "dropwhile(...)";
},"toString":m.forwardCall("repr"),"next":function(){
while(true){
var rval=seq.next();
if(!pred(rval)){
break;
}
}
this.next=bind("next",seq);
return rval;
}};
},_tee:function(_1a4,sync,_1a6){
sync.pos[_1a4]=-1;
var m=MochiKit.Base;
var _1a8=m.listMin;
return {repr:function(){
return "tee("+_1a4+", ...)";
},toString:m.forwardCall("repr"),next:function(){
var rval;
var i=sync.pos[_1a4];
if(i==sync.max){
rval=_1a6.next();
sync.deque.push(rval);
sync.max+=1;
sync.pos[_1a4]+=1;
}else{
rval=sync.deque[i-sync.min];
sync.pos[_1a4]+=1;
if(i==sync.min&&_1a8(sync.pos)!=sync.min){
sync.min+=1;
sync.deque.shift();
}
}
return rval;
}};
},tee:function(_1ab,n){
var rval=[];
var sync={"pos":[],"deque":[],"max":-1,"min":-1};
if(arguments.length==1||typeof (n)=="undefined"||n===null){
n=2;
}
var self=MochiKit.Iter;
_1ab=self.iter(_1ab);
var _tee=self._tee;
for(var i=0;i<n;i++){
rval.push(_tee(i,sync,_1ab));
}
return rval;
},list:function(_1b2){
var rval;
if(_1b2 instanceof Array){
return _1b2.slice();
}
if(typeof (_1b2)=="function"&&!(_1b2 instanceof Function)&&typeof (_1b2.length)=="number"){
rval=[];
for(var i=0;i<_1b2.length;i++){
rval.push(_1b2[i]);
}
return rval;
}
var self=MochiKit.Iter;
_1b2=self.iter(_1b2);
var rval=[];
var _1b6;
try{
while(true){
_1b6=_1b2.next();
rval.push(_1b6);
}
}
catch(e){
if(e!=self.StopIteration){
throw e;
}
return rval;
}
return undefined;
},reduce:function(fn,_1b8,_1b9){
var i=0;
var x=_1b9;
var self=MochiKit.Iter;
_1b8=self.iter(_1b8);
if(arguments.length<3){
try{
x=_1b8.next();
}
catch(e){
if(e==self.StopIteration){
e=new TypeError("reduce() of empty sequence with no initial value");
}
throw e;
}
i++;
}
try{
while(true){
x=fn(x,_1b8.next());
}
}
catch(e){
if(e!=self.StopIteration){
throw e;
}
}
return x;
},range:function(){
var _1bd=0;
var stop=0;
var step=1;
if(arguments.length==1){
stop=arguments[0];
}else{
if(arguments.length==2){
_1bd=arguments[0];
stop=arguments[1];
}else{
if(arguments.length==3){
_1bd=arguments[0];
stop=arguments[1];
step=arguments[2];
}else{
throw new TypeError("range() takes 1, 2, or 3 arguments!");
}
}
}
if(step===0){
throw new TypeError("range() step must not be 0");
}
return {next:function(){
if((step>0&&_1bd>=stop)||(step<0&&_1bd<=stop)){
throw MochiKit.Iter.StopIteration;
}
var rval=_1bd;
_1bd+=step;
return rval;
},repr:function(){
return "range("+[_1bd,stop,step].join(", ")+")";
},toString:MochiKit.Base.forwardCall("repr")};
},sum:function(_1c1,_1c2){
if(typeof (_1c2)=="undefined"||_1c2===null){
_1c2=0;
}
var x=_1c2;
var self=MochiKit.Iter;
_1c1=self.iter(_1c1);
try{
while(true){
x+=_1c1.next();
}
}
catch(e){
if(e!=self.StopIteration){
throw e;
}
}
return x;
},exhaust:function(_1c5){
var self=MochiKit.Iter;
_1c5=self.iter(_1c5);
try{
while(true){
_1c5.next();
}
}
catch(e){
if(e!=self.StopIteration){
throw e;
}
}
},forEach:function(_1c7,func,obj){
var m=MochiKit.Base;
var self=MochiKit.Iter;
if(arguments.length>2){
func=m.bind(func,obj);
}
if(m.isArrayLike(_1c7)&&!self.isIterable(_1c7)){
try{
for(var i=0;i<_1c7.length;i++){
func(_1c7[i]);
}
}
catch(e){
if(e!=self.StopIteration){
throw e;
}
}
}else{
self.exhaust(self.imap(func,_1c7));
}
},every:function(_1cd,func){
var self=MochiKit.Iter;
try{
self.ifilterfalse(func,_1cd).next();
return false;
}
catch(e){
if(e!=self.StopIteration){
throw e;
}
return true;
}
},sorted:function(_1d0,cmp){
var rval=MochiKit.Iter.list(_1d0);
if(arguments.length==1){
cmp=MochiKit.Base.compare;
}
rval.sort(cmp);
return rval;
},reversed:function(_1d3){
var rval=MochiKit.Iter.list(_1d3);
rval.reverse();
return rval;
},some:function(_1d5,func){
var self=MochiKit.Iter;
try{
self.ifilter(func,_1d5).next();
return true;
}
catch(e){
if(e!=self.StopIteration){
throw e;
}
return false;
}
},iextend:function(lst,_1d9){
var m=MochiKit.Base;
var self=MochiKit.Iter;
if(m.isArrayLike(_1d9)&&!self.isIterable(_1d9)){
for(var i=0;i<_1d9.length;i++){
lst.push(_1d9[i]);
}
}else{
_1d9=self.iter(_1d9);
try{
while(true){
lst.push(_1d9.next());
}
}
catch(e){
if(e!=self.StopIteration){
throw e;
}
}
}
return lst;
},groupby:function(_1dd,_1de){
var m=MochiKit.Base;
var self=MochiKit.Iter;
if(arguments.length<2){
_1de=m.operator.identity;
}
_1dd=self.iter(_1dd);
var pk=undefined;
var k=undefined;
var v;
function fetch(){
v=_1dd.next();
k=_1de(v);
}
function eat(){
var ret=v;
v=undefined;
return ret;
}
var _1e5=true;
var _1e6=m.compare;
return {repr:function(){
return "groupby(...)";
},next:function(){
while(_1e6(k,pk)===0){
fetch();
if(_1e5){
_1e5=false;
break;
}
}
pk=k;
return [k,{next:function(){
if(v==undefined){
fetch();
}
if(_1e6(k,pk)!==0){
throw self.StopIteration;
}
return eat();
}}];
}};
},groupby_as_array:function(_1e7,_1e8){
var m=MochiKit.Base;
var self=MochiKit.Iter;
if(arguments.length<2){
_1e8=m.operator.identity;
}
_1e7=self.iter(_1e7);
var _1eb=[];
var _1ec=true;
var _1ed;
var _1ee=m.compare;
while(true){
try{
var _1ef=_1e7.next();
var key=_1e8(_1ef);
}
catch(e){
if(e==self.StopIteration){
break;
}
throw e;
}
if(_1ec||_1ee(key,_1ed)!==0){
var _1f1=[];
_1eb.push([key,_1f1]);
}
_1f1.push(_1ef);
_1ec=false;
_1ed=key;
}
return _1eb;
},arrayLikeIter:function(_1f2){
var i=0;
return {repr:function(){
return "arrayLikeIter(...)";
},toString:MochiKit.Base.forwardCall("repr"),next:function(){
if(i>=_1f2.length){
throw MochiKit.Iter.StopIteration;
}
return _1f2[i++];
}};
},hasIterateNext:function(_1f4){
return (_1f4&&typeof (_1f4.iterateNext)=="function");
},iterateNextIter:function(_1f5){
return {repr:function(){
return "iterateNextIter(...)";
},toString:MochiKit.Base.forwardCall("repr"),next:function(){
var rval=_1f5.iterateNext();
if(rval===null||rval===undefined){
throw MochiKit.Iter.StopIteration;
}
return rval;
}};
}});
MochiKit.Iter.EXPORT_OK=["iteratorRegistry","arrayLikeIter","hasIterateNext","iterateNextIter"];
MochiKit.Iter.EXPORT=["StopIteration","registerIteratorFactory","iter","count","cycle","repeat","next","izip","ifilter","ifilterfalse","islice","imap","applymap","chain","takewhile","dropwhile","tee","list","reduce","range","sum","exhaust","forEach","every","sorted","reversed","some","iextend","groupby","groupby_as_array"];
MochiKit.Iter.__new__=function(){
var m=MochiKit.Base;
if(typeof (StopIteration)!="undefined"){
this.StopIteration=StopIteration;
}else{
this.StopIteration=new m.NamedError("StopIteration");
}
this.iteratorRegistry=new m.AdapterRegistry();
this.registerIteratorFactory("arrayLike",m.isArrayLike,this.arrayLikeIter);
this.registerIteratorFactory("iterateNext",this.hasIterateNext,this.iterateNextIter);
this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
m.nameFunctions(this);
};
MochiKit.Iter.__new__();
if(MochiKit.__export__){
reduce=MochiKit.Iter.reduce;
}
MochiKit.Base._exportSymbols(this,MochiKit.Iter);
MochiKit.Base._deps("Format",["Base"]);
MochiKit.Format.NAME="MochiKit.Format";
MochiKit.Format.VERSION="1.4.2";
MochiKit.Format.__repr__=function(){
return "["+this.NAME+" "+this.VERSION+"]";
};
MochiKit.Format.toString=function(){
return this.__repr__();
};
MochiKit.Format._numberFormatter=function(_249,_24a,_24b,_24c,_24d,_24e,_24f,_250,_251){
return function(num){
num=parseFloat(num);
if(typeof (num)=="undefined"||num===null||isNaN(num)){
return _249;
}
var _253=_24a;
var _254=_24b;
if(num<0){
num=-num;
}else{
_253=_253.replace(/-/,"");
}
var me=arguments.callee;
var fmt=MochiKit.Format.formatLocale(_24c);
if(_24d){
num=num*100;
_254=fmt.percent+_254;
}
num=MochiKit.Format.roundToFixed(num,_24e);
var _257=num.split(/\./);
var _258=_257[0];
var frac=(_257.length==1)?"":_257[1];
var res="";
while(_258.length<_24f){
_258="0"+_258;
}
if(_250){
while(_258.length>_250){
var i=_258.length-_250;
res=fmt.separator+_258.substring(i,_258.length)+res;
_258=_258.substring(0,i);
}
}
res=_258+res;
if(_24e>0){
while(frac.length<_251){
frac=frac+"0";
}
res=res+fmt.decimal+frac;
}
return _253+res+_254;
};
};
MochiKit.Format.numberFormatter=function(_25c,_25d,_25e){
if(typeof (_25d)=="undefined"){
_25d="";
}
var _25f=_25c.match(/((?:[0#]+,)?[0#]+)(?:\.([0#]+))?(%)?/);
if(!_25f){
throw TypeError("Invalid pattern");
}
var _260=_25c.substr(0,_25f.index);
var _261=_25c.substr(_25f.index+_25f[0].length);
if(_260.search(/-/)==-1){
_260=_260+"-";
}
var _262=_25f[1];
var frac=(typeof (_25f[2])=="string"&&_25f[2]!="")?_25f[2]:"";
var _264=(typeof (_25f[3])=="string"&&_25f[3]!="");
var tmp=_262.split(/,/);
var _266;
if(typeof (_25e)=="undefined"){
_25e="default";
}
if(tmp.length==1){
_266=null;
}else{
_266=tmp[1].length;
}
var _267=_262.length-_262.replace(/0/g,"").length;
var _268=frac.length-frac.replace(/0/g,"").length;
var _269=frac.length;
var rval=MochiKit.Format._numberFormatter(_25d,_260,_261,_25e,_264,_269,_267,_266,_268);
var m=MochiKit.Base;
if(m){
var fn=arguments.callee;
var args=m.concat(arguments);
rval.repr=function(){
return [self.NAME,"(",map(m.repr,args).join(", "),")"].join("");
};
}
return rval;
};
MochiKit.Format.formatLocale=function(_26e){
if(typeof (_26e)=="undefined"||_26e===null){
_26e="default";
}
if(typeof (_26e)=="string"){
var rval=MochiKit.Format.LOCALE[_26e];
if(typeof (rval)=="string"){
rval=arguments.callee(rval);
MochiKit.Format.LOCALE[_26e]=rval;
}
return rval;
}else{
return _26e;
}
};
MochiKit.Format.twoDigitAverage=function(_270,_271){
if(_271){
var res=_270/_271;
if(!isNaN(res)){
return MochiKit.Format.twoDigitFloat(res);
}
}
return "0";
};
MochiKit.Format.twoDigitFloat=function(_273){
var res=roundToFixed(_273,2);
if(res.indexOf(".00")>0){
return res.substring(0,res.length-3);
}else{
if(res.charAt(res.length-1)=="0"){
return res.substring(0,res.length-1);
}else{
return res;
}
}
};
MochiKit.Format.lstrip=function(str,_276){
str=str+"";
if(typeof (str)!="string"){
return null;
}
if(!_276){
return str.replace(/^\s+/,"");
}else{
return str.replace(new RegExp("^["+_276+"]+"),"");
}
};
MochiKit.Format.rstrip=function(str,_278){
str=str+"";
if(typeof (str)!="string"){
return null;
}
if(!_278){
return str.replace(/\s+$/,"");
}else{
return str.replace(new RegExp("["+_278+"]+$"),"");
}
};
MochiKit.Format.strip=function(str,_27a){
var self=MochiKit.Format;
return self.rstrip(self.lstrip(str,_27a),_27a);
};
MochiKit.Format.truncToFixed=function(_27c,_27d){
var res=Math.floor(_27c).toFixed(0);
if(_27c<0){
res=Math.ceil(_27c).toFixed(0);
if(res.charAt(0)!="-"&&_27d>0){
res="-"+res;
}
}
if(res.indexOf("e")<0&&_27d>0){
var tail=_27c.toString();
if(tail.indexOf("e")>0){
tail=".";
}else{
if(tail.indexOf(".")<0){
tail=".";
}else{
tail=tail.substring(tail.indexOf("."));
}
}
if(tail.length-1>_27d){
tail=tail.substring(0,_27d+1);
}
while(tail.length-1<_27d){
tail+="0";
}
res+=tail;
}
return res;
};
MochiKit.Format.roundToFixed=function(_280,_281){
var _282=Math.abs(_280)+0.5*Math.pow(10,-_281);
var res=MochiKit.Format.truncToFixed(_282,_281);
if(_280<0){
res="-"+res;
}
return res;
};
MochiKit.Format.percentFormat=function(_284){
return MochiKit.Format.twoDigitFloat(100*_284)+"%";
};
MochiKit.Format.EXPORT=["truncToFixed","roundToFixed","numberFormatter","formatLocale","twoDigitAverage","twoDigitFloat","percentFormat","lstrip","rstrip","strip"];
MochiKit.Format.LOCALE={en_US:{separator:",",decimal:".",percent:"%"},de_DE:{separator:".",decimal:",",percent:"%"},pt_BR:{separator:".",decimal:",",percent:"%"},fr_FR:{separator:" ",decimal:",",percent:"%"},"default":"en_US"};
MochiKit.Format.EXPORT_OK=[];
MochiKit.Format.EXPORT_TAGS={":all":MochiKit.Format.EXPORT,":common":MochiKit.Format.EXPORT};
MochiKit.Format.__new__=function(){
var base=this.NAME+".";
var k,v,o;
for(k in this.LOCALE){
o=this.LOCALE[k];
if(typeof (o)=="object"){
o.repr=function(){
return this.NAME;
};
o.NAME=base+"LOCALE."+k;
}
}
for(k in this){
o=this[k];
if(typeof (o)=="function"&&typeof (o.NAME)=="undefined"){
try{
o.NAME=base+k;
}
catch(e){
}
}
}
};
MochiKit.Format.__new__();
if(typeof (MochiKit.Base)!="undefined"){
MochiKit.Base._exportSymbols(this,MochiKit.Format);
}else{
(function(_289,_28a){
if((typeof (JSAN)=="undefined"&&typeof (dojo)=="undefined")||(MochiKit.__export__===false)){
var all=_28a.EXPORT_TAGS[":all"];
for(var i=0;i<all.length;i++){
_289[all[i]]=_28a[all[i]];
}
}
})(this,MochiKit.Format);
}
MochiKit.Base._deps("DOM",["Base"]);
MochiKit.DOM.NAME="MochiKit.DOM";
MochiKit.DOM.VERSION="1.4.2";
MochiKit.DOM.__repr__=function(){
return "["+this.NAME+" "+this.VERSION+"]";
};
MochiKit.DOM.toString=function(){
return this.__repr__();
};
MochiKit.DOM.EXPORT=["removeEmptyTextNodes","formContents","currentWindow","currentDocument","withWindow","withDocument","registerDOMConverter","coerceToDOM","createDOM","createDOMFunc","isChildNode","getNodeAttribute","removeNodeAttribute","setNodeAttribute","updateNodeAttributes","appendChildNodes","insertSiblingNodesAfter","insertSiblingNodesBefore","replaceChildNodes","removeElement","swapDOM","BUTTON","TT","PRE","H1","H2","H3","H4","H5","H6","BR","CANVAS","HR","LABEL","TEXTAREA","FORM","STRONG","SELECT","OPTION","OPTGROUP","LEGEND","FIELDSET","P","UL","OL","LI","DL","DT","DD","TD","TR","THEAD","TBODY","TFOOT","TABLE","TH","INPUT","SPAN","A","DIV","IMG","getElement","$","getElementsByTagAndClassName","addToCallStack","addLoadEvent","focusOnLoad","setElementClass","toggleElementClass","addElementClass","removeElementClass","swapElementClass","hasElementClass","computedStyle","escapeHTML","toHTML","emitHTML","scrapeText","getFirstParentByTagAndClassName","getFirstElementByTagAndClassName"];
MochiKit.DOM.EXPORT_OK=["domConverters"];
MochiKit.DOM.DEPRECATED=[["computedStyle","MochiKit.Style.getStyle","1.4"],["elementDimensions","MochiKit.Style.getElementDimensions","1.4"],["elementPosition","MochiKit.Style.getElementPosition","1.4"],["getViewportDimensions","MochiKit.Style.getViewportDimensions","1.4"],["hideElement","MochiKit.Style.hideElement","1.4"],["makeClipping","MochiKit.Style.makeClipping","1.4.1"],["makePositioned","MochiKit.Style.makePositioned","1.4.1"],["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"],["undoClipping","MochiKit.Style.undoClipping","1.4.1"],["undoPositioned","MochiKit.Style.undoPositioned","1.4.1"],["Coordinates","MochiKit.Style.Coordinates","1.4"],["Dimensions","MochiKit.Style.Dimensions","1.4"]];
MochiKit.Base.update(MochiKit.DOM,{currentWindow:function(){
return MochiKit.DOM._window;
},currentDocument:function(){
return MochiKit.DOM._document;
},withWindow:function(win,func){
var self=MochiKit.DOM;
var _2f6=self._document;
var _2f7=self._window;
var rval;
try{
self._window=win;
self._document=win.document;
rval=func();
}
catch(e){
self._window=_2f7;
self._document=_2f6;
throw e;
}
self._window=_2f7;
self._document=_2f6;
return rval;
},formContents:function(elem){
var _2fa=[];
var _2fb=[];
var m=MochiKit.Base;
var self=MochiKit.DOM;
if(typeof (elem)=="undefined"||elem===null){
elem=self._document.body;
}else{
elem=self.getElement(elem);
}
m.nodeWalk(elem,function(elem){
var name=elem.name;
if(m.isNotEmpty(name)){
var _300=elem.tagName.toUpperCase();
if(_300==="INPUT"&&(elem.type=="radio"||elem.type=="checkbox")&&!elem.checked){
return null;
}
if(_300==="SELECT"){
if(elem.type=="select-one"){
if(elem.selectedIndex>=0){
var opt=elem.options[elem.selectedIndex];
var v=opt.value;
if(!v){
var h=opt.outerHTML;
if(h&&!h.match(/^[^>]+\svalue\s*=/i)){
v=opt.text;
}
}
_2fa.push(name);
_2fb.push(v);
return null;
}
_2fa.push(name);
_2fb.push("");
return null;
}else{
var opts=elem.options;
if(!opts.length){
_2fa.push(name);
_2fb.push("");
return null;
}
for(var i=0;i<opts.length;i++){
var opt=opts[i];
if(!opt.selected){
continue;
}
var v=opt.value;
if(!v){
var h=opt.outerHTML;
if(h&&!h.match(/^[^>]+\svalue\s*=/i)){
v=opt.text;
}
}
_2fa.push(name);
_2fb.push(v);
}
return null;
}
}
if(_300==="FORM"||_300==="P"||_300==="SPAN"||_300==="DIV"){
return elem.childNodes;
}
_2fa.push(name);
_2fb.push(elem.value||"");
return null;
}
return elem.childNodes;
});
return [_2fa,_2fb];
},withDocument:function(doc,func){
var self=MochiKit.DOM;
var _309=self._document;
var rval;
try{
self._document=doc;
rval=func();
}
catch(e){
self._document=_309;
throw e;
}
self._document=_309;
return rval;
},registerDOMConverter:function(name,_30c,wrap,_30e){
MochiKit.DOM.domConverters.register(name,_30c,wrap,_30e);
},coerceToDOM:function(node,ctx){
var m=MochiKit.Base;
var im=MochiKit.Iter;
var self=MochiKit.DOM;
if(im){
var iter=im.iter;
var _315=im.repeat;
}
var map=m.map;
var _317=self.domConverters;
var _318=arguments.callee;
var _319=m.NotFound;
while(true){
if(typeof (node)=="undefined"||node===null){
return null;
}
if(typeof (node)=="function"&&typeof (node.length)=="number"&&!(node instanceof Function)){
node=im?im.list(node):m.extend(null,node);
}
if(typeof (node.nodeType)!="undefined"&&node.nodeType>0){
return node;
}
if(typeof (node)=="number"||typeof (node)=="boolean"){
node=node.toString();
}
if(typeof (node)=="string"){
return self._document.createTextNode(node);
}
if(typeof (node.__dom__)=="function"){
node=node.__dom__(ctx);
continue;
}
if(typeof (node.dom)=="function"){
node=node.dom(ctx);
continue;
}
if(typeof (node)=="function"){
node=node.apply(ctx,[ctx]);
continue;
}
if(im){
var _31a=null;
try{
_31a=iter(node);
}
catch(e){
}
if(_31a){
return map(_318,_31a,_315(ctx));
}
}else{
if(m.isArrayLike(node)){
var func=function(n){
return _318(n,ctx);
};
return map(func,node);
}
}
try{
node=_317.match(node,ctx);
continue;
}
catch(e){
if(e!=_319){
throw e;
}
}
return self._document.createTextNode(node.toString());
}
return undefined;
},isChildNode:function(node,_31e){
var self=MochiKit.DOM;
if(typeof (node)=="string"){
node=self.getElement(node);
}
if(typeof (_31e)=="string"){
_31e=self.getElement(_31e);
}
if(typeof (node)=="undefined"||node===null){
return false;
}
while(node!=null&&node!==self._document){
if(node===_31e){
return true;
}
node=node.parentNode;
}
return false;
},setNodeAttribute:function(node,attr,_322){
var o={};
o[attr]=_322;
try{
return MochiKit.DOM.updateNodeAttributes(node,o);
}
catch(e){
}
return null;
},getNodeAttribute:function(node,attr){
var self=MochiKit.DOM;
var _327=self.attributeArray.renames[attr];
var _328=self.attributeArray.ignoreAttr[attr];
node=self.getElement(node);
try{
if(_327){
return node[_327];
}
var _329=node.getAttribute(attr);
if(_329!=_328){
return _329;
}
}
catch(e){
}
return null;
},removeNodeAttribute:function(node,attr){
var self=MochiKit.DOM;
var _32d=self.attributeArray.renames[attr];
node=self.getElement(node);
try{
if(_32d){
return node[_32d];
}
return node.removeAttribute(attr);
}
catch(e){
}
return null;
},updateNodeAttributes:function(node,_32f){
var elem=node;
var self=MochiKit.DOM;
if(typeof (node)=="string"){
elem=self.getElement(node);
}
if(_32f){
var _332=MochiKit.Base.updatetree;
if(self.attributeArray.compliant){
for(var k in _32f){
var v=_32f[k];
if(typeof (v)=="object"&&typeof (elem[k])=="object"){
if(k=="style"&&MochiKit.Style){
MochiKit.Style.setStyle(elem,v);
}else{
_332(elem[k],v);
}
}else{
if(k.substring(0,2)=="on"){
if(typeof (v)=="string"){
v=new Function(v);
}
elem[k]=v;
}else{
elem.setAttribute(k,v);
}
}
if(typeof (elem[k])=="string"&&elem[k]!=v){
elem[k]=v;
}
}
}else{
var _335=self.attributeArray.renames;
for(var k in _32f){
v=_32f[k];
var _336=_335[k];
if(k=="style"&&typeof (v)=="string"){
elem.style.cssText=v;
}else{
if(typeof (_336)=="string"){
elem[_336]=v;
}else{
if(typeof (elem[k])=="object"&&typeof (v)=="object"){
if(k=="style"&&MochiKit.Style){
MochiKit.Style.setStyle(elem,v);
}else{
_332(elem[k],v);
}
}else{
if(k.substring(0,2)=="on"){
if(typeof (v)=="string"){
v=new Function(v);
}
elem[k]=v;
}else{
elem.setAttribute(k,v);
}
}
}
}
if(typeof (elem[k])=="string"&&elem[k]!=v){
elem[k]=v;
}
}
}
}
return elem;
},appendChildNodes:function(node){
var elem=node;
var self=MochiKit.DOM;
if(typeof (node)=="string"){
elem=self.getElement(node);
}
var _33a=[self.coerceToDOM(MochiKit.Base.extend(null,arguments,1),elem)];
var _33b=MochiKit.Base.concat;
while(_33a.length){
var n=_33a.shift();
if(typeof (n)=="undefined"||n===null){
}else{
if(typeof (n.nodeType)=="number"){
if (elem) elem.appendChild(n);
}else{
_33a=_33b(n,_33a);
}
}
}
return elem;
},insertSiblingNodesBefore:function(node){
var elem=node;
var self=MochiKit.DOM;
if(typeof (node)=="string"){
elem=self.getElement(node);
}
var _340=[self.coerceToDOM(MochiKit.Base.extend(null,arguments,1),elem)];
var _341=elem.parentNode;
var _342=MochiKit.Base.concat;
while(_340.length){
var n=_340.shift();
if(typeof (n)=="undefined"||n===null){
}else{
if(typeof (n.nodeType)=="number"){
_341.insertBefore(n,elem);
}else{
_340=_342(n,_340);
}
}
}
return _341;
},insertSiblingNodesAfter:function(node){
var elem=node;
var self=MochiKit.DOM;
if(typeof (node)=="string"){
elem=self.getElement(node);
}
var _347=[self.coerceToDOM(MochiKit.Base.extend(null,arguments,1),elem)];
if(elem.nextSibling){
return self.insertSiblingNodesBefore(elem.nextSibling,_347);
}else{
return self.appendChildNodes(elem.parentNode,_347);
}
},replaceChildNodes:function(node){
var elem=node;
var self=MochiKit.DOM;
if(typeof (node)=="string"){
elem=self.getElement(node);
arguments[0]=elem;
}
var _34b;
while(elem && (_34b=elem.firstChild)){
elem.removeChild(_34b);
}
if(arguments.length<2){
return elem;
}else{
return self.appendChildNodes.apply(this,arguments);
}
},createDOM:function(name,_34d){
var elem;
var self=MochiKit.DOM;
var m=MochiKit.Base;
if(typeof (_34d)=="string"||typeof (_34d)=="number"){
var args=m.extend([name,null],arguments,1);
return arguments.callee.apply(this,args);
}
if(typeof (name)=="string"){
var _352=self._xhtml;
if(_34d&&!self.attributeArray.compliant){
var _353="";
if("name" in _34d){
_353+=" name=\""+self.escapeHTML(_34d.name)+"\"";
}
if(name=="input"&&"type" in _34d){
_353+=" type=\""+self.escapeHTML(_34d.type)+"\"";
}
if(_353){
name="<"+name+_353+">";
_352=false;
}
}
var d=self._document;
if(_352&&d===document){
elem=d.createElementNS("http://www.w3.org/1999/xhtml",name);
}else{
elem=d.createElement(name);
}
}else{
elem=name;
}
if(_34d){
self.updateNodeAttributes(elem,_34d);
}
if(arguments.length<=2){
return elem;
}else{
var args=m.extend([elem],arguments,2);
return self.appendChildNodes.apply(this,args);
}
},createDOMFunc:function(){
var m=MochiKit.Base;
return m.partial.apply(this,m.extend([MochiKit.DOM.createDOM],arguments));
},removeElement:function(elem){
var self=MochiKit.DOM;
var e=self.coerceToDOM(self.getElement(elem));
e.parentNode.removeChild(e);
return e;
},swapDOM:function(dest,src){
var self=MochiKit.DOM;
dest=self.getElement(dest);
var _35c=dest.parentNode;
if(src){
src=self.coerceToDOM(self.getElement(src),_35c);
_35c.replaceChild(src,dest);
}else{
_35c.removeChild(dest);
}
return src;
},getElement:function(id){
var self=MochiKit.DOM;
if(arguments.length==1){
return ((typeof (id)=="string")?self._document.getElementById(id):id);
}else{
return MochiKit.Base.map(self.getElement,arguments);
}
},getElementsByTagAndClassName:function(_35f,_360,_361){
var self=MochiKit.DOM;
if(typeof (_35f)=="undefined"||_35f===null){
_35f="*";
}
if(typeof (_361)=="undefined"||_361===null){
_361=self._document;
}
_361=self.getElement(_361);
if(_361==null){
return [];
}
var _363=(_361.getElementsByTagName(_35f)||self._document.all);
if(typeof (_360)=="undefined"||_360===null){
return MochiKit.Base.extend(null,_363);
}
var _364=[];
for(var i=0;i<_363.length;i++){
var _366=_363[i];
var cls=_366.className;
if(typeof (cls)!="string"){
cls=_366.getAttribute("class");
}
if(typeof (cls)=="string"){
var _368=cls.split(" ");
for(var j=0;j<_368.length;j++){
if(_368[j]==_360){
_364.push(_366);
break;
}
}
}
}
return _364;
},_newCallStack:function(path,once){
var rval=function(){
var _36d=arguments.callee.callStack;
for(var i=0;i<_36d.length;i++){
if(_36d[i].apply(this,arguments)===false){
break;
}
}
if(once){
try{
this[path]=null;
}
catch(e){
}
}
};
rval.callStack=[];
return rval;
},addToCallStack:function(_36f,path,func,once){
var self=MochiKit.DOM;
var _374=_36f[path];
var _375=_374;
if(!(typeof (_374)=="function"&&typeof (_374.callStack)=="object"&&_374.callStack!==null)){
_375=self._newCallStack(path,once);
if(typeof (_374)=="function"){
_375.callStack.push(_374);
}
_36f[path]=_375;
}
_375.callStack.push(func);
},addLoadEvent:function(func){
var self=MochiKit.DOM;
self.addToCallStack(self._window,"onload",func,true);
},focusOnLoad:function(_378){
var self=MochiKit.DOM;
self.addLoadEvent(function(){
_378=self.getElement(_378);
if(_378){
_378.focus();
}
});
},setElementClass:function(_37a,_37b){
var self=MochiKit.DOM;
var obj=self.getElement(_37a);
if(self.attributeArray.compliant){
obj.setAttribute("class",_37b);
}else{
obj.setAttribute("className",_37b);
}
},toggleElementClass:function(_37e){
var self=MochiKit.DOM;
for(var i=1;i<arguments.length;i++){
var obj=self.getElement(arguments[i]);
if(!self.addElementClass(obj,_37e)){
self.removeElementClass(obj,_37e);
}
}
},addElementClass:function(_382,_383){
var self=MochiKit.DOM;
var obj=self.getElement(_382);
var cls=obj.className;
if(typeof (cls)!="string"){
cls=obj.getAttribute("class");
}
if(typeof (cls)!="string"||cls.length===0){
self.setElementClass(obj,_383);
return true;
}
if(cls==_383){
return false;
}
var _387=cls.split(" ");
for(var i=0;i<_387.length;i++){
if(_387[i]==_383){
return false;
}
}
self.setElementClass(obj,cls+" "+_383);
return true;
},removeElementClass:function(_389,_38a){
var self=MochiKit.DOM;
var obj=self.getElement(_389);
var cls=obj.className;
if(typeof (cls)!="string"){
cls=obj.getAttribute("class");
}
if(typeof (cls)!="string"||cls.length===0){
return false;
}
if(cls==_38a){
self.setElementClass(obj,"");
return true;
}
var _38e=cls.split(" ");
for(var i=0;i<_38e.length;i++){
if(_38e[i]==_38a){
_38e.splice(i,1);
self.setElementClass(obj,_38e.join(" "));
return true;
}
}
return false;
},swapElementClass:function(_390,_391,_392){
var obj=MochiKit.DOM.getElement(_390);
var res=MochiKit.DOM.removeElementClass(obj,_391);
if(res){
MochiKit.DOM.addElementClass(obj,_392);
}
return res;
},hasElementClass:function(_395,_396){
var obj=MochiKit.DOM.getElement(_395);
if(obj==null){
return false;
}
var cls=obj.className;
if(typeof (cls)!="string"){
cls=obj.getAttribute("class");
}
if(typeof (cls)!="string"){
return false;
}
var _399=cls.split(" ");
for(var i=1;i<arguments.length;i++){
var good=false;
for(var j=0;j<_399.length;j++){
if(_399[j]==arguments[i]){
good=true;
break;
}
}
if(!good){
return false;
}
}
return true;
},escapeHTML:function(s){
return s.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;");
},toHTML:function(dom){
return MochiKit.DOM.emitHTML(dom).join("");
},emitHTML:function(dom,lst){
if(typeof (lst)=="undefined"||lst===null){
lst=[];
}
var _3a1=[dom];
var self=MochiKit.DOM;
var _3a3=self.escapeHTML;
var _3a4=self.attributeArray;
while(_3a1.length){
dom=_3a1.pop();
if(typeof (dom)=="string"){
lst.push(dom);
}else{
if(dom.nodeType==1){
lst.push("<"+dom.tagName.toLowerCase());
var _3a5=[];
var _3a6=_3a4(dom);
for(var i=0;i<_3a6.length;i++){
var a=_3a6[i];
_3a5.push([" ",a.name,"=\"",_3a3(a.value),"\""]);
}
_3a5.sort();
for(i=0;i<_3a5.length;i++){
var _3a9=_3a5[i];
for(var j=0;j<_3a9.length;j++){
lst.push(_3a9[j]);
}
}
if(dom.hasChildNodes()){
lst.push(">");
_3a1.push("</"+dom.tagName.toLowerCase()+">");
var _3ab=dom.childNodes;
for(i=_3ab.length-1;i>=0;i--){
_3a1.push(_3ab[i]);
}
}else{
lst.push("/>");
}
}else{
if(dom.nodeType==3){
lst.push(_3a3(dom.nodeValue));
}
}
}
}
return lst;
},scrapeText:function(node,_3ad){
var rval=[];
(function(node){
var cn=node.childNodes;
if(cn){
for(var i=0;i<cn.length;i++){
arguments.callee.call(this,cn[i]);
}
}
var _3b2=node.nodeValue;
if(typeof (_3b2)=="string"){
rval.push(_3b2);
}
})(MochiKit.DOM.getElement(node));
if(_3ad){
return rval;
}else{
return rval.join("");
}
},removeEmptyTextNodes:function(_3b3){
_3b3=MochiKit.DOM.getElement(_3b3);
for(var i=0;i<_3b3.childNodes.length;i++){
var node=_3b3.childNodes[i];
if(node.nodeType==3&&!/\S/.test(node.nodeValue)){
node.parentNode.removeChild(node);
}
}
},getFirstElementByTagAndClassName:function(_3b6,_3b7,_3b8){
var self=MochiKit.DOM;
if(typeof (_3b6)=="undefined"||_3b6===null){
_3b6="*";
}
if(typeof (_3b8)=="undefined"||_3b8===null){
_3b8=self._document;
}
_3b8=self.getElement(_3b8);
if(_3b8==null){
return null;
}
var _3ba=(_3b8.getElementsByTagName(_3b6)||self._document.all);
if(_3ba.length<=0){
return null;
}else{
if(typeof (_3b7)=="undefined"||_3b7===null){
return _3ba[0];
}
}
for(var i=0;i<_3ba.length;i++){
var _3bc=_3ba[i];
var cls=_3bc.className;
if(typeof (cls)!="string"){
cls=_3bc.getAttribute("class");
}
if(typeof (cls)=="string"){
var _3be=cls.split(" ");
for(var j=0;j<_3be.length;j++){
if(_3be[j]==_3b7){
return _3bc;
}
}
}
}
return null;
},getFirstParentByTagAndClassName:function(elem,_3c1,_3c2){
var self=MochiKit.DOM;
elem=self.getElement(elem);
if(typeof (_3c1)=="undefined"||_3c1===null){
_3c1="*";
}else{
_3c1=_3c1.toUpperCase();
}
if(typeof (_3c2)=="undefined"||_3c2===null){
_3c2=null;
}
if(elem){
elem=elem.parentNode;
}
while(elem&&elem.tagName){
var _3c4=elem.tagName.toUpperCase();
if((_3c1==="*"||_3c1==_3c4)&&(_3c2===null||self.hasElementClass(elem,_3c2))){
return elem;
}
elem=elem.parentNode;
}
return null;
},__new__:function(win){
var m=MochiKit.Base;
if(typeof (document)!="undefined"){
this._document=document;
var _3c7="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
this._xhtml=(document.documentElement&&document.createElementNS&&document.documentElement.namespaceURI===_3c7);
}else{
if(MochiKit.MockDOM){
this._document=MochiKit.MockDOM.document;
}
}
this._window=win;
this.domConverters=new m.AdapterRegistry();
var _3c8=this._document.createElement("span");
var _3c9;
if(_3c8&&_3c8.attributes&&_3c8.attributes.length>0){
var _3ca=m.filter;
_3c9=function(node){
return _3ca(_3c9.ignoreAttrFilter,node.attributes);
};
_3c9.ignoreAttr={};
var _3cc=_3c8.attributes;
var _3cd=_3c9.ignoreAttr;
for(var i=0;i<_3cc.length;i++){
var a=_3cc[i];
_3cd[a.name]=a.value;
}
_3c9.ignoreAttrFilter=function(a){
return (_3c9.ignoreAttr[a.name]!=a.value);
};
_3c9.compliant=false;
_3c9.renames={"class":"className","checked":"defaultChecked","usemap":"useMap","for":"htmlFor","readonly":"readOnly","colspan":"colSpan","bgcolor":"bgColor","cellspacing":"cellSpacing","cellpadding":"cellPadding"};
}else{
_3c9=function(node){
return node.attributes;
};
_3c9.compliant=true;
_3c9.ignoreAttr={};
_3c9.renames={};
}
this.attributeArray=_3c9;
var _3d2=function(_3d3,arr){
var _3d5=arr[0];
var _3d6=arr[1];
var _3d7=_3d6.split(".")[1];
var str="";
str+="if (!MochiKit."+_3d7+") { throw new Error(\"";
str+="This function has been deprecated and depends on MochiKit.";
str+=_3d7+".\");}";
str+="return "+_3d6+".apply(this, arguments);";
MochiKit[_3d3][_3d5]=new Function(str);
};
for(var i=0;i<MochiKit.DOM.DEPRECATED.length;i++){
_3d2("DOM",MochiKit.DOM.DEPRECATED[i]);
}
var _3d9=this.createDOMFunc;
this.UL=_3d9("ul");
this.OL=_3d9("ol");
this.LI=_3d9("li");
this.DL=_3d9("dl");
this.DT=_3d9("dt");
this.DD=_3d9("dd");
this.TD=_3d9("td");
this.TR=_3d9("tr");
this.TBODY=_3d9("tbody");
this.THEAD=_3d9("thead");
this.TFOOT=_3d9("tfoot");
this.TABLE=_3d9("table");
this.TH=_3d9("th");
this.INPUT=_3d9("input");
this.SPAN=_3d9("span");
this.A=_3d9("a");
this.DIV=_3d9("div");
this.IMG=_3d9("img");
this.BUTTON=_3d9("button");
this.TT=_3d9("tt");
this.PRE=_3d9("pre");
this.H1=_3d9("h1");
this.H2=_3d9("h2");
this.H3=_3d9("h3");
this.H4=_3d9("h4");
this.H5=_3d9("h5");
this.H6=_3d9("h6");
this.BR=_3d9("br");
this.HR=_3d9("hr");
this.LABEL=_3d9("label");
this.TEXTAREA=_3d9("textarea");
this.FORM=_3d9("form");
this.P=_3d9("p");
this.SELECT=_3d9("select");
this.OPTION=_3d9("option");
this.OPTGROUP=_3d9("optgroup");
this.LEGEND=_3d9("legend");
this.FIELDSET=_3d9("fieldset");
this.STRONG=_3d9("strong");
this.CANVAS=_3d9("canvas");
this.$=this.getElement;
this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
m.nameFunctions(this);
}});
MochiKit.DOM.__new__(((typeof (window)=="undefined")?this:window));
if(MochiKit.__export__){
withWindow=MochiKit.DOM.withWindow;
withDocument=MochiKit.DOM.withDocument;
}
MochiKit.Base._exportSymbols(this,MochiKit.DOM);
MochiKit.Base._deps("Style",["Base","DOM"]);
MochiKit.Style.NAME="MochiKit.Style";
MochiKit.Style.VERSION="1.4.2";
MochiKit.Style.__repr__=function(){
return "["+this.NAME+" "+this.VERSION+"]";
};
MochiKit.Style.toString=function(){
return this.__repr__();
};
MochiKit.Style.EXPORT_OK=[];
MochiKit.Style.EXPORT=["setStyle","setOpacity","getStyle","getElementDimensions","elementDimensions","setElementDimensions","getElementPosition","elementPosition","setElementPosition","makePositioned","undoPositioned","makeClipping","undoClipping","setDisplayForElement","hideElement","showElement","getViewportDimensions","getViewportPosition","Dimensions","Coordinates"];
MochiKit.Style.Dimensions=function(w,h){
this.w=w;
this.h=h;
};
MochiKit.Style.Dimensions.prototype.__repr__=function(){
var repr=MochiKit.Base.repr;
return "{w: "+repr(this.w)+", h: "+repr(this.h)+"}";
};
MochiKit.Style.Dimensions.prototype.toString=function(){
return this.__repr__();
};
MochiKit.Style.Coordinates=function(x,y){
this.x=x;
this.y=y;
};
MochiKit.Style.Coordinates.prototype.__repr__=function(){
var repr=MochiKit.Base.repr;
return "{x: "+repr(this.x)+", y: "+repr(this.y)+"}";
};
MochiKit.Style.Coordinates.prototype.toString=function(){
return this.__repr__();
};
MochiKit.Base.update(MochiKit.Style,{getStyle:function(elem,_421){
var dom=MochiKit.DOM;
var d=dom._document;
elem=dom.getElement(elem);
_421=MochiKit.Base.camelize(_421);
if(!elem||elem==d){
return undefined;
}
if(_421=="opacity"&&typeof (elem.filters)!="undefined"){
var _424=(MochiKit.Style.getStyle(elem,"filter")||"").match(/alpha\(opacity=(.*)\)/);
if(_424&&_424[1]){
return parseFloat(_424[1])/100;
}
return 1;
}
if(_421=="float"||_421=="cssFloat"||_421=="styleFloat"){
if(elem.style["float"]){
return elem.style["float"];
}else{
if(elem.style.cssFloat){
return elem.style.cssFloat;
}else{
if(elem.style.styleFloat){
return elem.style.styleFloat;
}else{
return "none";
}
}
}
}
var _425=elem.style?elem.style[_421]:null;
if(!_425){
if(d.defaultView&&d.defaultView.getComputedStyle){
var css=d.defaultView.getComputedStyle(elem,null);
_421=_421.replace(/([A-Z])/g,"-$1").toLowerCase();
_425=css?css.getPropertyValue(_421):null;
}else{
if(elem.currentStyle){
_425=elem.currentStyle[_421];
if(/^\d/.test(_425)&&!/px$/.test(_425)&&_421!="fontWeight"){
var left=elem.style.left;
var _428=elem.runtimeStyle.left;
elem.runtimeStyle.left=elem.currentStyle.left;
elem.style.left=_425||0;
_425=elem.style.pixelLeft+"px";
elem.style.left=left;
elem.runtimeStyle.left=_428;
}
}
}
}
if(_421=="opacity"){
_425=parseFloat(_425);
}
if(/Opera/.test(navigator.userAgent)&&(MochiKit.Base.findValue(["left","top","right","bottom"],_421)!=-1)){
if(MochiKit.Style.getStyle(elem,"position")=="static"){
_425="auto";
}
}
return _425=="auto"?null:_425;
},setStyle:function(elem,_42a){
elem=MochiKit.DOM.getElement(elem);
for(var name in _42a){
switch(name){
case "opacity":
MochiKit.Style.setOpacity(elem,_42a[name]);
break;
case "float":
case "cssFloat":
case "styleFloat":
if(typeof (elem.style["float"])!="undefined"){
elem.style["float"]=_42a[name];
}else{
if(typeof (elem.style.cssFloat)!="undefined"){
elem.style.cssFloat=_42a[name];
}else{
elem.style.styleFloat=_42a[name];
}
}
break;
default:
elem.style[MochiKit.Base.camelize(name)]=_42a[name];
}
}
},setOpacity:function(elem,o){
elem=MochiKit.DOM.getElement(elem);
var self=MochiKit.Style;
if(o==1){
var _42f=/Gecko/.test(navigator.userAgent)&&!(/Konqueror|AppleWebKit|KHTML/.test(navigator.userAgent));
elem.style["opacity"]=_42f?0.999999:1;
if(/MSIE/.test(navigator.userAgent)){
elem.style["filter"]=self.getStyle(elem,"filter").replace(/alpha\([^\)]*\)/gi,"");
}
}else{
if(o<0.00001){
o=0;
}
elem.style["opacity"]=o;
if(/MSIE/.test(navigator.userAgent)){
elem.style["filter"]=self.getStyle(elem,"filter").replace(/alpha\([^\)]*\)/gi,"")+"alpha(opacity="+o*100+")";
}
}
},getElementPosition:function(elem,_431){
var self=MochiKit.Style;
var dom=MochiKit.DOM;
elem=dom.getElement(elem);
if(!elem||(!(elem.x&&elem.y)&&(!elem.parentNode===null||self.getStyle(elem,"display")=="none"))){
return undefined;
}
var c=new self.Coordinates(0,0);
var box=null;
var _436=null;
var d=MochiKit.DOM._document;
var de=d.documentElement;
var b=d.body;
if(!elem.parentNode&&elem.x&&elem.y){
c.x+=elem.x||0;
c.y+=elem.y||0;
}else{
if(elem.getBoundingClientRect){
box=elem.getBoundingClientRect();
c.x+=box.left+(de.scrollLeft||b.scrollLeft)-(de.clientLeft||0);
c.y+=box.top+(de.scrollTop||b.scrollTop)-(de.clientTop||0);
}else{
if(elem.offsetParent){
c.x+=elem.offsetLeft;
c.y+=elem.offsetTop;
_436=elem.offsetParent;
if(_436!=elem){
while(_436){
c.x+=parseInt(_436.style.borderLeftWidth)||0;
c.y+=parseInt(_436.style.borderTopWidth)||0;
c.x+=_436.offsetLeft;
c.y+=_436.offsetTop;
_436=_436.offsetParent;
}
}
var ua=navigator.userAgent.toLowerCase();
if((typeof (opera)!="undefined"&&parseFloat(opera.version())<9)||(ua.indexOf("AppleWebKit")!=-1&&self.getStyle(elem,"position")=="absolute")){
c.x-=b.offsetLeft;
c.y-=b.offsetTop;
}
if(elem.parentNode){
_436=elem.parentNode;
}else{
_436=null;
}
while(_436){
var _43b=_436.tagName.toUpperCase();
if(_43b==="BODY"||_43b==="HTML"){
break;
}
var disp=self.getStyle(_436,"display");
if(disp.search(/^inline|table-row.*$/i)){
c.x-=_436.scrollLeft;
c.y-=_436.scrollTop;
}
if(_436.parentNode){
_436=_436.parentNode;
}else{
_436=null;
}
}
}
}
}
if(typeof (_431)!="undefined"){
_431=arguments.callee(_431);
if(_431){
c.x-=(_431.x||0);
c.y-=(_431.y||0);
}
}
return c;
},setElementPosition:function(elem,_43e,_43f){
elem=MochiKit.DOM.getElement(elem);
if(typeof (_43f)=="undefined"){
_43f="px";
}
var _440={};
var _441=MochiKit.Base.isUndefinedOrNull;
if(!_441(_43e.x)){
_440["left"]=_43e.x+_43f;
}
if(!_441(_43e.y)){
_440["top"]=_43e.y+_43f;
}
MochiKit.DOM.updateNodeAttributes(elem,{"style":_440});
},makePositioned:function(_442){
_442=MochiKit.DOM.getElement(_442);
var pos=MochiKit.Style.getStyle(_442,"position");
if(pos=="static"||!pos){
_442.style.position="relative";
if(/Opera/.test(navigator.userAgent)){
_442.style.top=0;
_442.style.left=0;
}
}
},undoPositioned:function(_444){
_444=MochiKit.DOM.getElement(_444);
if(_444.style.position=="relative"){
_444.style.position=_444.style.top=_444.style.left=_444.style.bottom=_444.style.right="";
}
},makeClipping:function(_445){
_445=MochiKit.DOM.getElement(_445);
var s=_445.style;
var _447={"overflow":s.overflow,"overflow-x":s.overflowX,"overflow-y":s.overflowY};
if((MochiKit.Style.getStyle(_445,"overflow")||"visible")!="hidden"){
_445.style.overflow="hidden";
_445.style.overflowX="hidden";
_445.style.overflowY="hidden";
}
return _447;
},undoClipping:function(_448,_449){
_448=MochiKit.DOM.getElement(_448);
if(typeof (_449)=="string"){
_448.style.overflow=_449;
}else{
if(_449!=null){
_448.style.overflow=_449["overflow"];
_448.style.overflowX=_449["overflow-x"];
_448.style.overflowY=_449["overflow-y"];
}
}
},getElementDimensions:function(elem,_44b){
var self=MochiKit.Style;
var dom=MochiKit.DOM;
if(typeof (elem.w)=="number"||typeof (elem.h)=="number"){
return new self.Dimensions(elem.w||0,elem.h||0);
}
elem=dom.getElement(elem);
if(!elem){
return undefined;
}
var disp=self.getStyle(elem,"display");
if(disp=="none"||disp==""||typeof (disp)=="undefined"){
var s=elem.style;
var _450=s.visibility;
var _451=s.position;
var _452=s.display;
s.visibility="hidden";
s.position="absolute";
s.display=self._getDefaultDisplay(elem);
var _453=elem.offsetWidth;
var _454=elem.offsetHeight;
s.display=_452;
s.position=_451;
s.visibility=_450;
}else{
_453=elem.offsetWidth||0;
_454=elem.offsetHeight||0;
}
if(_44b){
var _455="colSpan" in elem&&"rowSpan" in elem;
var _456=(_455&&elem.parentNode&&self.getStyle(elem.parentNode,"borderCollapse")=="collapse");
if(_456){
if(/MSIE/.test(navigator.userAgent)){
var _457=elem.previousSibling?0.5:1;
var _458=elem.nextSibling?0.5:1;
}else{
var _457=0.5;
var _458=0.5;
}
}else{
var _457=1;
var _458=1;
}
_453-=Math.round((parseFloat(self.getStyle(elem,"paddingLeft"))||0)+(parseFloat(self.getStyle(elem,"paddingRight"))||0)+_457*(parseFloat(self.getStyle(elem,"borderLeftWidth"))||0)+_458*(parseFloat(self.getStyle(elem,"borderRightWidth"))||0));
if(_455){
if(/Gecko|Opera/.test(navigator.userAgent)&&!/Konqueror|AppleWebKit|KHTML/.test(navigator.userAgent)){
var _459=0;
}else{
if(/MSIE/.test(navigator.userAgent)){
var _459=1;
}else{
var _459=_456?0.5:1;
}
}
}else{
var _459=1;
}
_454-=Math.round((parseFloat(self.getStyle(elem,"paddingTop"))||0)+(parseFloat(self.getStyle(elem,"paddingBottom"))||0)+_459*((parseFloat(self.getStyle(elem,"borderTopWidth"))||0)+(parseFloat(self.getStyle(elem,"borderBottomWidth"))||0)));
}
return new self.Dimensions(_453,_454);
},setElementDimensions:function(elem,_45b,_45c){
elem=MochiKit.DOM.getElement(elem);
if(typeof (_45c)=="undefined"){
_45c="px";
}
var _45d={};
var _45e=MochiKit.Base.isUndefinedOrNull;
if(!_45e(_45b.w)){
_45d["width"]=_45b.w+_45c;
}
if(!_45e(_45b.h)){
_45d["height"]=_45b.h+_45c;
}
MochiKit.DOM.updateNodeAttributes(elem,{"style":_45d});
},_getDefaultDisplay:function(elem){
var self=MochiKit.Style;
var dom=MochiKit.DOM;
elem=dom.getElement(elem);
if(!elem){
return undefined;
}
var _462=elem.tagName.toUpperCase();
return self._defaultDisplay[_462]||"block";
},setDisplayForElement:function(_463,_464){
var _465=MochiKit.Base.extend(null,arguments,1);
var _466=MochiKit.DOM.getElement;
for(var i=0;i<_465.length;i++){
_464=_466(_465[i]);
if(_464){
_464.style.display=_463;
}
}
},getViewportDimensions:function(){
var d=new MochiKit.Style.Dimensions();
var w=MochiKit.DOM._window;
var b=MochiKit.DOM._document.body;
if(w.innerWidth){
d.w=w.innerWidth;
d.h=w.innerHeight;
}else{
if(b&&b.parentElement&&b.parentElement.clientWidth){
d.w=b.parentElement.clientWidth;
d.h=b.parentElement.clientHeight;
}else{
if(b&&b.clientWidth){
d.w=b.clientWidth;
d.h=b.clientHeight;
}
}
}
return d;
},getViewportPosition:function(){
var c=new MochiKit.Style.Coordinates(0,0);
var d=MochiKit.DOM._document;
var de=d.documentElement;
var db=d.body;
if(de&&(de.scrollTop||de.scrollLeft)){
c.x=de.scrollLeft;
c.y=de.scrollTop;
}else{
if(db){
c.x=db.scrollLeft;
c.y=db.scrollTop;
}
}
return c;
},__new__:function(){
var m=MochiKit.Base;
var _470=["A","ABBR","ACRONYM","B","BASEFONT","BDO","BIG","BR","CITE","CODE","DFN","EM","FONT","I","IMG","KBD","LABEL","Q","S","SAMP","SMALL","SPAN","STRIKE","STRONG","SUB","SUP","TEXTAREA","TT","U","VAR"];
this._defaultDisplay={"TABLE":"table","THEAD":"table-header-group","TBODY":"table-row-group","TFOOT":"table-footer-group","COLGROUP":"table-column-group","COL":"table-column","TR":"table-row","TD":"table-cell","TH":"table-cell","CAPTION":"table-caption","LI":"list-item","INPUT":"inline-block","SELECT":"inline-block"};
if(/MSIE/.test(navigator.userAgent)){
for(var k in this._defaultDisplay){
var v=this._defaultDisplay[k];
if(v.indexOf("table")==0){
this._defaultDisplay[k]="block";
}
}
}
for(var i=0;i<_470.length;i++){
this._defaultDisplay[_470[i]]="inline";
}
this.elementPosition=this.getElementPosition;
this.elementDimensions=this.getElementDimensions;
this.hideElement=m.partial(this.setDisplayForElement,"none");
this.showElement=m.partial(this.setDisplayForElement,"block");
this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
m.nameFunctions(this);
}});
MochiKit.Style.__new__();
MochiKit.Base._exportSymbols(this,MochiKit.Style);
MochiKit.Base._deps("Color",["Base","DOM","Style"]);
MochiKit.Color.NAME="MochiKit.Color";
MochiKit.Color.VERSION="1.4.2";
MochiKit.Color.__repr__=function(){
return "["+this.NAME+" "+this.VERSION+"]";
};
MochiKit.Color.toString=function(){
return this.__repr__();
};
MochiKit.Color.Color=function(red,_4ac,blue,_4ae){
if(typeof (_4ae)=="undefined"||_4ae===null){
_4ae=1;
}
this.rgb={r:red,g:_4ac,b:blue,a:_4ae};
};
MochiKit.Color.Color.prototype={__class__:MochiKit.Color.Color,colorWithAlpha:function(_4af){
var rgb=this.rgb;
var m=MochiKit.Color;
return m.Color.fromRGB(rgb.r,rgb.g,rgb.b,_4af);
},colorWithHue:function(hue){
var hsl=this.asHSL();
hsl.h=hue;
var m=MochiKit.Color;
return m.Color.fromHSL(hsl);
},colorWithSaturation:function(_4b5){
var hsl=this.asHSL();
hsl.s=_4b5;
var m=MochiKit.Color;
return m.Color.fromHSL(hsl);
},colorWithLightness:function(_4b8){
var hsl=this.asHSL();
hsl.l=_4b8;
var m=MochiKit.Color;
return m.Color.fromHSL(hsl);
},darkerColorWithLevel:function(_4bb){
var hsl=this.asHSL();
hsl.l=Math.max(hsl.l-_4bb,0);
var m=MochiKit.Color;
return m.Color.fromHSL(hsl);
},lighterColorWithLevel:function(_4be){
var hsl=this.asHSL();
hsl.l=Math.min(hsl.l+_4be,1);
var m=MochiKit.Color;
return m.Color.fromHSL(hsl);
},blendedColor:function(_4c1,_4c2){
if(typeof (_4c2)=="undefined"||_4c2===null){
_4c2=0.5;
}
var sf=1-_4c2;
var s=this.rgb;
var d=_4c1.rgb;
var df=_4c2;
return MochiKit.Color.Color.fromRGB((s.r*sf)+(d.r*df),(s.g*sf)+(d.g*df),(s.b*sf)+(d.b*df),(s.a*sf)+(d.a*df));
},compareRGB:function(_4c7){
var a=this.asRGB();
var b=_4c7.asRGB();
return MochiKit.Base.compare([a.r,a.g,a.b,a.a],[b.r,b.g,b.b,b.a]);
},isLight:function(){
return this.asHSL().b>0.5;
},isDark:function(){
return (!this.isLight());
},toHSLString:function(){
var c=this.asHSL();
var ccc=MochiKit.Color.clampColorComponent;
var rval=this._hslString;
if(!rval){
var mid=(ccc(c.h,360).toFixed(0)+","+ccc(c.s,100).toPrecision(4)+"%"+","+ccc(c.l,100).toPrecision(4)+"%");
var a=c.a;
if(a>=1){
a=1;
rval="hsl("+mid+")";
}else{
if(a<=0){
a=0;
}
rval="hsla("+mid+","+a+")";
}
this._hslString=rval;
}
return rval;
},toRGBString:function(){
var c=this.rgb;
var ccc=MochiKit.Color.clampColorComponent;
var rval=this._rgbString;
if(!rval){
var mid=(ccc(c.r,255).toFixed(0)+","+ccc(c.g,255).toFixed(0)+","+ccc(c.b,255).toFixed(0));
if(c.a!=1){
rval="rgba("+mid+","+c.a+")";
}else{
rval="rgb("+mid+")";
}
this._rgbString=rval;
}
return rval;
},asRGB:function(){
return MochiKit.Base.clone(this.rgb);
},toHexString:function(){
var m=MochiKit.Color;
var c=this.rgb;
var ccc=MochiKit.Color.clampColorComponent;
var rval=this._hexString;
if(!rval){
rval=("#"+m.toColorPart(ccc(c.r,255))+m.toColorPart(ccc(c.g,255))+m.toColorPart(ccc(c.b,255)));
this._hexString=rval;
}
return rval;
},asHSV:function(){
var hsv=this.hsv;
var c=this.rgb;
if(typeof (hsv)=="undefined"||hsv===null){
hsv=MochiKit.Color.rgbToHSV(this.rgb);
this.hsv=hsv;
}
return MochiKit.Base.clone(hsv);
},asHSL:function(){
var hsl=this.hsl;
var c=this.rgb;
if(typeof (hsl)=="undefined"||hsl===null){
hsl=MochiKit.Color.rgbToHSL(this.rgb);
this.hsl=hsl;
}
return MochiKit.Base.clone(hsl);
},toString:function(){
return this.toRGBString();
},repr:function(){
var c=this.rgb;
var col=[c.r,c.g,c.b,c.a];
return this.__class__.NAME+"("+col.join(", ")+")";
}};
MochiKit.Base.update(MochiKit.Color.Color,{fromRGB:function(red,_4de,blue,_4e0){
var _4e1=MochiKit.Color.Color;
if(arguments.length==1){
var rgb=red;
red=rgb.r;
_4de=rgb.g;
blue=rgb.b;
if(typeof (rgb.a)=="undefined"){
_4e0=undefined;
}else{
_4e0=rgb.a;
}
}
return new _4e1(red,_4de,blue,_4e0);
},fromHSL:function(hue,_4e4,_4e5,_4e6){
var m=MochiKit.Color;
return m.Color.fromRGB(m.hslToRGB.apply(m,arguments));
},fromHSV:function(hue,_4e9,_4ea,_4eb){
var m=MochiKit.Color;
return m.Color.fromRGB(m.hsvToRGB.apply(m,arguments));
},fromName:function(name){
var _4ee=MochiKit.Color.Color;
if(name.charAt(0)=="\""){
name=name.substr(1,name.length-2);
}
var _4ef=_4ee._namedColors[name.toLowerCase()];
if(typeof (_4ef)=="string"){
return _4ee.fromHexString(_4ef);
}else{
if(name=="transparent"){
return _4ee.transparentColor();
}
}
return null;
},fromString:function(_4f0){
var self=MochiKit.Color.Color;
var _4f2=_4f0.substr(0,3);
if(_4f2=="rgb"){
return self.fromRGBString(_4f0);
}else{
if(_4f2=="hsl"){
return self.fromHSLString(_4f0);
}else{
if(_4f0.charAt(0)=="#"){
return self.fromHexString(_4f0);
}
}
}
return self.fromName(_4f0);
},fromHexString:function(_4f3){
if(_4f3.charAt(0)=="#"){
_4f3=_4f3.substring(1);
}
var _4f4=[];
var i,hex;
if(_4f3.length==3){
for(i=0;i<3;i++){
hex=_4f3.substr(i,1);
_4f4.push(parseInt(hex+hex,16)/255);
}
}else{
for(i=0;i<6;i+=2){
hex=_4f3.substr(i,2);
_4f4.push(parseInt(hex,16)/255);
}
}
var _4f7=MochiKit.Color.Color;
return _4f7.fromRGB.apply(_4f7,_4f4);
},_fromColorString:function(pre,_4f9,_4fa,_4fb){
if(_4fb.indexOf(pre)===0){
_4fb=_4fb.substring(_4fb.indexOf("(",3)+1,_4fb.length-1);
}
var _4fc=_4fb.split(/\s*,\s*/);
var _4fd=[];
for(var i=0;i<_4fc.length;i++){
var c=_4fc[i];
var val;
var _501=c.substring(c.length-3);
if(c.charAt(c.length-1)=="%"){
val=0.01*parseFloat(c.substring(0,c.length-1));
}else{
if(_501=="deg"){
val=parseFloat(c)/360;
}else{
if(_501=="rad"){
val=parseFloat(c)/(Math.PI*2);
}else{
val=_4fa[i]*parseFloat(c);
}
}
}
_4fd.push(val);
}
return this[_4f9].apply(this,_4fd);
},fromComputedStyle:function(elem,_503){
var d=MochiKit.DOM;
var cls=MochiKit.Color.Color;
for(elem=d.getElement(elem);elem;elem=elem.parentNode){
var _506=MochiKit.Style.getStyle.apply(d,arguments);
if(!_506){
continue;
}
var _507=cls.fromString(_506);
if(!_507){
break;
}
if(_507.asRGB().a>0){
return _507;
}
}
return null;
},fromBackground:function(elem){
var cls=MochiKit.Color.Color;
return cls.fromComputedStyle(elem,"backgroundColor","background-color")||cls.whiteColor();
},fromText:function(elem){
var cls=MochiKit.Color.Color;
return cls.fromComputedStyle(elem,"color","color")||cls.blackColor();
},namedColors:function(){
return MochiKit.Base.clone(MochiKit.Color.Color._namedColors);
}});
MochiKit.Base.update(MochiKit.Color,{clampColorComponent:function(v,_50d){
v*=_50d;
if(v<0){
return 0;
}else{
if(v>_50d){
return _50d;
}else{
return v;
}
}
},_hslValue:function(n1,n2,hue){
if(hue>6){
hue-=6;
}else{
if(hue<0){
hue+=6;
}
}
var val;
if(hue<1){
val=n1+(n2-n1)*hue;
}else{
if(hue<3){
val=n2;
}else{
if(hue<4){
val=n1+(n2-n1)*(4-hue);
}else{
val=n1;
}
}
}
return val;
},hsvToRGB:function(hue,_513,_514,_515){
if(arguments.length==1){
var hsv=hue;
hue=hsv.h;
_513=hsv.s;
_514=hsv.v;
_515=hsv.a;
}
var red;
var _518;
var blue;
if(_513===0){
red=_514;
_518=_514;
blue=_514;
}else{
var i=Math.floor(hue*6);
var f=(hue*6)-i;
var p=_514*(1-_513);
var q=_514*(1-(_513*f));
var t=_514*(1-(_513*(1-f)));
switch(i){
case 1:
red=q;
_518=_514;
blue=p;
break;
case 2:
red=p;
_518=_514;
blue=t;
break;
case 3:
red=p;
_518=q;
blue=_514;
break;
case 4:
red=t;
_518=p;
blue=_514;
break;
case 5:
red=_514;
_518=p;
blue=q;
break;
case 6:
case 0:
red=_514;
_518=t;
blue=p;
break;
}
}
return {r:red,g:_518,b:blue,a:_515};
},hslToRGB:function(hue,_520,_521,_522){
if(arguments.length==1){
var hsl=hue;
hue=hsl.h;
_520=hsl.s;
_521=hsl.l;
_522=hsl.a;
}
var red;
var _525;
var blue;
if(_520===0){
red=_521;
_525=_521;
blue=_521;
}else{
var m2;
if(_521<=0.5){
m2=_521*(1+_520);
}else{
m2=_521+_520-(_521*_520);
}
var m1=(2*_521)-m2;
var f=MochiKit.Color._hslValue;
var h6=hue*6;
red=f(m1,m2,h6+2);
_525=f(m1,m2,h6);
blue=f(m1,m2,h6-2);
}
return {r:red,g:_525,b:blue,a:_522};
},rgbToHSV:function(red,_52c,blue,_52e){
if(arguments.length==1){
var rgb=red;
red=rgb.r;
_52c=rgb.g;
blue=rgb.b;
_52e=rgb.a;
}
var max=Math.max(Math.max(red,_52c),blue);
var min=Math.min(Math.min(red,_52c),blue);
var hue;
var _533;
var _534=max;
if(min==max){
hue=0;
_533=0;
}else{
var _535=(max-min);
_533=_535/max;
if(red==max){
hue=(_52c-blue)/_535;
}else{
if(_52c==max){
hue=2+((blue-red)/_535);
}else{
hue=4+((red-_52c)/_535);
}
}
hue/=6;
if(hue<0){
hue+=1;
}
if(hue>1){
hue-=1;
}
}
return {h:hue,s:_533,v:_534,a:_52e};
},rgbToHSL:function(red,_537,blue,_539){
if(arguments.length==1){
var rgb=red;
red=rgb.r;
_537=rgb.g;
blue=rgb.b;
_539=rgb.a;
}
var max=Math.max(red,Math.max(_537,blue));
var min=Math.min(red,Math.min(_537,blue));
var hue;
var _53e;
var _53f=(max+min)/2;
var _540=max-min;
if(_540===0){
hue=0;
_53e=0;
}else{
if(_53f<=0.5){
_53e=_540/(max+min);
}else{
_53e=_540/(2-max-min);
}
if(red==max){
hue=(_537-blue)/_540;
}else{
if(_537==max){
hue=2+((blue-red)/_540);
}else{
hue=4+((red-_537)/_540);
}
}
hue/=6;
if(hue<0){
hue+=1;
}
if(hue>1){
hue-=1;
}
}
return {h:hue,s:_53e,l:_53f,a:_539};
},toColorPart:function(num){
num=Math.round(num);
var _542=num.toString(16);
if(num<16){
return "0"+_542;
}
return _542;
},__new__:function(){
var m=MochiKit.Base;
this.Color.fromRGBString=m.bind(this.Color._fromColorString,this.Color,"rgb","fromRGB",[1/255,1/255,1/255,1]);
this.Color.fromHSLString=m.bind(this.Color._fromColorString,this.Color,"hsl","fromHSL",[1/360,0.01,0.01,1]);
var _544=1/3;
var _545={black:[0,0,0],blue:[0,0,1],brown:[0.6,0.4,0.2],cyan:[0,1,1],darkGray:[_544,_544,_544],gray:[0.5,0.5,0.5],green:[0,1,0],lightGray:[2*_544,2*_544,2*_544],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]};
var _546=function(name,r,g,b,a){
var rval=this.fromRGB(r,g,b,a);
this[name]=function(){
return rval;
};
return rval;
};
for(var k in _545){
var name=k+"Color";
var _54f=m.concat([_546,this.Color,name],_545[k]);
this.Color[name]=m.bind.apply(null,_54f);
}
var _550=function(){
for(var i=0;i<arguments.length;i++){
if(!(arguments[i] instanceof MochiKit.Color.Color)){
return false;
}
}
return true;
};
var _552=function(a,b){
return a.compareRGB(b);
};
m.nameFunctions(this);
m.registerComparator(this.Color.NAME,_550,_552);
this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
}});
MochiKit.Color.EXPORT=["Color"];
MochiKit.Color.EXPORT_OK=["clampColorComponent","rgbToHSL","hslToRGB","rgbToHSV","hsvToRGB","toColorPart"];
MochiKit.Color.__new__();
MochiKit.Base._exportSymbols(this,MochiKit.Color);
MochiKit.Color.Color._namedColors={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};
MochiKit.Base._deps("Signal",["Base","DOM","Style"]);
MochiKit.Signal.NAME="MochiKit.Signal";
MochiKit.Signal.VERSION="1.4.2";
MochiKit.Signal._observers=[];
MochiKit.Signal.Event=function(src,e){
this._event=e||window.event;
this._src=src;
};
MochiKit.Base.update(MochiKit.Signal.Event.prototype,{__repr__:function(){
var repr=MochiKit.Base.repr;
var str="{event(): "+repr(this.event())+", src(): "+repr(this.src())+", type(): "+repr(this.type())+", target(): "+repr(this.target());
if(this.type()&&this.type().indexOf("key")===0||this.type().indexOf("mouse")===0||this.type().indexOf("click")!=-1||this.type()=="contextmenu"){
str+=", modifier(): "+"{alt: "+repr(this.modifier().alt)+", ctrl: "+repr(this.modifier().ctrl)+", meta: "+repr(this.modifier().meta)+", shift: "+repr(this.modifier().shift)+", any: "+repr(this.modifier().any)+"}";
}
if(this.type()&&this.type().indexOf("key")===0){
str+=", key(): {code: "+repr(this.key().code)+", string: "+repr(this.key().string)+"}";
}
if(this.type()&&(this.type().indexOf("mouse")===0||this.type().indexOf("click")!=-1||this.type()=="contextmenu")){
str+=", mouse(): {page: "+repr(this.mouse().page)+", client: "+repr(this.mouse().client);
if(this.type()!="mousemove"&&this.type()!="mousewheel"){
str+=", button: {left: "+repr(this.mouse().button.left)+", middle: "+repr(this.mouse().button.middle)+", right: "+repr(this.mouse().button.right)+"}";
}
if(this.type()=="mousewheel"){
str+=", wheel: "+repr(this.mouse().wheel);
}
str+="}";
}
if(this.type()=="mouseover"||this.type()=="mouseout"||this.type()=="mouseenter"||this.type()=="mouseleave"){
str+=", relatedTarget(): "+repr(this.relatedTarget());
}
str+="}";
return str;
},toString:function(){
return this.__repr__();
},src:function(){
return this._src;
},event:function(){
return this._event;
},type:function(){
if(this._event.type==="DOMMouseScroll"){
return "mousewheel";
}else{
return this._event.type||undefined;
}
},target:function(){
return this._event.target||this._event.srcElement;
},_relatedTarget:null,relatedTarget:function(){
if(this._relatedTarget!==null){
return this._relatedTarget;
}
var elem=null;
if(this.type()=="mouseover"||this.type()=="mouseenter"){
elem=(this._event.relatedTarget||this._event.fromElement);
}else{
if(this.type()=="mouseout"||this.type()=="mouseleave"){
elem=(this._event.relatedTarget||this._event.toElement);
}
}
try{
if(elem!==null&&elem.nodeType!==null){
this._relatedTarget=elem;
return elem;
}
}
catch(ignore){
}
return undefined;
},_modifier:null,modifier:function(){
if(this._modifier!==null){
return this._modifier;
}
var m={};
m.alt=this._event.altKey;
m.ctrl=this._event.ctrlKey;
m.meta=this._event.metaKey||false;
m.shift=this._event.shiftKey;
m.any=m.alt||m.ctrl||m.shift||m.meta;
this._modifier=m;
return m;
},_key:null,key:function(){
if(this._key!==null){
return this._key;
}
var k={};
if(this.type()&&this.type().indexOf("key")===0){
if(this.type()=="keydown"||this.type()=="keyup"){
k.code=this._event.keyCode;
k.string=(MochiKit.Signal._specialKeys[k.code]||"KEY_UNKNOWN");
this._key=k;
return k;
}else{
if(this.type()=="keypress"){
k.code=0;
k.string="";
if(typeof (this._event.charCode)!="undefined"&&this._event.charCode!==0&&!MochiKit.Signal._specialMacKeys[this._event.charCode]){
k.code=this._event.charCode;
k.string=String.fromCharCode(k.code);
}else{
if(this._event.keyCode&&typeof (this._event.charCode)=="undefined"){
k.code=this._event.keyCode;
k.string=String.fromCharCode(k.code);
}
}
this._key=k;
return k;
}
}
}
return undefined;
},_mouse:null,mouse:function(){
if(this._mouse!==null){
return this._mouse;
}
var m={};
var e=this._event;
if(this.type()&&(this.type().indexOf("mouse")===0||this.type().indexOf("click")!=-1||this.type()=="contextmenu")){
m.client=new MochiKit.Style.Coordinates(0,0);
if(e.clientX||e.clientY){
m.client.x=(!e.clientX||e.clientX<0)?0:e.clientX;
m.client.y=(!e.clientY||e.clientY<0)?0:e.clientY;
}
m.page=new MochiKit.Style.Coordinates(0,0);
if(e.pageX||e.pageY){
m.page.x=(!e.pageX||e.pageX<0)?0:e.pageX;
m.page.y=(!e.pageY||e.pageY<0)?0:e.pageY;
}else{
var de=MochiKit.DOM._document.documentElement;
var b=MochiKit.DOM._document.body;
m.page.x=e.clientX+(de.scrollLeft||b.scrollLeft)-(de.clientLeft||0);
m.page.y=e.clientY+(de.scrollTop||b.scrollTop)-(de.clientTop||0);
}
if(this.type()!="mousemove"&&this.type()!="mousewheel"){
m.button={};
m.button.left=false;
m.button.right=false;
m.button.middle=false;
if(e.which){
m.button.left=(e.which==1);
m.button.middle=(e.which==2);
m.button.right=(e.which==3);
}else{
m.button.left=!!(e.button&1);
m.button.right=!!(e.button&2);
m.button.middle=!!(e.button&4);
}
}
if(this.type()=="mousewheel"){
m.wheel=new MochiKit.Style.Coordinates(0,0);
if(e.wheelDeltaX||e.wheelDeltaY){
m.wheel.x=e.wheelDeltaX/-40||0;
m.wheel.y=e.wheelDeltaY/-40||0;
}else{
if(e.wheelDelta){
m.wheel.y=e.wheelDelta/-40;
}else{
m.wheel.y=e.detail||0;
}
}
}
this._mouse=m;
return m;
}
return undefined;
},stop:function(){
this.stopPropagation();
this.preventDefault();
},stopPropagation:function(){
if(this._event.stopPropagation){
this._event.stopPropagation();
}else{
this._event.cancelBubble=true;
}
},preventDefault:function(){
if(this._event.preventDefault){
this._event.preventDefault();
}else{
if(this._confirmUnload===null){
this._event.returnValue=false;
}
}
},_confirmUnload:null,confirmUnload:function(msg){
if(this.type()=="beforeunload"){
this._confirmUnload=msg;
this._event.returnValue=msg;
}
}});
MochiKit.Signal._specialMacKeys={3:"KEY_ENTER",63289:"KEY_NUM_PAD_CLEAR",63276:"KEY_PAGE_UP",63277:"KEY_PAGE_DOWN",63275:"KEY_END",63273:"KEY_HOME",63234:"KEY_ARROW_LEFT",63232:"KEY_ARROW_UP",63235:"KEY_ARROW_RIGHT",63233:"KEY_ARROW_DOWN",63302:"KEY_INSERT",63272:"KEY_DELETE"};
(function(){
var _561=MochiKit.Signal._specialMacKeys;
for(i=63236;i<=63242;i++){
_561[i]="KEY_F"+(i-63236+1);
}
})();
MochiKit.Signal._specialKeys={8:"KEY_BACKSPACE",9:"KEY_TAB",12:"KEY_NUM_PAD_CLEAR",13:"KEY_ENTER",16:"KEY_SHIFT",17:"KEY_CTRL",18:"KEY_ALT",19:"KEY_PAUSE",20:"KEY_CAPS_LOCK",27:"KEY_ESCAPE",32:"KEY_SPACEBAR",33:"KEY_PAGE_UP",34:"KEY_PAGE_DOWN",35:"KEY_END",36:"KEY_HOME",37:"KEY_ARROW_LEFT",38:"KEY_ARROW_UP",39:"KEY_ARROW_RIGHT",40:"KEY_ARROW_DOWN",44:"KEY_PRINT_SCREEN",45:"KEY_INSERT",46:"KEY_DELETE",59:"KEY_SEMICOLON",91:"KEY_WINDOWS_LEFT",92:"KEY_WINDOWS_RIGHT",93:"KEY_SELECT",106:"KEY_NUM_PAD_ASTERISK",107:"KEY_NUM_PAD_PLUS_SIGN",109:"KEY_NUM_PAD_HYPHEN-MINUS",110:"KEY_NUM_PAD_FULL_STOP",111:"KEY_NUM_PAD_SOLIDUS",144:"KEY_NUM_LOCK",145:"KEY_SCROLL_LOCK",186:"KEY_SEMICOLON",187:"KEY_EQUALS_SIGN",188:"KEY_COMMA",189:"KEY_HYPHEN-MINUS",190:"KEY_FULL_STOP",191:"KEY_SOLIDUS",192:"KEY_GRAVE_ACCENT",219:"KEY_LEFT_SQUARE_BRACKET",220:"KEY_REVERSE_SOLIDUS",221:"KEY_RIGHT_SQUARE_BRACKET",222:"KEY_APOSTROPHE"};
(function(){
var _562=MochiKit.Signal._specialKeys;
for(var i=48;i<=57;i++){
_562[i]="KEY_"+(i-48);
}
for(i=65;i<=90;i++){
_562[i]="KEY_"+String.fromCharCode(i);
}
for(i=96;i<=105;i++){
_562[i]="KEY_NUM_PAD_"+(i-96);
}
for(i=112;i<=123;i++){
_562[i]="KEY_F"+(i-112+1);
}
})();
MochiKit.Signal.Ident=function(_564){
this.source=_564.source;
this.signal=_564.signal;
this.listener=_564.listener;
this.isDOM=_564.isDOM;
this.objOrFunc=_564.objOrFunc;
this.funcOrStr=_564.funcOrStr;
this.connected=_564.connected;
};
MochiKit.Signal.Ident.prototype={};
MochiKit.Base.update(MochiKit.Signal,{__repr__:function(){
return "["+this.NAME+" "+this.VERSION+"]";
},toString:function(){
return this.__repr__();
},_unloadCache:function(){
var self=MochiKit.Signal;
var _566=self._observers;
for(var i=0;i<_566.length;i++){
if(_566[i].signal!=="onload"&&_566[i].signal!=="onunload"){
self._disconnect(_566[i]);
}
}
},_listener:function(src,sig,func,obj,_56c){
var self=MochiKit.Signal;
var E=self.Event;
if(!_56c){
if(typeof (func.im_self)=="undefined"){
return MochiKit.Base.bindLate(func,obj);
}else{
return func;
}
}
obj=obj||src;
if(typeof (func)=="string"){
if(sig==="onload"||sig==="onunload"){
return function(_56f){
obj[func].apply(obj,[new E(src,_56f)]);
var _570=new MochiKit.Signal.Ident({source:src,signal:sig,objOrFunc:obj,funcOrStr:func});
MochiKit.Signal._disconnect(_570);
};
}else{
return function(_571){
obj[func].apply(obj,[new E(src,_571)]);
};
}
}else{
if(sig==="onload"||sig==="onunload"){
return function(_572){
func.apply(obj,[new E(src,_572)]);
var _573=new MochiKit.Signal.Ident({source:src,signal:sig,objOrFunc:func});
MochiKit.Signal._disconnect(_573);
};
}else{
return function(_574){
func.apply(obj,[new E(src,_574)]);
};
}
}
},_browserAlreadyHasMouseEnterAndLeave:function(){
return /MSIE/.test(navigator.userAgent);
},_browserLacksMouseWheelEvent:function(){
return /Gecko\//.test(navigator.userAgent);
},_mouseEnterListener:function(src,sig,func,obj){
var E=MochiKit.Signal.Event;
return function(_57a){
var e=new E(src,_57a);
try{
e.relatedTarget().nodeName;
}
catch(err){
return;
}
e.stop();
if(MochiKit.DOM.isChildNode(e.relatedTarget(),src)){
return;
}
e.type=function(){
return sig;
};
if(typeof (func)=="string"){
return obj[func].apply(obj,[e]);
}else{
return func.apply(obj,[e]);
}
};
},_getDestPair:function(_57c,_57d){
var obj=null;
var func=null;
if(typeof (_57d)!="undefined"){
obj=_57c;
func=_57d;
if(typeof (_57d)=="string"){
if(typeof (_57c[_57d])!="function"){
throw new Error("'funcOrStr' must be a function on 'objOrFunc'");
}
}else{
if(typeof (_57d)!="function"){
throw new Error("'funcOrStr' must be a function or string");
}
}
}else{
if(typeof (_57c)!="function"){
throw new Error("'objOrFunc' must be a function if 'funcOrStr' is not given");
}else{
func=_57c;
}
}
return [obj,func];
},connect:function(src,sig,_582,_583){
src=MochiKit.DOM.getElement(src);
var self=MochiKit.Signal;
if(typeof (sig)!="string"){
throw new Error("'sig' must be a string");
}
var _585=self._getDestPair(_582,_583);
var obj=_585[0];
var func=_585[1];
if(typeof (obj)=="undefined"||obj===null){
obj=src;
}
var _588=!!(src.addEventListener||src.attachEvent);
if(_588&&(sig==="onmouseenter"||sig==="onmouseleave")&&!self._browserAlreadyHasMouseEnterAndLeave()){
var _589=self._mouseEnterListener(src,sig.substr(2),func,obj);
if(sig==="onmouseenter"){
sig="onmouseover";
}else{
sig="onmouseout";
}
}else{
if(_588&&sig=="onmousewheel"&&self._browserLacksMouseWheelEvent()){
var _589=self._listener(src,sig,func,obj,_588);
sig="onDOMMouseScroll";
}else{
var _589=self._listener(src,sig,func,obj,_588);
}
}
if(src.addEventListener){
src.addEventListener(sig.substr(2),_589,false);
}else{
if(src.attachEvent){
src.attachEvent(sig,_589);
}
}
var _58a=new MochiKit.Signal.Ident({source:src,signal:sig,listener:_589,isDOM:_588,objOrFunc:_582,funcOrStr:_583,connected:true});
self._observers.push(_58a);
if(!_588&&typeof (src.__connect__)=="function"){
var args=MochiKit.Base.extend([_58a],arguments,1);
src.__connect__.apply(src,args);
}
return _58a;
},_disconnect:function(_58c){
if(!_58c.connected){
return;
}
_58c.connected=false;
var src=_58c.source;
var sig=_58c.signal;
var _58f=_58c.listener;
if(!_58c.isDOM){
if(typeof (src.__disconnect__)=="function"){
src.__disconnect__(_58c,sig,_58c.objOrFunc,_58c.funcOrStr);
}
return;
}
if(src.removeEventListener){
src.removeEventListener(sig.substr(2),_58f,false);
}else{
if(src.detachEvent){
src.detachEvent(sig,_58f);
}else{
throw new Error("'src' must be a DOM element");
}
}
},disconnect:function(_590){
var self=MochiKit.Signal;
var _592=self._observers;
var m=MochiKit.Base;
if(arguments.length>1){
var src=MochiKit.DOM.getElement(arguments[0]);
var sig=arguments[1];
var obj=arguments[2];
var func=arguments[3];
for(var i=_592.length-1;i>=0;i--){
var o=_592[i];
if(o.source===src&&o.signal===sig&&o.objOrFunc===obj&&o.funcOrStr===func){
self._disconnect(o);
if(!self._lock){
_592.splice(i,1);
}else{
self._dirty=true;
}
return true;
}
}
}else{
var idx=m.findIdentical(_592,_590);
if(idx>=0){
self._disconnect(_590);
if(!self._lock){
_592.splice(idx,1);
}else{
self._dirty=true;
}
return true;
}
}
return false;
},disconnectAllTo:function(_59b,_59c){
var self=MochiKit.Signal;
var _59e=self._observers;
var _59f=self._disconnect;
var _5a0=self._lock;
var _5a1=self._dirty;
if(typeof (_59c)==="undefined"){
_59c=null;
}
for(var i=_59e.length-1;i>=0;i--){
var _5a3=_59e[i];
if(_5a3.objOrFunc===_59b&&(_59c===null||_5a3.funcOrStr===_59c)){
_59f(_5a3);
if(_5a0){
_5a1=true;
}else{
_59e.splice(i,1);
}
}
}
self._dirty=_5a1;
},disconnectAll:function(src,sig){
src=MochiKit.DOM.getElement(src);
var m=MochiKit.Base;
var _5a7=m.flattenArguments(m.extend(null,arguments,1));
var self=MochiKit.Signal;
var _5a9=self._disconnect;
var _5aa=self._observers;
var i,_5ac;
var _5ad=self._lock;
var _5ae=self._dirty;
if(_5a7.length===0){
for(i=_5aa.length-1;i>=0;i--){
_5ac=_5aa[i];
if(_5ac.source===src){
_5a9(_5ac);
if(!_5ad){
_5aa.splice(i,1);
}else{
_5ae=true;
}
}
}
}else{
var sigs={};
for(i=0;i<_5a7.length;i++){
sigs[_5a7[i]]=true;
}
for(i=_5aa.length-1;i>=0;i--){
_5ac=_5aa[i];
if(_5ac.source===src&&_5ac.signal in sigs){
_5a9(_5ac);
if(!_5ad){
_5aa.splice(i,1);
}else{
_5ae=true;
}
}
}
}
self._dirty=_5ae;
},signal:function(src,sig){
var self=MochiKit.Signal;
var _5b3=self._observers;
src=MochiKit.DOM.getElement(src);
var args=MochiKit.Base.extend(null,arguments,2);
var _5b5=[];
self._lock=true;
for(var i=0;i<_5b3.length;i++){
var _5b7=_5b3[i];
if(_5b7.source===src&&_5b7.signal===sig&&_5b7.connected){
try{
_5b7.listener.apply(src,args);
}
catch(e){
_5b5.push(e);
}
}
}
self._lock=false;
if(self._dirty){
self._dirty=false;
for(var i=_5b3.length-1;i>=0;i--){
if(!_5b3[i].connected){
_5b3.splice(i,1);
}
}
}
if(_5b5.length==1){
throw _5b5[0];
}else{
if(_5b5.length>1){
var e=new Error("Multiple errors thrown in handling 'sig', see errors property");
e.errors=_5b5;
throw e;
}
}
}});
MochiKit.Signal.EXPORT_OK=[];
MochiKit.Signal.EXPORT=["connect","disconnect","signal","disconnectAll","disconnectAllTo"];
MochiKit.Signal.__new__=function(win){
var m=MochiKit.Base;
this._document=document;
this._window=win;
this._lock=false;
this._dirty=false;
try{
this.connect(window,"onunload",this._unloadCache);
}
catch(e){
}
this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
m.nameFunctions(this);
};
MochiKit.Signal.__new__(this);
if(MochiKit.__export__){
connect=MochiKit.Signal.connect;
disconnect=MochiKit.Signal.disconnect;
disconnectAll=MochiKit.Signal.disconnectAll;
signal=MochiKit.Signal.signal;
}
MochiKit.Base._exportSymbols(this,MochiKit.Signal);
if(typeof (MochiKit)=="undefined"){
MochiKit={};
}
if(typeof (MochiKit.MochiKit)=="undefined"){
MochiKit.MochiKit={};
}
MochiKit.MochiKit.NAME="MochiKit.MochiKit";
MochiKit.MochiKit.VERSION="1.4.2";
MochiKit.MochiKit.__repr__=function(){
return "["+this.NAME+" "+this.VERSION+"]";
};
MochiKit.MochiKit.toString=function(){
return this.__repr__();
};
MochiKit.MochiKit.SUBMODULES=["Base","Iter","Logging","DateTime","Format","Async","DOM","Selector","Style","LoggingPane","Color","Signal","Position","Visual","DragAndDrop","Sortable"];
if(typeof (JSAN)!="undefined"||typeof (dojo)!="undefined"){
if(typeof (dojo)!="undefined"){
dojo.provide("MochiKit.MochiKit");
(function(lst){
for(var i=0;i<lst.length;i++){
dojo.require("MochiKit."+lst[i]);
}
})(MochiKit.MochiKit.SUBMODULES);
}
if(typeof (JSAN)!="undefined"){
(function(lst){
for(var i=0;i<lst.length;i++){
JSAN.use("MochiKit."+lst[i],[]);
}
})(MochiKit.MochiKit.SUBMODULES);
}
(function(){
var _823=MochiKit.Base.extend;
var self=MochiKit.MochiKit;
var _825=self.SUBMODULES;
var _826=[];
var _827=[];
var _828={};
var i,k,m,all;
for(i=0;i<_825.length;i++){
m=MochiKit[_825[i]];
_823(_826,m.EXPORT);
_823(_827,m.EXPORT_OK);
for(k in m.EXPORT_TAGS){
_828[k]=_823(_828[k],m.EXPORT_TAGS[k]);
}
all=m.EXPORT_TAGS[":all"];
if(!all){
all=_823(null,m.EXPORT,m.EXPORT_OK);
}
var j;
for(j=0;j<all.length;j++){
k=all[j];
self[k]=m[k];
}
}
self.EXPORT=_826;
self.EXPORT_OK=_827;
self.EXPORT_TAGS=_828;
}());
}else{
if(typeof (MochiKit.__compat__)=="undefined"){
MochiKit.__compat__=true;
}
(function(){
if(typeof (document)=="undefined"){
return;
}
var _82e=document.getElementsByTagName("script");
var _82f="http://www.w3.org/1999/xhtml";
var _830="http://www.w3.org/2000/svg";
var _831="http://www.w3.org/1999/xlink";
var _832="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
var base=null;
var _834=null;
var _835={};
var i;
var src;
for(i=0;i<_82e.length;i++){
src=null;
switch(_82e[i].namespaceURI){
case _830:
src=_82e[i].getAttributeNS(_831,"href");
break;
default:
src=_82e[i].getAttribute("src");
break;
}
if(!src){
continue;
}
_835[src]=true;
if(src.match(/MochiKit.js(\?.*)?$/)){
base=src.substring(0,src.lastIndexOf("MochiKit.js"));
_834=_82e[i];
}
}
if(base===null){
return;
}
var _838=MochiKit.MochiKit.SUBMODULES;
for(var i=0;i<_838.length;i++){
if(MochiKit[_838[i]]){
continue;
}
var uri=base+_838[i]+".js";
if(uri in _835){
continue;
}
if(_834.namespaceURI==_830||_834.namespaceURI==_832){
var s=document.createElementNS(_834.namespaceURI,"script");
s.setAttribute("id","MochiKit_"+base+_838[i]);
if(_834.namespaceURI==_830){
s.setAttributeNS(_831,"href",uri);
}else{
s.setAttribute("src",uri);
}
s.setAttribute("type","application/x-javascript");
_834.parentNode.appendChild(s);
}else{
document.write("<"+_834.nodeName+" src=\""+uri+"\" type=\"text/javascript\"></script>");
}
}
})();
}/***

    PlotKit.PlotKit 0.9.2 : PACKED VERSION

    THIS FILE IS AUTOMATICALLY GENERATED.  If creating patches, please
    diff against the source tree, not this file.

    For more information, <http://www.liquidx.net/plotkit/>.
    
    Copyright (c) 2006. Alastair Tse.
	Modified 2010 [Fixed Pie radius issue] by Dzwiedz [at] yafud [dot] pl
***/

try{
if(typeof (MochiKit.Base)=="undefined"||typeof (MochiKit.DOM)=="undefined"||typeof (MochiKit.Color)=="undefined"||typeof (MochiKit.Format)=="undefined"){
throw "";
}
}
catch(e){
throw "PlotKit depends on MochiKit.{Base,Color,DOM,Format}";
}
MochiKit.Base.update(MochiKit.Color.Color.prototype,{asFillColor:function(){
return this.lighterColorWithLevel(0.3);
},asStrokeColor:function(){
return this.darkerColorWithLevel(0.1);
},asPointColor:function(){
return this.lighterColorWithLevel(0.1);
},asTransparent:function(){
return this.colorWithAlpha(0.1);
}});
if(typeof (PlotKit)=="undefined"){
PlotKit={};
}
PlotKit.NAME="PlotKit";
PlotKit.VERSION="0.9.2";
PlotKit.__repr__=function(){
return "["+this.NAME+" "+this.VERSION+"]";
};
PlotKit.toString=function(){
return this.__repr__();
};
if(typeof (PlotKit.Base)=="undefined"){
PlotKit.Base={};
}
PlotKit.Base.NAME="PlotKit.Base";
PlotKit.Base.VERSION=PlotKit.VERSION;
PlotKit.Base.__repr__=function(){
return "["+this.NAME+" "+this.VERSION+"]";
};
PlotKit.Base.toString=function(){
return this.__repr__();
};
PlotKit.Base.usingPrototype=function(){
try{
return (typeof (Object.extend)=="function");
}
catch(e){
return false;
}
};
MochiKit.Base.update(PlotKit.Base,{roundInterval:function(_1,_2,_3){
var _4=MochiKit.Format.roundToFixed;
var _5=_1/_2;
return parseFloat(_4(_5,_3));
},collapse:function(_6){
var m=MochiKit.Base;
var _8=new Array();
for(var i=0;i<_6.length;i++){
_8=m.concat(_8,_6[i]);
}
if(PlotKit.Base.usingPrototype()){
delete _8.extend;
delete _8.from;
delete _8.inspect;
}
return _8;
},uniq:function(_10){
var m=MochiKit.Base;
if(!m.isArrayLike(_10)||(_10.length<1)){
return new Array();
}
var _11=new Array();
var _12=_10[0];
_11.push(_10[0]);
for(var i=1;i<_10.length;i++){
if(m.compare(_10[i],_12)!=0){
_12=_10[i];
_11.push(_10[i]);
}
}
return _11;
},colorScheme:function(){
var mb=MochiKit.Base;
var mc=MochiKit.Color;
var _15=["red","orange","yellow","green","cyan","blue","purple","magenta"];
var _16=function(_17){
return mc.Color[_17+"Color"]();
};
return mb.map(_16,_15);
},baseDarkPrimaryColors:function(){
var _18=MochiKit.Color.Color.fromHexString;
return [_18("#ad3f40"),_18("#ddac2c"),_18("#dfdd0c"),_18("#5276c4"),_18("#739c5a")];
},basePrimaryColors:function(){
var _19=MochiKit.Color.Color.fromHexString;
return [_19("#d24c4d"),_19("#f2b32f"),_19("#ece90e"),_19("#5d83da"),_19("#78a15d")];
},baseBlueColors:function(){
var _20=MochiKit.Color.Color.fromHexString;
return [_20("#4b6b94"),_20("#5d81b4"),_20("#acbad2")];
},palette:function(_21,_22,_23,_24){
var _25=MochiKit.Base.isUndefinedOrNull;
var _26=new Array();
if(_25(_24)){
_24=0.1;
}
if(_25(_23)){
_23=0.4;
}
if(_25(_22)){
_22=-0.2;
}
var _27=_22;
while(_27<=_23){
_26.push(_27);
_27+=_24;
}
var _28=function(_29,_30){
return _29.lighterColorWithLevel(_30);
};
return MochiKit.Base.map(MochiKit.Base.partial(_28,_21),_26);
},excanvasSupported:function(){
if(/MSIE/.test(navigator.userAgent)&&!window.opera){
return true;
}
return false;
},findPosX:function(obj){
var _32=0;
if(obj.offsetParent){
while(obj.offsetParent){
_32+=obj.offsetLeft;
obj=obj.offsetParent;
}
}else{
if(obj.x){
_32+=obj.x;
}
}
return _32;
},findPosY:function(obj){
var _33=0;
if(obj.offsetParent){
while(obj.offsetParent){
_33+=obj.offsetTop;
obj=obj.offsetParent;
}
}else{
if(obj.y){
_33+=obj.y;
}
}
return _33;
},isFuncLike:function(obj){
return (typeof (obj)=="function");
}});
PlotKit.Base.map=function(fn,lst){
if(PlotKit.Base.usingPrototype()){
var _36=[];
for(var x in lst){
if(typeof (lst[x])=="function"){
continue;
}
_36.push(fn(lst[x]));
}
return _36;
}else{
return MochiKit.Base.map(fn,lst);
}
};
PlotKit.Base.items=function(lst){
if(PlotKit.Base.usingPrototype()){
var _38=[];
for(var x in lst){
if(typeof (lst[x])=="function"){
continue;
}
_38.push([x,lst[x]]);
}
return _38;
}else{
return MochiKit.Base.items(lst);
}
};
PlotKit.Base.keys=function(lst){
if(PlotKit.Base.usingPrototype()){
var _39=[];
for(var x in lst){
if(typeof (lst[x])=="function"){
continue;
}
_39.push(x);
}
return _39;
}else{
return MochiKit.Base.keys(lst);
}
};
PlotKit.Base.baseColors=function(){
var _40=MochiKit.Color.Color.fromHexString;
return [_40("#476fb2"),_40("#be2c2b"),_40("#85b730"),_40("#734a99"),_40("#26a1c5"),_40("#fb8707"),_40("#000000")];
};
PlotKit.Base.googleColors=function(){
var _41=MochiKit.Color.Color.fromHexString;
return [_41("#0066dd"),_41("#dc3912"),_41("#ff9900"),_41("#008000"),_41("#4942cc"),_41("#990099")];
};
PlotKit.Base.googleStyle=function(){
var r={"colorScheme":PlotKit.Base.googleColors(),"backgroundColor":MochiKit.Color.Color.whiteColor(),"strokeWidth":2,"axisLineWidth":2,"strokeColor":null,"strokeColorTransform":null,"fillColorTransform":"asTransparent","shouldFill":true};
return r;
};
PlotKit.Base.officeBaseStyle={"axisLineWidth":2,"axisLabelColor":MochiKit.Color.Color.grayColor(),"axisLineColor":MochiKit.Color.Color.whiteColor(),"padding":{top:5,bottom:10,left:30,right:30}};
MochiKit.Base.update(PlotKit.Base,{officeBlue:function(){
var r={"colorScheme":PlotKit.Base.palette(PlotKit.Base.baseColors()[0]),"backgroundColor":PlotKit.Base.baseColors()[0].lighterColorWithLevel(0.45)};
MochiKit.Base.update(r,PlotKit.Base.officeBaseStyle);
return r;
},officeRed:function(){
var r={"colorScheme":PlotKit.Base.palette(PlotKit.Base.baseColors()[1]),"backgroundColor":PlotKit.Base.baseColors()[1].lighterColorWithLevel(0.5)};
MochiKit.Base.update(r,PlotKit.Base.officeBaseStyle);
return r;
},officeGreen:function(){
var r={"colorScheme":PlotKit.Base.palette(PlotKit.Base.baseColors()[2]),"backgroundColor":PlotKit.Base.baseColors()[2].lighterColorWithLevel(0.5)};
MochiKit.Base.update(r,PlotKit.Base.officeBaseStyle);
return r;
},officePurple:function(){
var r={"colorScheme":PlotKit.Base.palette(PlotKit.Base.baseColors()[3]),"backgroundColor":PlotKit.Base.baseColors()[3].lighterColorWithLevel(0.5)};
MochiKit.Base.update(r,PlotKit.Base.officeBaseStyle);
return r;
},officeCyan:function(){
var r={"colorScheme":PlotKit.Base.palette(PlotKit.Base.baseColors()[4]),"backgroundColor":PlotKit.Base.baseColors()[4].lighterColorWithLevel(0.5)};
MochiKit.Base.update(r,PlotKit.Base.officeBaseStyle);
return r;
},officeOrange:function(){
var r={"colorScheme":PlotKit.Base.palette(PlotKit.Base.baseColors()[5]),"backgroundColor":PlotKit.Base.baseColors()[5].lighterColorWithLevel(0.4)};
MochiKit.Base.update(r,PlotKit.Base.officeBaseStyle);
return r;
},officeBlack:function(){
var r={"colorScheme":PlotKit.Base.palette(PlotKit.Base.baseColors()[6],0,0.6),"backgroundColor":PlotKit.Base.baseColors()[6].lighterColorWithLevel(0.9)};
MochiKit.Base.update(r,PlotKit.Base.officeBaseStyle);
return r;
}});
PlotKit.Base.EXPORT=["baseColors","collapse","colorScheme","findPosX","findPosY","officeBaseStyle","officeBlue","officeRed","officeGreen","officePurple","officeCyan","officeOrange","officeBlack","roundInterval","uniq","isFuncLike","excanvasSupported"];
PlotKit.Base.EXPORT_OK=[];
PlotKit.Base.__new__=function(){
var m=MochiKit.Base;
m.nameFunctions(this);
this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
};
PlotKit.Base.__new__();
MochiKit.Base._exportSymbols(this,PlotKit.Base);
try{
if(typeof (PlotKit.Base)=="undefined"){
throw "";
}
}
catch(e){
throw "PlotKit.Layout depends on MochiKit.{Base,Color,DOM,Format} and PlotKit.Base";
}
if(typeof (PlotKit.Layout)=="undefined"){
PlotKit.Layout={};
}
PlotKit.Layout.NAME="PlotKit.Layout";
PlotKit.Layout.VERSION=PlotKit.VERSION;
PlotKit.Layout.__repr__=function(){
return "["+this.NAME+" "+this.VERSION+"]";
};
PlotKit.Layout.toString=function(){
return this.__repr__();
};
PlotKit.Layout.valid_styles=["bar","line","pie","point"];
PlotKit.Layout=function(_43,_44){
this.options={"barWidthFillFraction":0.75,"barOrientation":"vertical","xOriginIsZero":true,"yOriginIsZero":true,"xAxis":null,"yAxis":null,"xTicks":null,"yTicks":null,"xNumberOfTicks":10,"yNumberOfTicks":5,"xTickPrecision":1,"yTickPrecision":1,"pieRadius":0.4};
this.style=_43;
MochiKit.Base.update(this.options,_44?_44:{});
if(!MochiKit.Base.isUndefinedOrNull(this.options.xAxis)){
this.minxval=this.options.xAxis[0];
this.maxxval=this.options.xAxis[1];
this.xscale=this.maxxval-this.minxval;
}else{
this.minxval=0;
this.maxxval=null;
this.xscale=null;
}
if(!MochiKit.Base.isUndefinedOrNull(this.options.yAxis)){
this.minyval=this.options.yAxis[0];
this.maxyval=this.options.yAxis[1];
this.yscale=this.maxyval-this.minyval;
}else{
this.minyval=0;
this.maxyval=null;
this.yscale=null;
}
this.bars=new Array();
this.points=new Array();
this.slices=new Array();
this.xticks=new Array();
this.yticks=new Array();
this.datasets=new Array();
this.minxdelta=0;
this.xrange=1;
this.yrange=1;
this.hitTestCache={x2maxy:null};
};
PlotKit.Layout.prototype.addDataset=function(_45,_46){
this.datasets[_45]=_46;
};
PlotKit.Layout.prototype.removeDataset=function(_47,_48){
delete this.datasets[_47];
};
PlotKit.Layout.prototype.addDatasetFromTable=function(_49,_50,_51,_52,_53){
var _54=MochiKit.Base.isUndefinedOrNull;
var _55=MochiKit.DOM.scrapeText;
var _56=MochiKit.Format.strip;
if(_54(_51)){
_51=0;
}
if(_54(_52)){
_52=1;
}
if(_54(_53)){
_53=-1;
}
var _57=_50.tBodies[0].rows;
var _58=new Array();
var _59=new Array();
if(!_54(_57)){
for(var i=0;i<_57.length;i++){
_58.push([parseFloat(_56(_55(_57[i].cells[_51]))),parseFloat(_56(_55(_57[i].cells[_52])))]);
if(_53>=0){
_59.push({v:parseFloat(_56(_55(_57[i].cells[_51]))),label:_56(_55(_57[i].cells[_53]))});
}
}
this.addDataset(_49,_58);
if(_53>=0){
this.options.xTicks=_59;
}
return true;
}
return false;
};
PlotKit.Layout.prototype.evaluate=function(){
this._evaluateLimits();
this._evaluateScales();
if(this.style=="bar"){
if(this.options.barOrientation=="horizontal"){
this._evaluateHorizBarCharts();
}else{
this._evaluateBarCharts();
}
this._evaluateBarTicks();
}else{
if(this.style=="pie"){
this._evaluatePieCharts();
this._evaluatePieTicks();
}else{
this._evaluateLineCharts();
this._evaluateLineTicks();
}
}
};
PlotKit.Layout.prototype.hitTest=function(x,y){
var f=MochiKit.Format.twoDigitFloat;
if((this.style=="bar")&&this.bars&&(this.bars.length>0)){
for(var i=0;i<this.bars.length;i++){
var bar=this.bars[i];
if((x>=bar.x)&&(x<=bar.x+bar.w)&&(y>=bar.y)&&(y-bar.y<=bar.h)){
return bar;
}
}
}else{
if(this.style=="line"){
if(this.hitTestCache.x2maxy==null){
this._regenerateHitTestCache();
}
var _63=x/this.xscale;
var _64=this.hitTestCache.xvalues;
var _65=null;
var _66=null;
for(var i=1;i<_64.length;i++){
if(_64[i]>_63){
_65=_64[i-1];
_66=_64[i];
break;
}
}
if((_65!=null)){
var _67=this.hitTestCache.x2maxy[_65];
var _68=this.hitTestCache.x2maxy[_66];
var _69=(1-y)/this.yscale;
var _70=(_68-_67)/(_66-_65);
var _71=_67+_70*(_63-_65);
if(_71>=_69){
var obj={xval:_63,yval:_69,xafter:_66,yafter:_68,xbefore:_65,ybefore:_67,yprojected:_71};
return obj;
}
}
}else{
if(this.style=="pie"){
x = (x - 0.1) * 1.0 / (this.options.pieRadius * 2);
y = (y - 0.1) * 1.0 / (this.options.pieRadius * 2);
var _72 = Math.sqrt((y - 0.5) * (y - 0.5) + (x - 0.5) * (x - 0.5));
if (_72 > 0.5) {return null;}
var _73 = 0;
if(y<0.5&&x<0.5){
_73=Math.atan2(y-0.5,x-0.5)+5*Math.PI/2;
}else{
_73=Math.atan2(y-0.5,x-0.5)+Math.PI/2;
}
for(var i=0;i<this.slices.length;i++){
var _74=this.slices[i];
if(_74.startAngle<_73&&_74.endAngle>=_73){
return _74;
}
}
}
}
}
return null;
};
PlotKit.Layout.prototype.rectForX=function(x){
return null;
};
PlotKit.Layout.prototype.angleRangeForX=function(x){
return null;
};
PlotKit.Layout.prototype._evaluateLimits=function(){
var map=PlotKit.Base.map;
var _76=PlotKit.Base.items;
var _77=MochiKit.Base.itemgetter;
var _78=PlotKit.Base.collapse;
var _79=MochiKit.Base.listMin;
var _80=MochiKit.Base.listMax;
var _81=MochiKit.Base.isUndefinedOrNull;
var all=_78(map(_77(1),_76(this.datasets)));
if(_81(this.options.xAxis)){
if(this.options.xOriginIsZero){
this.minxval=0;
}else{
this.minxval=_79(map(parseFloat,map(_77(0),all)));
}
this.maxxval=_80(map(parseFloat,map(_77(0),all)));
}else{
this.minxval=this.options.xAxis[0];
this.maxxval=this.options.xAxis[1];
this.xscale=this.maxval-this.minxval;
}
if(_81(this.options.yAxis)){
if(this.options.yOriginIsZero){
this.minyval=0;
}else{
this.minyval=_79(map(parseFloat,map(_77(1),all)));
}
this.maxyval=_80(map(parseFloat,map(_77(1),all)));
}else{
this.minyval=this.options.yAxis[0];
this.maxyval=this.options.yAxis[1];
this.yscale=this.maxyval-this.minyval;
}
};
PlotKit.Layout.prototype._evaluateScales=function(){
var _83=MochiKit.Base.isUndefinedOrNull;
this.xrange=this.maxxval-this.minxval;
if(this.xrange==0){
this.xscale=1;
}else{
this.xscale=1/this.xrange;
}
this.yrange=this.maxyval-this.minyval;
if(this.yrange==0){
this.yscale=1;
}else{
this.yscale=1/this.yrange;
}
};
PlotKit.Layout.prototype._uniqueXValues=function(_84){
var _85=PlotKit.Base.collapse;
var map=PlotKit.Base.map;
var _86=PlotKit.Base.uniq;
var _87=MochiKit.Base.itemgetter;
var _88=PlotKit.Base.items;
var _89=map(parseFloat,map(_87(0),_85(map(_87(1),_88(this.datasets)))));
try{
_89=MochiKit.Base.concat(_89,_84);
}
catch(e){
}
_89.sort(MochiKit.Base.compare);
return _86(_89);
};
PlotKit.Layout.prototype._barChartXDelta=function(){
var _90=(this.xrange==0)?this.maxxval:this.xrange;
var _91=this._uniqueXValues([this.minxval,this.maxxval]);
for(var i=1;i<_91.length;i++){
_90=Math.min(Math.abs(_91[i]-_91[i-1]),_90);
}
return _90;
};
PlotKit.Layout.prototype._evaluateBarCharts=function(){
var _92=PlotKit.Base.items;
var _93=_92(this.datasets).length;
var _94=this._barChartXDelta();
this.xscale=1/(this.xrange+_94);
var _95=_94*this.xscale*this.options.barWidthFillFraction;
var _96=_95/_93;
var _97=(_94*this.xscale-_95)/2;
this.minxdelta=_94;
this.bars=new Array();
var i=0;
for(var _98 in this.datasets){
var _99=this.datasets[_98];
if(PlotKit.Base.isFuncLike(_99)){
continue;
}
for(var j=0;j<_99.length;j++){
var item=_99[j];
var rect={x:((parseFloat(item[0])-this.minxval)*this.xscale)+(i*_96)+_97,y:1-((parseFloat(item[1])-this.minyval)*this.yscale),w:_96,h:((parseFloat(item[1])-this.minyval)*this.yscale),xval:parseFloat(item[0]),yval:parseFloat(item[1]),name:_98};
if((rect.x>=0)&&(rect.x<=1)&&(rect.y>=0)&&(rect.y<=1)){
this.bars.push(rect);
}
}
i++;
}
};
PlotKit.Layout.prototype._evaluateHorizBarCharts=function(){
var _103=PlotKit.Base.items;
var _104=_103(this.datasets).length;
var _105=this._barChartXDelta();
this.xscale=1/(this.xrange+_105);
var _106=_105*this.xscale*this.options.barWidthFillFraction;
var _107=_106/_104;
var _108=(_105*this.xscale-_106)/2;
this.minxdelta=_105;
this.bars=new Array();
var i=0;
for(var _109 in this.datasets){
var _110=this.datasets[_109];
if(PlotKit.Base.isFuncLike(_110)){
continue;
}
for(var j=0;j<_110.length;j++){
var item=_110[j];
var rect={y:((parseFloat(item[0])-this.minxval)*this.xscale)+(i*_107)+_108,x:0,h:_107,w:((parseFloat(item[1])-this.minyval)*this.yscale),xval:parseFloat(item[0]),yval:parseFloat(item[1]),name:_109};
if(rect.y<=0){
rect.y=0;
}
if(rect.y>=1){
rect.y=1;
}
if((rect.x>=0)&&(rect.x<=1)){
this.bars.push(rect);
}
}
i++;
}
};
PlotKit.Layout.prototype._evaluateLineCharts=function(){
var _111=PlotKit.Base.items;
var _112=_111(this.datasets).length;
this.points=new Array();
var i=0;
for(var _113 in this.datasets){
var _114=this.datasets[_113];
if(PlotKit.Base.isFuncLike(_114)){
continue;
}
if(this.style!="area"){
_114.sort(function(a,b){
return MochiKit.Base.compare(parseFloat(a[0]),parseFloat(b[0]));
});
}
for(var j=0;j<_114.length;j++){
var item=_114[j];
var _117={x:((parseFloat(item[0])-this.minxval)*this.xscale),y:1-((parseFloat(item[1])-this.minyval)*this.yscale),xval:parseFloat(item[0]),yval:parseFloat(item[1]),name:_113};
if(_117.y<=0){
_117.y=0;
}
if(_117.y>=1){
_117.y=1;
}
if((_117.x>=0)&&(_117.x<=1)){
this.points.push(_117);
}
}
i++;
}
};
PlotKit.Layout.prototype._evaluatePieCharts=function(){
var map=PlotKit.Base.map;
var _118=PlotKit.Base.items;
var sum=MochiKit.Iter.sum;
var _120=MochiKit.Base.itemgetter;
var _121=_118(this.datasets).length;
var _122=_118(this.datasets)[0][1];
var _123=sum(map(_120(1),_122));
this.slices=new Array();
var _124=0;
for(var i=0;i<_122.length;i++){
var _125=_122[i][1]/_123;
var _126=_124*Math.PI*2;
var _127=(_124+_125)*Math.PI*2;
var _128={fraction:_125,xval:_122[i][0],yval:_122[i][1],startAngle:_126,endAngle:_127};
if(_122[i][1]!=0){
this.slices.push(_128);
}
_124+=_125;
}
};
PlotKit.Layout.prototype._evaluateLineTicksForXAxis=function(){
var _129=MochiKit.Base.isUndefinedOrNull;
if(this.options.xTicks){
this.xticks=new Array();
var _130=function(tick){
var _132=tick.label;
if(_129(_132)){
_132=tick.v.toString();
}
if(!_129(tick.tooltip)){
_132=MochiKit.DOM.SPAN({title:tick.tooltip},_132);
}
var pos=this.xscale*(tick.v-this.minxval);
if((pos>=0)&&(pos<=1)){
this.xticks.push([pos,_132]);
}
};
MochiKit.Iter.forEach(this.options.xTicks,MochiKit.Base.bind(_130,this));
}else{
if(this.options.xNumberOfTicks){
var _134=this._uniqueXValues();
var _135=this.xrange/this.options.xNumberOfTicks;
var _136=0;
this.xticks=new Array();
for(var i=0;i<=_134.length;i++){
if((_134[i]-this.minxval)>=(_136*_135)){
var pos=this.xscale*(_134[i]-this.minxval);
if((pos>1)||(pos<0)){
continue;
}
this.xticks.push([pos,_134[i]]);
_136++;
}
if(_136>this.options.xNumberOfTicks){
break;
}
}
}
}
};
PlotKit.Layout.prototype._evaluateLineTicksForYAxis=function(){
var _137=MochiKit.Base.isUndefinedOrNull;
if(this.options.yTicks){
this.yticks=new Array();
var _138=function(tick){
var _139=tick.label;
if(_137(_139)){
_139=tick.v.toString();
}
if(!_137(tick.tooltip)){
_139=MochiKit.DOM.SPAN({title:tick.tooltip},_139);
}
var pos=1-(this.yscale*(tick.v-this.minyval));
if((pos>=0)&&(pos<=1)){
this.yticks.push([pos,_139]);
}
};
MochiKit.Iter.forEach(this.options.yTicks,MochiKit.Base.bind(_138,this));
}else{
if(this.options.yNumberOfTicks){
this.yticks=new Array();
var _140=PlotKit.Base.roundInterval;
var prec=this.options.yTickPrecision;
var _142=_140(this.yrange,this.options.yNumberOfTicks,prec);
for(var i=0;i<=this.options.yNumberOfTicks;i++){
var yval=this.minyval+(i*_142);
var pos=1-((yval-this.minyval)*this.yscale);
if((pos>1)||(pos<0)){
continue;
}
this.yticks.push([pos,MochiKit.Format.roundToFixed(yval,prec)]);
}
}
}
};
PlotKit.Layout.prototype._evaluateLineTicks=function(){
this._evaluateLineTicksForXAxis();
this._evaluateLineTicksForYAxis();
};
PlotKit.Layout.prototype._evaluateBarTicks=function(){
this._evaluateLineTicks();
var _144=function(tick){
return [tick[0]+(this.minxdelta*this.xscale)/2,tick[1]];
};
this.xticks=MochiKit.Base.map(MochiKit.Base.bind(_144,this),this.xticks);
if(this.options.barOrientation=="horizontal"){
var _145=this.xticks;
this.xticks=this.yticks;
this.yticks=_145;
var _146=function(tick){
return [1-tick[0],tick[1]];
};
this.xticks=MochiKit.Base.map(_146,this.xticks);
}
};
PlotKit.Layout.prototype._evaluatePieTicks=function(){
var _147=MochiKit.Base.isUndefinedOrNull;
var _148=MochiKit.Format.numberFormatter("#%");
this.xticks=new Array();
if(this.options.xTicks){
var _149=new Array();
for(var i=0;i<this.slices.length;i++){
_149[this.slices[i].xval]=this.slices[i];
}
for(var i=0;i<this.options.xTicks.length;i++){
var tick=this.options.xTicks[i];
var _150=_149[tick.v];
var _151=tick.label;
if(_150){
if(_147(_151)){
_151=tick.v.toString();
}
if(this.options.pieValue=="value"){
_151+=" ("+_150.yval+")";
}else{
if(this.options.pieValue!="none"){
_151+=" ("+_148(_150.fraction)+")";
}
}
if(!_147(tick.tooltip)){
_151=MochiKit.DOM.SPAN({title:tick.tooltip},_151);
}
this.xticks.push([tick.v,_151]);
}
}
}else{
for(var i=0;i<this.slices.length;i++){
var _150=this.slices[i];
var _151=_150.xval+" ("+_148(_150.fraction)+")";
this.xticks.push([_150.xval,_151]);
}
}
};
PlotKit.Layout.prototype._regenerateHitTestCache=function(){
this.hitTestCache.xvalues=this._uniqueXValues();
this.hitTestCache.xlookup=new Array();
this.hitTestCache.x2maxy=new Array();
var _152=MochiKit.Base.listMax;
var _153=MochiKit.Base.itemgetter;
var map=MochiKit.Base.map;
var keys=MochiKit.Base.keys;
var _155=keys(this.datasets);
for(var i=0;i<_155.length;i++){
var _156=this.datasets[_155[i]];
for(var j=0;j<_156.length;j++){
var xval=_156[j][0];
var yval=_156[j][1];
if(this.hitTestCache.xlookup[xval]){
this.hitTestCache.xlookup[xval].push([yval,_155[i]]);
}else{
this.hitTestCache.xlookup[xval]=[[yval,_155[i]]];
}
}
}
for(var x in this.hitTestCache.xlookup){
var _158=this.hitTestCache.xlookup[x];
this.hitTestCache.x2maxy[x]=_152(map(_153(0),_158));
}
};
PlotKit.LayoutModule={};
PlotKit.LayoutModule.Layout=PlotKit.Layout;
PlotKit.LayoutModule.EXPORT=["Layout"];
PlotKit.LayoutModule.EXPORT_OK=[];
PlotKit.LayoutModule.__new__=function(){
var m=MochiKit.Base;
m.nameFunctions(this);
this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
};
PlotKit.LayoutModule.__new__();
MochiKit.Base._exportSymbols(this,PlotKit.LayoutModule);
try{
if((typeof (PlotKit.Base)=="undefined")||(typeof (PlotKit.Layout)=="undefined")){
throw "";
}
}
catch(e){
throw "PlotKit.Layout depends on MochiKit.{Base,Color,DOM,Format} and PlotKit.{Base,Layout}";
}
if(typeof (PlotKit.CanvasRenderer)=="undefined"){
PlotKit.CanvasRenderer={};
}
PlotKit.CanvasRenderer.NAME="PlotKit.CanvasRenderer";
PlotKit.CanvasRenderer.VERSION=PlotKit.VERSION;
PlotKit.CanvasRenderer.__repr__=function(){
return "["+this.NAME+" "+this.VERSION+"]";
};
PlotKit.CanvasRenderer.toString=function(){
return this.__repr__();
};
PlotKit.CanvasRenderer=function(_159,_160,_161){
if(arguments.length>0){
this.__init__(_159,_160,_161);
}
};
PlotKit.CanvasRenderer.prototype.__init__=function(_162,_163,_164){
var _165=MochiKit.Base.isUndefinedOrNull;
var _166=MochiKit.Color.Color;
this.options={"drawBackground":true,"backgroundColor":_166.whiteColor(),"padding":{left:30,right:30,top:5,bottom:10},"colorScheme":PlotKit.Base.palette(PlotKit.Base.baseColors()[0]),"strokeColor":null,"strokeColorTransform":"asStrokeColor","strokeWidth":0.5,"fillColorTransform":null,"shouldFill":true,"shouldStroke":true,"drawXAxis":true,"drawYAxis":true,"axisLineColor":_166.blackColor(),"axisLineWidth":0.5,"axisTickSize":3,"axisLabelColor":_166.blackColor(),"axisLabelFont":"Arial","axisLabelFontSize":9,"axisLabelWidth":50,"pieRadius":0.4,"enableEvents":true};
MochiKit.Base.update(this.options,_164?_164:{});
this.layout=_163;
this.element=MochiKit.DOM.getElement(_162);
this.container=this.element.parentNode;
this.isIE=PlotKit.Base.excanvasSupported();
if(this.isIE && (typeof G_vmlCanvasManager != 'undefined') && !_165(G_vmlCanvasManager)){
this.IEDelay=0.5;
this.maxTries=5;
this.renderDelay=null;
this.clearDelay=null;
this.element=G_vmlCanvasManager.initElement(this.element);
}
this.height=MochiKit.DOM.elementDimensions(this.element).h;
this.width=MochiKit.DOM.elementDimensions(this.element).w;
this.element.width=this.width;
this.element.height=this.height;
if(_165(this.element)){
throw "CanvasRenderer() - passed canvas is not found";
}
if(!this.isIE&&!(PlotKit.CanvasRenderer.isSupported(this.element))){
throw "CanvasRenderer() - Canvas is not supported.";
}
if(_165(this.container)||(this.container.nodeName.toLowerCase()!="div")){
throw "CanvasRenderer() - <canvas> needs to be enclosed in <div>";
}
this.xlabels=new Array();
this.ylabels=new Array();
this.isFirstRender=true;
this.area={x:this.options.padding.left,y:this.options.padding.top,w:this.width-this.options.padding.left-this.options.padding.right,h:this.height-this.options.padding.top-this.options.padding.bottom};
MochiKit.DOM.updateNodeAttributes(this.container,{"style":{"position":"relative","width":this.width+"px"}});
try{
this.event_isinside=null;
if(MochiKit.Signal&&this.options.enableEvents){
this._initialiseEvents();
}
}
catch(e){
}
};
PlotKit.CanvasRenderer.prototype.render=function(){
if(this.isIE){
try{
if(this.renderDelay){
this.renderDelay.cancel();
this.renderDelay=null;
}
var _167=this.element.getContext("2d");
}
catch(e){
this.isFirstRender=false;
if(this.maxTries-->0){
this.renderDelay=MochiKit.Async.wait(this.IEDelay);
this.renderDelay.addCallback(MochiKit.Base.bind(this.render,this));
}
return;
}
}
if(this.options.drawBackground){
this._renderBackground();
}
if(this.layout.style=="bar"){
this._renderBarChart();
this._renderBarAxis();
}else{
if(this.layout.style=="pie"){
this._renderPieChart();
this._renderPieAxis();
}else{
if(this.layout.style=="line"){
this._renderLineChart();
this._renderLineAxis();
}else{
if(this.layout.style=="point"){
this._renderLineAxis();
this._renderPointChart();
}else{
if(this.layout.style=="area"){
this._renderLineAxis();
this._renderAreaChart();
}
}
}
}
}
};
PlotKit.CanvasRenderer.prototype._renderBarChartWrap=function(data,_169){
var _170=this.element.getContext("2d");
var _171=this.options.colorScheme.length;
var _172=this.options.colorScheme;
var _173=MochiKit.Base.keys(this.layout.datasets);
var _174=_173.length;
for(var i=0;i<_174;i++){
var _175=_173[i];
var _176=_172[i%_171];
_170.save();
_170.fillStyle=this._fillColor(_176);
_170.strokeStyle=this._strokeColor(_176);
_170.lineWidth=this.options.strokeWidth;
var _177=function(obj){
if(obj.name==_175){
_169(_170,obj);
}
};
MochiKit.Iter.forEach(data,MochiKit.Base.bind(_177,this));
_170.restore();
}
};
PlotKit.CanvasRenderer.prototype._renderBarChart=function(){
var bind=MochiKit.Base.bind;
var _179=function(_180,bar){
var x=this.area.w*bar.x+this.area.x;
var y=this.area.h*bar.y+this.area.y;
var w=this.area.w*bar.w;
var h=this.area.h*bar.h;
if((w<1)||(h<1)){
return;
}
if(this.options.shouldFill){
_180.fillRect(x,y,w,h);
}
if(this.options.shouldStroke){
_180.strokeRect(x,y,w,h);
}
};
this._renderBarChartWrap(this.layout.bars,bind(_179,this));
};
PlotKit.CanvasRenderer.prototype._renderLineChart=function(){
var _183=this.element.getContext("2d");
var _184=this.options.colorScheme.length;
var _185=this.options.colorScheme;
var _186=MochiKit.Base.keys(this.layout.datasets);
var _187=_186.length;
var bind=MochiKit.Base.bind;
var _188=MochiKit.Base.partial;
for(var i=0;i<_187;i++){
var _189=_186[i];
var _190=_185[i%_184];
_183.save();
_183.fillStyle=this._fillColor(_190);
_183.strokeStyle=this._strokeColor(_190);
_183.lineWidth=this.options.strokeWidth;
var _191=function(ctx){
ctx.beginPath();
ctx.moveTo(this.area.x,this.area.y+this.area.h);
var _193=function(ctx_,_195){
if(_195.name==_189){
ctx_.lineTo(this.area.w*_195.x+this.area.x,this.area.h*_195.y+this.area.y);
}
};
MochiKit.Iter.forEach(this.layout.points,_188(_193,ctx),this);
if(this.options.shouldFill){
ctx.lineTo(this.area.w+this.area.x,this.area.h+this.area.y);
ctx.lineTo(this.area.x,this.area.y+this.area.h);
ctx.closePath();
}
};
if(!this.options.shouldFill){
_191=function(ctx){
ctx.beginPath();
var _196=null;
var _197=null;
var _198=function(ctx_,_199){
if(_199.name==_189){
var x=this.area.w*_199.x+this.area.x;
var y=this.area.h*_199.y+this.area.y;
if(_196==null){
ctx_.moveTo(x,y);
_196=x;
_197=y;
}else{
ctx_.lineTo(x,y);
}
}
};
MochiKit.Iter.forEach(this.layout.points,_188(_198,ctx),this);
ctx.moveTo(_196,_197);
ctx.closePath();
};
}
if(this.options.shouldFill){
bind(_191,this)(_183);
_183.fill();
}
if(this.options.shouldStroke){
bind(_191,this)(_183);
_183.stroke();
}
_183.restore();
}
};
PlotKit.CanvasRenderer.prototype._renderPieChart=function(){
var _200=this.element.getContext("2d");
var _201=this.options.colorScheme.length;
var _202=this.layout.slices;
var _203=this.area.x+this.area.w*0.5;
var _204=this.area.y+this.area.h*0.5;
var _205=Math.min(this.area.w*this.options.pieRadius,this.area.h*this.options.pieRadius);
if(this.isIE){
_203=parseInt(_203);
_204=parseInt(_204);
_205=parseInt(_205);
}
for(var i=0;i<_202.length;i++){
var _206=this.options.colorScheme[i%_201];
_200.save();
_200.fillStyle=this._fillColor(_206);
var _207=function(){
_200.beginPath();
_200.moveTo(_203,_204);
_200.arc(_203,_204,_205,_202[i].startAngle-Math.PI/2,_202[i].endAngle-Math.PI/2,false);
_200.lineTo(_203,_204);
_200.closePath();
};
if(Math.abs(_202[i].startAngle-_202[i].endAngle)>0.001){
if(this.options.shouldFill){
_207();
_200.fill();
}
if(this.options.shouldStroke){
_207();
_200.lineWidth=this.options.strokeWidth;
_200.strokeStyle=this._strokeColor(_206);
_200.stroke();
}
}
_200.restore();
}
};
PlotKit.CanvasRenderer.prototype._renderPointChart=function(){
var _208=this.element.getContext("2d");
var _209=this.options.colorScheme.length;
var _210=this.options.colorScheme;
var _211=MochiKit.Base.keys(this.layout.datasets);
var _212=_211.length;
var bind=MochiKit.Base.bind;
for(var i=0;i<_212;i++){
var _213=_211[i];
var _214=_210[i%_209];
_208.save();
_208.fillStyle=this._fillColor(_214);
_208.lineWidth=this.options.strokeWidth;
var _215=function(ctx,_216){
if(_216.name==_213){
ctx.beginPath();
ctx.arc(this.area.w*_216.x+this.area.x,this.area.h*_216.y+this.area.y,this.options.strokeWidth*5,0,2*Math.PI,false);
ctx.closePath();
ctx.fill();
}
};
MochiKit.Iter.forEach(this.layout.points,bind(_215,this,_208));
_208.restore();
}
};
PlotKit.CanvasRenderer.prototype._renderAreaChart=function(){
var _217=this.element.getContext("2d");
var _218=this.options.colorScheme.length;
var _219=this.options.colorScheme;
var _220=MochiKit.Base.keys(this.layout.datasets);
var _221=_220.length;
var bind=MochiKit.Base.bind;
var _222=MochiKit.Base.partial;
for(var i=0;i<_221;i++){
var _223=_220[i];
var _224=_219[i%_218];
_217.save();
_217.fillStyle=this._fillColor(_224);
_217.strokeStyle=this._strokeColor(_224);
_217.lineWidth=this.options.strokeWidth;
var _225=function(ctx){
ctx.beginPath();
var _226=null;
var _227=null;
var _228=function(ctx_,_229){
if(_229.name==_223){
var x=this.area.w*_229.x+this.area.x;
var y=this.area.h*_229.y+this.area.y;
if(_226==null){
ctx_.moveTo(x,y);
_226=x;
_227=y;
}else{
ctx_.lineTo(x,y);
}
}
};
MochiKit.Iter.forEach(this.layout.points,_222(_228,ctx),this);
ctx.lineTo(_226,_227);
ctx.closePath();
};
if(this.options.shouldFill){
bind(_225,this)(_217);
_217.fill();
}
if(this.options.shouldStroke){
bind(_225,this)(_217);
_217.stroke();
}
_217.restore();
}
};
PlotKit.CanvasRenderer.prototype._renderBarAxis=function(){
this._renderAxis();
};
PlotKit.CanvasRenderer.prototype._renderLineAxis=function(){
this._renderAxis();
};
PlotKit.CanvasRenderer.prototype._renderAxis=function(){
if(!this.options.drawXAxis&&!this.options.drawYAxis){
return;
}
var DIV=MochiKit.DOM.DIV;
var _231=this.element.getContext("2d");
var _232={"style":{"position":"absolute","fontSize":this.options.axisLabelFontSize+"px","zIndex":10,"color":this.options.axisLabelColor.toRGBString(),"width":this.options.axisLabelWidth+"px","overflow":"visible"}};
_231.save();
_231.strokeStyle=this.options.axisLineColor.toRGBString();
_231.lineWidth=this.options.axisLineWidth;
if(this.options.drawYAxis){
if(this.layout.yticks){
var _233=function(tick){
if(typeof (tick)=="function"){
return;
}
var x=this.area.x;
var y=this.area.y+tick[0]*this.area.h;
_231.beginPath();
_231.moveTo(x,y);
_231.lineTo(x-this.options.axisTickSize,y);
_231.closePath();
_231.stroke();
var _234=DIV(_232,tick[1]);
_234.style.top=(y-this.options.axisLabelFontSize)+"px";
_234.style.left=(x-this.options.padding.left-this.options.axisTickSize)+"px";
_234.style.textAlign="right";
_234.style.width=(this.options.padding.left-this.options.axisTickSize*2)+"px";
MochiKit.DOM.appendChildNodes(this.container,_234);
this.ylabels.push(_234);
};
MochiKit.Iter.forEach(this.layout.yticks,MochiKit.Base.bind(_233,this));
}
_231.beginPath();
_231.moveTo(this.area.x,this.area.y);
_231.lineTo(this.area.x,this.area.y+this.area.h);
_231.closePath();
_231.stroke();
}
if(this.options.drawXAxis){
if(this.layout.xticks){
var _233=function(tick){
if(typeof (dataset)=="function"){
return;
}
var x=this.area.x+tick[0]*this.area.w;
var y=this.area.y+this.area.h;
_231.beginPath();
_231.moveTo(x,y);
_231.lineTo(x,y+this.options.axisTickSize);
_231.closePath();
_231.stroke();
var _235=DIV(_232,tick[1]);
_235.style.top=(y+this.options.axisTickSize)+"px";
_235.style.left=(x-this.options.axisLabelWidth/2)+"px";
_235.style.textAlign="center";
_235.style.width=this.options.axisLabelWidth+"px";
MochiKit.DOM.appendChildNodes(this.container,_235);
this.xlabels.push(_235);
};
MochiKit.Iter.forEach(this.layout.xticks,MochiKit.Base.bind(_233,this));
}
_231.beginPath();
_231.moveTo(this.area.x,this.area.y+this.area.h);
_231.lineTo(this.area.x+this.area.w,this.area.y+this.area.h);
_231.closePath();
_231.stroke();
}
_231.restore();
};
PlotKit.CanvasRenderer.prototype._renderPieAxis=function(){
if(!this.options.drawXAxis){
return;
}
if(this.layout.xticks){
var _236=new Array();
for(var i=0;i<this.layout.slices.length;i++){
_236[this.layout.slices[i].xval]=this.layout.slices[i];
}
var _237=this.area.x+this.area.w*0.5;
var _238=this.area.y+this.area.h*0.5;
var _239=Math.min(this.area.w*this.options.pieRadius,this.area.h*this.options.pieRadius);
var _240=this.options.axisLabelWidth;
for(var i=0;i<this.layout.xticks.length;i++){
var _241=_236[this.layout.xticks[i][0]];
if(MochiKit.Base.isUndefinedOrNull(_241)){
continue;
}
var _242=(_241.startAngle+_241.endAngle)/2;
var _243=_242;
if(_243>Math.PI*2){
_243=_243-Math.PI*2;
}else{
if(_243<0){
_243=_243+Math.PI*2;
}
}
var _244=_237+Math.sin(_243)*(_239+10);
var _245=_238-Math.cos(_243)*(_239+10);
var _246={"position":"absolute","zIndex":11,"width":_240+"px","fontSize":this.options.axisLabelFontSize+"px","overflow":"visible","color":this.options.axisLabelColor.toHexString()};
if(_243<=Math.PI*0.5){
_246["textAlign"]="left";
_246["verticalAlign"]="top";
_246["left"]=_244+"px";
_246["top"]=(_245-this.options.axisLabelFontSize)+"px";
}else{
if((_243>Math.PI*0.5)&&(_243<=Math.PI)){
_246["textAlign"]="left";
_246["verticalAlign"]="bottom";
_246["left"]=_244+"px";
_246["top"]=_245+"px";
}else{
if((_243>Math.PI)&&(_243<=Math.PI*1.5)){
_246["textAlign"]="right";
_246["verticalAlign"]="bottom";
_246["left"]=(_244-_240)+"px";
_246["top"]=_245+"px";
}else{
_246["textAlign"]="right";
_246["verticalAlign"]="bottom";
_246["left"]=(_244-_240)+"px";
_246["top"]=(_245-this.options.axisLabelFontSize)+"px";
}
}
}
var _247=MochiKit.DOM.DIV({"style":_246},this.layout.xticks[i][1]);
this.xlabels.push(_247);
MochiKit.DOM.appendChildNodes(this.container,_247);
}
}
};
PlotKit.CanvasRenderer.prototype._renderBackground=function(){
var _248=this.element.getContext("2d");
_248.save();
_248.fillStyle=this.options.backgroundColor.toRGBString();
_248.fillRect(0,0,this.width,this.height);
_248.restore();
};
PlotKit.CanvasRenderer.prototype.clear=function(){
if(this.isIE){
try{
if(this.clearDelay){
this.clearDelay.cancel();
this.clearDelay=null;
}
var _249=this.element.getContext("2d");
}
catch(e){
this.isFirstRender=false;
this.clearDelay=MochiKit.Async.wait(this.IEDelay);
this.clearDelay.addCallback(MochiKit.Base.bind(this.clear,this));
return;
}
}
var _249=this.element.getContext("2d");
_249.clearRect(0,0,this.width,this.height);
MochiKit.Iter.forEach(this.xlabels,MochiKit.DOM.removeElement);
MochiKit.Iter.forEach(this.ylabels,MochiKit.DOM.removeElement);
this.xlabels=new Array();
this.ylabels=new Array();
};
PlotKit.CanvasRenderer.prototype._strokeColor=function(_250){
var opts=this.options;
if(opts.strokeColor){
_250=opts.strokeColor;
}else{
if(typeof (opts.strokeColorTransform)=="string"){
_250=_250[opts.strokeColorTransform]();
}else{
if(typeof (opts.strokeColorTransform)=="function"){
_250=opts.strokeColorTransform(_250);
}
}
}
return _250.toRGBString();
};
PlotKit.CanvasRenderer.prototype._fillColor=function(_252){
var opts=this.options;
if(opts.fillColor){
_252=opts.fillColor;
}else{
if(typeof (opts.fillColorTransform)=="string"){
_252=_252[opts.fillColorTransform]();
}else{
if(typeof (opts.fillColorTransform)=="function"){
_252=opts.fillColorTransform(_252);
}
}
}
return _252.toRGBString();
};
PlotKit.CanvasRenderer.prototype._initialiseEvents=function(){
var _253=MochiKit.Signal.connect;
var bind=MochiKit.Base.bind;
_253(this.element,"onclick",bind(this.onclick,this));
};
PlotKit.CanvasRenderer.prototype._resolveObject=function(e){
var x=(e.mouse().page.x-PlotKit.Base.findPosX(this.element)-this.area.x)/this.area.w;
var y=(e.mouse().page.y-PlotKit.Base.findPosY(this.element)-this.area.y)/this.area.h;
var _255=this.layout.hitTest(x,y);
if(_255){
return _255;
}
return null;
};
PlotKit.CanvasRenderer.prototype._createEventObject=function(_256,e){
if(_256==null){
return null;
}
e.chart=_256;
return e;
};
PlotKit.CanvasRenderer.prototype.onclick=function(e){
var _257=this._resolveObject(e);
var _258=this._createEventObject(_257,e);
if(_258!=null){
MochiKit.Signal.signal(this,"onclick",_258);
}
};
PlotKit.CanvasRenderer.prototype.onmouseover=function(e){
var _259=this._resolveObject(e);
var _260=this._createEventObject(_259,e);
if(_260!=null){
MochiKit.Signal.signal(this,"onmouseover",_260);
}
};
PlotKit.CanvasRenderer.prototype.onmouseout=function(e){
var _261=this._resolveObject(e);
var _262=this._createEventObject(_261,e);
if(_262==null){
MochiKit.Signal.signal(this,"onmouseout",e);
}else{
MochiKit.Signal.signal(this,"onmouseout",_262);
}
};
PlotKit.CanvasRenderer.prototype.onmousemove=function(e){
var _263=this._resolveObject(e);
var _264=this._createEventObject(_263,e);
if((_263==null)&&(this.event_isinside==null)){
return;
}
if((_263!=null)&&(this.event_isinside==null)){
MochiKit.Signal.signal(this,"onmouseover",_264);
}
if((_263==null)&&(this.event_isinside!=null)){
MochiKit.Signal.signal(this,"onmouseout",_264);
}
if((_263!=null)&&(this.event_isinside!=null)){
MochiKit.Signal.signal(this,"onmousemove",_264);
}
this.event_isinside=_263;
};
PlotKit.CanvasRenderer.isSupported=function(_265){
var _266=null;
try{
if(MochiKit.Base.isUndefinedOrNull(_265)){
_266=MochiKit.DOM.CANVAS({});
}else{
_266=MochiKit.DOM.getElement(_265);
}
var _267=_266.getContext("2d");
}
catch(e){
var ie=navigator.appVersion.match(/MSIE (\d\.\d)/);
var _269=(navigator.userAgent.toLowerCase().indexOf("opera")!=-1);
if((!ie)||(ie[1]<6)||(_269)){
return false;
}
return true;
}
return true;
};
PlotKit.Canvas={};
PlotKit.Canvas.CanvasRenderer=PlotKit.CanvasRenderer;
PlotKit.Canvas.EXPORT=["CanvasRenderer"];
PlotKit.Canvas.EXPORT_OK=["CanvasRenderer"];
PlotKit.Canvas.__new__=function(){
var m=MochiKit.Base;
m.nameFunctions(this);
this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
};
PlotKit.Canvas.__new__();
MochiKit.Base._exportSymbols(this,PlotKit.Canvas);
try{
if(typeof (PlotKit.Layout)=="undefined"){
throw "";
}
}
catch(e){
throw "PlotKit depends on MochiKit.{Base,Color,DOM,Format} and PlotKit.Layout";
}
PlotKit.SVGRenderer=function(_270,_271,_272){
if(arguments.length>0){
this.__init__(_270,_271,_272);
}
};
PlotKit.SVGRenderer.NAME="PlotKit.SVGRenderer";
PlotKit.SVGRenderer.VERSION=PlotKit.VERSION;
PlotKit.SVGRenderer.__repr__=function(){
return "["+this.NAME+" "+this.VERSION+"]";
};
PlotKit.SVGRenderer.toString=function(){
return this.__repr__();
};
PlotKit.SVGRenderer.SVGNS="http://www.w3.org/2000/svg";
PlotKit.SVGRenderer.prototype.__init__=function(_273,_274,_275){
var _276=MochiKit.Base.isUndefinedOrNull;
this.options={"drawBackground":true,"backgroundColor":MochiKit.Color.Color.whiteColor(),"padding":{left:30,right:30,top:5,bottom:10},"colorScheme":PlotKit.Base.palette(PlotKit.Base.baseColors()[1]),"strokeColor":MochiKit.Color.Color.whiteColor(),"strokeColorTransform":"asStrokeColor","strokeWidth":0.5,"shouldFill":true,"shouldStroke":true,"drawXAxis":true,"drawYAxis":true,"axisLineColor":MochiKit.Color.Color.blackColor(),"axisLineWidth":0.5,"axisTickSize":3,"axisLabelColor":MochiKit.Color.Color.blackColor(),"axisLabelFont":"Arial","axisLabelFontSize":9,"axisLabelWidth":50,"axisLabelUseDiv":true,"pieRadius":0.4,"enableEvents":true};
MochiKit.Base.update(this.options,_275?_275:{});
this.layout=_274;
this.element=MochiKit.DOM.getElement(_273);
this.container=this.element.parentNode;
this.height=parseInt(this.element.getAttribute("height"));
this.width=parseInt(this.element.getAttribute("width"));
this.document=document;
this.root=this.element;
try{
this.document=this.element.getSVGDocument();
this.root=_276(this.document.documentElement)?this.element:this.document.documentElement;
}
catch(e){
}
this.element.style.zIndex=1;
if(_276(this.element)){
throw "SVGRenderer() - passed SVG object is not found";
}
if(_276(this.container)||this.container.nodeName.toLowerCase()!="div"){
throw "SVGRenderer() - No DIV's around the SVG.";
}
this.xlabels=new Array();
this.ylabels=new Array();
this.defs=this.createSVGElement("defs");
this.area={x:this.options.padding.left,y:this.options.padding.top,w:this.width-this.options.padding.left-this.options.padding.right,h:this.height-this.options.padding.top-this.options.padding.bottom};
MochiKit.DOM.updateNodeAttributes(this.container,{"style":{"position":"relative","width":this.width+"px"}});
};
PlotKit.SVGRenderer.prototype.render=function(){
if(this.options.drawBackground){
this._renderBackground();
}
if(this.layout.style=="bar"){
this._renderBarChart();
this._renderBarAxis();
}else{
if(this.layout.style=="pie"){
this._renderPieChart();
this._renderPieAxis();
}else{
if(this.layout.style=="line"){
this._renderLineChart();
this._renderLineAxis();
}
}
}
};
PlotKit.SVGRenderer.prototype._renderBarOrLine=function(data,_277,_278,_279){
var _280=this.options.colorScheme.length;
var _281=this.options.colorScheme;
var _282=MochiKit.Base.keys(this.layout.datasets);
var _283=_282.length;
for(var i=0;i<_283;i++){
var _284=_282[i];
var _285=new Array();
var _286=_281[i%_280];
if(this.options.shouldFill){
_285["fill"]=_286.toRGBString();
}else{
_285["fill"]="none";
}
if(this.options.shouldStroke&&(this.options.strokeColor||this.options.strokeColorTransform)){
if(this.options.strokeColor){
_285["stroke"]=this.options.strokeColor.toRGBString();
}else{
if(this.options.strokeColorTransform){
_285["stroke"]=_286[this.options.strokeColorTransform]().toRGBString();
}
}
_285["strokeWidth"]=this.options.strokeWidth;
}
if(_278){
_278(_285);
}
var _287=function(obj){
if(obj.name==_284){
_277(_285,obj);
}
};
MochiKit.Iter.forEach(data,MochiKit.Base.bind(_287,this));
if(_279){
_279(_285);
}
}
};
PlotKit.SVGRenderer.prototype._renderBarChart=function(){
var bind=MochiKit.Base.bind;
var _288=function(_289,bar){
var x=this.area.w*bar.x+this.area.x;
var y=this.area.h*bar.y+this.area.y;
var w=this.area.w*bar.w;
var h=this.area.h*bar.h;
this._drawRect(x,y,w,h,_289);
};
this._renderBarOrLine(this.layout.bars,bind(_288,this));
};
PlotKit.SVGRenderer.prototype._renderLineChart=function(){
var bind=MochiKit.Base.bind;
var _290=function(_291,_292){
this._tempPointsBuffer+=(this.area.w*_292.x+this.area.x)+","+(this.area.h*_292.y+this.area.y)+" ";
};
var _293=function(_294){
this._tempPointsBuffer="";
this._tempPointsBuffer+=(this.area.x)+","+(this.area.y+this.area.h)+" ";
};
var _295=function(_296){
this._tempPointsBuffer+=(this.area.w+this.area.x)+","+(this.area.h+this.area.y);
_296["points"]=this._tempPointsBuffer;
var elem=this.createSVGElement("polygon",_296);
this.root.appendChild(elem);
};
this._renderBarOrLine(this.layout.points,bind(_290,this),bind(_293,this),bind(_295,this));
};
PlotKit.SVGRenderer.prototype._renderPieChart=function(){
var _298=this.options.colorScheme.length;
var _299=this.layout.slices;
var _300=this.area.x+this.area.w*0.5;
var _301=this.area.y+this.area.h*0.5;
var _302=Math.min(this.area.w*this.options.pieRadius,this.area.h*this.options.pieRadius);
if(_299.length==1&&(Math.abs(_299[0].startAngle)-Math.abs(_299[0].endAngle)<0.1)){
var _303={"cx":_300,"cy":_301,"r":_302};
var _304=this.options.colorScheme[0];
if(this.options.shouldFill){
_303["fill"]=_304.toRGBString();
}else{
_303["fill"]="none";
}
if(this.options.shouldStroke&&(this.options.strokeColor||this.options.strokeColorTransform)){
if(this.options.strokeColor){
_303["stroke"]=this.options.strokeColor.toRGBString();
}else{
if(this.options.strokeColorTransform){
_303["stroke"]=_304[this.options.strokeColorTransform]().toRGBString();
}
}
_303["style"]="stroke-width: "+this.options.strokeWidth;
}
this.root.appendChild(this.createSVGElement("circle",_303));
return;
}
for(var i=0;i<_299.length;i++){
var _303=new Array();
var _304=this.options.colorScheme[i%_298];
if(this.options.shouldFill){
_303["fill"]=_304.toRGBString();
}else{
_303["fill"]="none";
}
if(this.options.shouldStroke&&(this.options.strokeColor||this.options.strokeColorTransform)){
if(this.options.strokeColor){
_303["stroke"]=this.options.strokeColor.toRGBString();
}else{
if(this.options.strokeColorTransform){
_303["stroke"]=_304[this.options.strokeColorTransform]().toRGBString();
}
}
_303["style"]="stroke-width:"+this.options.strokeWidth;
}
var _305=0;
if(Math.abs(_299[i].endAngle-_299[i].startAngle)>Math.PI){
_305=1;
}
var x1=Math.cos(_299[i].startAngle-Math.PI/2)*_302;
var y1=Math.sin(_299[i].startAngle-Math.PI/2)*_302;
var x2=Math.cos(_299[i].endAngle-Math.PI/2)*_302;
var y2=Math.sin(_299[i].endAngle-Math.PI/2)*_302;
var rx=x2-x1;
var ry=y2-y1;
var _312="M"+_300+","+_301+" ";
_312+="l"+x1+","+y1+" ";
_312+="a"+_302+","+_302+" 0 "+_305+",1 "+rx+","+ry+" z";
_303["d"]=_312;
var elem=this.createSVGElement("path",_303);
this.root.appendChild(elem);
}
};
PlotKit.SVGRenderer.prototype._renderBarAxis=function(){
this._renderAxis();
};
PlotKit.SVGRenderer.prototype._renderLineAxis=function(){
this._renderAxis();
};
PlotKit.SVGRenderer.prototype._renderAxis=function(){
if(!this.options.drawXAxis&&!this.options.drawYAxis){
return;
}
var _313={"style":{"position":"absolute","textAlign":"center","fontSize":this.options.axisLabelFontSize+"px","zIndex":10,"color":this.options.axisLabelColor.toRGBString(),"width":this.options.axisLabelWidth+"px","overflow":"hidden"}};
var _314={"stroke":this.options.axisLineColor.toRGBString(),"strokeWidth":this.options.axisLineWidth};
if(this.options.drawYAxis){
if(this.layout.yticks){
var _315=function(tick){
var x=this.area.x;
var y=this.area.y+tick[0]*this.area.h;
this._drawLine(x,y,x-3,y,_314);
if(this.options.axisLabelUseDiv){
var _316=MochiKit.DOM.DIV(_313,tick[1]);
_316.style.top=(y-this.options.axisLabelFontSize)+"px";
_316.style.left=(x-this.options.padding.left+this.options.axisTickSize)+"px";
_316.style.textAlign="left";
_316.style.width=(this.options.padding.left-3)+"px";
MochiKit.DOM.appendChildNodes(this.container,_316);
this.ylabels.push(_316);
}else{
var _317={y:y+3,x:(x-this.options.padding.left+3),width:(this.options.padding.left-this.options.axisTickSize)+"px",height:(this.options.axisLabelFontSize+3)+"px",fontFamily:"Arial",fontSize:this.options.axisLabelFontSize+"px",fill:this.options.axisLabelColor.toRGBString()};
var _316=this.createSVGElement("text",_317);
_316.appendChild(this.document.createTextNode(tick[1]));
this.root.appendChild(_316);
}
};
MochiKit.Iter.forEach(this.layout.yticks,MochiKit.Base.bind(_315,this));
}
this._drawLine(this.area.x,this.area.y,this.area.x,this.area.y+this.area.h,_314);
}
if(this.options.drawXAxis){
if(this.layout.xticks){
var _315=function(tick){
var x=this.area.x+tick[0]*this.area.w;
var y=this.area.y+this.area.h;
this._drawLine(x,y,x,y+this.options.axisTickSize,_314);
if(this.options.axisLabelUseDiv){
var _318=MochiKit.DOM.DIV(_313,tick[1]);
_318.style.top=(y+this.options.axisTickSize)+"px";
_318.style.left=(x-this.options.axisLabelWidth/2)+"px";
_318.style.textAlign="center";
_318.style.width=this.options.axisLabelWidth+"px";
MochiKit.DOM.appendChildNodes(this.container,_318);
this.xlabels.push(_318);
}else{
var _319={y:(y+this.options.axisTickSize+this.options.axisLabelFontSize),x:x-3,width:this.options.axisLabelWidth+"px",height:(this.options.axisLabelFontSize+3)+"px",fontFamily:"Arial",fontSize:this.options.axisLabelFontSize+"px",fill:this.options.axisLabelColor.toRGBString(),textAnchor:"middle"};
var _318=this.createSVGElement("text",_319);
_318.appendChild(this.document.createTextNode(tick[1]));
this.root.appendChild(_318);
}
};
MochiKit.Iter.forEach(this.layout.xticks,MochiKit.Base.bind(_315,this));
}
this._drawLine(this.area.x,this.area.y+this.area.h,this.area.x+this.area.w,this.area.y+this.area.h,_314);
}
};
PlotKit.SVGRenderer.prototype._renderPieAxis=function(){
if(this.layout.xticks){
var _320=new Array();
for(var i=0;i<this.layout.slices.length;i++){
_320[this.layout.slices[i].xval]=this.layout.slices[i];
}
var _321=this.area.x+this.area.w*0.5;
var _322=this.area.y+this.area.h*0.5;
var _323=Math.min(this.area.w*this.options.pieRadius+10,this.area.h*this.options.pieRadius+10);
var _324=this.options.axisLabelWidth;
for(var i=0;i<this.layout.xticks.length;i++){
var _325=_320[this.layout.xticks[i][0]];
if(MochiKit.Base.isUndefinedOrNull(_325)){
continue;
}
var _326=(_325.startAngle+_325.endAngle)/2;
var _327=_326;
if(_327>Math.PI*2){
_327=_327-Math.PI*2;
}else{
if(_327<0){
_327=_327+Math.PI*2;
}
}
var _328=_321+Math.sin(_327)*(_323+10);
var _329=_322-Math.cos(_327)*(_323+10);
var _330={"position":"absolute","zIndex":11,"width":_324+"px","fontSize":this.options.axisLabelFontSize+"px","overflow":"hidden","color":this.options.axisLabelColor.toHexString()};
var _331={"width":_324+"px","fontSize":this.options.axisLabelFontSize+"px","height":(this.options.axisLabelFontSize+3)+"px","fill":this.options.axisLabelColor.toRGBString()};
if(_327<=Math.PI*0.5){
MochiKit.Base.update(_330,{"textAlign":"left","verticalAlign":"top","left":_328+"px","top":(_329-this.options.axisLabelFontSize)+"px"});
MochiKit.Base.update(_331,{"x":_328,"y":(_329-this.options.axisLabelFontSize),"textAnchor":"left"});
}else{
if((_327>Math.PI*0.5)&&(_327<=Math.PI)){
MochiKit.Base.update(_330,{"textAlign":"left","verticalAlign":"bottom","left":_328+"px","top":_329+"px"});
MochiKit.Base.update(_331,{"textAnchor":"left","x":_328,"y":_329});
}else{
if((_327>Math.PI)&&(_327<=Math.PI*1.5)){
MochiKit.Base.update(_330,{"textAlign":"right","verticalAlign":"bottom","left":_328+"px","top":_329+"px"});
MochiKit.Base.update(_331,{"textAnchor":"right","x":_328-_324,"y":_329});
}else{
MochiKit.Base.update(_330,{"textAlign":"left","verticalAlign":"bottom","left":_328+"px","top":_329+"px"});
MochiKit.Base.update(_331,{"textAnchor":"left","x":_328-_324,"y":_329-this.options.axisLabelFontSize});
}
}
}
if(this.options.axisLabelUseDiv){
var _332=MochiKit.DOM.DIV({"style":_330},this.layout.xticks[i][1]);
this.xlabels.push(_332);
MochiKit.DOM.appendChildNodes(this.container,_332);
}else{
var _332=this.createSVGElement("text",_331);
_332.appendChild(this.document.createTextNode(this.layout.xticks[i][1]));
this.root.appendChild(_332);
}
}
}
};
PlotKit.SVGRenderer.prototype._renderBackground=function(){
var opts={"stroke":"none","fill":this.options.backgroundColor.toRGBString()};
this._drawRect(0,0,this.width,this.height,opts);
};
PlotKit.SVGRenderer.prototype._drawRect=function(x,y,w,h,_333){
var _334={x:x+"px",y:y+"px",width:w+"px",height:h+"px"};
if(_333){
MochiKit.Base.update(_334,_333);
}
var elem=this.createSVGElement("rect",_334);
this.root.appendChild(elem);
};
PlotKit.SVGRenderer.prototype._drawLine=function(x1,y1,x2,y2,_335){
var _336={x1:x1+"px",y1:y1+"px",x2:x2+"px",y2:y2+"px"};
if(_335){
MochiKit.Base.update(_336,_335);
}
var elem=this.createSVGElement("line",_336);
this.root.appendChild(elem);
};
PlotKit.SVGRenderer.prototype.clear=function(){
while(this.element.firstChild){
this.element.removeChild(this.element.firstChild);
}
if(this.options.axisLabelUseDiv){
for(var i=0;i<this.xlabels.length;i++){
MochiKit.DOM.removeElement(this.xlabels[i]);
}
for(var i=0;i<this.ylabels.length;i++){
MochiKit.DOM.removeElement(this.ylabels[i]);
}
}
this.xlabels=new Array();
this.ylabels=new Array();
};
PlotKit.SVGRenderer.prototype.createSVGElement=function(name,_338){
var _339=MochiKit.Base.isUndefinedOrNull;
var elem;
var doc=_339(this.document)?document:this.document;
try{
elem=doc.createElementNS(PlotKit.SVGRenderer.SVGNS,name);
}
catch(e){
elem=doc.createElement(name);
elem.setAttribute("xmlns",PlotKit.SVGRenderer.SVGNS);
}
if(_338){
MochiKit.DOM.updateNodeAttributes(elem,_338);
}
return elem;
};
PlotKit.SVGRenderer.SVG=function(_341){
var ie=navigator.appVersion.match(/MSIE (\d\.\d)/);
var _342=(navigator.userAgent.toLowerCase().indexOf("opera")!=-1);
if(ie&&(ie[1]>=6)&&(!_342)){
var _343=_341["width"]?_341["width"]:"100";
var _344=_341["height"]?_341["height"]:"100";
var eid=_341["id"]?_341["id"]:"notunique";
var html="<svg:svg width=\""+_343+"\" height=\""+_344+"\" ";
html+="id=\""+eid+"\" version=\"1.1\" baseProfile=\"full\" />";
var _347=document.createElement(html);
var _348=_347.getSVGDocument().createElementNS(PlotKit.SVGRenderer.SVGNS,"svg");
_348.setAttribute("width",_343);
_348.setAttribute("height",_344);
_347.getSVGDocument().appendChild(_348);
return _347;
}else{
return PlotKit.SVGRenderer.prototype.createSVGElement("svg",_341);
}
};
PlotKit.SVGRenderer.isSupported=function(){
var _349=(navigator.userAgent.toLowerCase().indexOf("opera")!=-1);
var _350=navigator.appVersion.match(/MSIE (\d\.\d)/);
var _351=navigator.userAgent.match(/AppleWebKit\/(\d+)/);
var _352=navigator.userAgent.match(/Opera\/(\d*\.\d*)/);
var _353=navigator.userAgent.match(/rv:(\d*\.\d*).*Gecko/);
var _354="http://www.w3.org/TR/SVG11/feature#SVG";
if(_350&&(_350[1]>=6)&&!_349){
return document.implementation.hasFeature(_354,"1.1");
}
if(_352&&(_352[1]>8.9)){
return true;
}
if(_353&&(_353>1.7)){
return true;
}
return false;
};
PlotKit.SVG={};
PlotKit.SVG.SVGRenderer=PlotKit.SVGRenderer;
PlotKit.SVG.EXPORT=["SVGRenderer"];
PlotKit.SVG.EXPORT_OK=["SVGRenderer"];
PlotKit.SVG.__new__=function(){
var m=MochiKit.Base;
m.nameFunctions(this);
this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
};
PlotKit.SVG.__new__();
MochiKit.Base._exportSymbols(this,PlotKit.SVG);
try{
if(typeof (PlotKit.CanvasRenderer)=="undefined"){
throw "";
}
}
catch(e){
throw "SweetCanvas depends on MochiKit.{Base,Color,DOM,Format} and PlotKit.{Layout, Canvas}";
}
if(typeof (PlotKit.SweetCanvasRenderer)=="undefined"){
PlotKit.SweetCanvasRenderer={};
}
PlotKit.SweetCanvasRenderer=function(_355,_356,_357){
if(arguments.length>0){
this.__init__(_355,_356,_357);
}
};
PlotKit.SweetCanvasRenderer.NAME="PlotKit.SweetCanvasRenderer";
PlotKit.SweetCanvasRenderer.VERSION=PlotKit.VERSION;
PlotKit.SweetCanvasRenderer.__repr__=function(){
return "["+this.NAME+" "+this.VERSION+"]";
};
PlotKit.SweetCanvasRenderer.toString=function(){
return this.__repr__();
};
PlotKit.SweetCanvasRenderer.prototype=new PlotKit.CanvasRenderer();
PlotKit.SweetCanvasRenderer.prototype.constructor=PlotKit.SweetCanvasRenderer;
PlotKit.SweetCanvasRenderer.__super__=PlotKit.CanvasRenderer.prototype;
PlotKit.SweetCanvasRenderer.prototype.__init__=function(el,_359,opts){
var _360=PlotKit.Base.officeBlue();
MochiKit.Base.update(_360,opts);
PlotKit.SweetCanvasRenderer.__super__.__init__.call(this,el,_359,_360);
};
PlotKit.SweetCanvasRenderer.prototype._renderBarChart=function(){
var bind=MochiKit.Base.bind;
var _361=MochiKit.Color.Color.blackColor().colorWithAlpha(0.1).toRGBString();
var _362=function(_363,x,y,w,h){
_363.fillStyle=_361;
_363.fillRect(x-2,y-2,w+4,h+2);
_363.fillStyle=_361;
_363.fillRect(x-1,y-1,w+2,h+1);
};
var _364=this.options.colorScheme.length;
var _365=this.options.colorScheme;
var _366=PlotKit.Base.keys(this.layout.datasets);
var _367=_366.length;
var _368=function(name){
for(var i=0;i<_367;i++){
if(name==_366[i]){
return _365[i%_364];
}
}
return _365[0];
};
var _369=function(_370,bar){
var x=this.area.w*bar.x+this.area.x;
var y=this.area.h*bar.y+this.area.y;
var w=this.area.w*bar.w;
var h=this.area.h*bar.h;
if((w<1)||(h<1)){
return;
}
_370.save();
_370.shadowBlur=5;
_370.shadowColor=MochiKit.Color.Color.fromHexString("#888888").toRGBString();
if(this.isIE){
_370.save();
_370.fillStyle="#cccccc";
_370.fillRect(x-2,y-2,w+4,h+2);
_370.restore();
}else{
_362(_370,x,y,w,h);
}
if(this.options.shouldFill){
_370.fillStyle=this._fillColor(_368(bar.name));
_370.fillRect(x,y,w,h);
}
_370.shadowBlur=0;
_370.strokeStyle=MochiKit.Color.Color.whiteColor().toRGBString();
_370.lineWidth=2;
if(this.options.shouldStroke){
_370.strokeRect(x,y,w,h);
}
_370.restore();
};
this._renderBarChartWrap(this.layout.bars,bind(_369,this));
};
PlotKit.SweetCanvasRenderer.prototype._renderLineChart=function(){
var _371=this.element.getContext("2d");
var _372=this.options.colorScheme.length;
var _373=this.options.colorScheme;
var _374=PlotKit.Base.keys(this.layout.datasets);
var _375=_374.length;
var bind=MochiKit.Base.bind;
var _376=MochiKit.Base.partial;
// fix dzwied
for (var p=0;p<this.layout.points.length;p++) this.layout.points[p].skip = false;
for(var i=_375-1;i>=0;i--){
var skipDraw = false;
var sl = this.layout.points.length/_375;
if (typeof this.layout.options.skipEmpty !== "undefined" && this.layout.options.skipEmpty){for (var p=0;p<this.layout.points.length;p++) {this.layout.points[p].skip = (this.layout.points[p].yval == 0);skipDraw |=this.layout.points[p].skip;}}
if (typeof this.layout.options.skipDraw !== "undefined") {if (_375 != this.layout.options.skipDraw.length) throw "skipDraw not the same length as series";
for (var s=0;s<this.layout.options.skipDraw[i].length;s++) {var idx=this.layout.options.skipDraw[i][s];this.layout.points[sl*i+idx].skip = true;}skipDraw=this.layout.options.skipDraw[i].length;}
var _377=_374[i];
var _378=_373[i%_372];
var _379=this.options.strokeColorTransform;
_371.save();

var _380=function(ctx){
ctx.beginPath();
ctx.moveTo(this.area.x,this.area.y+this.area.h);
var _381=function(ctx_,_382){if(_382.name==_377){ctx_.lineTo(this.area.w*_382.x+this.area.x,this.area.h*_382.y+this.area.y);}};
MochiKit.Iter.forEach(this.layout.points,_376(_381,ctx),this);
//fix dzwiedz
if (!this.isIE || this.options.shouldFill) {ctx.lineTo(this.area.x+this.area.w,this.area.y+this.area.h);ctx.lineTo(this.area.x,this.area.y+this.area.h);ctx.closePath();}
};

if(!this.options.shouldFill){_380=function(ctx){
ctx.beginPath();var _383=null;var _384=null;
var _385=function(ctx_,_386){if(_386.name==_377){var x=this.area.w*_386.x+this.area.x;var y=this.area.h*_386.y+this.area.y;if(_383==null){ctx_.moveTo(x,y);_383=x;_384=y;}else{ctx_.lineTo(x,y);}}};
//fix dzwiedz
_383=this.area.x;_384=this.area.h*this.layout.points[sl*i].y+this.area.y;ctx.moveTo(_383,_384);for (var p=sl*i;p<sl*(i+1)-1;p++){var tp=this.layout.points[p];var lt=clone(this.layout.points[p+1]);if (tp.skip){_383=this.area.w*(tp.x + 0.5*(lt.x - tp.x))+this.area.x;_384=this.area.h*lt.y+this.area.y;ctx.moveTo(_383,_384);}if (lt.skip){lt.x = lt.x-0.5*(lt.x-tp.x);lt.y = tp.y;}if (!tp.skip||!lt.skip){MochiKit.Iter.forEach([lt],_376(_385,ctx),this);}}if (!this.isIE) {ctx.moveTo(_383,_384);ctx.closePath();}
};}
if(this.options.shouldFill){_371.save();if(this.isIE){_371.fillStyle="#cccccc";}else{_371.fillStyle=MochiKit.Color.Color.blackColor().colorWithAlpha(0.2).toRGBString();}_371.translate(-1,-2);bind(_380,this)(_371);if(this.options.shouldFill){_371.fill();}_371.restore();}
_371.shadowBlur=5;
_371.shadowColor=MochiKit.Color.Color.fromHexString("#888888").toRGBString();
_371.fillStyle=this._fillColor(_378);
_371.lineWidth=2;
_371.strokeStyle=MochiKit.Color.Color.whiteColor().toRGBString();
if(this.options.shouldFill){bind(_380,this)(_371);_371.fill();}

if(this.options.shouldStroke){
if(!this.options.shouldFill){
_371.save();
_371.lineWidth=6;
_371.lineCap="round";
bind(_380,this)(_371);
_371.stroke();
_371.restore();
_371.strokeStyle=this._strokeColor(_378);
}

bind(_380,this)(_371);
_371.stroke();
}

_371.restore();
}
};
PlotKit.SweetCanvasRenderer.prototype._renderPieChart=function(){
var _387=this.element.getContext("2d");
var _388=this.options.colorScheme.length;
var _389=this.layout.slices;
var _390=this.area.x+this.area.w*0.5;
var _391=this.area.y+this.area.h*0.5;
var _392=Math.min(this.area.w*this.options.pieRadius,this.area.h*this.options.pieRadius);
if(this.isIE){
_390=parseInt(_390);
_391=parseInt(_391);
_392=parseInt(_392);
}
if(!this.isIE){
_387.save();
var _393=MochiKit.Color.Color.blackColor().colorWithAlpha(0.2);
_387.fillStyle=_393.toRGBString();
_387.shadowBlur=5;
_387.shadowColor=MochiKit.Color.Color.fromHexString("#888888").toRGBString();
_387.translate(1,1);
_387.beginPath();
_387.moveTo(_390,_391);
_387.arc(_390,_391,_392+2,0,Math.PI*2,false);
_387.closePath();
_387.fill();
_387.restore();
}
_387.save();
_387.strokeStyle=MochiKit.Color.Color.whiteColor().toRGBString();
_387.lineWidth=2;
for(var i=0;i<_389.length;i++){
var _394=this.options.colorScheme[i%_388];
_387.fillStyle=this._fillColor(_394);
var _395=function(){
_387.beginPath();
_387.moveTo(_390,_391);
_387.arc(_390,_391,_392,_389[i].startAngle-Math.PI/2,_389[i].endAngle-Math.PI/2,_389[i].fraction==1);
_387.lineTo(_390,_391);
_387.closePath();
};
if(Math.abs(_389[i].startAngle-_389[i].endAngle)>0.0001){
if(this.options.shouldFill){
_395();
_387.fill();
}
if(this.options.shouldStroke){
_395();
_387.stroke();
}
}
}
_387.restore();
};
PlotKit.SweetCanvasRenderer.prototype._renderPointChart=function(){
var _396=this.element.getContext("2d");
var _397=this.options.colorScheme.length;
var _398=this.options.colorScheme;
var _399=MochiKit.Base.keys(this.layout.datasets);
var _400=_399.length;
var bind=MochiKit.Base.bind;
var _401=MochiKit.Base.partial;
for(var i=0;i<_400;i++){
var _402=_399[i];
var _403=_398[i%_397];
_396.save();
_396.fillStyle=this._fillColor(_403);
_396.strokeStyle=MochiKit.Color.Color.whiteColor().toRGBString();
_396.lineWidth=2;
var _404=function(ctx,_405){
if(_405.name==_402){
ctx.beginPath();
ctx.arc(this.area.w*_405.x+this.area.x,this.area.h*_405.y+this.area.y,this.options.strokeWidth*8,0,2*Math.PI,false);
ctx.closePath();
ctx.fill();
ctx.stroke();
}
};
_396.save();
_396.lineWidth=0;
if(this.isIE){
_396.fillStyle="#cccccc";
}else{
_396.fillStyle=MochiKit.Color.Color.blackColor().colorWithAlpha(0.2).toRGBString();
}
_396.translate(3,4);
MochiKit.Iter.forEach(this.layout.points,bind(_404,this,_396));
_396.restore();
_396.shadowBlur=5;
_396.shadowColor=MochiKit.Color.Color.fromHexString("#888888").toRGBString();
MochiKit.Iter.forEach(this.layout.points,bind(_404,this,_396));
_396.restore();
}
};
PlotKit.SweetCanvasRenderer.prototype._renderAreaChart=function(){
var _406=this.element.getContext("2d");
var _407=this.options.colorScheme.length;
var _408=this.options.colorScheme;
var _409=MochiKit.Base.keys(this.layout.datasets);
var _410=_409.length;
var bind=MochiKit.Base.bind;
var _411=MochiKit.Base.partial;
for(var i=0;i<_410;i++){
var _412=_409[i];
var _413=_408[i%_407];
_406.save();
_406.fillStyle=this._fillColor(_413.colorWithAlpha(0.6));
_406.lineWidth=2;
_406.strokeStyle=this._strokeColor(_413);
var _414=function(ctx){
ctx.beginPath();
var _415=null;
var _416=null;
var _417=function(ctx_,_418){
if(_418.name==_412){
var x=this.area.w*_418.x+this.area.x;
var y=this.area.h*_418.y+this.area.y;
if(_415==null){
ctx_.moveTo(x,y);
_415=x;
_416=y;
}else{
ctx_.lineTo(x,y);
}
}
};
MochiKit.Iter.forEach(this.layout.points,_411(_417,ctx),this);
ctx.lineTo(_415,_416);
ctx.closePath();
};
_406.save();
_406.strokeStyle=MochiKit.Color.Color.whiteColor().toRGBString();
_406.lineWidth=4;
_406.lineCap="round";
bind(_414,this)(_406);
_406.stroke();
_406.restore();
if(this.options.shouldFill){
bind(_414,this)(_406);
_406.fill();
}
if(this.options.shouldStroke){
bind(_414,this)(_406);
_406.stroke();
}
_406.restore();
}
};
PlotKit.SweetCanvasRenderer.prototype._renderBackground=function(){
var _419=this.element.getContext("2d");
if(this.layout.style=="bar"||this.layout.style=="line"||this.layout.style=="point"){
_419.save();
_419.fillStyle=this.options.backgroundColor.toRGBString();
_419.fillRect(this.area.x,this.area.y,this.area.w,this.area.h);
_419.strokeStyle=this.options.axisLineColor.toRGBString();
_419.lineWidth=1;
var _420=this.layout.yticks;
var _421=false;
if(this.layout.style=="bar"&&this.layout.options.barOrientation=="horizontal"){
_420=this.layout.xticks;
_421=true;
}
for(var i=0;i<_420.length;i++){
var x1=0;
var y1=0;
var x2=0;
var y2=0;
if(_421){
x1=_420[i][0]*this.area.w+this.area.x;
y1=this.area.y;
x2=x1;
y2=y1+this.area.h;
}else{
x1=this.area.x;
y1=_420[i][0]*this.area.h+this.area.y;
x2=x1+this.area.w;
y2=y1;
}
_419.beginPath();
_419.moveTo(x1,y1);
_419.lineTo(x2,y2);
_419.closePath();
_419.stroke();
}
_419.restore();
}else{
PlotKit.SweetCanvasRenderer.__super__._renderBackground.call(this);
}
};
PlotKit.SweetCanvas={};
PlotKit.SweetCanvas.SweetCanvasRenderer=PlotKit.SweetCanvasRenderer;
PlotKit.SweetCanvas.EXPORT=["SweetCanvasRenderer"];
PlotKit.SweetCanvas.EXPORT_OK=["SweetCanvasRenderer"];
PlotKit.SweetCanvas.__new__=function(){
var m=MochiKit.Base;
m.nameFunctions(this);
this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
};
PlotKit.SweetCanvas.__new__();
MochiKit.Base._exportSymbols(this,PlotKit.SweetCanvas);
try{
if(typeof (PlotKit.SVGRenderer)=="undefined"){
throw "";
}
}
catch(e){
throw "SweetSVG depends on MochiKit.{Base,Color,DOM,Format} and PlotKit.{Layout, SVG}";
}
if(typeof (PlotKit.SweetSVGRenderer)=="undefined"){
PlotKit.SweetSVGRenderer={};
}
PlotKit.SweetSVGRenderer=function(_422,_423,_424){
if(arguments.length>0){
this.__init__(_422,_423,_424);
}
};
PlotKit.SweetSVGRenderer.NAME="PlotKit.SweetSVGRenderer";
PlotKit.SweetSVGRenderer.VERSION=PlotKit.VERSION;
PlotKit.SweetSVGRenderer.__repr__=function(){
return "["+this.NAME+" "+this.VERSION+"]";
};
PlotKit.SweetSVGRenderer.toString=function(){
return this.__repr__();
};
PlotKit.SweetSVGRenderer.prototype=new PlotKit.SVGRenderer();
PlotKit.SweetSVGRenderer.prototype.constructor=PlotKit.SweetSVGRenderer;
PlotKit.SweetSVGRenderer.__super__=PlotKit.SVGRenderer.prototype;
PlotKit.SweetSVGRenderer.prototype.__init__=function(_425,_426,_427){
var _428=PlotKit.Base.officeBlue();
MochiKit.Base.update(_428,_427);
PlotKit.SweetSVGRenderer.__super__.__init__.call(this,_425,_426,_428);
};
PlotKit.SweetSVGRenderer.prototype._addDropShadowFilter=function(){
var _429=this.createSVGElement("filter",{x:0,y:0,"id":"dropShadow"});
var _430=this.createSVGElement("feOffset",{"in":"SourceGraphic","dx":0,"dy":0,"result":"topCopy"});
var blur=this.createSVGElement("feGaussianBlur",{"in":"SourceAlpha","StdDeviation":2,"result":"shadow"});
var _432=this.createSVGElement("feOffset",{"in":"shadow","dx":-1,"dy":-2,"result":"movedShadow"});
var _433=this.createSVGElement("feMerge");
var _434=this.createSVGElement("feMergeNode",{"in":"topCopy"});
var _435=this.createSVGElement("feMergeNode",{"in":"movedShadow"});
_433.appendChild(_434);
_433.appendChild(_435);
_429.appendChild(_430);
_429.appendChild(blur);
_429.appendChild(_432);
_429.appendChild(_433);
this.defs.appendChild(_429);
};
PlotKit.SweetSVGRenderer.prototype._renderBarChart=function(){
var bind=MochiKit.Base.bind;
var _436=MochiKit.Color.Color.blackColor().toRGBString();
var _437="fill:"+_436+";fill-opacity:0.15";
var _438="stroke-width: 2.0; stroke:"+MochiKit.Color.Color.whiteColor().toRGBString();
var _439=function(_440,bar){
var x=this.area.w*bar.x+this.area.x;
var y=this.area.h*bar.y+this.area.y;
var w=this.area.w*bar.w;
var h=this.area.h*bar.h;
if((w<1)||(h<1)){
return;
}
_440["style"]=_438;
this._drawRect(x-2,y-1,w+4,h+2,{"style":_437});
this._drawRect(x,y,w,h,_440);
};
this._renderBarOrLine(this.layout.bars,bind(_439,this));
};
PlotKit.SweetSVGRenderer.prototype._renderLineChart=function(){
var bind=MochiKit.Base.bind;
var _441=MochiKit.Color.Color.blackColor().toRGBString();
var _442="fill:"+_441+";fill-opacity:0.15";
var _443="stroke-width: 2.0; stroke:"+MochiKit.Color.Color.whiteColor().toRGBString();
var _444=function(_445,_446){
this._tempPointsBuffer+=(this.area.w*_446.x+this.area.x)+","+(this.area.h*_446.y+this.area.y)+" ";
};
var _447=function(_448){
this._tempPointsBuffer="";
this._tempPointsBuffer+=(this.area.x)+","+(this.area.y+this.area.h)+" ";
};
var _449=function(_450){
this._tempPointsBuffer+=(this.area.w+this.area.x)+","+(this.area.h+this.area.y);
_450["points"]=this._tempPointsBuffer;
_450["stroke"]="none";
_450["transform"]="translate(-2, -1)";
_450["style"]=_442;
var _451=this.createSVGElement("polygon",_450);
this.root.appendChild(_451);
_450["transform"]="";
_450["style"]=_443;
var elem=this.createSVGElement("polygon",_450);
this.root.appendChild(elem);
};
this._renderBarOrLine(this.layout.points,bind(_444,this),bind(_447,this),bind(_449,this));
};
PlotKit.SweetSVGRenderer.prototype._renderPieChart=function(){
var _452=this.area.x+this.area.w*0.5;
var _453=this.area.y+this.area.h*0.5;
var _454=MochiKit.Color.Color.blackColor().toRGBString();
var _455=Math.min(this.area.w*this.options.pieRadius,this.area.h*this.options.pieRadius);
var _456="fill:"+_454+";fill-opacity:0.15";
var _457=this.createSVGElement("circle",{"style":_456,"cx":_452+1,"cy":_453+1,"r":_455+1});
this.root.appendChild(_457);
PlotKit.SweetSVGRenderer.__super__._renderPieChart.call(this);
};
PlotKit.SweetSVGRenderer.prototype._renderBackground=function(){
var _458={"fill":this.options.backgroundColor.toRGBString(),"stroke":"none"};
if(this.layout.style=="bar"||this.layout.style=="line"){
this._drawRect(this.area.x,this.area.y,this.area.w,this.area.h,_458);
var _459=this.layout.yticks;
var _460=false;
if(this.layout.style=="bar"&&this.layout.options.barOrientation=="horizontal"){
_459=this.layout.xticks;
_460=true;
}
for(var i=0;i<_459.length;i++){
var x=0;
var y=0;
var w=0;
var h=0;
if(_460){
x=_459[i][0]*this.area.w+this.area.x;
y=this.area.y;
w=1;
h=this.area.h;
}else{
x=this.area.x;
y=_459[i][0]*this.area.h+this.area.y;
w=this.area.w;
h=1;
}
this._drawRect(x,y,w,h,{"fill":this.options.axisLineColor.toRGBString()});
}
}else{
PlotKit.SweetSVGRenderer.__super__._renderBackground.call(this);
}
};
PlotKit.SweetSVG={};
PlotKit.SweetSVG.SweetSVGRenderer=PlotKit.SweetSVGRenderer;
PlotKit.SweetSVG.EXPORT=["SweetSVGRenderer"];
PlotKit.SweetSVG.EXPORT_OK=["SweetSVGRenderer"];
PlotKit.SweetSVG.__new__=function(){
var m=MochiKit.Base;
m.nameFunctions(this);
this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
};
PlotKit.SweetSVG.__new__();
MochiKit.Base._exportSymbols(this,PlotKit.SweetSVG);
try{
if(typeof (PlotKit.CanvasRenderer)=="undefined"){
throw "";
}
}
catch(e){
throw "PlotKit.EasyPlot depends on all of PlotKit's components";
}
if(typeof (PlotKit.EasyPlot)=="undefined"){
PlotKit.EasyPlot={};
}
PlotKit.EasyPlot.NAME="PlotKit.EasyPlot";
PlotKit.EasyPlot.VERSION=PlotKit.VERSION;
PlotKit.EasyPlot.__repr__=function(){
return "["+this.NAME+" "+this.VERSION+"]";
};
PlotKit.EasyPlot.toString=function(){
return this.__repr__();
};
PlotKit.EasyPlot=function(_461,_462,_463,_464){
this.layout=new PlotKit.Layout(_461,_462);
this.divElem=_463;
this.width=parseInt(_463.getAttribute("width"));
this.height=parseInt(_463.getAttribute("height"));
this.deferredCount=0;
if(this.width<1){
this.width=this.divElem.width?this.divElem.width:300;
}
if(this.height<1){
this.height=this.divElem.height?this.divElem.height:300;
}
if(MochiKit.Base.isArrayLike(_464)){
for(var i=0;i<_464.length;i++){
if(typeof (_464[i])=="string"){
this.deferredCount++;
var d=MochiKit.Async.doSimpleXMLHttpRequest(_464[i]);
d.addCallback(MochiKit.Base.bind(PlotKit.EasyPlot.onDataLoaded,this));
}else{
if(MochiKit.Base.isArrayLike(_464[i])){
this.layout.addDataset("data-"+i,_464[i]);
}
}
}
}else{
if(!MochiKit.Base.isUndefinedOrNull(_464)){
throw "Passed datasources are not Array like";
}
}
if(CanvasRenderer.isSupported()){
this.element=MochiKit.DOM.CANVAS({"id":this.divElem.getAttribute("id")+"-canvas","width":this.width,"height":this.height},"");
this.divElem.appendChild(this.element);
this.renderer=new SweetCanvasRenderer(this.element,this.layout,_462);
}else{
if(SVGRenderer.isSupported()){
this.element=SVGRenderer.SVG({"id":this.divElem.getAttribute("id")+"-svg","width":this.width,"height":this.height,"version":"1.1","baseProfile":"full"},"");
this.divElem.appendChild(this.element);
this.renderer=new SweetSVGRenderer(this.element,this.layout,_462);
}
}
if((this.deferredCount==0)&&(PlotKit.Base.keys(this.layout.datasets).length>0)){
this.layout.evaluate();
this.renderer.clear();
this.renderer.render();
}
};
PlotKit.EasyPlot.onDataLoaded=function(_466){
var _467=new Array();
var _468=_466.responseText.split("\n");
for(var i=0;i<_468.length;i++){
var _469=MochiKit.Format.strip(_468[i]);
if((_469.length>1)&&(_469.charAt(0)!="#")){
_467.push(_469.split(","));
}
}
this.layout.addDataset("data-ajax-"+this.deferredCount,_467);
this.deferredCount--;
if((this.deferredCount==0)&&(PlotKit.Base.keys(this.layout.datasets).length>0)){
this.layout.evaluate();
this.renderer.clear();
this.renderer.render();
}
};
PlotKit.EasyPlot.prototype.reload=function(){
this.layout.evaluate();
this.renderer.clear();
this.renderer.render();
};
PlotKit.EasyPlotModule={};
PlotKit.EasyPlotModule.EasyPlot=PlotKit.EasyPlot;
PlotKit.EasyPlotModule.EXPORT=["EasyPlot"];
PlotKit.EasyPlotModule.EXPORT_OK=[];
PlotKit.EasyPlotModule.__new__=function(){
var m=MochiKit.Base;
m.nameFunctions(this);
this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
};
PlotKit.EasyPlotModule.__new__();
MochiKit.Base._exportSymbols(this,PlotKit.EasyPlotModule);function PTPlotLegend(divid,layout,renderer){this.divid=divid;this.layout=layout;this.renderer=renderer}PTPlotLegend.prototype.showLegend=function(){var legenddiv=getElement(this.divid);replaceChildNodes(legenddiv);var tabhead=THEAD(null);var tabfoot=TFOOT(null);var tabbody=partial(TBODY,null);var i=0;var colorcount=this.renderer.options.colorScheme.length;var tabrow;for(var label in this.layout.datasets){var legendcolor=this.renderer.options.colorScheme[i%colorcount];var legendbox=DIV({'class':'legendbox','className':'legendbox'});var labelcell=TD({'class':'legendlabel','className':'legendlabel'},label);if(!(i%2)){tabrow=partial(TR,null)}tabrow=partial(tabrow,TD(null,legendbox),labelcell);legendbox.style.backgroundColor=legendcolor.toHexString();if(i%2){tabrow=tabrow(null);tabbody=partial(tabbody,tabrow)}i++}if((i%2)){tabrow=tabrow(TD(null),TD(null));tabbody=partial(tabbody,tabrow)}tabbody=tabbody(null);tab=TABLE({'class':'legendcontainer','className':'legendcontainer'},tabhead,tabfoot,tabbody);appendChildNodes(legenddiv,tab)};// Copyright 2006 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// TODO: Patterns
// TODO: Radial gradient
// TODO: Clipping paths
// TODO: Coordsize (still need to support stretching)
// TODO: Painting mode
// TODO: Optimize
// TODO: canvas width/height sets content size in moz, border size in ie

// only add this code if we do not already have a canvas implementation
if (!window.CanvasRenderingContext2D) {

(function () {

  // alias some functions to make (compiled) code shorter
  var m = Math;
  var mr = m.round;
  var ms = m.sin;
  var mc = m.cos;

  var G_vmlCanvasManager_ = {
    init: function (opt_doc) {
      var doc = opt_doc || document;
      if (/MSIE/.test(navigator.userAgent) && !window.opera) {
        var self = this;
        doc.attachEvent("onreadystatechange", function () {
          self.init_(doc);
        });
      }
    },

    init_: function (doc, e) {
      if (doc.readyState == "complete") {
        // create xmlns
        if (!doc.namespaces["g_vml_"]) {
          doc.namespaces.add("g_vml_", "urn:schemas-microsoft-com:vml");
        }

        // setup default css
        var ss = doc.createStyleSheet();
        ss.cssText = "canvas{display:inline-block;overflow:hidden;" +
            "text-align:left;}" +
            "g_vml_\\:*{behavior:url(#default#VML)}";

        // find all canvas elements
        var els = doc.getElementsByTagName("canvas");
        for (var i = 0; i < els.length; i++) {
          if (!els[i].getContext) {
            this.initElement(els[i]);
          }
        }
      }
    },

    fixElement_: function (el) {
      // in IE before version 5.5 we would need to add HTML: to the tag name
      // but we do not care about IE before version 6
      var outerHTML = el.outerHTML;
      var newEl = document.createElement(outerHTML);
      // if the tag is still open IE has created the children as siblings and
      // it has also created a tag with the name "/FOO"
      if (outerHTML.slice(-2) != "/>") {
        var tagName = "/" + el.tagName;
        var ns;
        // remove content
        while ((ns = el.nextSibling) && ns.tagName != tagName) {
          ns.removeNode();
        }
        // remove the incorrect closing tag
        if (ns) {
          ns.removeNode();
        }
      }
      el.parentNode.replaceChild(newEl, el);
      return newEl;
    },

    /**
     * Public initializes a canvas element so that it can be used as canvas
     * element from now on. This is called automatically before the page is
     * loaded but if you are creating elements using createElement you need to
     * make sure this is called on the element.
     * @param {HTMLElement} el The canvas element to initialize.
     * @return {HTMLElement} the element that was created.
     */
    initElement: function (el) {
      el = this.fixElement_(el);
      el.getContext = function () {
        if (this.context_) {
          return this.context_;
        }
        return this.context_ = new CanvasRenderingContext2D_(this);
      };

      // do not use inline function because that will leak memory
      // el.attachEvent('onpropertychange', onPropertyChange)
      el.attachEvent('onresize', onResize);

      var attrs = el.attributes;
      if (attrs.width && attrs.width.specified) {
        // TODO: use runtimeStyle and coordsize
        // el.getContext().setWidth_(attrs.width.nodeValue);
        el.style.width = attrs.width.nodeValue + "px";
      }
      if (attrs.height && attrs.height.specified) {
        // TODO: use runtimeStyle and coordsize
        // el.getContext().setHeight_(attrs.height.nodeValue);
        el.style.height = attrs.height.nodeValue + "px";
      }
      //el.getContext().setCoordsize_()
      return el;
    }
  };

  function onPropertyChange(e) {
    // we need to watch changes to width and height
    switch (e.propertyName) {
      case 'width':
      case 'height':
        // TODO: coordsize and size
        break;
    }
  }

  function onResize(e) {
    var el = e.srcElement;
    if (el.firstChild) {
      el.firstChild.style.width =  el.clientWidth + 'px';
      el.firstChild.style.height = el.clientHeight + 'px';
    }
  }

  G_vmlCanvasManager_.init();

  // precompute "00" to "FF"
  var dec2hex = [];
  for (var i = 0; i < 16; i++) {
    for (var j = 0; j < 16; j++) {
      dec2hex[i * 16 + j] = i.toString(16) + j.toString(16);
    }
  }

  function createMatrixIdentity() {
    return [
      [1, 0, 0],
      [0, 1, 0],
      [0, 0, 1]
    ];
  }

  function matrixMultiply(m1, m2) {
    var result = createMatrixIdentity();

    for (var x = 0; x < 3; x++) {
      for (var y = 0; y < 3; y++) {
        var sum = 0;

        for (var z = 0; z < 3; z++) {
          sum += m1[x][z] * m2[z][y];
        }

        result[x][y] = sum;
      }
    }
    return result;
  }

  function copyState(o1, o2) {
    o2.fillStyle     = o1.fillStyle;
    o2.lineCap       = o1.lineCap;
    o2.lineJoin      = o1.lineJoin;
    o2.lineWidth     = o1.lineWidth;
    o2.miterLimit    = o1.miterLimit;
    o2.shadowBlur    = o1.shadowBlur;
    o2.shadowColor   = o1.shadowColor;
    o2.shadowOffsetX = o1.shadowOffsetX;
    o2.shadowOffsetY = o1.shadowOffsetY;
    o2.strokeStyle   = o1.strokeStyle;
  }

  function processStyle(styleString) {
    var str, alpha = 1;

    styleString = String(styleString);
    if (styleString.substring(0, 3) == "rgb") {
      var start = styleString.indexOf("(", 3);
      var end = styleString.indexOf(")", start + 1);
      var guts = styleString.substring(start + 1, end).split(",");

      str = "#";
      for (var i = 0; i < 3; i++) {
        str += dec2hex[parseInt(guts[i])];
      }

      if ((guts.length == 4) && (styleString.substr(3, 1) == "a")) {
        alpha = guts[3];
      }
    } else {
      str = styleString;
    }

    return [str, alpha];
  }

  function processLineCap(lineCap) {
    switch (lineCap) {
      case "butt":
        return "flat";
      case "round":
        return "round";
      case "square":
      default:
        return "square";
    }
  }

  /**
   * This class implements CanvasRenderingContext2D interface as described by
   * the WHATWG.
   * @param {HTMLElement} surfaceElement The element that the 2D context should
   * be associated with
   */
   function CanvasRenderingContext2D_(surfaceElement) {
    this.m_ = createMatrixIdentity();

    this.mStack_ = [];
    this.aStack_ = [];
    this.currentPath_ = [];

    // Canvas context properties
    this.strokeStyle = "#000";
    this.fillStyle = "#ccc";

    this.lineWidth = 1;
    this.lineJoin = "miter";
    this.lineCap = "butt";
    this.miterLimit = 10;
    this.globalAlpha = 1;

    var el = document.createElement('div');
    el.style.width =  surfaceElement.clientWidth + 'px';
    el.style.height = surfaceElement.clientHeight + 'px';
    el.style.overflow = 'hidden';
    el.style.position = 'absolute';
    surfaceElement.appendChild(el);

    this.element_ = el;
    this.arcScaleX_ = 1;
    this.arcScaleY_ = 1;
  };

  var contextPrototype = CanvasRenderingContext2D_.prototype;
  contextPrototype.clearRect = function() {
    this.element_.innerHTML = "";
    this.currentPath_ = [];
  };

  contextPrototype.beginPath = function() {
    // TODO: Branch current matrix so that save/restore has no effect
    //       as per safari docs.

    this.currentPath_ = [];
  };

  contextPrototype.moveTo = function(aX, aY) {
    this.currentPath_.push({type: "moveTo", x: aX, y: aY});
  };

  contextPrototype.lineTo = function(aX, aY) {
    this.currentPath_.push({type: "lineTo", x: aX, y: aY});
  };

  contextPrototype.bezierCurveTo = function(aCP1x, aCP1y,
                                            aCP2x, aCP2y,
                                            aX, aY) {
    this.currentPath_.push({type: "bezierCurveTo",
                           cp1x: aCP1x,
                           cp1y: aCP1y,
                           cp2x: aCP2x,
                           cp2y: aCP2y,
                           x: aX,
                           y: aY});
  };

  contextPrototype.quadraticCurveTo = function(aCPx, aCPy, aX, aY) {
    // VML's qb produces different output to Firefox's
    // FF's behaviour seems to have changed in 1.5.0.1, check this
    this.bezierCurveTo(aCPx, aCPy, aCPx, aCPy, aX, aY);
  };

  contextPrototype.arc = function(aX, aY, aRadius,
                                  aStartAngle, aEndAngle, aClockwise) {
    aRadius *= 10;
    var arcType = aClockwise ? "at" : "wa";

    var xStart = aX + (mc(aStartAngle) * aRadius) - 5;
    var yStart = aY + (ms(aStartAngle) * aRadius) - 5;

    var xEnd = aX + (mc(aEndAngle) * aRadius) - 5;
    var yEnd = aY + (ms(aEndAngle) * aRadius) - 5;

    this.currentPath_.push({type: arcType,
                           x: aX,
                           y: aY,
                           radius: aRadius,
                           xStart: xStart,
                           yStart: yStart,
                           xEnd: xEnd,
                           yEnd: yEnd});

  };

  contextPrototype.rect = function(aX, aY, aWidth, aHeight) {
    this.moveTo(aX, aY);
    this.lineTo(aX + aWidth, aY);
    this.lineTo(aX + aWidth, aY + aHeight);
    this.lineTo(aX, aY + aHeight);
    this.closePath();
  };

  contextPrototype.strokeRect = function(aX, aY, aWidth, aHeight) {
    // Will destroy any existing path (same as FF behaviour)
    this.beginPath();
    this.moveTo(aX, aY);
    this.lineTo(aX + aWidth, aY);
    this.lineTo(aX + aWidth, aY + aHeight);
    this.lineTo(aX, aY + aHeight);
    this.closePath();
    this.stroke();
  };

  contextPrototype.fillRect = function(aX, aY, aWidth, aHeight) {
    // Will destroy any existing path (same as FF behaviour)
    this.beginPath();
    this.moveTo(aX, aY);
    this.lineTo(aX + aWidth, aY);
    this.lineTo(aX + aWidth, aY + aHeight);
    this.lineTo(aX, aY + aHeight);
    this.closePath();
    this.fill();
  };

  contextPrototype.createLinearGradient = function(aX0, aY0, aX1, aY1) {
    var gradient = new CanvasGradient_("gradient");
    return gradient;
  };

  contextPrototype.createRadialGradient = function(aX0, aY0,
                                                   aR0, aX1,
                                                   aY1, aR1) {
    var gradient = new CanvasGradient_("gradientradial");
    gradient.radius1_ = aR0;
    gradient.radius2_ = aR1;
    gradient.focus_.x = aX0;
    gradient.focus_.y = aY0;
    return gradient;
  };

  contextPrototype.drawImage = function (image, var_args) {
    var dx, dy, dw, dh, sx, sy, sw, sh;
    var w = image.width;
    var h = image.height;

    if (arguments.length == 3) {
      dx = arguments[1];
      dy = arguments[2];
      sx = sy = 0;
      sw = dw = w;
      sh = dh = h;
    } else if (arguments.length == 5) {
      dx = arguments[1];
      dy = arguments[2];
      dw = arguments[3];
      dh = arguments[4];
      sx = sy = 0;
      sw = w;
      sh = h;
    } else if (arguments.length == 9) {
      sx = arguments[1];
      sy = arguments[2];
      sw = arguments[3];
      sh = arguments[4];
      dx = arguments[5];
      dy = arguments[6];
      dw = arguments[7];
      dh = arguments[8];
    } else {
      throw "Invalid number of arguments";
    }

    var d = this.getCoords_(dx, dy);

    var w2 = (sw / 2);
    var h2 = (sh / 2);

    var vmlStr = [];

    // For some reason that I've now forgotten, using divs didn't work
    vmlStr.push(' <g_vml_:group',
                ' coordsize="1000,1000"',
                ' coordorigin="0, 0"' ,
                ' style="width:100px;height:100px;position:absolute;');

    // If filters are necessary (rotation exists), create them
    // filters are bog-slow, so only create them if abbsolutely necessary
    // The following check doesn't account for skews (which don't exist
    // in the canvas spec (yet) anyway.

    if (this.m_[0][0] != 1 || this.m_[0][1]) {
      var filter = [];

      // Note the 12/21 reversal
      filter.push("M11='", this.m_[0][0], "',",
                  "M12='", this.m_[1][0], "',",
                  "M21='", this.m_[0][1], "',",
                  "M22='", this.m_[1][1], "',",
                  "Dx='", d.x, "',",
                  "Dy='", d.y, "'");

      // Bounding box calculation (need to minimize displayed area so that
      // filters don't waste time on unused pixels.
      var max = d;
      var c2 = this.getCoords_(dx+dw, dy);
      var c3 = this.getCoords_(dx, dy+dh);
      var c4 = this.getCoords_(dx+dw, dy+dh);

      max.x = Math.max(max.x, c2.x, c3.x, c4.x);
      max.y = Math.max(max.y, c2.y, c3.y, c4.y);

      vmlStr.push(" padding:0 ", mr(max.x), "px ", mr(max.y),
                  "px 0;filter:progid:DXImageTransform.Microsoft.Matrix(",
                  filter.join(""), ", sizingmethod='clip');")
    } else {
      vmlStr.push(" top:", d.y, "px;left:", d.x, "px;")
    }

    vmlStr.push(' ">' ,
                '<g_vml_:image src="', image.src, '"',
                ' style="width:', dw, ';',
                ' height:', dh, ';"',
                ' cropleft="', sx / w, '"',
                ' croptop="', sy / h, '"',
                ' cropright="', (w - sx - sw) / w, '"',
                ' cropbottom="', (h - sy - sh) / h, '"',
                ' />',
                '</g_vml_:group>');

    this.element_.insertAdjacentHTML("BeforeEnd",
                                    vmlStr.join(""));
  };

  contextPrototype.stroke = function(aFill) {
    var lineStr = [];
    var lineOpen = false;
    var a = processStyle(aFill ? this.fillStyle : this.strokeStyle);
    var color = a[0];
    var opacity = a[1] * this.globalAlpha;

    lineStr.push('<g_vml_:shape',
                 ' fillcolor="', color, '"',
                 ' filled="', Boolean(aFill), '"',
                 ' style="position:absolute;width:10;height:10;"',
                 ' coordorigin="0 0" coordsize="100 100"',
                 ' stroked="', !aFill, '"',
                 ' strokeweight="', this.lineWidth, '"',
                 ' strokecolor="', color, '"',
                 ' path="');

    var newSeq = false;
    var min = {x: null, y: null};
    var max = {x: null, y: null};

    for (var i = 0; i < this.currentPath_.length; i++) {
      var p = this.currentPath_[i];

      if (p.type == "moveTo") {
        lineStr.push(" m ");
        var c = this.getCoords_(p.x, p.y);
        lineStr.push(mr(c.x), ",", mr(c.y));
      } else if (p.type == "lineTo") {
        lineStr.push(" l ");
        var c = this.getCoords_(p.x, p.y);
        lineStr.push(mr(c.x), ",", mr(c.y));
      } else if (p.type == "close") {
        lineStr.push(" x ");
      } else if (p.type == "bezierCurveTo") {
        lineStr.push(" c ");
        var c = this.getCoords_(p.x, p.y);
        var c1 = this.getCoords_(p.cp1x, p.cp1y);
        var c2 = this.getCoords_(p.cp2x, p.cp2y);
        lineStr.push(mr(c1.x), ",", mr(c1.y), ",",
                     mr(c2.x), ",", mr(c2.y), ",",
                     mr(c.x), ",", mr(c.y));
      } else if (p.type == "at" || p.type == "wa") {
        lineStr.push(" ", p.type, " ");
        var c  = this.getCoords_(p.x, p.y);
        var cStart = this.getCoords_(p.xStart, p.yStart);
        var cEnd = this.getCoords_(p.xEnd, p.yEnd);

        lineStr.push(mr(c.x - this.arcScaleX_ * p.radius), ",",
                     mr(c.y - this.arcScaleY_ * p.radius), " ",
                     mr(c.x + this.arcScaleX_ * p.radius), ",",
                     mr(c.y + this.arcScaleY_ * p.radius), " ",
                     mr(cStart.x), ",", mr(cStart.y), " ",
                     mr(cEnd.x), ",", mr(cEnd.y));
      }


      // TODO: Following is broken for curves due to
      //       move to proper paths.

      // Figure out dimensions so we can do gradient fills
      // properly
      if(c) {
        if (min.x == null || c.x < min.x) {
          min.x = c.x;
        }
        if (max.x == null || c.x > max.x) {
          max.x = c.x;
        }
        if (min.y == null || c.y < min.y) {
          min.y = c.y;
        }
        if (max.y == null || c.y > max.y) {
          max.y = c.y;
        }
      }
    }
    lineStr.push(' ">');

    if (typeof this.fillStyle == "object") {
      var focus = {x: "50%", y: "50%"};
      var width = (max.x - min.x);
      var height = (max.y - min.y);
      var dimension = (width > height) ? width : height;

      focus.x = mr((this.fillStyle.focus_.x / width) * 100 + 50) + "%";
      focus.y = mr((this.fillStyle.focus_.y / height) * 100 + 50) + "%";

      var colors = [];

      // inside radius (%)
      if (this.fillStyle.type_ == "gradientradial") {
        var inside = (this.fillStyle.radius1_ / dimension * 100);

        // percentage that outside radius exceeds inside radius
        var expansion = (this.fillStyle.radius2_ / dimension * 100) - inside;
      } else {
        var inside = 0;
        var expansion = 100;
      }

      var insidecolor = {offset: null, color: null};
      var outsidecolor = {offset: null, color: null};

      // We need to sort 'colors' by percentage, from 0 > 100 otherwise ie
      // won't interpret it correctly
      this.fillStyle.colors_.sort(function (cs1, cs2) {
        return cs1.offset - cs2.offset;
      });

      for (var i = 0; i < this.fillStyle.colors_.length; i++) {
        var fs = this.fillStyle.colors_[i];

        colors.push( (fs.offset * expansion) + inside, "% ", fs.color, ",");

        if (fs.offset > insidecolor.offset || insidecolor.offset == null) {
          insidecolor.offset = fs.offset;
          insidecolor.color = fs.color;
        }

        if (fs.offset < outsidecolor.offset || outsidecolor.offset == null) {
          outsidecolor.offset = fs.offset;
          outsidecolor.color = fs.color;
        }
      }
      colors.pop();

      lineStr.push('<g_vml_:fill',
                   ' color="', outsidecolor.color, '"',
                   ' color2="', insidecolor.color, '"',
                   ' type="', this.fillStyle.type_, '"',
                   ' focusposition="', focus.x, ', ', focus.y, '"',
                   ' colors="', colors.join(""), '"',
                   ' opacity="', opacity, '" />');
    } else if (aFill) {
      lineStr.push('<g_vml_:fill color="', color, '" opacity="', opacity, '" />');
    } else {
      lineStr.push(
        '<g_vml_:stroke',
        ' opacity="', opacity,'"',
        ' joinstyle="', this.lineJoin, '"',
        ' miterlimit="', this.miterLimit, '"',
        ' endcap="', processLineCap(this.lineCap) ,'"',
        ' weight="', this.lineWidth, 'px"',
        ' color="', color,'" />'
      );
    }

    lineStr.push("</g_vml_:shape>");

    this.element_.insertAdjacentHTML("beforeEnd", lineStr.join(""));

    this.currentPath_ = [];
  };

  contextPrototype.fill = function() {
    this.stroke(true);
  }

  contextPrototype.closePath = function() {
    this.currentPath_.push({type: "close"});
  };

  /**
   * @private
   */
  contextPrototype.getCoords_ = function(aX, aY) {
    return {
      x: 10 * (aX * this.m_[0][0] + aY * this.m_[1][0] + this.m_[2][0]) - 5,
      y: 10 * (aX * this.m_[0][1] + aY * this.m_[1][1] + this.m_[2][1]) - 5
    }
  };

  contextPrototype.save = function() {
    var o = {};
    copyState(this, o);
    this.aStack_.push(o);
    this.mStack_.push(this.m_);
    this.m_ = matrixMultiply(createMatrixIdentity(), this.m_);
  };

  contextPrototype.restore = function() {
    copyState(this.aStack_.pop(), this);
    this.m_ = this.mStack_.pop();
  };

  contextPrototype.translate = function(aX, aY) {
    var m1 = [
      [1,  0,  0],
      [0,  1,  0],
      [aX, aY, 1]
    ];

    this.m_ = matrixMultiply(m1, this.m_);
  };

  contextPrototype.rotate = function(aRot) {
    var c = mc(aRot);
    var s = ms(aRot);

    var m1 = [
      [c,  s, 0],
      [-s, c, 0],
      [0,  0, 1]
    ];

    this.m_ = matrixMultiply(m1, this.m_);
  };

  contextPrototype.scale = function(aX, aY) {
    this.arcScaleX_ *= aX;
    this.arcScaleY_ *= aY;
    var m1 = [
      [aX, 0,  0],
      [0,  aY, 0],
      [0,  0,  1]
    ];

    this.m_ = matrixMultiply(m1, this.m_);
  };

  /******** STUBS ********/
  contextPrototype.clip = function() {
    // TODO: Implement
  };

  contextPrototype.arcTo = function() {
    // TODO: Implement
  };

  contextPrototype.createPattern = function() {
    return new CanvasPattern_;
  };

  // Gradient / Pattern Stubs
  function CanvasGradient_(aType) {
    this.type_ = aType;
    this.radius1_ = 0;
    this.radius2_ = 0;
    this.colors_ = [];
    this.focus_ = {x: 0, y: 0};
  }

  CanvasGradient_.prototype.addColorStop = function(aOffset, aColor) {
    aColor = processStyle(aColor);
    this.colors_.push({offset: 1-aOffset, color: aColor});
  };

  function CanvasPattern_() {}

  // set up externs
  G_vmlCanvasManager = G_vmlCanvasManager_;
  CanvasRenderingContext2D = CanvasRenderingContext2D_;
  CanvasGradient = CanvasGradient_;
  CanvasPattern = CanvasPattern_;

})();

} // if
var plotter;
var layout;

var pDefaultPaddingTop = 20;
var pDefaultPaddingRight = 20;
var pDefaultPaddingBottom = 20;
var pDefaultPaddingLeft = 20;

var bDefaultPaddingTop = 0;
var bDefaultPaddingRight = 10;
var bDefaultPaddingBottom = 20;
var bDefaultPaddingLeft = 70;

var lDefaultPaddingTop = 0;
var lDefaultPaddingRight = 10;
var lDefaultPaddingBottom = 30;
var lDefaultPaddingLeft = 50;


var pPaddingTop = pDefaultPaddingTop;
var pPaddingRight = pDefaultPaddingRight;
var pPaddingBottom = pDefaultPaddingBottom;
var pPaddingLeft = pDefaultPaddingLeft;

var bPaddingTop = bDefaultPaddingTop;
var bPaddingRight = bDefaultPaddingRight;
var bPaddingBottom = bDefaultPaddingBottom;
var bPaddingLeft = bDefaultPaddingLeft;

var lPaddingTop = lDefaultPaddingTop;
var lPaddingRight = lDefaultPaddingRight;
var lPaddingBottom = lDefaultPaddingBottom;
var lPaddingLeft = lDefaultPaddingLeft;
var maxValExternal = -1;


if (typeof PieDraw != 'function') {


function getGraphDrawOptions(DatasetIN, xTicksIN, extraOptions, gType) {
gType = gType.toUpperCase();
var xTicks = [];
for (var i = 0; i < xTicksIN.length; i++) {xTicks[i] = { v: i, label: xTicksIN[i], tooltip: xTicksIN[i] }};

var hC = MochiKit.Color.Color.fromHexString;
var colorScheme = [hC("#BEA7D9"), hC("#C3D9A7"), hC("#FFFA94"), hC("#F7B0B0"), hC("#8F8FF1"), hC("#FFD6AD"), hC("#ADD6FF"), hC("#CBFF7E"), hC("#FFC774"), hC("#DDD8B9"), hC("#EB8686"), hC("#D6AD33")];
if (DatasetIN.length <= 2){colorScheme[0] = hC("#AE91CF");}
if (DatasetIN.length == 2){colorScheme[1] = hC("#B4CF91");}

if (extraOptions.reorderColors!==undefined){var newColorScheme=[];for(var c=0;c<extraOptions.reorderColors.length; c++){newColorScheme.push(colorScheme[extraOptions.reorderColors[c]]);}colorScheme=newColorScheme;}
if (colorScheme.length<DatasetIN.length){/*throw "Not enough colors defined for PIE graph";*/}

var minVal = 0;
var maxVal = -1;
if(gType != "PIE")
{
  for (var i = 0; i < DatasetIN.length; i++){for (var d = 0; d < DatasetIN[i].length; d++) {minVal = Math.min(minVal, DatasetIN[i][d]);maxVal = Math.max(maxVal, DatasetIN[i][d]);}}

  maxVal = Math.max(maxVal, maxValExternal);
  var mult = Math.pow(10, parseInt(Math.log(maxVal) / Math.LN10));
  var base = (maxVal >= 100) ? (maxVal + "").charAt(0) : 0;
  while (base * mult < maxVal){base = parseFloat(base) + 0.5;}

  if (extraOptions.drawYAxis !== false) { maxVal = base * mult; }
  var yPrec = (maxVal < 10) ? 1 : 0;
  if (maxVal < 1) { yPrec = (maxVal + "").length - 1; }
  if (minVal < 0) { minVal *= -1; mult = Math.pow(10, parseInt(Math.log(minVal) / Math.LN10)); base = (minVal >= 10) ? (minVal + "").charAt(0) : 0; while (base * mult < minVal) base = parseFloat(base) + 0.5; minVal = -base * mult }
}

var pTAB = [];
pTAB["PIE"] = { top: pPaddingTop, right: pPaddingRight, bottom: pPaddingBottom, left: pPaddingLeft };
pTAB["BAR"] = { top: bPaddingTop, right: bPaddingRight, bottom: bPaddingBottom, left: bPaddingLeft };
pTAB["LINE"] = { top: lPaddingTop, right: lPaddingRight, bottom: lPaddingBottom, left: lPaddingLeft };

var options = {
  "gType" : gType.toLowerCase(),
  "IECanvasHTC": "/js/iecanvas.htc",
  "colorScheme": colorScheme,
  "padding": pTAB[gType],
  "xTicks": xTicks,
  "DatasetIN": DatasetIN
};


if (gType != "PIE")
{
  options["yTickPrecision"] = yPrec;
  options["yAxis"] = [minVal, maxVal];
} else
{
  options["axisLabelWidth"] =  100;
  options["pieRadius"] = 0.38;
}

if ((extraOptions !== 0) && (extraOptions !== undefined)) { for (name in extraOptions) { options[name] = extraOptions[name]; } }
return options;
}


function getGraphDrawLayout(cnt, Series, options) {
if (typeof window.layouts == 'undefined') { window.layouts = new Array(); }
if (typeof window.layouts[cnt] == 'undefined') { window.layouts[cnt] = new PlotKit.Layout(options.gType, options); }
else if (window.layouts[cnt].options.gType != options.gType) {window.plotters[cnt].clear();delete window.plotters[cnt];delete window.layouts[cnt];window.layouts[cnt] = new PlotKit.Layout(options.gType, options); }
else if (options !== null) {if (typeof window.layouts[cnt].options['skipDraw'] != 'undefined') delete window.layouts[cnt].options['skipDraw'];if (typeof window.layouts[cnt].options['skipEmpty'] != 'undefined') delete window.layouts[cnt].options['skipEmpty'];for (name in options) window.layouts[cnt].options[name] = options[name]; }
var gLayout = window.layouts[cnt];        
var gOptions = gLayout.options;
for (var setName in gLayout.datasets) { delete gLayout.datasets[setName]; }

for (var i = 0; i < options.DatasetIN.length; i++) {
var Dataset = [];
for (var d = 0; d < options.DatasetIN[i].length; d++){Dataset[d] = [d, options.DatasetIN[i][d]];}
if (options.DatasetIN[i].length == 1){Dataset[1] = [1, 0];}
gLayout.addDataset(Series[i], Dataset);
}
gLayout.evaluate();


if ( (typeof gLayout.bars != "undefined") && gLayout.bars.length && (options.DatasetIN[0].length == 1) ) {
var sep = (1 - 0.0625 - (gLayout.bars[0].w * 2 * Series.length)) / Series.length;
for (var i = 0; i < gLayout.bars.length; i += 2) {gLayout.bars[i].w *= 2;gLayout.bars[i].x = (i) ? gLayout.bars[i - 2].x + gLayout.bars[i].w + sep : gLayout.bars[i].x;}
}

var ticks = (gOptions.barOrientation != 'horizontal') ? gLayout.yticks : gLayout.xticks;
for (var i = 0; i < ticks.length; i++)
if (ticks[i][1] > 1000) {
var tick = ticks[i][1];
var off = tick.length - 3;
while (off > 0) {tick = tick.substr(0, off) + "," + tick.substr(off);off -= 3;}
ticks[i][1] = tick;
}
return gLayout;
}

function getGraphPlotter(cnt, Series, options) {
var canvas = MochiKit.DOM.getElement('bg' + cnt);
if (typeof window.plotters == 'undefined') { window.plotters = new Array(); }
if (typeof window.plotters[cnt] == 'undefined') { window.plotters[cnt] = new PlotKit.SweetCanvasRenderer(canvas, window.layouts[cnt], options); }
else window.plotters[cnt].clear();
var gPlotter = window.plotters[cnt];
gPlotter.render();
if (options.customValues){var unit=(options.customUnit!==undefined)?options.customUnit:"%";for (var l=0;l<gPlotter.xlabels.length;l++){var label=gPlotter.xlabels[l].innerHTML;label=label.substr(0, label.indexOf("("));gPlotter.xlabels[l].innerHTML=label+"("+options.DatasetIN[0][l]+unit+")";}}
if (options.forceLegend || (Series.length > 1)) {legend = new PTPlotLegend('legend' + cnt, window.layouts[cnt], gPlotter);legend.showLegend();}
return gPlotter;
}
    

function GraphDraw(cnt, Series, DatasetIN, xTicksIN, extraOptions, gType) {
if (navigator.userAgent.indexOf('NT 5.0') == -1 || (navigator.userAgent.indexOf('MSIE 6') == -1 && navigator.userAgent.indexOf('MSIE 5') == -1)) {
var options = getGraphDrawOptions(DatasetIN, xTicksIN, extraOptions, gType);
drawBarGraph = function() {layout = getGraphDrawLayout(cnt, Series, options);plotter = getGraphPlotter(cnt, Series, options);}
MochiKit.DOM.addLoadEvent(drawBarGraph);
}
maxValExternal = -1;
// force default PIE settings
pPaddingTop = pDefaultPaddingTop;pPaddingRight = pDefaultPaddingRight;pPaddingBottom = pDefaultPaddingBottom;pPaddingLeft = pDefaultPaddingLeft;
// force default BAR settings
bPaddingTop = bDefaultPaddingTop;bPaddingRight = bDefaultPaddingRight;bPaddingBottom = bDefaultPaddingBottom;bPaddingLeft = bDefaultPaddingLeft;
// force default LINE settings
lPaddingTop = lDefaultPaddingTop;lPaddingRight = lDefaultPaddingRight;lPaddingBottom = lDefaultPaddingBottom;lPaddingLeft = lDefaultPaddingLeft;
}



function PieDraw(cnt, DatasetIN, xTicksIN, extraOptions) {GraphDraw(cnt, ['Serie'], [DatasetIN], xTicksIN, extraOptions, "PIE");}
function BarDraw(cnt, Series, DatasetIN, xTicksIN,extraOptions) {GraphDraw(cnt, Series, DatasetIN, xTicksIN, extraOptions, "BAR");}
function LineDraw(cnt, Series, DatasetIN, xTicksIN,extraOptions) {GraphDraw(cnt, Series, DatasetIN, xTicksIN, extraOptions, "LINE");}
}        

// Extended Tooltip Javascript
// copyright 9th August 2002, 3rd July 2005, 24th August 2008
// by Stephen Chapman, Felgall Pty Ltd
// permission is granted to use this javascript provided that the below code is not altered
function pw() { return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth };function mouseX(evt) { return evt.clientX ? evt.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) : evt.pageX; }function mouseY(evt) { return evt.clientY ? evt.clientY + (document.documentElement.scrollTop || document.body.scrollTop) : evt.pageY }function popUp(evt, oi) {if (document.getElementById) {var wp = pw(); dm = document.getElementById(oi);ds = dm.style;st = ds.visibility;if (dm.offsetWidth)ew = dm.offsetWidth;else if (dm.clip.width)ew = dm.clip.width;if (st == "visible" || st == "show"){ ds.visibility = "hidden"; }else {tv = mouseY(evt) - 20;lv = mouseX(evt) - (ew / 4);if (lv < 2) lv = 2;else if (lv + ew > wp)lv -= ew / 2;lv += 'px';tv += 'px';ds.left = lv;ds.top = tv;ds.visibility = "visible"; }}}function popMove(evt, oi) {if (document.getElementById) {var wp = pw();dm = document.getElementById(oi);ds = dm.style;tv = mouseY(evt) - 20;lv = mouseX(evt) - (ew / 4);if (lv < 2) lv = 2;else if (lv + ew > wp)lv -= ew / 2;lv += 'px';tv += 'px';ds.left = lv;ds.top = tv;ds.visibility = 'visible';}}
function loadTTip() {/*if (typeof G_vmlCanvasManager != 'undefined') {var el = document.createElement('canvas');G_vmlCanvasManager.initElement(el);}*/var d = document.createElement("div"); d.id = "graphTIP"; d.style.font = "10px/12px Arial,Helvetica,sans-serif"; d.style.border = "solid 1px #666666"; d.style.padding = "1px"; d.style.position = "absolute"; d.style.zIndex = "100"; d.style.visibility = "hidden"; d.style.color = "#333333"; d.style.top = "20px"; d.style.left = "90px"; d.style.backgroundColor = "#ffffcc"; d.style.layerBackgroundColor = "#ffffcc"; document.body.appendChild(d); } MochiKit.DOM.addLoadEvent(loadTTip); function popHide(evt, oi) { if (document.getElementById(oi)) { document.getElementById(oi).style.visibility = "hidden"; } }


PlotKit.CanvasRenderer.prototype._initialiseEvents = function() {
MochiKit.Signal.connect(this.element, "onmousemove", MochiKit.Base.bind(this.onmousemove, this));
MochiKit.Signal.connect(this.element, "onmouseout", MochiKit.Base.bind(this.onmouseout, this));
};

function cmpY(a, b) { return parseFloat(a) - parseFloat(b); }
function highlight(plot, lidx, sName) {

	var labels = (plot.options.barOrientation != 'horizontal') ? plot.xlabels : plot.ylabels;
    if (plot.labelColor === undefined) { plot.labelColor = labels.length ? labels[0].style.color : '#000';};
    for (var l = 0; l < labels.length; l++) {
        labels[l].style.color = (l == lidx) ? '#000' : plot.labelColor;
        labels[l].style.fontWeight = (l == lidx) ? '900' : "normal";
    }

    var lid = plot.element.id.replace("bg", "legend");
    if (document.getElementById(lid) !== null) {
        var lab = document.getElementById(lid).childNodes[0];        
        for (var r = 0; lab !== undefined && r < lab.rows.length; r++) {
        for (var s = 0; lab !== undefined && s < lab.rows[r].childNodes.length / 2; s++) {
            var cell = lab.rows[r].childNodes[(s + 1) * 2 - 1];
            cell.style.fontWeight = (cell.innerHTML == sName) ? '900' : "normal";
        }}
    }
    

}



PlotKit.CanvasRenderer.prototype.onmouseout = function(e) { popHide(e._event, 'graphTIP'); highlight(this, -1, ""); };
PlotKit.CanvasRenderer.prototype.onmousemove = function(e) {


    var _263 = this._resolveObject(e);
    if ((_263 == null) && (this.event_isinside == null)) { return; }
    if ((_263 == null) && (this.event_isinside != null) && (this.options.drawYAxis == true) ) { popUp(e._event, 'graphTIP') }
    if (_263 != null) {
        if (_263.xval < 0 || _263.yval < 0) { return; }

        var value = _263.yval;
        var lidx = _263.xval;
        var sName = "";

        if (this.layout.style == "bar") {
            sName = _263.name;
        }

        if (this.layout.style == "line") {
            var lid = this.element.id.replace("bg", "legend");
            var lab = document.getElementById(lid).childNodes[0];
            var xidx = _263.xbefore;
            lidx = parseInt(_263.xval + 0.5);
            var xdiv = _263.xval - _263.xbefore;

            var yval = _263.yval;
            var ytab = new Array;
            var stab = new Array;
            var yprojected = new Array;
            for (var p = 0; p < this.layout.points.length; p += this.layout.xticks.length) {
                var ydiv = (this.layout.points[p + xidx + 1].yval - this.layout.points[p + xidx].yval);
                var ypval = this.layout.points[p + xidx].yval + xdiv * ydiv;
                ytab[ypval] = this.layout.points[p + xidx].yval;
                if (lab !== undefined)
                {
                  var row = parseInt(yprojected.length/2);
                  var col = (yprojected.length % 2) * 2 + 1;
                  stab[ypval] = lab.rows[row].childNodes[col].innerHTML;
                }
                yprojected.push(ypval);

            }
            yprojected.sort(cmpY);

            value = yprojected[0];
            for (var y = 1; y < yprojected.length; y++)
                if ((yval > value) && (yval <= yprojected[y]))
                value = yprojected[y];
            sName = stab[value];
        }
        highlight(this, lidx, sName);

		if (value < 1) {var val = value + "";var len = 2;while (len < val.length) if (val[len++] != '0') break;value = val.substr(0,Math.min(val.length,len + 1));}
        else if (value < 100) {
            value = Math.round(value * Math.pow(10, 1)) / Math.pow(10, 1)
        }
        else if (value > 1000) {
            value = Math.round(value);
            var tick = value + ""; var off = tick.length - 3;
            while (off > 0) { tick = tick.substr(0, off) + "," + tick.substr(off); off -= 3; }
            value = tick;
        }
        else {
            value = Math.round(value);
        }

        var ttip = document.getElementById('graphTIP');
        if (ttip && (this.options.drawYAxis == true || this.layout.style == "pie")) {
            ttip.innerHTML = value;
            if (this.event_isinside === null)
                popUp(e._event, 'graphTIP');
            else
                popMove(e._event, 'graphTIP');
        }
        

    }

    this.event_isinside = _263;
}


function GMDraw(gm, idx) {
    if ( idx < 0 || idx >= gm.t.length) return;
    var g = gm.t[idx];
    var opts = (typeof g.e != 'undefined') ? g.e : 0;
    
    var gr = document.getElementById('bg' + gm.g);
    var p = gr.parentNode.parentNode.getElementsByTagName('p');
    if (p.length && (typeof g.d != 'undefined') ) { p[0].innerHTML = g.d; }
    if (g.t == "bar") { BarDraw(gm.g, g.s, g.v, g.l, opts); }
    else if (g.t == "line") { LineDraw(gm.g, g.s, g.v, g.l, opts); }
    else if (g.t == "pie") { PieDraw(gm.g, g.v, g.l, opts); }
    if(!gr.parentNode.getElementsByTagName('div').length) {MochiKit.DOM.addLoadEvent(drawBarGraph);}else{drawBarGraph();}
}/* This notice must be untouched at all times.
wz_jsgraphics.js    v. 2.32
The latest version is available at
http://www.walterzorn.com
or http://www.devira.com
or http://www.walterzorn.de

Copyright (c) 2002-2004 Walter Zorn. All rights reserved.
Created 3. 11. 2002 by Walter Zorn (Web: http://www.walterzorn.com )
Last modified: 21. 6. 2005

Performance optimizations for Internet Explorer
by Thomas Frank and John Holdsworth.
fillPolygon method implemented by Matthieu Haller.

High Performance JavaScript Graphics Library.
Provides methods
- to draw lines, rectangles, ellipses, polygons
	with specifiable line thickness,
- to fill rectangles and ellipses
- to draw text.
NOTE: Operations, functions and branching have rather been optimized
to efficiency and speed than to shortness of source code.

LICENSE: LGPL

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License (LGPL) as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You s
