Date.CultureInfo={name:"en-US",englishName:"English (United States)",nativeName:"English (United States)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"mdy",formatPatterns:{shortDate:"M/d/yyyy",longDate:"dddd, MMMM dd, yyyy",shortTime:"h:mm tt",longTime:"h:mm:ss tt",fullDateTime:"dddd, MMMM dd, yyyy h:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\+|aft(er)?|from|hence)/i,subtract:/^(\-|bef(ore)?|ago)/i,yesterday:/^yes(terday)?/i,today:/^t(od(ay)?)?/i,tomorrow:/^tom(orrow)?/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^mn|min(ute)?s?/i,hour:/^h(our)?s?/i,week:/^w(eek)?s?/i,month:/^m(onth)?s?/i,day:/^d(ay)?s?/i,year:/^y(ear)?s?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\.?m?\.?|p\.?m?\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\s*(\+|\-)\s*\d\d\d\d?)|gmt|utc)/i,ordinalSuffix:/^\s*(st|nd|rd|th)/i,timeContext:/^\s*(\:|a(?!u|p)|p)/i},timezones:[{name:"UTC",offset:"-000"},{name:"GMT",offset:"-000"},{name:"EST",offset:"-0500"},{name:"EDT",offset:"-0400"},{name:"CST",offset:"-0600"},{name:"CDT",offset:"-0500"},{name:"MST",offset:"-0700"},{name:"MDT",offset:"-0600"},{name:"PST",offset:"-0800"},{name:"PDT",offset:"-0700"}]};
(function(){var $D=Date,$P=$D.prototype,$C=$D.CultureInfo,p=function(s,l){if(!l){l=2
}return("000"+s).slice(l*-1)
};
$P.clearTime=function(){this.setHours(0);
this.setMinutes(0);
this.setSeconds(0);
this.setMilliseconds(0);
return this
};
$P.setTimeToNow=function(){var n=new Date();
this.setHours(n.getHours());
this.setMinutes(n.getMinutes());
this.setSeconds(n.getSeconds());
this.setMilliseconds(n.getMilliseconds());
return this
};
$D.today=function(){return new Date().clearTime()
};
$D.compare=function(date1,date2){if(isNaN(date1)||isNaN(date2)){throw new Error(date1+" - "+date2)
}else{if(date1 instanceof Date&&date2 instanceof Date){return(date1<date2)?-1:(date1>date2)?1:0
}else{throw new TypeError(date1+" - "+date2)
}}};
$D.equals=function(date1,date2){return(date1.compareTo(date2)===0)
};
$D.getDayNumberFromName=function(name){var n=$C.dayNames,m=$C.abbreviatedDayNames,o=$C.shortestDayNames,s=name.toLowerCase();
for(var i=0;
i<n.length;
i++){if(n[i].toLowerCase()==s||m[i].toLowerCase()==s||o[i].toLowerCase()==s){return i
}}return -1
};
$D.getMonthNumberFromName=function(name){var n=$C.monthNames,m=$C.abbreviatedMonthNames,s=name.toLowerCase();
for(var i=0;
i<n.length;
i++){if(n[i].toLowerCase()==s||m[i].toLowerCase()==s){return i
}}return -1
};
$D.isLeapYear=function(year){return((year%4===0&&year%100!==0)||year%400===0)
};
$D.getDaysInMonth=function(year,month){return[31,($D.isLeapYear(year)?29:28),31,30,31,30,31,31,30,31,30,31][month]
};
$D.getTimezoneAbbreviation=function(offset){var z=$C.timezones,p;
for(var i=0;
i<z.length;
i++){if(z[i].offset===offset){return z[i].name
}}return null
};
$D.getTimezoneOffset=function(name){var z=$C.timezones,p;
for(var i=0;
i<z.length;
i++){if(z[i].name===name.toUpperCase()){return z[i].offset
}}return null
};
$P.clone=function(){return new Date(this.getTime())
};
$P.compareTo=function(date){return Date.compare(this,date)
};
$P.equals=function(date){return Date.equals(this,date||new Date())
};
$P.between=function(start,end){return this.getTime()>=start.getTime()&&this.getTime()<=end.getTime()
};
$P.isAfter=function(date){return this.compareTo(date||new Date())===1
};
$P.isBefore=function(date){return(this.compareTo(date||new Date())===-1)
};
$P.isToday=function(){return this.isSameDay(new Date())
};
$P.isSameDay=function(date){return this.clone().clearTime().equals(date.clone().clearTime())
};
$P.addMilliseconds=function(value){this.setMilliseconds(this.getMilliseconds()+value);
return this
};
$P.addSeconds=function(value){return this.addMilliseconds(value*1000)
};
$P.addMinutes=function(value){return this.addMilliseconds(value*60000)
};
$P.addHours=function(value){return this.addMilliseconds(value*3600000)
};
$P.addDays=function(value){this.setDate(this.getDate()+value);
return this
};
$P.addWeeks=function(value){return this.addDays(value*7)
};
$P.addMonths=function(value){var n=this.getDate();
this.setDate(1);
this.setMonth(this.getMonth()+value);
this.setDate(Math.min(n,$D.getDaysInMonth(this.getFullYear(),this.getMonth())));
return this
};
$P.addYears=function(value){return this.addMonths(value*12)
};
$P.add=function(config){if(typeof config=="number"){this._orient=config;
return this
}var x=config;
if(x.milliseconds){this.addMilliseconds(x.milliseconds)
}if(x.seconds){this.addSeconds(x.seconds)
}if(x.minutes){this.addMinutes(x.minutes)
}if(x.hours){this.addHours(x.hours)
}if(x.weeks){this.addWeeks(x.weeks)
}if(x.months){this.addMonths(x.months)
}if(x.years){this.addYears(x.years)
}if(x.days){this.addDays(x.days)
}return this
};
var $y,$m,$d;
$P.getWeek=function(){var a,b,c,d,e,f,g,n,s,w;
$y=(!$y)?this.getFullYear():$y;
$m=(!$m)?this.getMonth()+1:$m;
$d=(!$d)?this.getDate():$d;
if($m<=2){a=$y-1;
b=(a/4|0)-(a/100|0)+(a/400|0);
c=((a-1)/4|0)-((a-1)/100|0)+((a-1)/400|0);
s=b-c;
e=0;
f=$d-1+(31*($m-1))
}else{a=$y;
b=(a/4|0)-(a/100|0)+(a/400|0);
c=((a-1)/4|0)-((a-1)/100|0)+((a-1)/400|0);
s=b-c;
e=s+1;
f=$d+((153*($m-3)+2)/5)+58+s
}g=(a+b)%7;
d=(f+g-e)%7;
n=(f+3-d)|0;
if(n<0){w=53-((g-s)/5|0)
}else{if(n>364+s){w=1
}else{w=(n/7|0)+1
}}$y=$m=$d=null;
return w
};
$P.getISOWeek=function(){$y=this.getUTCFullYear();
$m=this.getUTCMonth()+1;
$d=this.getUTCDate();
return p(this.getWeek())
};
$P.setWeek=function(n){return this.moveToDayOfWeek(1).addWeeks(n-this.getWeek())
};
$D._validate=function(n,min,max,name){if(typeof n=="undefined"){return false
}else{if(typeof n!="number"){throw new TypeError(n+" is not a Number.")
}else{if(n<min||n>max){throw new RangeError(n+" is not a valid value for "+name+".")
}}}return true
};
$D.validateMillisecond=function(value){return $D._validate(value,0,999,"millisecond")
};
$D.validateSecond=function(value){return $D._validate(value,0,59,"second")
};
$D.validateMinute=function(value){return $D._validate(value,0,59,"minute")
};
$D.validateHour=function(value){return $D._validate(value,0,23,"hour")
};
$D.validateDay=function(value,year,month){return $D._validate(value,1,$D.getDaysInMonth(year,month),"day")
};
$D.validateMonth=function(value){return $D._validate(value,0,11,"month")
};
$D.validateYear=function(value){return $D._validate(value,0,9999,"year")
};
$P.set=function(config){if($D.validateMillisecond(config.millisecond)){this.addMilliseconds(config.millisecond-this.getMilliseconds())
}if($D.validateSecond(config.second)){this.addSeconds(config.second-this.getSeconds())
}if($D.validateMinute(config.minute)){this.addMinutes(config.minute-this.getMinutes())
}if($D.validateHour(config.hour)){this.addHours(config.hour-this.getHours())
}if($D.validateMonth(config.month)){this.addMonths(config.month-this.getMonth())
}if($D.validateYear(config.year)){this.addYears(config.year-this.getFullYear())
}if($D.validateDay(config.day,this.getFullYear(),this.getMonth())){this.addDays(config.day-this.getDate())
}if(config.timezone){this.setTimezone(config.timezone)
}if(config.timezoneOffset){this.setTimezoneOffset(config.timezoneOffset)
}if(config.week&&$D._validate(config.week,0,53,"week")){this.setWeek(config.week)
}return this
};
$P.moveToFirstDayOfMonth=function(){return this.set({day:1})
};
$P.moveToLastDayOfMonth=function(){return this.set({day:$D.getDaysInMonth(this.getFullYear(),this.getMonth())})
};
$P.moveToNthOccurrence=function(dayOfWeek,occurrence){var shift=0;
if(occurrence>0){shift=occurrence-1
}else{if(occurrence===-1){this.moveToLastDayOfMonth();
if(this.getDay()!==dayOfWeek){this.moveToDayOfWeek(dayOfWeek,-1)
}return this
}}return this.moveToFirstDayOfMonth().addDays(-1).moveToDayOfWeek(dayOfWeek,+1).addWeeks(shift)
};
$P.moveToDayOfWeek=function(dayOfWeek,orient){var diff=(dayOfWeek-this.getDay()+7*(orient||+1))%7;
return this.addDays((diff===0)?diff+=7*(orient||+1):diff)
};
$P.moveToMonth=function(month,orient){var diff=(month-this.getMonth()+12*(orient||+1))%12;
return this.addMonths((diff===0)?diff+=12*(orient||+1):diff)
};
$P.getOrdinalNumber=function(){return Math.ceil((this.clone().clearTime()-new Date(this.getFullYear(),0,1))/86400000)+1
};
$P.getTimezone=function(){return $D.getTimezoneAbbreviation(this.getUTCOffset())
};
$P.setTimezoneOffset=function(offset){var here=this.getTimezoneOffset(),there=Number(offset)*-6/10;
return this.addMinutes(there-here)
};
$P.setTimezone=function(offset){return this.setTimezoneOffset($D.getTimezoneOffset(offset))
};
$P.hasDaylightSavingTime=function(){return(Date.today().set({month:0,day:1}).getTimezoneOffset()!==Date.today().set({month:6,day:1}).getTimezoneOffset())
};
$P.isDaylightSavingTime=function(){return(this.hasDaylightSavingTime()&&new Date().getTimezoneOffset()===Date.today().set({month:6,day:1}).getTimezoneOffset())
};
$P.getUTCOffset=function(){var n=this.getTimezoneOffset()*-10/6,r;
if(n<0){r=(n-10000).toString();
return r.charAt(0)+r.substr(2)
}else{r=(n+10000).toString();
return"+"+r.substr(1)
}};
$P.getElapsed=function(date){return(date||new Date())-this
};
if(!$P.toISOString){$P.toISOString=function(){function f(n){return n<10?"0"+n:n
}return'"'+this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+'Z"'
}
}$P._toString=$P.toString;
$P.toString=function(format){var x=this;
if(format&&format.length==1){var c=$C.formatPatterns;
x.t=x.toString;
switch(format){case"d":return x.t(c.shortDate);
case"D":return x.t(c.longDate);
case"F":return x.t(c.fullDateTime);
case"m":return x.t(c.monthDay);
case"r":return x.t(c.rfc1123);
case"s":return x.t(c.sortableDateTime);
case"t":return x.t(c.shortTime);
case"T":return x.t(c.longTime);
case"u":return x.t(c.universalSortableDateTime);
case"y":return x.t(c.yearMonth)
}}var ord=function(n){switch(n*1){case 1:case 21:case 31:return"st";
case 2:case 22:return"nd";
case 3:case 23:return"rd";
default:return"th"
}};
return format?format.replace(/(\\)?(dd?d?d?|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|S)/g,function(m){if(m.charAt(0)==="\\"){return m.replace("\\","")
}x.h=x.getHours;
switch(m){case"hh":return p(x.h()<13?(x.h()===0?12:x.h()):(x.h()-12));
case"h":return x.h()<13?(x.h()===0?12:x.h()):(x.h()-12);
case"HH":return p(x.h());
case"H":return x.h();
case"mm":return p(x.getMinutes());
case"m":return x.getMinutes();
case"ss":return p(x.getSeconds());
case"s":return x.getSeconds();
case"yyyy":return p(x.getFullYear(),4);
case"yy":return p(x.getFullYear());
case"dddd":return $C.dayNames[x.getDay()];
case"ddd":return $C.abbreviatedDayNames[x.getDay()];
case"dd":return p(x.getDate());
case"d":return x.getDate();
case"MMMM":return $C.monthNames[x.getMonth()];
case"MMM":return $C.abbreviatedMonthNames[x.getMonth()];
case"MM":return p((x.getMonth()+1));
case"M":return x.getMonth()+1;
case"t":return x.h()<12?$C.amDesignator.substring(0,1):$C.pmDesignator.substring(0,1);
case"tt":return x.h()<12?$C.amDesignator:$C.pmDesignator;
case"S":return ord(x.getDate());
default:return m
}}):this._toString()
}
}());
(function(){var $D=Date,$P=$D.prototype,$C=$D.CultureInfo,$N=Number.prototype;
$P._orient=+1;
$P._nth=null;
$P._is=false;
$P._same=false;
$P._isSecond=false;
$N._dateElement="day";
$P.next=function(){this._orient=+1;
return this
};
$D.next=function(){return $D.today().next()
};
$P.last=$P.prev=$P.previous=function(){this._orient=-1;
return this
};
$D.last=$D.prev=$D.previous=function(){return $D.today().last()
};
$P.is=function(){this._is=true;
return this
};
$P.same=function(){this._same=true;
this._isSecond=false;
return this
};
$P.today=function(){return this.same().day()
};
$P.weekday=function(){if(this._is){this._is=false;
return(!this.is().sat()&&!this.is().sun())
}return false
};
$P.at=function(time){return(typeof time==="string")?$D.parse(this.toString("d")+" "+time):this.set(time)
};
$N.fromNow=$N.after=function(date){var c={};
c[this._dateElement]=this;
return((!date)?new Date():date.clone()).add(c)
};
$N.ago=$N.before=function(date){var c={};
c[this._dateElement]=this*-1;
return((!date)?new Date():date.clone()).add(c)
};
var dx=("sunday monday tuesday wednesday thursday friday saturday").split(/\s/),mx=("january february march april may june july august september october november december").split(/\s/),px=("Millisecond Second Minute Hour Day Week Month Year").split(/\s/),pxf=("Milliseconds Seconds Minutes Hours Date Week Month FullYear").split(/\s/),nth=("final first second third fourth fifth").split(/\s/),de;
$P.toObject=function(){var o={};
for(var i=0;
i<px.length;
i++){o[px[i].toLowerCase()]=this["get"+pxf[i]]()
}return o
};
$D.fromObject=function(config){config.week=null;
return Date.today().set(config)
};
var df=function(n){return function(){if(this._is){this._is=false;
return this.getDay()==n
}if(this._nth!==null){if(this._isSecond){this.addSeconds(this._orient*-1)
}this._isSecond=false;
var ntemp=this._nth;
this._nth=null;
var temp=this.clone().moveToLastDayOfMonth();
this.moveToNthOccurrence(n,ntemp);
if(this>temp){throw new RangeError($D.getDayName(n)+" does not occur "+ntemp+" times in the month of "+$D.getMonthName(temp.getMonth())+" "+temp.getFullYear()+".")
}return this
}return this.moveToDayOfWeek(n,this._orient)
}
};
var sdf=function(n){return function(){var t=$D.today(),shift=n-t.getDay();
if(n===0&&$C.firstDayOfWeek===1&&t.getDay()!==0){shift=shift+7
}return t.addDays(shift)
}
};
for(var i=0;
i<dx.length;
i++){$D[dx[i].toUpperCase()]=$D[dx[i].toUpperCase().substring(0,3)]=i;
$D[dx[i]]=$D[dx[i].substring(0,3)]=sdf(i);
$P[dx[i]]=$P[dx[i].substring(0,3)]=df(i)
}var mf=function(n){return function(){if(this._is){this._is=false;
return this.getMonth()===n
}return this.moveToMonth(n,this._orient)
}
};
var smf=function(n){return function(){return $D.today().set({month:n,day:1})
}
};
for(var j=0;
j<mx.length;
j++){$D[mx[j].toUpperCase()]=$D[mx[j].toUpperCase().substring(0,3)]=j;
$D[mx[j]]=$D[mx[j].substring(0,3)]=smf(j);
$P[mx[j]]=$P[mx[j].substring(0,3)]=mf(j)
}var ef=function(j){return function(){if(this._isSecond){this._isSecond=false;
return this
}if(this._same){this._same=this._is=false;
var o1=this.toObject(),o2=(arguments[0]||new Date()).toObject(),v="",k=j.toLowerCase();
for(var m=(px.length-1);
m>-1;
m--){v=px[m].toLowerCase();
if(o1[v]!=o2[v]){return false
}if(k==v){break
}}return true
}if(j.substring(j.length-1)!="s"){j+="s"
}return this["add"+j](this._orient)
}
};
var nf=function(n){return function(){this._dateElement=n;
return this
}
};
for(var k=0;
k<px.length;
k++){de=px[k].toLowerCase();
$P[de]=$P[de+"s"]=ef(px[k]);
$N[de]=$N[de+"s"]=nf(de)
}$P._ss=ef("Second");
var nthfn=function(n){return function(dayOfWeek){if(this._same){return this._ss(arguments[0])
}if(dayOfWeek||dayOfWeek===0){return this.moveToNthOccurrence(dayOfWeek,n)
}this._nth=n;
if(n===2&&(dayOfWeek===undefined||dayOfWeek===null)){this._isSecond=true;
return this.addSeconds(this._orient)
}return this
}
};
for(var l=0;
l<nth.length;
l++){$P[nth[l]]=(l===0)?nthfn(-1):nthfn(l)
}}());
(function(){Date.Parsing={Exception:function(s){this.message="Parse error at '"+s.substring(0,10)+" ...'"
}};
var $P=Date.Parsing;
var _=$P.Operators={rtoken:function(r){return function(s){var mx=s.match(r);
if(mx){return([mx[0],s.substring(mx[0].length)])
}else{throw new $P.Exception(s)
}}
},token:function(s){return function(s){return _.rtoken(new RegExp("^s*"+s+"s*"))(s)
}
},stoken:function(s){return _.rtoken(new RegExp("^"+s))
},until:function(p){return function(s){var qx=[],rx=null;
while(s.length){try{rx=p.call(this,s)
}catch(e){qx.push(rx[0]);
s=rx[1];
continue
}break
}return[qx,s]
}
},many:function(p){return function(s){var rx=[],r=null;
while(s.length){try{r=p.call(this,s)
}catch(e){return[rx,s]
}rx.push(r[0]);
s=r[1]
}return[rx,s]
}
},optional:function(p){return function(s){var r=null;
try{r=p.call(this,s)
}catch(e){return[null,s]
}return[r[0],r[1]]
}
},not:function(p){return function(s){try{p.call(this,s)
}catch(e){return[null,s]
}throw new $P.Exception(s)
}
},ignore:function(p){return p?function(s){var r=null;
r=p.call(this,s);
return[null,r[1]]
}:null
},product:function(){var px=arguments[0],qx=Array.prototype.slice.call(arguments,1),rx=[];
for(var i=0;
i<px.length;
i++){rx.push(_.each(px[i],qx))
}return rx
},cache:function(rule){var cache={},r=null;
return function(s){try{r=cache[s]=(cache[s]||rule.call(this,s))
}catch(e){r=cache[s]=e
}if(r instanceof $P.Exception){throw r
}else{return r
}}
},any:function(){var px=arguments;
return function(s){var r=null;
for(var i=0;
i<px.length;
i++){if(px[i]==null){continue
}try{r=(px[i].call(this,s))
}catch(e){r=null
}if(r){return r
}}throw new $P.Exception(s)
}
},each:function(){var px=arguments;
return function(s){var rx=[],r=null;
for(var i=0;
i<px.length;
i++){if(px[i]==null){continue
}try{r=(px[i].call(this,s))
}catch(e){throw new $P.Exception(s)
}rx.push(r[0]);
s=r[1]
}return[rx,s]
}
},all:function(){var px=arguments,_=_;
return _.each(_.optional(px))
},sequence:function(px,d,c){d=d||_.rtoken(/^\s*/);
c=c||null;
if(px.length==1){return px[0]
}return function(s){var r=null,q=null;
var rx=[];
for(var i=0;
i<px.length;
i++){try{r=px[i].call(this,s)
}catch(e){break
}rx.push(r[0]);
try{q=d.call(this,r[1])
}catch(ex){q=null;
break
}s=q[1]
}if(!r){throw new $P.Exception(s)
}if(q){throw new $P.Exception(q[1])
}if(c){try{r=c.call(this,r[1])
}catch(ey){throw new $P.Exception(r[1])
}}return[rx,(r?r[1]:s)]
}
},between:function(d1,p,d2){d2=d2||d1;
var _fn=_.each(_.ignore(d1),p,_.ignore(d2));
return function(s){var rx=_fn.call(this,s);
return[[rx[0][0],r[0][2]],rx[1]]
}
},list:function(p,d,c){d=d||_.rtoken(/^\s*/);
c=c||null;
return(p instanceof Array?_.each(_.product(p.slice(0,-1),_.ignore(d)),p.slice(-1),_.ignore(c)):_.each(_.many(_.each(p,_.ignore(d))),px,_.ignore(c)))
},set:function(px,d,c){d=d||_.rtoken(/^\s*/);
c=c||null;
return function(s){var r=null,p=null,q=null,rx=null,best=[[],s],last=false;
for(var i=0;
i<px.length;
i++){q=null;
p=null;
r=null;
last=(px.length==1);
try{r=px[i].call(this,s)
}catch(e){continue
}rx=[[r[0]],r[1]];
if(r[1].length>0&&!last){try{q=d.call(this,r[1])
}catch(ex){last=true
}}else{last=true
}if(!last&&q[1].length===0){last=true
}if(!last){var qx=[];
for(var j=0;
j<px.length;
j++){if(i!=j){qx.push(px[j])
}}p=_.set(qx,d).call(this,q[1]);
if(p[0].length>0){rx[0]=rx[0].concat(p[0]);
rx[1]=p[1]
}}if(rx[1].length<best[1].length){best=rx
}if(best[1].length===0){break
}}if(best[0].length===0){return best
}if(c){try{q=c.call(this,best[1])
}catch(ey){throw new $P.Exception(best[1])
}best[1]=q[1]
}return best
}
},forward:function(gr,fname){return function(s){return gr[fname].call(this,s)
}
},replace:function(rule,repl){return function(s){var r=rule.call(this,s);
return[repl,r[1]]
}
},process:function(rule,fn){return function(s){var r=rule.call(this,s);
return[fn.call(this,r[0]),r[1]]
}
},min:function(min,rule){return function(s){var rx=rule.call(this,s);
if(rx[0].length<min){throw new $P.Exception(s)
}return rx
}
}};
var _generator=function(op){return function(){var args=null,rx=[];
if(arguments.length>1){args=Array.prototype.slice.call(arguments)
}else{if(arguments[0] instanceof Array){args=arguments[0]
}}if(args){for(var i=0,px=args.shift();
i<px.length;
i++){args.unshift(px[i]);
rx.push(op.apply(null,args));
args.shift();
return rx
}}else{return op.apply(null,arguments)
}}
};
var gx="optional not ignore cache".split(/\s/);
for(var i=0;
i<gx.length;
i++){_[gx[i]]=_generator(_[gx[i]])
}var _vector=function(op){return function(){if(arguments[0] instanceof Array){return op.apply(null,arguments[0])
}else{return op.apply(null,arguments)
}}
};
var vx="each any all".split(/\s/);
for(var j=0;
j<vx.length;
j++){_[vx[j]]=_vector(_[vx[j]])
}}());
(function(){var $D=Date,$P=$D.prototype,$C=$D.CultureInfo;
var flattenAndCompact=function(ax){var rx=[];
for(var i=0;
i<ax.length;
i++){if(ax[i] instanceof Array){rx=rx.concat(flattenAndCompact(ax[i]))
}else{if(ax[i]){rx.push(ax[i])
}}}return rx
};
$D.Grammar={};
$D.Translator={hour:function(s){return function(){this.hour=Number(s)
}
},minute:function(s){return function(){this.minute=Number(s)
}
},second:function(s){return function(){this.second=Number(s)
}
},meridian:function(s){return function(){this.meridian=s.slice(0,1).toLowerCase()
}
},timezone:function(s){return function(){var n=s.replace(/[^\d\+\-]/g,"");
if(n.length){this.timezoneOffset=Number(n)
}else{this.timezone=s.toLowerCase()
}}
},day:function(x){var s=x[0];
return function(){this.day=Number(s.match(/\d+/)[0])
}
},month:function(s){return function(){this.month=(s.length==3)?"jan feb mar apr may jun jul aug sep oct nov dec".indexOf(s)/4:Number(s)-1
}
},year:function(s){return function(){var n=Number(s);
this.year=((s.length>2)?n:(n+(((n+2000)<$C.twoDigitYearMax)?2000:1900)))
}
},rday:function(s){return function(){switch(s){case"yesterday":this.days=-1;
break;
case"tomorrow":this.days=1;
break;
case"today":this.days=0;
break;
case"now":this.days=0;
this.now=true;
break
}}
},finishExact:function(x){x=(x instanceof Array)?x:[x];
for(var i=0;
i<x.length;
i++){if(x[i]){x[i].call(this)
}}var now=new Date();
if((this.hour||this.minute)&&(!this.month&&!this.year&&!this.day)){this.day=now.getDate()
}if(!this.year){this.year=now.getFullYear()
}if(!this.month&&this.month!==0){this.month=now.getMonth()
}if(!this.day){this.day=1
}if(!this.hour){this.hour=0
}if(!this.minute){this.minute=0
}if(!this.second){this.second=0
}if(this.meridian&&this.hour){if(this.meridian=="p"&&this.hour<12){this.hour=this.hour+12
}else{if(this.meridian=="a"&&this.hour==12){this.hour=0
}}}if(this.day>$D.getDaysInMonth(this.year,this.month)){throw new RangeError(this.day+" is not a valid value for days.")
}var r=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second);
if(this.timezone){r.set({timezone:this.timezone})
}else{if(this.timezoneOffset){r.set({timezoneOffset:this.timezoneOffset})
}}return r
},finish:function(x){x=(x instanceof Array)?flattenAndCompact(x):[x];
if(x.length===0){return null
}for(var i=0;
i<x.length;
i++){if(typeof x[i]=="function"){x[i].call(this)
}}var today=$D.today();
if(this.now&&!this.unit&&!this.operator){return new Date()
}else{if(this.now){today=new Date()
}}var expression=!!(this.days&&this.days!==null||this.orient||this.operator);
var gap,mod,orient;
orient=((this.orient=="past"||this.operator=="subtract")?-1:1);
if(!this.now&&"hour minute second".indexOf(this.unit)!=-1){today.setTimeToNow()
}if(this.month||this.month===0){if("year day hour minute second".indexOf(this.unit)!=-1){this.value=this.month+1;
this.month=null;
expression=true
}}if(!expression&&this.weekday&&!this.day&&!this.days){var temp=Date[this.weekday]();
this.day=temp.getDate();
if(!this.month){this.month=temp.getMonth()
}this.year=temp.getFullYear()
}if(expression&&this.weekday&&this.unit!="month"){this.unit="day";
gap=($D.getDayNumberFromName(this.weekday)-today.getDay());
mod=7;
this.days=gap?((gap+(orient*mod))%mod):(orient*mod)
}if(this.month&&this.unit=="day"&&this.operator){this.value=(this.month+1);
this.month=null
}if(this.value!=null&&this.month!=null&&this.year!=null){this.day=this.value*1
}if(this.month&&!this.day&&this.value){today.set({day:this.value*1});
if(!expression){this.day=this.value*1
}}if(!this.month&&this.value&&this.unit=="month"&&!this.now){this.month=this.value;
expression=true
}if(expression&&(this.month||this.month===0)&&this.unit!="year"){this.unit="month";
gap=(this.month-today.getMonth());
mod=12;
this.months=gap?((gap+(orient*mod))%mod):(orient*mod);
this.month=null
}if(!this.unit){this.unit="day"
}if(!this.value&&this.operator&&this.operator!==null&&this[this.unit+"s"]&&this[this.unit+"s"]!==null){this[this.unit+"s"]=this[this.unit+"s"]+((this.operator=="add")?1:-1)+(this.value||0)*orient
}else{if(this[this.unit+"s"]==null||this.operator!=null){if(!this.value){this.value=1
}this[this.unit+"s"]=this.value*orient
}}if(this.meridian&&this.hour){if(this.meridian=="p"&&this.hour<12){this.hour=this.hour+12
}else{if(this.meridian=="a"&&this.hour==12){this.hour=0
}}}if(this.weekday&&!this.day&&!this.days){var temp=Date[this.weekday]();
this.day=temp.getDate();
if(temp.getMonth()!==today.getMonth()){this.month=temp.getMonth()
}}if((this.month||this.month===0)&&!this.day){this.day=1
}if(!this.orient&&!this.operator&&this.unit=="week"&&this.value&&!this.day&&!this.month){return Date.today().setWeek(this.value)
}if(expression&&this.timezone&&this.day&&this.days){this.day=this.days
}return(expression)?today.add(this):today.set(this)
}};
var _=$D.Parsing.Operators,g=$D.Grammar,t=$D.Translator,_fn;
g.datePartDelimiter=_.rtoken(/^([\s\-\.\,\/\x27]+)/);
g.timePartDelimiter=_.stoken(":");
g.whiteSpace=_.rtoken(/^\s*/);
g.generalDelimiter=_.rtoken(/^(([\s\,]|at|@|on)+)/);
var _C={};
g.ctoken=function(keys){var fn=_C[keys];
if(!fn){var c=$C.regexPatterns;
var kx=keys.split(/\s+/),px=[];
for(var i=0;
i<kx.length;
i++){px.push(_.replace(_.rtoken(c[kx[i]]),kx[i]))
}fn=_C[keys]=_.any.apply(null,px)
}return fn
};
g.ctoken2=function(key){return _.rtoken($C.regexPatterns[key])
};
g.h=_.cache(_.process(_.rtoken(/^(0[0-9]|1[0-2]|[1-9])/),t.hour));
g.hh=_.cache(_.process(_.rtoken(/^(0[0-9]|1[0-2])/),t.hour));
g.H=_.cache(_.process(_.rtoken(/^([0-1][0-9]|2[0-3]|[0-9])/),t.hour));
g.HH=_.cache(_.process(_.rtoken(/^([0-1][0-9]|2[0-3])/),t.hour));
g.m=_.cache(_.process(_.rtoken(/^([0-5][0-9]|[0-9])/),t.minute));
g.mm=_.cache(_.process(_.rtoken(/^[0-5][0-9]/),t.minute));
g.s=_.cache(_.process(_.rtoken(/^([0-5][0-9]|[0-9])/),t.second));
g.ss=_.cache(_.process(_.rtoken(/^[0-5][0-9]/),t.second));
g.hms=_.cache(_.sequence([g.H,g.m,g.s],g.timePartDelimiter));
g.t=_.cache(_.process(g.ctoken2("shortMeridian"),t.meridian));
g.tt=_.cache(_.process(g.ctoken2("longMeridian"),t.meridian));
g.z=_.cache(_.process(_.rtoken(/^((\+|\-)\s*\d\d\d\d)|((\+|\-)\d\d\:?\d\d)/),t.timezone));
g.zz=_.cache(_.process(_.rtoken(/^((\+|\-)\s*\d\d\d\d)|((\+|\-)\d\d\:?\d\d)/),t.timezone));
g.zzz=_.cache(_.process(g.ctoken2("timezone"),t.timezone));
g.timeSuffix=_.each(_.ignore(g.whiteSpace),_.set([g.tt,g.zzz]));
g.time=_.each(_.optional(_.ignore(_.stoken("T"))),g.hms,g.timeSuffix);
g.d=_.cache(_.process(_.each(_.rtoken(/^([0-2]\d|3[0-1]|\d)/),_.optional(g.ctoken2("ordinalSuffix"))),t.day));
g.dd=_.cache(_.process(_.each(_.rtoken(/^([0-2]\d|3[0-1])/),_.optional(g.ctoken2("ordinalSuffix"))),t.day));
g.ddd=g.dddd=_.cache(_.process(g.ctoken("sun mon tue wed thu fri sat"),function(s){return function(){this.weekday=s
}
}));
g.M=_.cache(_.process(_.rtoken(/^(1[0-2]|0\d|\d)/),t.month));
g.MM=_.cache(_.process(_.rtoken(/^(1[0-2]|0\d)/),t.month));
g.MMM=g.MMMM=_.cache(_.process(g.ctoken("jan feb mar apr may jun jul aug sep oct nov dec"),t.month));
g.y=_.cache(_.process(_.rtoken(/^(\d\d?)/),t.year));
g.yy=_.cache(_.process(_.rtoken(/^(\d\d)/),t.year));
g.yyy=_.cache(_.process(_.rtoken(/^(\d\d?\d?\d?)/),t.year));
g.yyyy=_.cache(_.process(_.rtoken(/^(\d\d\d\d)/),t.year));
_fn=function(){return _.each(_.any.apply(null,arguments),_.not(g.ctoken2("timeContext")))
};
g.day=_fn(g.d,g.dd);
g.month=_fn(g.M,g.MMM);
g.year=_fn(g.yyyy,g.yy);
g.orientation=_.process(g.ctoken("past future"),function(s){return function(){this.orient=s
}
});
g.operator=_.process(g.ctoken("add subtract"),function(s){return function(){this.operator=s
}
});
g.rday=_.process(g.ctoken("yesterday tomorrow today now"),t.rday);
g.unit=_.process(g.ctoken("second minute hour day week month year"),function(s){return function(){this.unit=s
}
});
g.value=_.process(_.rtoken(/^\d\d?(st|nd|rd|th)?/),function(s){return function(){this.value=s.replace(/\D/g,"")
}
});
g.expression=_.set([g.rday,g.operator,g.value,g.unit,g.orientation,g.ddd,g.MMM]);
_fn=function(){return _.set(arguments,g.datePartDelimiter)
};
g.mdy=_fn(g.ddd,g.month,g.day,g.year);
g.ymd=_fn(g.ddd,g.year,g.month,g.day);
g.dmy=_fn(g.ddd,g.day,g.month,g.year);
g.date=function(s){return((g[$C.dateElementOrder]||g.mdy).call(this,s))
};
g.format=_.process(_.many(_.any(_.process(_.rtoken(/^(dd?d?d?|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|zz?z?)/),function(fmt){if(g[fmt]){return g[fmt]
}else{throw $D.Parsing.Exception(fmt)
}}),_.process(_.rtoken(/^[^dMyhHmstz]+/),function(s){return _.ignore(_.stoken(s))
}))),function(rules){return _.process(_.each.apply(null,rules),t.finishExact)
});
var _F={};
var _get=function(f){return _F[f]=(_F[f]||g.format(f)[0])
};
g.formats=function(fx){if(fx instanceof Array){var rx=[];
for(var i=0;
i<fx.length;
i++){rx.push(_get(fx[i]))
}return _.any.apply(null,rx)
}else{return _get(fx)
}};
g._formats=g.formats(['"yyyy-MM-ddTHH:mm:ssZ"',"yyyy-MM-ddTHH:mm:ssZ","yyyy-MM-ddTHH:mm:ssz","yyyy-MM-ddTHH:mm:ss","yyyy-MM-ddTHH:mmZ","yyyy-MM-ddTHH:mmz","yyyy-MM-ddTHH:mm","ddd, MMM dd, yyyy H:mm:ss tt","ddd MMM d yyyy HH:mm:ss zzz","MMddyyyy","ddMMyyyy","Mddyyyy","ddMyyyy","Mdyyyy","dMyyyy","yyyy","Mdyy","dMyy","d"]);
g._start=_.process(_.set([g.date,g.time,g.expression],g.generalDelimiter,g.whiteSpace),t.finish);
g.start=function(s){try{var r=g._formats.call({},s);
if(r[1].length===0){return r
}}catch(e){}return g._start.call({},s)
};
$D._parse=$D.parse;
$D.parse=function(s){var r=null;
if(!s){return null
}if(s instanceof Date){return s
}try{r=$D.Grammar.start.call({},s.replace(/^\s*(\S*(\s+\S+)*)\s*$/,"$1"))
}catch(e){return null
}return((r[1].length===0)?r[0]:null)
};
$D.getParseFunction=function(fx){var fn=$D.Grammar.formats(fx);
return function(s){var r=null;
try{r=fn.call({},s)
}catch(e){return null
}return((r[1].length===0)?r[0]:null)
}
};
$D.parseExact=function(s,fx){return $D.getParseFunction(fx)(s)
}
}());
(function(){var $D=Date,$P=$D.prototype,$C=$D.CultureInfo,$f=[],p=function(s,l){if(!l){l=2
}return("000"+s).slice(l*-1)
};
$D.normalizeFormat=function(format){$f=[];
var t=new Date().$format(format);
return $f.join("")
};
$D.strftime=function(format,time){return new Date(time*1000).$format(format)
};
$D.strtotime=function(time){var d=$D.parse(time);
d.addMinutes(d.getTimezoneOffset()*-1);
return Math.round($D.UTC(d.getUTCFullYear(),d.getUTCMonth(),d.getUTCDate(),d.getUTCHours(),d.getUTCMinutes(),d.getUTCSeconds(),d.getUTCMilliseconds())/1000)
};
$P.$format=function(format){var x=this,y,t=function(v){$f.push(v);
return x.toString(v)
};
return format?format.replace(/(%|\\)?.|%%/g,function(m){if(m.charAt(0)==="\\"||m.substring(0,2)==="%%"){return m.replace("\\","").replace("%%","%")
}switch(m){case"d":case"%d":return t("dd");
case"D":case"%a":return t("ddd");
case"j":case"%e":return t("d");
case"l":case"%A":return t("dddd");
case"N":case"%u":return x.getDay()+1;
case"S":return t("S");
case"w":case"%w":return x.getDay();
case"z":return x.getOrdinalNumber();
case"%j":return p(x.getOrdinalNumber(),3);
case"%U":var d1=x.clone().set({month:0,day:1}).addDays(-1).moveToDayOfWeek(0),d2=x.clone().addDays(1).moveToDayOfWeek(0,-1);
return(d2<d1)?"00":p((d2.getOrdinalNumber()-d1.getOrdinalNumber())/7+1);
case"W":case"%V":return x.getISOWeek();
case"%W":return p(x.getWeek());
case"F":case"%B":return t("MMMM");
case"m":case"%m":return t("MM");
case"M":case"%b":case"%h":return t("MMM");
case"n":return t("M");
case"t":return $D.getDaysInMonth(x.getFullYear(),x.getMonth());
case"L":return($D.isLeapYear(x.getFullYear()))?1:0;
case"o":case"%G":return x.setWeek(x.getISOWeek()).toString("yyyy");
case"%g":return x.$format("%G").slice(-2);
case"Y":case"%Y":return t("yyyy");
case"y":case"%y":return t("yy");
case"a":case"%p":return t("tt").toLowerCase();
case"A":return t("tt").toUpperCase();
case"g":case"%I":return t("h");
case"G":return t("H");
case"h":return t("hh");
case"H":case"%H":return t("HH");
case"i":case"%M":return t("mm");
case"s":case"%S":return t("ss");
case"u":return p(x.getMilliseconds(),3);
case"I":return(x.isDaylightSavingTime())?1:0;
case"O":return x.getUTCOffset();
case"P":y=x.getUTCOffset();
return y.substring(0,y.length-2)+":"+y.substring(y.length-2);
case"e":case"T":case"%z":case"%Z":return x.getTimezone();
case"Z":return x.getTimezoneOffset()*-60;
case"B":var now=new Date();
return Math.floor(((now.getHours()*3600)+(now.getMinutes()*60)+now.getSeconds()+(now.getTimezoneOffset()+60)*60)/86.4);
case"c":return x.toISOString().replace(/\"/g,"");
case"U":return $D.strtotime("now");
case"%c":return t("d")+" "+t("t");
case"%C":return Math.floor(x.getFullYear()/100+1);
case"%D":return t("MM/dd/yy");
case"%n":return"\\n";
case"%t":return"\\t";
case"%r":return t("hh:mm tt");
case"%R":return t("H:mm");
case"%T":return t("H:mm:ss");
case"%x":return t("d");
case"%X":return t("t");
default:$f.push(m);
return m
}}):this._toString()
};
if(!$P.format){$P.format=$P.$format
}}());
(function($){$.fn.jqm=function(o){var p={overlay:50,overlayClass:"jqmOverlay",closeClass:"jqmClose",trigger:".jqModal",ajax:F,ajaxText:"",target:F,modal:F,toTop:F,onShow:F,onHide:F,onLoad:F};
return this.each(function(){if(this._jqm){return H[this._jqm].c=$.extend({},H[this._jqm].c,o)
}s++;
this._jqm=s;
H[s]={c:$.extend(p,$.jqm.params,o),a:F,w:$(this).addClass("jqmID"+s),s:s};
if(p.trigger){$(this).jqmAddTrigger(p.trigger)
}})
};
$.fn.jqmAddClose=function(e){return hs(this,e,"jqmHide")
};
$.fn.jqmAddTrigger=function(e){return hs(this,e,"jqmShow")
};
$.fn.jqmShow=function(t){return this.each(function(){t=t||window.event;
$.jqm.open(this._jqm,t)
})
};
$.fn.jqmHide=function(t){return this.each(function(){t=t||window.event;
$.jqm.close(this._jqm,t)
})
};
$.jqm={hash:{},open:function(s,t){var h=H[s],c=h.c,cc="."+c.closeClass,z=(parseInt(h.w.css("z-index"))),z=(z>0)?z:3000,o=$("<div></div>").css({height:"100%",width:"100%",position:"fixed",left:0,top:0,"z-index":z-1,opacity:c.overlay/100});
if(h.a){return F
}h.t=t;
h.a=true;
h.w.css("z-index",z);
if(c.modal){if(!A[0]){L("bind")
}A.push(s)
}else{if(c.overlay>0){h.w.jqmAddClose(o)
}else{o=F
}}h.o=(o)?o.addClass(c.overlayClass).prependTo("body"):F;
if(ie6){$("html,body").css({height:"100%",width:"100%"});
if(o){o=o.css({position:"absolute"})[0];
for(var y in {Top:1,Left:1}){o.style.setExpression(y.toLowerCase(),"(_=(document.documentElement.scroll"+y+" || document.body.scroll"+y+"))+'px'")
}}}if(c.ajax){var r=c.target||h.w,u=c.ajax,r=(typeof r=="string")?$(r,h.w):$(r),u=(u.substr(0,1)=="@")?$(t).attr(u.substring(1)):u;
r.html(c.ajaxText).load(u,function(){if(c.onLoad){c.onLoad.call(this,h)
}if(cc){h.w.jqmAddClose($(cc,h.w))
}e(h)
})
}else{if(cc){h.w.jqmAddClose($(cc,h.w))
}}if(c.toTop&&h.o){h.w.before('<span id="jqmP'+h.w[0]._jqm+'"></span>').insertAfter(h.o)
}(c.onShow)?c.onShow(h):h.w.show();
e(h);
return F
},close:function(s){var h=H[s];
if(!h.a){return F
}h.a=F;
if(A[0]){A.pop();
if(!A[0]){L("unbind")
}}if(h.c.toTop&&h.o){$("#jqmP"+h.w[0]._jqm).after(h.w).remove()
}if(h.c.onHide){h.c.onHide(h)
}else{h.w.hide();
if(h.o){h.o.remove()
}}return F
},params:{}};
var s=0,H=$.jqm.hash,A=[],ie6=$.browser.msie&&($.browser.version=="6.0"),F=false,i=$('<iframe src="javascript:false;document.write(\'\');" class="jqm"></iframe>').css({opacity:0}),e=function(h){if(ie6){if(h.o){h.o.html('<p style="width:100%;height:100%"/>').prepend(i)
}else{if(!$("iframe.jqm",h.w)[0]){h.w.prepend(i)
}}}f(h)
},f=function(h){try{$(":input:visible",h.w)[0].focus()
}catch(_){}},L=function(t){$()[t]("keypress",m)[t]("keydown",m)[t]("mousedown",m)
},m=function(e){var h=H[A[A.length-1]],r=(!$(e.target).parents(".jqmID"+h.s)[0]);
if(r){f(h)
}return !r
},hs=function(w,t,c){return w.each(function(){var s=this._jqm;
$(t).each(function(){if(!this[c]){this[c]=[];
$(this).click(function(){for(var i in {jqmShow:1,jqmHide:1}){for(var s in this[i]){if(H[this[i][s]]){H[this[i][s]].w[i](this)
}}}return F
})
}this[c].push(s)
})
})
}
})(jQuery);
jQuery.bt={version:"0.9.5-rc1"};
(function($){jQuery.fn.bt=function(content,options){var contentSelect=false;
if(typeof content!="string"){options=content;
if(options.content){content=options.content
}else{contentSelect=true;
content=false
}}if(jQuery.fn.hoverIntent&&jQuery.bt.defaults.trigger=="hover"){jQuery.bt.defaults.trigger="hoverIntent"
}return this.each(function(index){var opts=jQuery.extend(false,jQuery.bt.defaults,jQuery.bt.options,options);
opts.spikeLength=numb(opts.spikeLength);
opts.spikeGirth=numb(opts.spikeGirth);
opts.overlap=numb(opts.overlap);
var ajaxTimeout=false;
this.btOn=function(){if(typeof $(this).data("bt-box")=="object"){this.btOff()
}opts.preBuild.apply(this);
$(jQuery.bt.vars.closeWhenOpenStack).btOff();
$(this).addClass("bt-active "+opts.activeClass);
if(contentSelect&&opts.ajaxPath==null){if(opts.killTitle){$(this).attr("title",$(this).attr("bt-xTitle"))
}content=$.isFunction(opts.contentSelector)?opts.contentSelector.apply(this):eval(opts.contentSelector);
if(opts.killTitle){$(this).attr("title","")
}}if(opts.ajaxPath!=null&&content==false){if(typeof opts.ajaxPath=="object"){var url=eval(opts.ajaxPath[0]);
url+=opts.ajaxPath[1]?" "+opts.ajaxPath[1]:""
}else{var url=opts.ajaxPath
}var off=url.indexOf(" ");
if(off>=0){var selector=url.slice(off,url.length);
url=url.slice(0,off)
}var cacheData=opts.ajaxCache?$(document.body).data("btCache-"+url.replace(/\./g,"")):null;
if(typeof cacheData=="string"){content=selector?$("<div/>").append(cacheData.replace(/<script(.|\s)*?\/script>/g,"")).find(selector):cacheData
}else{var target=this;
var ajaxOpts=jQuery.extend(false,{type:opts.ajaxType,data:opts.ajaxData,cache:opts.ajaxCache,url:url,complete:function(XMLHttpRequest,textStatus){if(textStatus=="success"||textStatus=="notmodified"){if(opts.ajaxCache){$(document.body).data("btCache-"+url.replace(/\./g,""),XMLHttpRequest.responseText)
}ajaxTimeout=false;
content=selector?$("<div/>").append(XMLHttpRequest.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(selector):XMLHttpRequest.responseText
}else{if(textStatus=="timeout"){ajaxTimeout=true
}content=opts.ajaxError.replace(/%error/g,XMLHttpRequest.statusText)
}if($(target).hasClass("bt-active")){target.btOn()
}}},opts.ajaxOpts);
jQuery.ajax(ajaxOpts);
content=opts.ajaxLoading
}}var shadowMarginX=0;
var shadowMarginY=0;
var shadowShiftX=0;
var shadowShiftY=0;
if(opts.shadow&&!shadowSupport()){opts.shadow=false;
jQuery.extend(opts,opts.noShadowOpts)
}if(opts.shadow){if(opts.shadowBlur>Math.abs(opts.shadowOffsetX)){shadowMarginX=opts.shadowBlur*2
}else{shadowMarginX=opts.shadowBlur+Math.abs(opts.shadowOffsetX)
}shadowShiftX=(opts.shadowBlur-opts.shadowOffsetX)>0?opts.shadowBlur-opts.shadowOffsetX:0;
if(opts.shadowBlur>Math.abs(opts.shadowOffsetY)){shadowMarginY=opts.shadowBlur*2
}else{shadowMarginY=opts.shadowBlur+Math.abs(opts.shadowOffsetY)
}shadowShiftY=(opts.shadowBlur-opts.shadowOffsetY)>0?opts.shadowBlur-opts.shadowOffsetY:0
}if(opts.offsetParent){var offsetParent=$(opts.offsetParent);
var offsetParentPos=offsetParent.offset();
var pos=$(this).offset();
var top=numb(pos.top)-numb(offsetParentPos.top)+numb($(this).css("margin-top"))-shadowShiftY;
var left=numb(pos.left)-numb(offsetParentPos.left)+numb($(this).css("margin-left"))-shadowShiftX
}else{var offsetParent=$(this).offsetParent();
var pos=$(this).btPosition();
var top=numb(pos.top)+numb($(this).css("margin-top"))-shadowShiftY;
var left=numb(pos.left)+numb($(this).css("margin-left"))-shadowShiftX
}var width=$(this).btOuterWidth();
var height=$(this).outerHeight();
if(typeof content=="object"){var original=content;
var clone=$(original).clone(true).show();
var origClones=$(original).data("bt-clones")||[];
origClones.push(clone);
$(original).data("bt-clones",origClones);
$(clone).data("bt-orig",original);
$(this).data("bt-content-orig",{original:original,clone:clone});
content=clone
}if(typeof content=="null"||content==""){return
}var $text=$('<div class="bt-content"></div>').append(content).css({padding:opts.padding,position:"absolute",width:(opts.shrinkToFit?"auto":opts.width),zIndex:opts.textzIndex,left:shadowShiftX,top:shadowShiftY}).css(opts.cssStyles);
var $box=$('<div class="bt-wrapper"></div>').append($text).addClass(opts.cssClass).css({position:"absolute",width:opts.width,zIndex:opts.wrapperzIndex,visibility:"hidden"}).appendTo(offsetParent);
if(jQuery.fn.bgiframe){$text.bgiframe();
$box.bgiframe()
}$(this).data("bt-box",$box);
var scrollTop=numb($(document).scrollTop());
var scrollLeft=numb($(document).scrollLeft());
var docWidth=numb($(window).width());
var docHeight=numb($(window).height());
var winRight=scrollLeft+docWidth;
var winBottom=scrollTop+docHeight;
var space=new Object();
var thisOffset=$(this).offset();
space.top=thisOffset.top-scrollTop;
space.bottom=docHeight-((thisOffset.top+height)-scrollTop);
space.left=thisOffset.left-scrollLeft;
space.right=docWidth-((thisOffset.left+width)-scrollLeft);
var textOutHeight=numb($text.outerHeight());
var textOutWidth=numb($text.btOuterWidth());
if(opts.positions.constructor==String){opts.positions=opts.positions.replace(/ /,"").split(",")
}if(opts.positions[0]=="most"){var position="top";
for(var pig in space){position=space[pig]>space[position]?pig:position
}}else{for(var x in opts.positions){var position=opts.positions[x];
if((position=="left"||position=="right")&&space[position]>textOutWidth+opts.spikeLength){break
}else{if((position=="top"||position=="bottom")&&space[position]>textOutHeight+opts.spikeLength){break
}}}}var horiz=left+((width-textOutWidth)*0.5);
var vert=top+((height-textOutHeight)*0.5);
var points=new Array();
var textTop,textLeft,textRight,textBottom,textTopSpace,textBottomSpace,textLeftSpace,textRightSpace,crossPoint,textCenter,spikePoint;
switch(position){case"top":$text.css("margin-bottom",opts.spikeLength+"px");
$box.css({top:(top-$text.outerHeight(true))+opts.overlap,left:horiz});
textRightSpace=(winRight-opts.windowMargin)-($text.offset().left+$text.btOuterWidth(true));
var xShift=shadowShiftX;
if(textRightSpace<0){$box.css("left",(numb($box.css("left"))+textRightSpace)+"px");
xShift-=textRightSpace
}textLeftSpace=($text.offset().left+numb($text.css("margin-left")))-(scrollLeft+opts.windowMargin);
if(textLeftSpace<0){$box.css("left",(numb($box.css("left"))-textLeftSpace)+"px");
xShift+=textLeftSpace
}textTop=$text.btPosition().top+numb($text.css("margin-top"));
textLeft=$text.btPosition().left+numb($text.css("margin-left"));
textRight=textLeft+$text.btOuterWidth();
textBottom=textTop+$text.outerHeight();
textCenter={x:textLeft+($text.btOuterWidth()*opts.centerPointX),y:textTop+($text.outerHeight()*opts.centerPointY)};
points[points.length]=spikePoint={y:textBottom+opts.spikeLength,x:((textRight-textLeft)*0.5)+xShift,type:"spike"};
crossPoint=findIntersectX(spikePoint.x,spikePoint.y,textCenter.x,textCenter.y,textBottom);
crossPoint.x=crossPoint.x<textLeft+opts.spikeGirth/2+opts.cornerRadius?textLeft+opts.spikeGirth/2+opts.cornerRadius:crossPoint.x;
crossPoint.x=crossPoint.x>(textRight-opts.spikeGirth/2)-opts.cornerRadius?(textRight-opts.spikeGirth/2)-opts.CornerRadius:crossPoint.x;
points[points.length]={x:crossPoint.x-(opts.spikeGirth/2),y:textBottom,type:"join"};
points[points.length]={x:textLeft,y:textBottom,type:"corner"};
points[points.length]={x:textLeft,y:textTop,type:"corner"};
points[points.length]={x:textRight,y:textTop,type:"corner"};
points[points.length]={x:textRight,y:textBottom,type:"corner"};
points[points.length]={x:crossPoint.x+(opts.spikeGirth/2),y:textBottom,type:"join"};
points[points.length]=spikePoint;
break;
case"left":$text.css("margin-right",opts.spikeLength+"px");
$box.css({top:vert+"px",left:((left-$text.btOuterWidth(true))+opts.overlap)+"px"});
textBottomSpace=(winBottom-opts.windowMargin)-($text.offset().top+$text.outerHeight(true));
var yShift=shadowShiftY;
if(textBottomSpace<0){$box.css("top",(numb($box.css("top"))+textBottomSpace)+"px");
yShift-=textBottomSpace
}textTopSpace=($text.offset().top+numb($text.css("margin-top")))-(scrollTop+opts.windowMargin);
if(textTopSpace<0){$box.css("top",(numb($box.css("top"))-textTopSpace)+"px");
yShift+=textTopSpace
}textTop=$text.btPosition().top+numb($text.css("margin-top"));
textLeft=$text.btPosition().left+numb($text.css("margin-left"));
textRight=textLeft+$text.btOuterWidth();
textBottom=textTop+$text.outerHeight();
textCenter={x:textLeft+($text.btOuterWidth()*opts.centerPointX),y:textTop+($text.outerHeight()*opts.centerPointY)};
points[points.length]=spikePoint={x:textRight+opts.spikeLength,y:((textBottom-textTop)*0.5)+yShift,type:"spike"};
crossPoint=findIntersectY(spikePoint.x,spikePoint.y,textCenter.x,textCenter.y,textRight);
crossPoint.y=crossPoint.y<textTop+opts.spikeGirth/2+opts.cornerRadius?textTop+opts.spikeGirth/2+opts.cornerRadius:crossPoint.y;
crossPoint.y=crossPoint.y>(textBottom-opts.spikeGirth/2)-opts.cornerRadius?(textBottom-opts.spikeGirth/2)-opts.cornerRadius:crossPoint.y;
points[points.length]={x:textRight,y:crossPoint.y+opts.spikeGirth/2,type:"join"};
points[points.length]={x:textRight,y:textBottom,type:"corner"};
points[points.length]={x:textLeft,y:textBottom,type:"corner"};
points[points.length]={x:textLeft,y:textTop,type:"corner"};
points[points.length]={x:textRight,y:textTop,type:"corner"};
points[points.length]={x:textRight,y:crossPoint.y-opts.spikeGirth/2,type:"join"};
points[points.length]=spikePoint;
break;
case"bottom":$text.css("margin-top",opts.spikeLength+"px");
$box.css({top:(top+height)-opts.overlap,left:horiz});
textRightSpace=(winRight-opts.windowMargin)-($text.offset().left+$text.btOuterWidth(true));
var xShift=shadowShiftX;
if(textRightSpace<0){$box.css("left",(numb($box.css("left"))+textRightSpace)+"px");
xShift-=textRightSpace
}textLeftSpace=($text.offset().left+numb($text.css("margin-left")))-(scrollLeft+opts.windowMargin);
if(textLeftSpace<0){$box.css("left",(numb($box.css("left"))-textLeftSpace)+"px");
xShift+=textLeftSpace
}textTop=$text.btPosition().top+numb($text.css("margin-top"));
textLeft=$text.btPosition().left+numb($text.css("margin-left"));
textRight=textLeft+$text.btOuterWidth();
textBottom=textTop+$text.outerHeight();
textCenter={x:textLeft+($text.btOuterWidth()*opts.centerPointX),y:textTop+($text.outerHeight()*opts.centerPointY)};
points[points.length]=spikePoint={x:((textRight-textLeft)*0.5)+xShift,y:shadowShiftY,type:"spike"};
crossPoint=findIntersectX(spikePoint.x,spikePoint.y,textCenter.x,textCenter.y,textTop);
crossPoint.x=crossPoint.x<textLeft+opts.spikeGirth/2+opts.cornerRadius?textLeft+opts.spikeGirth/2+opts.cornerRadius:crossPoint.x;
crossPoint.x=crossPoint.x>(textRight-opts.spikeGirth/2)-opts.cornerRadius?(textRight-opts.spikeGirth/2)-opts.cornerRadius:crossPoint.x;
points[points.length]={x:crossPoint.x+opts.spikeGirth/2,y:textTop,type:"join"};
points[points.length]={x:textRight,y:textTop,type:"corner"};
points[points.length]={x:textRight,y:textBottom,type:"corner"};
points[points.length]={x:textLeft,y:textBottom,type:"corner"};
points[points.length]={x:textLeft,y:textTop,type:"corner"};
points[points.length]={x:crossPoint.x-(opts.spikeGirth/2),y:textTop,type:"join"};
points[points.length]=spikePoint;
break;
case"right":$text.css("margin-left",(opts.spikeLength+"px"));
$box.css({top:vert+"px",left:((left+width)-opts.overlap)+"px"});
textBottomSpace=(winBottom-opts.windowMargin)-($text.offset().top+$text.outerHeight(true));
var yShift=shadowShiftY;
if(textBottomSpace<0){$box.css("top",(numb($box.css("top"))+textBottomSpace)+"px");
yShift-=textBottomSpace
}textTopSpace=($text.offset().top+numb($text.css("margin-top")))-(scrollTop+opts.windowMargin);
if(textTopSpace<0){$box.css("top",(numb($box.css("top"))-textTopSpace)+"px");
yShift+=textTopSpace
}textTop=$text.btPosition().top+numb($text.css("margin-top"));
textLeft=$text.btPosition().left+numb($text.css("margin-left"));
textRight=textLeft+$text.btOuterWidth();
textBottom=textTop+$text.outerHeight();
textCenter={x:textLeft+($text.btOuterWidth()*opts.centerPointX),y:textTop+($text.outerHeight()*opts.centerPointY)};
points[points.length]=spikePoint={x:shadowShiftX,y:((textBottom-textTop)*0.5)+yShift,type:"spike"};
crossPoint=findIntersectY(spikePoint.x,spikePoint.y,textCenter.x,textCenter.y,textLeft);
crossPoint.y=crossPoint.y<textTop+opts.spikeGirth/2+opts.cornerRadius?textTop+opts.spikeGirth/2+opts.cornerRadius:crossPoint.y;
crossPoint.y=crossPoint.y>(textBottom-opts.spikeGirth/2)-opts.cornerRadius?(textBottom-opts.spikeGirth/2)-opts.cornerRadius:crossPoint.y;
points[points.length]={x:textLeft,y:crossPoint.y-opts.spikeGirth/2,type:"join"};
points[points.length]={x:textLeft,y:textTop,type:"corner"};
points[points.length]={x:textRight,y:textTop,type:"corner"};
points[points.length]={x:textRight,y:textBottom,type:"corner"};
points[points.length]={x:textLeft,y:textBottom,type:"corner"};
points[points.length]={x:textLeft,y:crossPoint.y+opts.spikeGirth/2,type:"join"};
points[points.length]=spikePoint;
break
}var canvas=document.createElement("canvas");
$(canvas).attr("width",(numb($text.btOuterWidth(true))+opts.strokeWidth*2+shadowMarginX)).attr("height",(numb($text.outerHeight(true))+opts.strokeWidth*2+shadowMarginY)).appendTo($box).css({position:"absolute",zIndex:opts.boxzIndex});
if(typeof G_vmlCanvasManager!="undefined"){canvas=G_vmlCanvasManager.initElement(canvas)
}if(opts.cornerRadius>0){var newPoints=new Array();
var newPoint;
for(var i=0;
i<points.length;
i++){if(points[i].type=="corner"){newPoint=betweenPoint(points[i],points[(i-1)%points.length],opts.cornerRadius);
newPoint.type="arcStart";
newPoints[newPoints.length]=newPoint;
newPoints[newPoints.length]=points[i];
newPoint=betweenPoint(points[i],points[(i+1)%points.length],opts.cornerRadius);
newPoint.type="arcEnd";
newPoints[newPoints.length]=newPoint
}else{newPoints[newPoints.length]=points[i]
}}points=newPoints
}var ctx=canvas.getContext("2d");
if(opts.shadow&&opts.shadowOverlap!==true){var shadowOverlap=numb(opts.shadowOverlap);
switch(position){case"top":if(opts.shadowOffsetX+opts.shadowBlur-shadowOverlap>0){$box.css("top",(numb($box.css("top"))-(opts.shadowOffsetX+opts.shadowBlur-shadowOverlap)))
}break;
case"right":if(shadowShiftX-shadowOverlap>0){$box.css("left",(numb($box.css("left"))+shadowShiftX-shadowOverlap))
}break;
case"bottom":if(shadowShiftY-shadowOverlap>0){$box.css("top",(numb($box.css("top"))+shadowShiftY-shadowOverlap))
}break;
case"left":if(opts.shadowOffsetY+opts.shadowBlur-shadowOverlap>0){$box.css("left",(numb($box.css("left"))-(opts.shadowOffsetY+opts.shadowBlur-shadowOverlap)))
}break
}}drawIt.apply(ctx,[points],opts.strokeWidth);
ctx.fillStyle=opts.fill;
if(opts.shadow){ctx.shadowOffsetX=opts.shadowOffsetX;
ctx.shadowOffsetY=opts.shadowOffsetY;
ctx.shadowBlur=opts.shadowBlur;
ctx.shadowColor=opts.shadowColor
}ctx.closePath();
ctx.fill();
if(opts.strokeWidth>0){ctx.shadowColor="rgba(0, 0, 0, 0)";
ctx.lineWidth=opts.strokeWidth;
ctx.strokeStyle=opts.strokeStyle;
ctx.beginPath();
drawIt.apply(ctx,[points],opts.strokeWidth);
ctx.closePath();
ctx.stroke()
}opts.preShow.apply(this,[$box[0]]);
$box.css({display:"none",visibility:"visible"});
opts.showTip.apply(this,[$box[0]]);
if(opts.overlay){var overlay=$('<div class="bt-overlay"></div>').css({position:"absolute",backgroundColor:"blue",top:top,left:left,width:width,height:height,opacity:".2"}).appendTo(offsetParent);
$(this).data("overlay",overlay)
}if((opts.ajaxPath!=null&&opts.ajaxCache==false)||ajaxTimeout){content=false
}if(opts.clickAnywhereToClose){jQuery.bt.vars.clickAnywhereStack.push(this);
$(document).click(jQuery.bt.docClick)
}if(opts.closeWhenOthersOpen){jQuery.bt.vars.closeWhenOpenStack.push(this)
}opts.postShow.apply(this,[$box[0]])
};
this.btOff=function(){var box=$(this).data("bt-box");
opts.preHide.apply(this,[box]);
var i=this;
i.btCleanup=function(){var box=$(i).data("bt-box");
var contentOrig=$(i).data("bt-content-orig");
var overlay=$(i).data("bt-overlay");
if(!$.isBlank(box)&&typeof box=="object"){$(box).remove();
$(i).removeData("bt-box")
}if(!$.isBlank(contentOrig)&&typeof contentOrig=="object"){var clones=$(contentOrig.original).data("bt-clones");
$(contentOrig).data("bt-clones",arrayRemove(clones,contentOrig.clone))
}if(!$.isBlank(overlay)&&typeof overlay=="object"){$(overlay).remove();
$(i).removeData("bt-overlay")
}jQuery.bt.vars.clickAnywhereStack=arrayRemove(jQuery.bt.vars.clickAnywhereStack,i);
jQuery.bt.vars.closeWhenOpenStack=arrayRemove(jQuery.bt.vars.closeWhenOpenStack,i);
$(i).removeClass("bt-active "+opts.activeClass);
opts.postHide.apply(i)
};
opts.hideTip.apply(this,[box,i.btCleanup])
};
var refresh=this.btRefresh=function(){this.btOff();
this.btOn()
};
if(opts.killTitle){$(this).find("[title]").andSelf().each(function(){if(!$(this).attr("bt-xTitle")){$(this).attr("bt-xTitle",$(this).attr("title")).attr("title","")
}})
}if(typeof opts.trigger=="string"){opts.trigger=[opts.trigger]
}if(opts.trigger[0]=="hoverIntent"){var hoverOpts=jQuery.extend(opts.hoverIntentOpts,{over:function(){this.btOn()
},out:function(){this.btOff()
}});
$(this).hoverIntent(hoverOpts)
}else{if(opts.trigger[0]=="hover"){var isHover=false;
$(this).hover(function(){if(!isHover){isHover=true;
this.btOn()
}},function(){isHover=false;
this.btOff()
})
}else{if(opts.trigger[0]=="now"){if($(this).hasClass("bt-active")){this.btOff()
}else{this.btOn()
}}else{if(opts.trigger[0]=="none"){}else{if(opts.trigger.length>1&&opts.trigger[0]!=opts.trigger[1]){$(this).bind(opts.trigger[0],function(){this.btOn()
}).bind(opts.trigger[1],function(){this.btOff()
})
}else{$(this).bind(opts.trigger[0],function(){if($(this).hasClass("bt-active")){this.btOff()
}else{this.btOn()
}})
}}}}}});
function drawIt(points,strokeWidth){this.moveTo(points[0].x,points[0].y);
for(i=1;
i<points.length;
i++){if(points[i-1].type=="arcStart"){this.quadraticCurveTo(round5(points[i].x,strokeWidth),round5(points[i].y,strokeWidth),round5(points[(i+1)%points.length].x,strokeWidth),round5(points[(i+1)%points.length].y,strokeWidth));
i++
}else{this.lineTo(round5(points[i].x,strokeWidth),round5(points[i].y,strokeWidth))
}}}function round5(num,strokeWidth){var ret;
strokeWidth=numb(strokeWidth);
if(strokeWidth%2){ret=num
}else{ret=Math.round(num-0.5)+0.5
}return ret
}function numb(num){return parseInt(num)||0
}function arrayRemove(arr,elem){var x,newArr=new Array();
for(x in arr){if(arr[x]!=elem){newArr.push(arr[x])
}}return newArr
}function canvasSupport(){var canvas_compatible=false;
try{canvas_compatible=!!(document.createElement("canvas").getContext("2d"))
}catch(e){canvas_compatible=!!(document.createElement("canvas").getContext)
}return canvas_compatible
}function shadowSupport(){try{var userAgent=navigator.userAgent.toLowerCase();
if(/webkit/.test(userAgent)){return true
}else{if(/gecko|mozilla/.test(userAgent)&&parseFloat(userAgent.match(/firefox\/(\d+(?:\.\d+)+)/)[1])>=3.1){return true
}}}catch(err){}return false
}function betweenPoint(point1,point2,dist){var y,x;
if(point1.x==point2.x){y=point1.y<point2.y?point1.y+dist:point1.y-dist;
return{x:point1.x,y:y}
}else{if(point1.y==point2.y){x=point1.x<point2.x?point1.x+dist:point1.x-dist;
return{x:x,y:point1.y}
}}}function centerPoint(arcStart,corner,arcEnd){var x=corner.x==arcStart.x?arcEnd.x:arcStart.x;
var y=corner.y==arcStart.y?arcEnd.y:arcStart.y;
var startAngle,endAngle;
if(arcStart.x<arcEnd.x){if(arcStart.y>arcEnd.y){startAngle=(Math.PI/180)*180;
endAngle=(Math.PI/180)*90
}else{startAngle=(Math.PI/180)*90;
endAngle=0
}}else{if(arcStart.y>arcEnd.y){startAngle=(Math.PI/180)*270;
endAngle=(Math.PI/180)*180
}else{startAngle=0;
endAngle=(Math.PI/180)*270
}}return{x:x,y:y,type:"center",startAngle:startAngle,endAngle:endAngle}
}function findIntersect(r1x1,r1y1,r1x2,r1y2,r2x1,r2y1,r2x2,r2y2){if(r2x1==r2x2){return findIntersectY(r1x1,r1y1,r1x2,r1y2,r2x1)
}if(r2y1==r2y2){return findIntersectX(r1x1,r1y1,r1x2,r1y2,r2y1)
}var r1m=(r1y1-r1y2)/(r1x1-r1x2);
var r1b=r1y1-(r1m*r1x1);
var r2m=(r2y1-r2y2)/(r2x1-r2x2);
var r2b=r2y1-(r2m*r2x1);
var x=(r2b-r1b)/(r1m-r2m);
var y=r1m*x+r1b;
return{x:x,y:y}
}function findIntersectY(r1x1,r1y1,r1x2,r1y2,x){if(r1y1==r1y2){return{x:x,y:r1y1}
}var r1m=(r1y1-r1y2)/(r1x1-r1x2);
var r1b=r1y1-(r1m*r1x1);
var y=r1m*x+r1b;
return{x:x,y:y}
}function findIntersectX(r1x1,r1y1,r1x2,r1y2,y){if(r1x1==r1x2){return{x:r1x1,y:y}
}var r1m=(r1y1-r1y2)/(r1x1-r1x2);
var r1b=r1y1-(r1m*r1x1);
var x=(y-r1b)/r1m;
return{x:x,y:y}
}};
jQuery.fn.btPosition=function(){function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0
}var left=0,top=0,results;
if(this[0]){var offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();
offset.top-=num(this,"marginTop");
offset.left-=num(this,"marginLeft");
parentOffset.top+=num(offsetParent,"borderTopWidth");
parentOffset.left+=num(offsetParent,"borderLeftWidth");
results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left}
}return results
};
jQuery.fn.btOuterWidth=function(margin){function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0
}return this["innerWidth"]()+num(this,"borderLeftWidth")+num(this,"borderRightWidth")+(margin?num(this,"marginLeft")+num(this,"marginRight"):0)
};
jQuery.fn.btOn=function(){return this.each(function(index){if(jQuery.isFunction(this.btOn)){this.btOn()
}})
};
jQuery.fn.btOff=function(){return this.each(function(index){if(jQuery.isFunction(this.btOff)){this.btOff()
}})
};
jQuery.bt.vars={clickAnywhereStack:[],closeWhenOpenStack:[]};
jQuery.bt.docClick=function(e){if(!e){var e=window.event
}if(!$(e.target).parents().andSelf().filter(".bt-wrapper, .bt-active").length&&jQuery.bt.vars.clickAnywhereStack.length){$(jQuery.bt.vars.clickAnywhereStack).btOff();
$(document).unbind("click",jQuery.bt.docClick)
}};
jQuery.bt.defaults={trigger:"hover",clickAnywhereToClose:true,closeWhenOthersOpen:false,shrinkToFit:false,width:"200px",padding:"10px",spikeGirth:10,spikeLength:15,overlap:0,overlay:false,killTitle:true,textzIndex:9999,boxzIndex:9998,wrapperzIndex:9997,offsetParent:null,positions:["most"],fill:"rgb(255, 255, 102)",windowMargin:10,strokeWidth:1,strokeStyle:"#000",cornerRadius:5,centerPointX:0.5,centerPointY:0.5,shadow:false,shadowOffsetX:2,shadowOffsetY:2,shadowBlur:3,shadowColor:"#000",shadowOverlap:false,noShadowOpts:{strokeStyle:"#999"},cssClass:"",cssStyles:{},activeClass:"bt-active",content:null,contentSelector:"$(this).attr('title')",ajaxPath:null,ajaxError:"<strong>ERROR:</strong> <em>%error</em>",ajaxLoading:"<blink>Loading...</blink>",ajaxData:{},ajaxType:"GET",ajaxCache:true,ajaxOpts:{},preBuild:function(){},preShow:function(box){},showTip:function(box){$(box).show()
},postShow:function(box){},preHide:function(box){},hideTip:function(box,callback){$(box).hide();
callback()
},postHide:function(){},hoverIntentOpts:{interval:300,timeout:500}};
jQuery.bt.options={}
})(jQuery);
var jaaulde=window.jaaulde||{};
jaaulde.utils=jaaulde.utils||{};
jaaulde.utils.cookies=(function(){var cookies=[];
var defaultOptions={hoursToLive:null,path:"/",domain:null,secure:false};
var resolveOptions=function(options){var returnValue;
if(typeof options!=="object"||options===null){returnValue=defaultOptions
}else{returnValue={hoursToLive:(typeof options.hoursToLive==="number"&&options.hoursToLive!==0?options.hoursToLive:defaultOptions.hoursToLive),path:(typeof options.path==="string"&&options.path!==""?options.path:defaultOptions.path),domain:(typeof options.domain==="string"&&options.domain!==""?options.domain:defaultOptions.domain),secure:(typeof options.secure==="boolean"&&options.secure?options.secure:defaultOptions.secure)}
}return returnValue
};
var expiresGMTString=function(hoursToLive){var dateObject=new Date();
dateObject.setTime(dateObject.getTime()+(hoursToLive*60*60*1000));
return dateObject.toGMTString()
};
var assembleOptionsString=function(options){options=resolveOptions(options);
return((typeof options.hoursToLive==="number"?"; expires="+expiresGMTString(options.hoursToLive):"")+"; path="+options.path+(typeof options.domain==="string"?"; domain="+options.domain:"")+(options.secure===true?"; secure":""))
};
var splitCookies=function(){cookies={};
var pair,name,value,separated=document.cookie.split(";");
for(var i=0;
i<separated.length;
i=i+1){pair=separated[i].split("=");
name=pair[0].replace(/^\s*/,"").replace(/\s*$/,"");
value=decodeURIComponent(pair[1]);
cookies[name]=value
}return cookies
};
var constructor=function(){};
constructor.prototype.get=function(cookieName){var returnValue;
splitCookies();
if(typeof cookieName==="string"){returnValue=(typeof cookies[cookieName]!=="undefined")?cookies[cookieName]:null
}else{if(typeof cookieName==="object"&&cookieName!==null){returnValue={};
for(var item in cookieName){if(typeof cookies[cookieName[item]]!=="undefined"){returnValue[cookieName[item]]=cookies[cookieName[item]]
}else{returnValue[cookieName[item]]=null
}}}else{returnValue=cookies
}}return returnValue
};
constructor.prototype.filter=function(cookieNameRegExp){var returnValue={};
splitCookies();
if(typeof cookieNameRegExp==="string"){cookieNameRegExp=new RegExp(cookieNameRegExp)
}for(var cookieName in cookies){if(cookieName.match(cookieNameRegExp)){returnValue[cookieName]=cookies[cookieName]
}}return returnValue
};
constructor.prototype.set=function(cookieName,value,options){if(typeof value==="undefined"||value===null){if(typeof options!=="object"||options===null){options={}
}value="";
options.hoursToLive=-8760
}var optionsString=assembleOptionsString(options);
document.cookie=cookieName+"="+encodeURIComponent(value)+optionsString
};
constructor.prototype.del=function(cookieName,options){var allCookies={};
if(typeof options!=="object"||options===null){options={}
}if(typeof cookieName==="boolean"&&cookieName===true){allCookies=this.get()
}else{if(typeof cookieName==="string"){allCookies[cookieName]=true
}}for(var name in allCookies){if(typeof name==="string"&&name!==""){this.set(name,null,options)
}}};
constructor.prototype.test=function(){var returnValue=false,testName="cT",testValue="data";
this.set(testName,testValue);
if(this.get(testName)===testValue){this.del(testName);
returnValue=true
}return returnValue
};
constructor.prototype.setOptions=function(options){if(typeof options!=="object"){options=null
}defaultOptions=resolveOptions(options)
};
return new constructor()
})();
(function(){if(window.jQuery){(function($){$.cookies=jaaulde.utils.cookies;
var extensions={cookify:function(options){return this.each(function(){var i,resolvedName=false,resolvedValue=false,name="",value="",nameAttrs=["name","id"],nodeName,inputType;
for(i in nameAttrs){if(!isNaN(i)){name=$(this).attr(nameAttrs[i]);
if(typeof name==="string"&&name!==""){resolvedName=true;
break
}}}if(resolvedName){nodeName=this.nodeName.toLowerCase();
if(nodeName!=="input"&&nodeName!=="textarea"&&nodeName!=="select"&&nodeName!=="img"){value=$(this).html();
resolvedValue=true
}else{inputType=$(this).attr("type");
if(typeof inputType==="string"&&inputType!==""){inputType=inputType.toLowerCase()
}if(inputType!=="radio"&&inputType!=="checkbox"){value=$(this).val();
resolvedValue=true
}}if(resolvedValue){if(typeof value!=="string"||value===""){value=null
}$.cookies.set(name,value,options)
}}})
},cookieFill:function(){return this.each(function(){var i,resolvedName=false,name="",value,nameAttrs=["name","id"],iteration=0,nodeName;
for(i in nameAttrs){if(!isNaN(i)){name=$(this).attr(nameAttrs[i]);
if(typeof name==="string"&&name!==""){resolvedName=true;
break
}}}if(resolvedName){value=$.cookies.get(name);
if(value!==null){nodeName=this.nodeName.toLowerCase();
if(nodeName==="input"||nodeName==="textarea"||nodeName==="select"){$(this).val(value)
}else{$(this).html(value)
}}}iteration=0
})
},cookieBind:function(options){return this.each(function(){$(this).cookieFill().change(function(){$(this).cookify(options)
})
})
}};
$.each(extensions,function(i){$.fn[i]=this
})
})(window.jQuery)
}})();
(function(A){A.fn.example=function(E,C){var D=A.isFunction(E);
var B=A.extend({},C,{example:E});
return this.each(function(){var F=A(this);
if(A.metadata){var G=A.extend({},A.fn.example.defaults,F.metadata(),B)
}else{var G=A.extend({},A.fn.example.defaults,B)
}if(!A.fn.example.boundClassNames[G.className]){A(window).unload(function(){A("."+G.className).val("")
});
A("form").submit(function(){A(this).find("."+G.className).val("")
});
A.fn.example.boundClassNames[G.className]=true
}if(A.browser.msie&&!F.attr("defaultValue")&&(D||F.val()==G.example)){F.val("")
}if(F.val()==""&&this!=document.activeElement){F.addClass(G.className);
F.val(D?G.example.call(this):G.example)
}F.focus(function(){if(A(this).is("."+G.className)){A(this).val("");
A(this).removeClass(G.className)
}});
F.blur(function(){if(A(this).val()==""){A(this).addClass(G.className);
A(this).val(D?G.example.call(this):G.example)
}})
})
};
A.fn.example.defaults={className:"example"};
A.fn.example.boundClassNames=[]
})(jQuery);
if(!this.JSON){this.JSON={}
}(function(){function f(n){return n<10?"0"+n:n
}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null
};
String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf()
}
}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;
function quote(string){escapable.lastIndex=0;
return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];
return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)
})+'"':'"'+string+'"'
}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];
if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)
}if(typeof rep==="function"){value=rep.call(holder,key,value)
}switch(typeof value){case"string":return quote(value);
case"number":return isFinite(value)?String(value):"null";
case"boolean":case"null":return String(value);
case"object":if(!value){return"null"
}gap+=indent;
partial=[];
if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;
for(i=0;
i<length;
i+=1){partial[i]=str(i,value)||"null"
}v=partial.length===0?"[]":gap?"[\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"]":"["+partial.join(",")+"]";
gap=mind;
return v
}if(rep&&typeof rep==="object"){length=rep.length;
for(i=0;
i<length;
i+=1){k=rep[i];
if(typeof k==="string"){v=str(k,value);
if(v){partial.push(quote(k)+(gap?": ":":")+v)
}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);
if(v){partial.push(quote(k)+(gap?": ":":")+v)
}}}}v=partial.length===0?"{}":gap?"{\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"}":"{"+partial.join(",")+"}";
gap=mind;
return v
}}if(typeof JSON.stringify!=="function"){JSON.stringify=function(value,replacer,space){var i;
gap="";
indent="";
if(typeof space==="number"){for(i=0;
i<space;
i+=1){indent+=" "
}}else{if(typeof space==="string"){indent=space
}}rep=replacer;
if(replacer&&typeof replacer!=="function"&&(typeof replacer!=="object"||typeof replacer.length!=="number")){throw new Error("JSON.stringify")
}return str("",{"":value})
}
}if(typeof JSON.parse!=="function"){JSON.parse=function(text,reviver){var j;
function walk(holder,key){var k,v,value=holder[key];
if(value&&typeof value==="object"){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);
if(v!==undefined){value[k]=v
}else{delete value[k]
}}}}return reviver.call(holder,key,value)
}text=String(text);
cx.lastIndex=0;
if(cx.test(text)){text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)
})
}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){j=eval("("+text+")");
return typeof reviver==="function"?walk({"":j},""):j
}throw new SyntaxError("JSON.parse")
}
}}());
(function(B){var A=function(C){return parseInt(C,10)||0
};
B.each(["min","max"],function(D,C){B.fn[C+"Size"]=function(G){var F,E;
if(G){if(G.width){this.css(C+"-width",G.width)
}if(G.height){this.css(C+"-height",G.height)
}return this
}else{F=this.css(C+"-width");
E=this.css(C+"-height");
return{width:(C==="max"&&(F===undefined||F==="none"||A(F)===-1)&&Number.MAX_VALUE)||A(F),height:(C==="max"&&(E===undefined||E==="none"||A(E)===-1)&&Number.MAX_VALUE)||A(E)}
}}
});
B.fn.isVisible=function(){return this.css("visibility")!=="hidden"&&this.css("display")!=="none"
};
B.each(["border","margin","padding"],function(D,C){B.fn[C]=function(E){if(E){if(E.top){this.css(C+"-top"+(C==="border"?"-width":""),E.top)
}if(E.bottom){this.css(C+"-bottom"+(C==="border"?"-width":""),E.bottom)
}if(E.left){this.css(C+"-left"+(C==="border"?"-width":""),E.left)
}if(E.right){this.css(C+"-right"+(C==="border"?"-width":""),E.right)
}return this
}else{return{top:A(this.css(C+"-top"+(C==="border"?"-width":""))),bottom:A(this.css(C+"-bottom"+(C==="border"?"-width":""))),left:A(this.css(C+"-left"+(C==="border"?"-width":""))),right:A(this.css(C+"-right"+(C==="border"?"-width":"")))}
}}
})
})(jQuery);
(function($){$.Tache={Data:[],InProcessData:[],Delete:function(a){Delete(a)
},DeleteAll:function(){DeleteAll()
},Get:function(a){Get(a)
},SetTimeout:function(a){SetTimeout(a)
},Timeout:600};
function CreateID(oAJAX){var sIdentifier=oAJAX.url;
sIdentifier+=((typeof oAJAX.data=="string")?oAJAX.data:oAJAX.data?$.param(oAJAX.data).split("&").sort().join("&"):"");
sIdentifier+=((typeof oAJAX.dataType=="string")?oAJAX.dataType:"");
sIdentifier+=((typeof oAJAX.type=="string")?oAJAX.type:"");
return sIdentifier
}function Delete(oAJAX){if(typeof oAJAX.url!="string"){alert("No AJAX URL passed");
return
}var sIdentifier=CreateID(oAJAX);
var dtNow=new Date();
for(var i=$.Tache.Data.length;
i>0;
i--){if((((dtNow.valueOf()-$.Tache.Data[i-1].dtAge.valueOf())/1000)>$.Tache.Timeout)||($.Tache.Data[i-1].sIdentifier==sIdentifier)){$.Tache.Data.splice(i-1,1)
}}for(var i=$.Tache.InProcessData.length;
i>0;
i--){if((((dtNow.valueOf()-$.Tache.InProcessData[i-1].dtAge.valueOf())/1000)>$.Tache.Timeout)||($.Tache.InProcessData[i-1].sIdentifier==sIdentifier)){$.Tache.InProcessData.splice(i-1,1)
}}}function DeleteAll(){$.Tache.Data=[];
$.Tache.InProcessData=[]
}function Get(oAJAX){if(typeof oAJAX.url!="string"){alert("No AJAX URL passed");
return
}var sIdentifier=CreateID(oAJAX);
var dtNow=new Date();
for(var i=$.Tache.Data.length;
i>0;
i--){if(((dtNow.valueOf()-$.Tache.Data[i-1].dtAge.valueOf())/1000)>$.Tache.Timeout){$.Tache.Data.splice(i-1,1)
}else{if($.Tache.Data[i-1].sIdentifier==sIdentifier){oAJAX.success($.Tache.Data[i-1].oData);
return
}}}for(var i=$.Tache.InProcessData.length;
i>0;
i--){if(((dtNow.valueOf()-$.Tache.InProcessData[i-1].dtAge.valueOf())/1000)>$.Tache.Timeout){$.Tache.InProcessData.splice(i-1,1)
}else{if($.Tache.InProcessData[i-1].sIdentifier==sIdentifier){$.Tache.InProcessData[i-1].oReqs.push(oAJAX);
return
}}}var oCallback=oAJAX.success;
$.Tache.InProcessData.push({sIdentifier:sIdentifier,dtAge:new Date(),oReqs:[oAJAX]});
oAJAX.success=function(oNewData){$.Tache.Data.push({sIdentifier:sIdentifier,oData:oNewData,dtAge:new Date()});
oAJAX.success=oCallback;
for(var i=0;
i<$.Tache.InProcessData.length;
i++){if($.Tache.InProcessData[i].sIdentifier==sIdentifier){var ipItem=$.Tache.InProcessData.splice(i,1)[0];
for(var j=0;
j<ipItem.oReqs.length;
j++){ipItem.oReqs[j].success(oNewData)
}}}};
$.ajax(oAJAX)
}function SetTimeout(iSeconds){$.Tache.Timeout=iSeconds
}})(jQuery);
(function($){$.extend($.fn,{validate:function(options){if(!this.length){options&&options.debug&&window.console&&console.warn("nothing selected, can't validate, returning nothing");
return
}var validator=$.data(this[0],"validator");
if(validator){return validator
}validator=new $.validator(options,this[0]);
$.data(this[0],"validator",validator);
if(validator.settings.onsubmit){this.find("input, button").filter(".cancel").click(function(){validator.cancelSubmit=true
});
if(validator.settings.submitHandler){this.find("input, button").filter(":submit").click(function(){validator.submitButton=this
})
}this.submit(function(event){if(validator.settings.debug){event.preventDefault()
}function handle(){if(validator.settings.submitHandler){if(validator.submitButton){var hidden=$("<input type='hidden'/>").attr("name",validator.submitButton.name).val(validator.submitButton.value).appendTo(validator.currentForm)
}validator.settings.submitHandler.call(validator,validator.currentForm);
if(validator.submitButton){hidden.remove()
}return false
}return true
}if(validator.cancelSubmit){validator.cancelSubmit=false;
return handle()
}if(validator.form()){if(validator.pendingRequest){validator.formSubmitted=true;
return false
}return handle()
}else{validator.focusInvalid();
return false
}})
}return validator
},valid:function(){if(this.length===0){return true
}else{if($(this[0]).is("form")){return this.validate().form()
}else{var valid=true;
var validator=$(this[0].form).validate();
this.each(function(){valid&=validator.element(this)
});
return valid
}}},removeAttrs:function(attributes){var result={},$element=this;
$.each(attributes.split(/\s/),function(index,value){result[value]=$element.attr(value);
$element.removeAttr(value)
});
return result
},rules:function(command,argument){var element=this[0];
if(command){var settings=$.data(element.form,"validator").settings;
var staticRules=settings.rules;
var existingRules=$.validator.staticRules(element);
switch(command){case"add":$.extend(existingRules,$.validator.normalizeRule(argument));
staticRules[element.name]=existingRules;
if(argument.messages){settings.messages[element.name]=$.extend(settings.messages[element.name],argument.messages)
}break;
case"remove":if(!argument){delete staticRules[element.name];
return existingRules
}var filtered={};
$.each(argument.split(/\s/),function(index,method){filtered[method]=existingRules[method];
delete existingRules[method]
});
return filtered
}}var data=$.validator.normalizeRules($.extend({},$.validator.metadataRules(element),$.validator.classRules(element),$.validator.attributeRules(element),$.validator.staticRules(element)),element);
if(data.required){var param=data.required;
delete data.required;
data=$.extend({required:param},data)
}return data
}});
$.extend($.expr[":"],{blank:function(a){return !$.trim(""+a.value)
},filled:function(a){return !!$.trim(""+a.value)
},unchecked:function(a){return !a.checked
}});
$.validator=function(options,form){this.settings=$.extend(true,{},$.validator.defaults,options);
this.currentForm=form;
this.init()
};
$.validator.format=function(source,params){if(arguments.length==1){return function(){var args=$.makeArray(arguments);
args.unshift(source);
return $.validator.format.apply(this,args)
}
}if(arguments.length>2&&params.constructor!=Array){params=$.makeArray(arguments).slice(1)
}if(params.constructor!=Array){params=[params]
}$.each(params,function(i,n){source=source.replace(new RegExp("\\{"+i+"\\}","g"),n)
});
return source
};
$.extend($.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",validClass:"valid",errorElement:"label",focusInvalid:true,errorContainer:$([]),errorLabelContainer:$([]),onsubmit:true,ignore:[],ignoreTitle:false,onfocusin:function(element){this.lastActive=element;
if(this.settings.focusCleanup&&!this.blockFocusCleanup){this.settings.unhighlight&&this.settings.unhighlight.call(this,element,this.settings.errorClass,this.settings.validClass);
this.errorsFor(element).hide()
}},onfocusout:function(element){if(!this.checkable(element)&&(element.name in this.submitted||!this.optional(element))){this.element(element)
}},onkeyup:function(element){if(element.name in this.submitted||element==this.lastElement){this.element(element)
}},onclick:function(element){if(element.name in this.submitted){this.element(element)
}else{if(element.parentNode.name in this.submitted){this.element(element.parentNode)
}}},highlight:function(element,errorClass,validClass){$(element).addClass(errorClass).removeClass(validClass)
},unhighlight:function(element,errorClass,validClass){$(element).removeClass(errorClass).addClass(validClass)
}},setDefaults:function(settings){$.extend($.validator.defaults,settings)
},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",creditcard:"Please enter a valid credit card number.",equalTo:"Please enter the same value again.",accept:"Please enter a value with a valid extension.",maxlength:$.validator.format("Please enter no more than {0} characters."),minlength:$.validator.format("Please enter at least {0} characters."),rangelength:$.validator.format("Please enter a value between {0} and {1} characters long."),range:$.validator.format("Please enter a value between {0} and {1}."),max:$.validator.format("Please enter a value less than or equal to {0}."),min:$.validator.format("Please enter a value greater than or equal to {0}.")},autoCreateRanges:false,prototype:{init:function(){this.labelContainer=$(this.settings.errorLabelContainer);
this.errorContext=this.labelContainer.length&&this.labelContainer||$(this.currentForm);
this.containers=$(this.settings.errorContainer).add(this.settings.errorLabelContainer);
this.submitted={};
this.valueCache={};
this.pendingRequest=0;
this.pending={};
this.invalid={};
this.reset();
var groups=(this.groups={});
$.each(this.settings.groups,function(key,value){$.each(value.split(/\s/),function(index,name){groups[name]=key
})
});
var rules=this.settings.rules;
$.each(rules,function(key,value){rules[key]=$.validator.normalizeRule(value)
});
function delegate(event){var validator=$.data(this[0].form,"validator"),eventType="on"+event.type.replace(/^validate/,"");
validator.settings[eventType]&&validator.settings[eventType].call(validator,this[0])
}$(this.currentForm).validateDelegate(":text, :password, :file, select, textarea","focusin focusout keyup",delegate).validateDelegate(":radio, :checkbox, select, option","click",delegate);
if(this.settings.invalidHandler){$(this.currentForm).bind("invalid-form.validate",this.settings.invalidHandler)
}},form:function(){this.checkForm();
$.extend(this.submitted,this.errorMap);
this.invalid=$.extend({},this.errorMap);
if(!this.valid()){$(this.currentForm).triggerHandler("invalid-form",[this])
}this.showErrors();
return this.valid()
},checkForm:function(){this.prepareForm();
for(var i=0,elements=(this.currentElements=this.elements());
elements[i];
i++){this.check(elements[i])
}return this.valid()
},element:function(element){element=this.clean(element);
this.lastElement=element;
this.prepareElement(element);
this.currentElements=$(element);
var result=this.check(element);
if(result){delete this.invalid[element.name]
}else{this.invalid[element.name]=true
}if(!this.numberOfInvalids()){this.toHide=this.toHide.add(this.containers)
}this.showErrors();
return result
},showErrors:function(errors){if(errors){$.extend(this.errorMap,errors);
this.errorList=[];
for(var name in errors){this.errorList.push({message:errors[name],element:this.findByName(name)[0]})
}this.successList=$.grep(this.successList,function(element){return !(element.name in errors)
})
}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()
},resetForm:function(){if($.fn.resetForm){$(this.currentForm).resetForm()
}this.submitted={};
this.prepareForm();
this.hideErrors();
this.elements().removeClass(this.settings.errorClass)
},numberOfInvalids:function(){return this.objectLength(this.invalid)
},objectLength:function(obj){var count=0;
for(var i in obj){count++
}return count
},hideErrors:function(){this.addWrapper(this.toHide).hide()
},valid:function(){return this.size()==0
},size:function(){return this.errorList.length
},focusInvalid:function(){if(this.settings.focusInvalid){try{$(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin")
}catch(e){}}},findLastActive:function(){var lastActive=this.lastActive;
return lastActive&&$.grep(this.errorList,function(n){return n.element.name==lastActive.name
}).length==1&&lastActive
},elements:function(){var validator=this,rulesCache={};
return $([]).add(this.currentForm.elements).filter(":input").not(":submit, :reset, :image, [disabled]").not(this.settings.ignore).filter(function(){!this.name&&validator.settings.debug&&window.console&&console.error("%o has no name assigned",this);
if(this.name in rulesCache||!validator.objectLength($(this).rules())){return false
}rulesCache[this.name]=true;
return true
})
},clean:function(selector){return $(selector)[0]
},errors:function(){return $(this.settings.errorElement+"."+this.settings.errorClass,this.errorContext)
},reset:function(){this.successList=[];
this.errorList=[];
this.errorMap={};
this.toShow=$([]);
this.toHide=$([]);
this.currentElements=$([])
},prepareForm:function(){this.reset();
this.toHide=this.errors().add(this.containers)
},prepareElement:function(element){this.reset();
this.toHide=this.errorsFor(element)
},check:function(element){element=this.clean(element);
if(this.checkable(element)){element=this.findByName(element.name)[0]
}var rules=$(element).rules();
var dependencyMismatch=false;
for(method in rules){var rule={method:method,parameters:rules[method]};
try{var result=$.validator.methods[method].call(this,element.value.replace(/\r/g,""),element,rule.parameters);
if(result=="dependency-mismatch"){dependencyMismatch=true;
continue
}dependencyMismatch=false;
if(result=="pending"){this.toHide=this.toHide.not(this.errorsFor(element));
return
}if(!result){this.formatAndAdd(element,rule);
return false
}}catch(e){this.settings.debug&&window.console&&console.log("exception occured when checking element "+element.id+", check the '"+rule.method+"' method",e);
throw e
}}if(dependencyMismatch){return
}if(this.objectLength(rules)){this.successList.push(element)
}return true
},customMetaMessage:function(element,method){if(!$.metadata){return
}var meta=this.settings.meta?$(element).metadata()[this.settings.meta]:$(element).metadata();
return meta&&meta.messages&&meta.messages[method]
},customMessage:function(name,method){var m=this.settings.messages[name];
return m&&(m.constructor==String?m:m[method])
},findDefined:function(){for(var i=0;
i<arguments.length;
i++){if(arguments[i]!==undefined){return arguments[i]
}}return undefined
},defaultMessage:function(element,method){return this.findDefined(this.customMessage(element.name,method),this.customMetaMessage(element,method),!this.settings.ignoreTitle&&element.title||undefined,$.validator.messages[method],"<strong>Warning: No message defined for "+element.name+"</strong>")
},formatAndAdd:function(element,rule){var message=this.defaultMessage(element,rule.method),theregex=/\$?\{(\d+)\}/g;
if(typeof message=="function"){message=message.call(this,rule.parameters,element)
}else{if(theregex.test(message)){message=jQuery.format(message.replace(theregex,"{$1}"),rule.parameters)
}}this.errorList.push({message:message,element:element});
this.errorMap[element.name]=message;
this.submitted[element.name]=message
},addWrapper:function(toToggle){if(this.settings.wrapper){toToggle=toToggle.add(toToggle.parent(this.settings.wrapper))
}return toToggle
},defaultShowErrors:function(){for(var i=0;
this.errorList[i];
i++){var error=this.errorList[i];
this.settings.highlight&&this.settings.highlight.call(this,error.element,this.settings.errorClass,this.settings.validClass);
this.showLabel(error.element,error.message)
}if(this.errorList.length){this.toShow=this.toShow.add(this.containers)
}if(this.settings.success){for(var i=0;
this.successList[i];
i++){this.showLabel(this.successList[i])
}}if(this.settings.unhighlight){for(var i=0,elements=this.validElements();
elements[i];
i++){this.settings.unhighlight.call(this,elements[i],this.settings.errorClass,this.settings.validClass)
}}this.toHide=this.toHide.not(this.toShow);
this.hideErrors();
this.addWrapper(this.toShow).show()
},validElements:function(){return this.currentElements.not(this.invalidElements())
},invalidElements:function(){return $(this.errorList).map(function(){return this.element
})
},showLabel:function(element,message){var label=this.errorsFor(element);
if(label.length){label.removeClass().addClass(this.settings.errorClass);
label.attr("generated")&&label.html(message)
}else{label=$("<"+this.settings.errorElement+"/>").attr({"for":this.idOrName(element),generated:true}).addClass(this.settings.errorClass).html(message||"");
if(this.settings.wrapper){label=label.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()
}if(!this.labelContainer.append(label).length){this.settings.errorPlacement?this.settings.errorPlacement(label,$(element)):label.insertAfter(element)
}}if(!message&&this.settings.success){label.text("");
typeof this.settings.success=="string"?label.addClass(this.settings.success):this.settings.success(label)
}this.toShow=this.toShow.add(label)
},errorsFor:function(element){var name=this.idOrName(element);
return this.errors().filter(function(){return $(this).attr("for")==name
})
},idOrName:function(element){return this.groups[element.name]||(this.checkable(element)?element.name:element.id||element.name)
},checkable:function(element){return/radio|checkbox/i.test(element.type)
},findByName:function(name){var form=this.currentForm;
return $(document.getElementsByName(name)).map(function(index,element){return element.form==form&&element.name==name&&element||null
})
},getLength:function(value,element){switch(element.nodeName.toLowerCase()){case"select":return $("option:selected",element).length;
case"input":if(this.checkable(element)){return this.findByName(element.name).filter(":checked").length
}}return value.length
},depend:function(param,element){return this.dependTypes[typeof param]?this.dependTypes[typeof param](param,element):true
},dependTypes:{"boolean":function(param,element){return param
},string:function(param,element){return !!$(param,element.form).length
},"function":function(param,element){return param(element)
}},optional:function(element){return !$.validator.methods.required.call(this,$.trim(element.value),element)&&"dependency-mismatch"
},startRequest:function(element){if(!this.pending[element.name]){this.pendingRequest++;
this.pending[element.name]=true
}},stopRequest:function(element,valid){this.pendingRequest--;
if(this.pendingRequest<0){this.pendingRequest=0
}delete this.pending[element.name];
if(valid&&this.pendingRequest==0&&this.formSubmitted&&this.form()){$(this.currentForm).submit();
this.formSubmitted=false
}else{if(!valid&&this.pendingRequest==0&&this.formSubmitted){$(this.currentForm).triggerHandler("invalid-form",[this]);
this.formSubmitted=false
}}},previousValue:function(element){return $.data(element,"previousValue")||$.data(element,"previousValue",{old:null,valid:true,message:this.defaultMessage(element,"remote")})
}},classRuleSettings:{required:{required:true},email:{email:true},url:{url:true},date:{date:true},dateISO:{dateISO:true},dateDE:{dateDE:true},number:{number:true},numberDE:{numberDE:true},digits:{digits:true},creditcard:{creditcard:true}},addClassRules:function(className,rules){className.constructor==String?this.classRuleSettings[className]=rules:$.extend(this.classRuleSettings,className)
},classRules:function(element){var rules={};
var classes=$(element).attr("class");
classes&&$.each(classes.split(" "),function(){if(this in $.validator.classRuleSettings){$.extend(rules,$.validator.classRuleSettings[this])
}});
return rules
},attributeRules:function(element){var rules={};
var $element=$(element);
for(method in $.validator.methods){var value=$element.attr(method);
if(value){rules[method]=value
}}if(rules.maxlength&&/-1|2147483647|524288/.test(rules.maxlength)){delete rules.maxlength
}return rules
},metadataRules:function(element){if(!$.metadata){return{}
}var meta=$.data(element.form,"validator").settings.meta;
return meta?$(element).metadata()[meta]:$(element).metadata()
},staticRules:function(element){var rules={};
var validator=$.data(element.form,"validator");
if(validator.settings.rules){rules=$.validator.normalizeRule(validator.settings.rules[element.name])||{}
}return rules
},normalizeRules:function(rules,element){$.each(rules,function(prop,val){if(val===false){delete rules[prop];
return
}if(val.param||val.depends){var keepRule=true;
switch(typeof val.depends){case"string":keepRule=!!$(val.depends,element.form).length;
break;
case"function":keepRule=val.depends.call(element,element);
break
}if(keepRule){rules[prop]=val.param!==undefined?val.param:true
}else{delete rules[prop]
}}});
$.each(rules,function(rule,parameter){rules[rule]=$.isFunction(parameter)?parameter(element):parameter
});
$.each(["minlength","maxlength","min","max"],function(){if(rules[this]){rules[this]=Number(rules[this])
}});
$.each(["rangelength","range"],function(){if(rules[this]){rules[this]=[Number(rules[this][0]),Number(rules[this][1])]
}});
if($.validator.autoCreateRanges){if(rules.min&&rules.max){rules.range=[rules.min,rules.max];
delete rules.min;
delete rules.max
}if(rules.minlength&&rules.maxlength){rules.rangelength=[rules.minlength,rules.maxlength];
delete rules.minlength;
delete rules.maxlength
}}if(rules.messages){delete rules.messages
}return rules
},normalizeRule:function(data){if(typeof data=="string"){var transformed={};
$.each(data.split(/\s/),function(){transformed[this]=true
});
data=transformed
}return data
},addMethod:function(name,method,message){$.validator.methods[name]=method;
$.validator.messages[name]=message!=undefined?message:$.validator.messages[name];
if(method.length<3){$.validator.addClassRules(name,$.validator.normalizeRule(name))
}},methods:{required:function(value,element,param){if(!this.depend(param,element)){return"dependency-mismatch"
}switch(element.nodeName.toLowerCase()){case"select":var val=$(element).val();
return val&&val.length>0;
case"input":if(this.checkable(element)){return this.getLength(value,element)>0
}default:return $.trim(value).length>0
}},remote:function(value,element,param){if(this.optional(element)){return"dependency-mismatch"
}var previous=this.previousValue(element);
if(!this.settings.messages[element.name]){this.settings.messages[element.name]={}
}previous.originalMessage=this.settings.messages[element.name].remote;
this.settings.messages[element.name].remote=previous.message;
param=typeof param=="string"&&{url:param}||param;
if(previous.old!==value){previous.old=value;
var validator=this;
this.startRequest(element);
var data={};
data[element.name]=value;
$.ajax($.extend(true,{url:param,mode:"abort",port:"validate"+element.name,dataType:"json",data:data,success:function(response){validator.settings.messages[element.name].remote=previous.originalMessage;
var valid=response===true;
if(valid){var submitted=validator.formSubmitted;
validator.prepareElement(element);
validator.formSubmitted=submitted;
validator.successList.push(element);
validator.showErrors()
}else{var errors={};
var message=(previous.message=response||validator.defaultMessage(element,"remote"));
errors[element.name]=$.isFunction(message)?message(value):message;
validator.showErrors(errors)
}previous.valid=valid;
validator.stopRequest(element,valid)
}},param));
return"pending"
}else{if(this.pending[element.name]){return"pending"
}}return previous.valid
},minlength:function(value,element,param){return this.optional(element)||this.getLength($.trim(value),element)>=param
},maxlength:function(value,element,param){return this.optional(element)||this.getLength($.trim(value),element)<=param
},rangelength:function(value,element,param){var length=this.getLength($.trim(value),element);
return this.optional(element)||(length>=param[0]&&length<=param[1])
},min:function(value,element,param){return this.optional(element)||value>=param
},max:function(value,element,param){return this.optional(element)||value<=param
},range:function(value,element,param){return this.optional(element)||(value>=param[0]&&value<=param[1])
},email:function(value,element){return this.optional(element)||/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value)
},url:function(value,element){return this.optional(element)||/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value)
},date:function(value,element){return this.optional(element)||!/Invalid|NaN/.test(new Date(value))
},dateISO:function(value,element){return this.optional(element)||/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(value)
},number:function(value,element){return this.optional(element)||/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value)
},digits:function(value,element){return this.optional(element)||/^\d+$/.test(value)
},creditcard:function(value,element){if(this.optional(element)){return"dependency-mismatch"
}if(/[^0-9-]+/.test(value)){return false
}var nCheck=0,nDigit=0,bEven=false;
value=value.replace(/\D/g,"");
for(var n=value.length-1;
n>=0;
n--){var cDigit=value.charAt(n);
var nDigit=parseInt(cDigit,10);
if(bEven){if((nDigit*=2)>9){nDigit-=9
}}nCheck+=nDigit;
bEven=!bEven
}return(nCheck%10)==0
},accept:function(value,element,param){param=typeof param=="string"?param.replace(/,/g,"|"):"png|jpe?g|gif";
return this.optional(element)||value.match(new RegExp(".("+param+")$","i"))
},equalTo:function(value,element,param){var target=$(param).unbind(".validate-equalTo").bind("blur.validate-equalTo",function(){$(element).valid()
});
return value==target.val()
}}});
$.format=$.validator.format
})(jQuery);
(function($){var ajax=$.ajax;
var pendingRequests={};
$.ajax=function(settings){settings=$.extend(settings,$.extend({},$.ajaxSettings,settings));
var port=settings.port;
if(settings.mode=="abort"){if(pendingRequests[port]){pendingRequests[port].abort()
}return(pendingRequests[port]=ajax.apply(this,arguments))
}return ajax.apply(this,arguments)
}
})(jQuery);
(function($){if(!jQuery.event.special.focusin&&!jQuery.event.special.focusout&&document.addEventListener){$.each({focus:"focusin",blur:"focusout"},function(original,fix){$.event.special[fix]={setup:function(){this.addEventListener(original,handler,true)
},teardown:function(){this.removeEventListener(original,handler,true)
},handler:function(e){arguments[0]=$.event.fix(e);
arguments[0].type=fix;
return $.event.handle.apply(this,arguments)
}};
function handler(e){e=$.event.fix(e);
e.type=fix;
return $.event.handle.call(this,e)
}})
}$.extend($.fn,{validateDelegate:function(delegate,type,handler){return this.bind(type,function(event){var target=$(event.target);
if(target.is(delegate)){return handler.apply(target,arguments)
}})
}})
})(jQuery);
/*
	PURE Unobtrusive Rendering Engine for HTML

	Licensed under the MIT licenses.
	More information at: http://www.opensource.org

	Copyright (c) 2010 Michael Cvilic - BeeBole.com

	Thanks to Rog Peppe for the functional JS jump
	revision: 2.45
*/
var $p,pure=$p=function(){var sel=arguments[0],ctxt=false;
if(typeof sel==="string"){ctxt=arguments[1]||false
}return $p.core(sel,ctxt)
};
$p.core=function(sel,ctxt,plugins){var plugins=getPlugins(),templates=[];
switch(typeof sel){case"string":templates=plugins.find(ctxt||document,sel);
if(templates.length===0){error('The template "'+sel+'" was not found')
}break;
case"undefined":error("The template root is undefined, check your selector");
break;
default:templates=[sel]
}for(var i=0,ii=templates.length;
i<ii;
i++){plugins[i]=templates[i]
}plugins.length=ii;
var Sig="_s"+Math.floor(Math.random()*1000000)+"_",attPfx="_a"+Math.floor(Math.random()*1000000)+"_",selRx=/^(\+)?([^\@\+]+)?\@?([^\+]+)?(\+)?$/,autoAttr={IMG:"src",INPUT:"value"},isArray=Array.isArray?function(o){return Array.isArray(o)
}:function(o){return Object.prototype.toString.call(o)==="[object Array]"
};
return plugins;
function error(e){if(typeof console!=="undefined"){console.log(e)
}else{alert(e)
}throw ("pure error: "+e)
}function getPlugins(){var plugins=$p.plugins,f=function(){};
f.prototype=plugins;
f.prototype.compile=plugins.compile||compile;
f.prototype.render=plugins.render||render;
f.prototype.autoRender=plugins.autoRender||autoRender;
f.prototype.find=plugins.find||find;
f.prototype._compiler=compiler;
f.prototype._error=error;
return new f()
}function outerHTML(node){return node.outerHTML||(function(n){var div=document.createElement("div"),h;
div.appendChild(n.cloneNode(true));
h=div.innerHTML;
div=null;
return h
})(node)
}function wrapquote(qfn,f){return function(ctxt){return qfn(""+f.call(ctxt.context,ctxt))
}
}function find(n,sel){if(typeof n==="string"){sel=n;
n=false
}if(typeof document.querySelectorAll!=="undefined"){return(n||document).querySelectorAll(sel)
}else{error("You can test PURE standalone with: iPhone, FF3.5+, Safari4+ and IE8+\n\nTo run PURE on your browser, you need a JS library/framework with a CSS selector engine")
}}function concatenator(parts,fns){return function(ctxt){var strs=[parts[0]],n=parts.length,fnVal,pVal,attLine,pos;
for(var i=1;
i<n;
i++){fnVal=fns[i](ctxt);
pVal=parts[i];
if(fnVal===""){attLine=strs[strs.length-1];
if((pos=attLine.search(/[\w]+=\"?$/))>-1){strs[strs.length-1]=attLine.substring(0,pos);
pVal=pVal.substr(1)
}}strs[strs.length]=fnVal;
strs[strs.length]=pVal
}return strs.join("")
}
}function parseloopspec(p){var m=p.match(/^(\w+)\s*<-\s*(\S+)?$/);
if(m===null){error('bad loop spec: "'+p+'"')
}if(m[1]==="item"){error('"item<-..." is a reserved word for the current running iteration.\n\nPlease choose another name for your loop.')
}if(!m[2]||(m[2]&&(/context/i).test(m[2]))){m[2]=function(ctxt){return ctxt.context
}
}return{name:m[1],sel:m[2]}
}function dataselectfn(sel){if(typeof(sel)==="function"){return sel
}var m=sel.match(/^[a-zA-Z\$_][\w\$:-]*(\.[\w\$:-]*[^\.])*!?$/);
if(m===null){var found=false,s=sel,parts=[],pfns=[],i=0,retStr;
if(/\'|\"/.test(s.charAt(0))){if(/\'|\"/.test(s.charAt(s.length-1))){retStr=s.substring(1,s.length-1);
return function(){return retStr
}
}}else{while((m=s.match(/#\{([^{}]+)\}/))!==null){found=true;
parts[i++]=s.slice(0,m.index);
pfns[i]=dataselectfn(m[1]);
s=s.slice(m.index+m[0].length,s.length)
}}if(!found){error("bad data selector syntax: "+sel)
}parts[i]=s;
return concatenator(parts,pfns)
}m=sel.split(".");
var sanitize=sel.endsWith("!");
if(sanitize){m[m.length-1]=m[m.length-1].substring(0,m[m.length-1].length-1)
}return function(ctxt){var data=ctxt.context;
if(!data){return""
}var v=ctxt[m[0]],i=0;
if(v&&v.item){data=v.item;
i+=1
}var n=m.length;
for(;
i<n;
i++){if(!data){break
}data=data[m[i]]
}return(!data&&data!==0)?"":(sanitize?$.htmlEscape(data):data)
}
}function gettarget(dom,sel,isloop){var osel,prepend,selector,attr,append,target=[];
if(typeof sel==="string"){osel=sel;
var m=sel.match(selRx);
if(!m){error("bad selector syntax: "+sel)
}prepend=m[1];
selector=m[2];
attr=m[3];
append=m[4];
if(selector==="."||(!selector&&attr)){target[0]=dom
}else{target=plugins.find(dom,selector)
}if(!target||target.length===0){return error('The node "'+sel+'" was not found in the template')
}}else{prepend=sel.prepend;
attr=sel.attr;
append=sel.append;
target=[dom]
}if(prepend||append){if(prepend&&append){error("append/prepend cannot take place at the same time")
}else{if(isloop){error("no append/prepend/replace modifiers allowed for loop target")
}else{if(append&&isloop){error("cannot append with loop (sel: "+osel+")")
}}}}var setstr,getstr,quotefn,isStyle,isClass,attName,setfn;
if(attr){isStyle=(/^style$/i).test(attr);
isClass=(/^class$/i).test(attr);
attName=isClass?"className":attr;
setstr=function(node,s){node.setAttribute(attPfx+attr,s);
if(attName in node&&!isStyle){node[attName]=""
}if(node.nodeType===1){node.removeAttribute(attr);
isClass&&node.removeAttribute(attName)
}};
if(isStyle||isClass){if(isStyle){getstr=function(n){return n.style.cssText
}
}else{getstr=function(n){return n.className
}
}quotefn=function(s){return s.replace(/\"/g,"&quot;")
}
}else{getstr=function(n){return n.getAttribute(attr)
};
quotefn=function(s){return s.replace(/\"/g,"&quot;").replace(/\s/g,"&nbsp;")
}
}if(prepend){setfn=function(node,s){if(isClass){setstr(node,s+" "+getstr(node))
}else{setstr(node,s+getstr(node))
}}
}else{if(append){setfn=function(node,s){if(isClass){setstr(node,getstr(node)+" "+s)
}else{setstr(node,getstr(node)+s)
}}
}else{setfn=function(node,s){setstr(node,s)
}
}}}else{if(isloop){setfn=function(node,s){var pn=node.parentNode;
if(pn){pn.insertBefore(document.createTextNode(s),node.nextSibling);
pn.removeChild(node)
}}
}else{if(prepend){setfn=function(node,s){node.insertBefore(document.createTextNode(s),node.firstChild)
}
}else{if(append){setfn=function(node,s){node.appendChild(document.createTextNode(s))
}
}else{setfn=function(node,s){while(node.firstChild){node.removeChild(node.firstChild)
}node.appendChild(document.createTextNode(s))
}
}}}quotefn=function(s){return s
}
}return{attr:attr,nodes:target,set:setfn,sel:osel,quotefn:quotefn}
}function setsig(target,n){var sig=Sig+n+":";
for(var i=0;
i<target.nodes.length;
i++){target.set(target.nodes[i],sig)
}}function loopfn(name,dselect,inner,sorter,filter){return function(ctxt){var a=dselect(ctxt),old=ctxt[name],temp={items:a},filtered=0,length,strs=[],buildArg=function(idx,temp,ftr,len){var ctxtNew=$.extend({},ctxt);
ctxtNew.pos=temp.pos=idx;
ctxtNew.item=temp.item=a[idx];
ctxtNew.items=a;
typeof len!=="undefined"&&(ctxtNew.length=len);
if(typeof ftr==="function"&&ftr(ctxtNew)===false){filtered++;
return
}strs.push(inner.call(temp,ctxtNew))
};
ctxt[name]=temp;
if(isArray(a)){length=a.length||0;
if(typeof sorter==="function"){a.sort(sorter)
}for(var i=0,ii=length;
i<ii;
i++){buildArg(i,temp,filter,length-filtered)
}}else{if(a&&typeof sorter!=="undefined"){error("sort is only available on arrays, not objects")
}for(var prop in a){a.hasOwnProperty(prop)&&buildArg(prop,temp,filter)
}}typeof old!=="undefined"?ctxt[name]=old:delete ctxt[name];
return strs.join("")
}
}function loopgen(dom,sel,loop,fns){var already=false,ls,sorter,filter,prop;
for(prop in loop){if(loop.hasOwnProperty(prop)){if(prop==="sort"){sorter=loop.sort;
continue
}else{if(prop==="filter"){filter=loop.filter;
continue
}}if(already){error("cannot have more than one loop on a target")
}ls=prop;
already=true
}}if(!ls){error("Error in the selector: "+sel+"\nA directive action must be a string, a function or a loop(<-)")
}var dsel=loop[ls];
if(typeof(dsel)==="string"||typeof(dsel)==="function"){loop={};
loop[ls]={root:dsel};
return loopgen(dom,sel,loop,fns)
}var spec=parseloopspec(ls),itersel=dataselectfn(spec.sel),target=gettarget(dom,sel,true),nodes=target.nodes;
for(i=0;
i<nodes.length;
i++){var node=nodes[i],inner=compiler(node,dsel);
fns[fns.length]=wrapquote(target.quotefn,loopfn(spec.name,itersel,inner,sorter,filter));
target.nodes=[node];
setsig(target,fns.length-1)
}}function getAutoNodes(n,data){var ns=n.getElementsByTagName("*"),an=[],openLoops={a:[],l:{}},cspec,isNodeValue,i,ii,j,jj,ni,cs,cj;
for(i=-1,ii=ns.length;
i<ii;
i++){ni=i>-1?ns[i]:n;
if(ni.nodeType===1&&ni.className!==""){cs=ni.className.split(" ");
for(j=0,jj=cs.length;
j<jj;
j++){cj=cs[j];
cspec=checkClass(cj,ni.tagName);
if(cspec!==false){isNodeValue=(/nodevalue/i).test(cspec.attr);
if(cspec.sel.indexOf("@")>-1||isNodeValue){ni.className=ni.className.replace("@"+cspec.attr,"");
if(isNodeValue){cspec.attr=false
}}an.push({n:ni,cspec:cspec})
}}}}return an;
function checkClass(c,tagName){var ca=c.match(selRx),attr=ca[3]||autoAttr[tagName],cspec={prepend:!!ca[1],prop:ca[2],attr:attr,append:!!ca[4],sel:c},i,ii,loopi,loopil,val;
for(i=openLoops.a.length-1;
i>=0;
i--){loopi=openLoops.a[i];
loopil=loopi.l[0];
val=loopil&&loopil[cspec.prop];
if(typeof val!=="undefined"){cspec.prop=loopi.p+"."+cspec.prop;
if(openLoops.l[cspec.prop]===true){val=val[0]
}break
}}if(typeof val==="undefined"){val=isArray(data)?data[0][cspec.prop]:data[cspec.prop];
if(typeof val==="undefined"){return false
}}if(isArray(val)){openLoops.a.push({l:val,p:cspec.prop});
openLoops.l[cspec.prop]=true;
cspec.t="loop"
}else{cspec.t="str"
}return cspec
}}function compiler(dom,directive,data,ans){var fns=[];
ans=ans||data&&getAutoNodes(dom,data);
if(data){var j,jj,cspec,n,target,nodes,itersel,node,inner;
while(ans.length>0){cspec=ans[0].cspec;
n=ans[0].n;
ans.splice(0,1);
if(cspec.t==="str"){target=gettarget(n,cspec,false);
setsig(target,fns.length);
fns[fns.length]=wrapquote(target.quotefn,dataselectfn(cspec.prop))
}else{itersel=dataselectfn(cspec.sel);
target=gettarget(n,cspec,true);
nodes=target.nodes;
for(j=0,jj=nodes.length;
j<jj;
j++){node=nodes[j];
inner=compiler(node,false,data,ans);
fns[fns.length]=wrapquote(target.quotefn,loopfn(cspec.sel,itersel,inner));
target.nodes=[node];
setsig(target,fns.length-1)
}}}}var target,dsel;
for(var sel in directive){if(directive.hasOwnProperty(sel)){dsel=directive[sel];
if(typeof(dsel)==="function"||typeof(dsel)==="string"){target=gettarget(dom,sel,false);
setsig(target,fns.length);
fns[fns.length]=wrapquote(target.quotefn,dataselectfn(dsel))
}else{loopgen(dom,sel,dsel,fns)
}}}var h=outerHTML(dom),pfns=[];
h=h.replace(/<([^>]+)\s(value\=""|selected)\s?([^>]*)>/ig,"<$1 $3>");
h=h.split(attPfx).join("");
var parts=h.split(Sig),p;
for(var i=1;
i<parts.length;
i++){p=parts[i];
pfns[i]=fns[parseInt(p,10)];
parts[i]=p.substring(p.indexOf(":")+1)
}return concatenator(parts,pfns)
}function compile(directive,ctxt,template){var rfn=compiler((template||this[0]).cloneNode(true),directive,ctxt);
return function(context){return rfn({context:context})
}
}function render(ctxt,directive){var fn=typeof directive==="function"?directive:plugins.compile(directive,false,this[0]);
for(var i=0,ii=this.length;
i<ii;
i++){this[i]=replaceWith(this[i],fn(ctxt,false))
}context=null;
return this
}function autoRender(ctxt,directive){var fn=plugins.compile(directive,ctxt,this[0]);
for(var i=0,ii=this.length;
i<ii;
i++){this[i]=replaceWith(this[i],fn(ctxt,false))
}context=null;
return this
}function replaceWith(elm,html){var ne,ep=elm.parentNode,depth=0;
switch(elm.tagName){case"TBODY":case"THEAD":case"TFOOT":html="<TABLE>"+html+"</TABLE>";
depth=1;
break;
case"TR":html="<TABLE><TBODY>"+html+"</TBODY></TABLE>";
depth=2;
break;
case"TD":case"TH":html="<TABLE><TBODY><TR>"+html+"</TR></TBODY></TABLE>";
depth=3;
break
}tmp=document.createElement("SPAN");
tmp.style.display="none";
document.body.appendChild(tmp);
tmp.innerHTML=html;
ne=tmp.firstChild;
while(depth--){ne=ne.firstChild
}ep.insertBefore(ne,elm);
ep.removeChild(elm);
document.body.removeChild(tmp);
elm=ne;
ne=ep=null;
return elm
}};
$p.plugins={};
$p.libs={dojo:function(){if(typeof document.querySelector==="undefined"){$p.plugins.find=function(n,sel){return dojo.query(sel,n)
}
}},domassistant:function(){if(typeof document.querySelector==="undefined"){$p.plugins.find=function(n,sel){return $(n).cssSelect(sel)
}
}DOMAssistant.attach({publicMethods:["compile","render","autoRender"],compile:function(directive,ctxt){return $p(this).compile(directive,ctxt)
},render:function(ctxt,directive){return $($p(this).render(ctxt,directive))[0]
},autoRender:function(ctxt,directive){return $($p(this).autoRender(ctxt,directive))[0]
}})
},jquery:function(){if(typeof document.querySelector==="undefined"){$p.plugins.find=function(n,sel){return $(n).find(sel)
}
}jQuery.fn.extend({compile:function(directive,ctxt){return $p(this[0]).compile(directive,ctxt)
},render:function(ctxt,directive){return jQuery($p(this[0]).render(ctxt,directive))
},autoRender:function(ctxt,directive){return jQuery($p(this[0]).autoRender(ctxt,directive))
}})
},mootools:function(){if(typeof document.querySelector==="undefined"){$p.plugins.find=function(n,sel){return $(n).getElements(sel)
}
}Element.implement({compile:function(directive,ctxt){return $p(this).compile(directive,ctxt)
},render:function(ctxt,directive){return $p(this).render(ctxt,directive)
},autoRender:function(ctxt,directive){return $p(this).autoRender(ctxt,directive)
}})
},prototype:function(){if(typeof document.querySelector==="undefined"){$p.plugins.find=function(n,sel){n=n===document?n.body:n;
return typeof n==="string"?$$(n):$(n).select(sel)
}
}Element.addMethods({compile:function(element,directive,ctxt){return $p(element).compile(directive,ctxt)
},render:function(element,ctxt,directive){return $p(element).render(ctxt,directive)
},autoRender:function(element,ctxt,directive){return $p(element).autoRender(ctxt,directive)
}})
},sizzle:function(){if(typeof document.querySelector==="undefined"){$p.plugins.find=function(n,sel){return Sizzle(sel,n)
}
}},sly:function(){if(typeof document.querySelector==="undefined"){$p.plugins.find=function(n,sel){return Sly(sel,n)
}
}}};
(function(){var libkey=typeof dojo!=="undefined"&&"dojo"||typeof DOMAssistant!=="undefined"&&"domassistant"||typeof jQuery!=="undefined"&&"jquery"||typeof MooTools!=="undefined"&&"mootools"||typeof Prototype!=="undefined"&&"prototype"||typeof Sizzle!=="undefined"&&"sizzle"||typeof Sly!=="undefined"&&"sly";
libkey&&$p.libs[libkey]()
})();
jQuery.ui||(function($){var _remove=$.fn.remove,isFF2=$.browser.mozilla&&(parseFloat($.browser.version)<1.9);
$.ui={version:"1.7.2",plugin:{add:function(module,option,set){var proto=$.ui[module].prototype;
for(var i in set){proto.plugins[i]=proto.plugins[i]||[];
proto.plugins[i].push([option,set[i]])
}},call:function(instance,name,args){var set=instance.plugins[name];
if(!set||!instance.element[0].parentNode){return
}for(var i=0;
i<set.length;
i++){if(instance.options[set[i][0]]){set[i][1].apply(instance.element,args)
}}}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)
},hasScroll:function(el,a){if($(el).css("overflow")=="hidden"){return false
}var scroll=(a&&a=="left")?"scrollLeft":"scrollTop",has=false;
if(el[scroll]>0){return true
}el[scroll]=1;
has=(el[scroll]>0);
el[scroll]=0;
return has
},isOverAxis:function(x,reference,size){return(x>reference)&&(x<(reference+size))
},isOver:function(y,x,top,left,height,width){return $.ui.isOverAxis(y,top,height)&&$.ui.isOverAxis(x,left,width)
},keyCode:{BACKSPACE:8,CAPS_LOCK:20,COMMA:188,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38}};
if(isFF2){var attr=$.attr,removeAttr=$.fn.removeAttr,ariaNS="http://www.w3.org/2005/07/aaa",ariaState=/^aria-/,ariaRole=/^wairole:/;
$.attr=function(elem,name,value){var set=value!==undefined;
return(name=="role"?(set?attr.call(this,elem,name,"wairole:"+value):(attr.apply(this,arguments)||"").replace(ariaRole,"")):(ariaState.test(name)?(set?elem.setAttributeNS(ariaNS,name.replace(ariaState,"aaa:"),value):attr.call(this,elem,name.replace(ariaState,"aaa:"))):attr.apply(this,arguments)))
};
$.fn.removeAttr=function(name){return(ariaState.test(name)?this.each(function(){this.removeAttributeNS(ariaNS,name.replace(ariaState,""))
}):removeAttr.call(this,name))
}
}$.fn.extend({remove:function(){$("*",this).add(this).each(function(){$(this).triggerHandler("remove")
});
return _remove.apply(this,arguments)
},enableSelection:function(){return this.attr("unselectable","off").css("MozUserSelect","").unbind("selectstart.ui")
},disableSelection:function(){return this.attr("unselectable","on").css("MozUserSelect","none").bind("selectstart.ui",function(){return false
})
},scrollParent:function(){var scrollParent;
if(($.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){scrollParent=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test($.curCSS(this,"position",1))&&(/(auto|scroll)/).test($.curCSS(this,"overflow",1)+$.curCSS(this,"overflow-y",1)+$.curCSS(this,"overflow-x",1))
}).eq(0)
}else{scrollParent=this.parents().filter(function(){return(/(auto|scroll)/).test($.curCSS(this,"overflow",1)+$.curCSS(this,"overflow-y",1)+$.curCSS(this,"overflow-x",1))
}).eq(0)
}return(/fixed/).test(this.css("position"))||!scrollParent.length?$(document):scrollParent
}});
$.extend($.expr[":"],{data:function(elem,i,match){return !!$.data(elem,match[3])
},focusable:function(element){var nodeName=element.nodeName.toLowerCase(),tabIndex=$.attr(element,"tabindex");
return(/input|select|textarea|button|object/.test(nodeName)?!element.disabled:"a"==nodeName||"area"==nodeName?element.href||!isNaN(tabIndex):!isNaN(tabIndex))&&!$(element)["area"==nodeName?"parents":"closest"](":hidden").length
},tabbable:function(element){var tabIndex=$.attr(element,"tabindex");
return(isNaN(tabIndex)||tabIndex>=0)&&$(element).is(":focusable")
}});
function getter(namespace,plugin,method,args){function getMethods(type){var methods=$[namespace][plugin][type]||[];
return(typeof methods=="string"?methods.split(/,?\s+/):methods)
}var methods=getMethods("getter");
if(args.length==1&&typeof args[0]=="string"){methods=methods.concat(getMethods("getterSetter"))
}return($.inArray(method,methods)!=-1)
}$.widget=function(name,prototype){var namespace=name.split(".")[0];
name=name.split(".")[1];
$.fn[name]=function(options){var isMethodCall=(typeof options=="string"),args=Array.prototype.slice.call(arguments,1);
if(isMethodCall&&options.substring(0,1)=="_"){return this
}if(isMethodCall&&getter(namespace,name,options,args)){var instance=$.data(this[0],name);
return(instance?instance[options].apply(instance,args):undefined)
}return this.each(function(){var instance=$.data(this,name);
(!instance&&!isMethodCall&&$.data(this,name,new $[namespace][name](this,options))._init());
(instance&&isMethodCall&&$.isFunction(instance[options])&&instance[options].apply(instance,args))
})
};
$[namespace]=$[namespace]||{};
$[namespace][name]=function(element,options){var self=this;
this.namespace=namespace;
this.widgetName=name;
this.widgetEventPrefix=$[namespace][name].eventPrefix||name;
this.widgetBaseClass=namespace+"-"+name;
this.options=$.extend({},$.widget.defaults,$[namespace][name].defaults,$.metadata&&$.metadata.get(element)[name],options);
this.element=$(element).bind("setData."+name,function(event,key,value){if(event.target==element){return self._setData(key,value)
}}).bind("getData."+name,function(event,key){if(event.target==element){return self._getData(key)
}}).bind("remove",function(){return self.destroy()
})
};
$[namespace][name].prototype=$.extend({},$.widget.prototype,prototype);
$[namespace][name].getterSetter="option"
};
$.widget.prototype={_init:function(){},destroy:function(){this.element.removeData(this.widgetName).removeClass(this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").removeAttr("aria-disabled")
},option:function(key,value){var options=key,self=this;
if(typeof key=="string"){if(value===undefined){return this._getData(key)
}options={};
options[key]=value
}$.each(options,function(key,value){self._setData(key,value)
})
},_getData:function(key){return this.options[key]
},_setData:function(key,value){this.options[key]=value;
if(key=="disabled"){this.element[value?"addClass":"removeClass"](this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").attr("aria-disabled",value)
}},enable:function(){this._setData("disabled",false)
},disable:function(){this._setData("disabled",true)
},_trigger:function(type,event,data){var callback=this.options[type],eventName=(type==this.widgetEventPrefix?type:this.widgetEventPrefix+type);
event=$.Event(event);
event.type=eventName;
if(event.originalEvent){for(var i=$.event.props.length,prop;
i;
){prop=$.event.props[--i];
event[prop]=event.originalEvent[prop]
}}this.element.trigger(event,data);
return !($.isFunction(callback)&&callback.call(this.element[0],event,data)===false||event.isDefaultPrevented())
}};
$.widget.defaults={disabled:false};
$.ui.mouse={_mouseInit:function(){var self=this;
this.element.bind("mousedown."+this.widgetName,function(event){return self._mouseDown(event)
}).bind("click."+this.widgetName,function(event){if(self._preventClickEvent){self._preventClickEvent=false;
event.stopImmediatePropagation();
return false
}});
if($.browser.msie){this._mouseUnselectable=this.element.attr("unselectable");
this.element.attr("unselectable","on")
}this.started=false
},_mouseDestroy:function(){this.element.unbind("."+this.widgetName);
($.browser.msie&&this.element.attr("unselectable",this._mouseUnselectable))
},_mouseDown:function(event){event.originalEvent=event.originalEvent||{};
if(event.originalEvent.mouseHandled){return
}(this._mouseStarted&&this._mouseUp(event));
this._mouseDownEvent=event;
var self=this,btnIsLeft=(event.which==1),elIsCancel=(typeof this.options.cancel=="string"?$(event.target).parents().add(event.target).filter(this.options.cancel).length:false);
if(!btnIsLeft||elIsCancel||!this._mouseCapture(event)){return true
}this.mouseDelayMet=!this.options.delay;
if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){self.mouseDelayMet=true
},this.options.delay)
}if(this._mouseDistanceMet(event)&&this._mouseDelayMet(event)){this._mouseStarted=(this._mouseStart(event)!==false);
if(!this._mouseStarted){event.preventDefault();
return true
}}this._mouseMoveDelegate=function(event){return self._mouseMove(event)
};
this._mouseUpDelegate=function(event){return self._mouseUp(event)
};
$(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);
($.browser.safari||event.preventDefault());
event.originalEvent.mouseHandled=true;
return true
},_mouseMove:function(event){if($.browser.msie&&!event.button){return this._mouseUp(event)
}if(this._mouseStarted){this._mouseDrag(event);
return event.preventDefault()
}if(this._mouseDistanceMet(event)&&this._mouseDelayMet(event)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,event)!==false);
(this._mouseStarted?this._mouseDrag(event):this._mouseUp(event))
}return !this._mouseStarted
},_mouseUp:function(event){$(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);
if(this._mouseStarted){this._mouseStarted=false;
this._preventClickEvent=(event.target==this._mouseDownEvent.target);
this._mouseStop(event)
}return false
},_mouseDistanceMet:function(event){return(Math.max(Math.abs(this._mouseDownEvent.pageX-event.pageX),Math.abs(this._mouseDownEvent.pageY-event.pageY))>=this.options.distance)
},_mouseDelayMet:function(event){return this.mouseDelayMet
},_mouseStart:function(event){},_mouseDrag:function(event){},_mouseStop:function(event){},_mouseCapture:function(event){return true
}};
$.ui.mouse.defaults={cancel:null,distance:1,delay:0}
})(jQuery);
(function(){var root=this;
var previousUnderscore=root._;
var breaker=typeof StopIteration!=="undefined"?StopIteration:"__break__";
var escapeRegExp=function(s){return s.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")
};
var ArrayProto=Array.prototype,ObjProto=Object.prototype;
var slice=ArrayProto.slice,unshift=ArrayProto.unshift,toString=ObjProto.toString,hasOwnProperty=ObjProto.hasOwnProperty,propertyIsEnumerable=ObjProto.propertyIsEnumerable;
var nativeForEach=ArrayProto.forEach,nativeMap=ArrayProto.map,nativeReduce=ArrayProto.reduce,nativeReduceRight=ArrayProto.reduceRight,nativeFilter=ArrayProto.filter,nativeEvery=ArrayProto.every,nativeSome=ArrayProto.some,nativeIndexOf=ArrayProto.indexOf,nativeLastIndexOf=ArrayProto.lastIndexOf,nativeIsArray=Array.isArray,nativeKeys=Object.keys;
var _=function(obj){return new wrapper(obj)
};
if(typeof exports!=="undefined"){exports._=_
}root._=_;
_.VERSION="1.0.3";
var each=_.forEach=function(obj,iterator,context){try{if(nativeForEach&&obj.forEach===nativeForEach){obj.forEach(iterator,context)
}else{if(_.isNumber(obj.length)){for(var i=0,l=obj.length;
i<l;
i++){iterator.call(context,obj[i],i,obj)
}}else{for(var key in obj){if(hasOwnProperty.call(obj,key)){iterator.call(context,obj[key],key,obj)
}}}}}catch(e){if(e!=breaker){throw e
}}return obj
};
_.map=function(obj,iterator,context){if(nativeMap&&obj.map===nativeMap){return obj.map(iterator,context)
}var results=[];
each(obj,function(value,index,list){results.push(iterator.call(context,value,index,list))
});
return results
};
_.reduce=function(obj,memo,iterator,context){if(nativeReduce&&obj.reduce===nativeReduce){return obj.reduce(_.bind(iterator,context),memo)
}each(obj,function(value,index,list){memo=iterator.call(context,memo,value,index,list)
});
return memo
};
_.reduceRight=function(obj,memo,iterator,context){if(nativeReduceRight&&obj.reduceRight===nativeReduceRight){return obj.reduceRight(_.bind(iterator,context),memo)
}var reversed=_.clone(_.toArray(obj)).reverse();
return _.reduce(reversed,memo,iterator,context)
};
_.detect=function(obj,iterator,context){var result;
each(obj,function(value,index,list){if(iterator.call(context,value,index,list)){result=value;
_.breakLoop()
}});
return result
};
_.filter=function(obj,iterator,context){if(nativeFilter&&obj.filter===nativeFilter){return obj.filter(iterator,context)
}var results=[];
each(obj,function(value,index,list){iterator.call(context,value,index,list)&&results.push(value)
});
return results
};
_.reject=function(obj,iterator,context){var results=[];
each(obj,function(value,index,list){!iterator.call(context,value,index,list)&&results.push(value)
});
return results
};
_.every=function(obj,iterator,context){iterator=iterator||_.identity;
if(nativeEvery&&obj.every===nativeEvery){return obj.every(iterator,context)
}var result=true;
each(obj,function(value,index,list){if(!(result=result&&iterator.call(context,value,index,list))){_.breakLoop()
}});
return result
};
_.some=function(obj,iterator,context){iterator=iterator||_.identity;
if(nativeSome&&obj.some===nativeSome){return obj.some(iterator,context)
}var result=false;
each(obj,function(value,index,list){if(result=iterator.call(context,value,index,list)){_.breakLoop()
}});
return result
};
_.include=function(obj,target){if(nativeIndexOf&&obj.indexOf===nativeIndexOf){return obj.indexOf(target)!=-1
}var found=false;
each(obj,function(value){if(found=value===target){_.breakLoop()
}});
return found
};
_.invoke=function(obj,method){var args=_.rest(arguments,2);
return _.map(obj,function(value){return(method?value[method]:value).apply(value,args)
})
};
_.pluck=function(obj,key){return _.map(obj,function(value){return value[key]
})
};
_.max=function(obj,iterator,context){if(!iterator&&_.isArray(obj)){return Math.max.apply(Math,obj)
}var result={computed:-Infinity};
each(obj,function(value,index,list){var computed=iterator?iterator.call(context,value,index,list):value;
computed>=result.computed&&(result={value:value,computed:computed})
});
return result.value
};
_.min=function(obj,iterator,context){if(!iterator&&_.isArray(obj)){return Math.min.apply(Math,obj)
}var result={computed:Infinity};
each(obj,function(value,index,list){var computed=iterator?iterator.call(context,value,index,list):value;
computed<result.computed&&(result={value:value,computed:computed})
});
return result.value
};
_.sortBy=function(obj,iterator,context){return _.pluck(_.map(obj,function(value,index,list){return{value:value,criteria:iterator.call(context,value,index,list)}
}).sort(function(left,right){var a=left.criteria,b=right.criteria;
return a<b?-1:a>b?1:0
}),"value")
};
_.sortedIndex=function(array,obj,iterator){iterator=iterator||_.identity;
var low=0,high=array.length;
while(low<high){var mid=(low+high)>>1;
iterator(array[mid])<iterator(obj)?low=mid+1:high=mid
}return low
};
_.toArray=function(iterable){if(!iterable){return[]
}if(iterable.toArray){return iterable.toArray()
}if(_.isArray(iterable)){return iterable
}if(_.isArguments(iterable)){return slice.call(iterable)
}return _.values(iterable)
};
_.size=function(obj){return _.toArray(obj).length
};
_.first=function(array,n,guard){return n&&!guard?slice.call(array,0,n):array[0]
};
_.rest=function(array,index,guard){return slice.call(array,_.isUndefined(index)||guard?1:index)
};
_.last=function(array){return array[array.length-1]
};
_.compact=function(array){return _.filter(array,function(value){return !!value
})
};
_.flatten=function(array){return _.reduce(array,[],function(memo,value){if(_.isArray(value)){return memo.concat(_.flatten(value))
}memo.push(value);
return memo
})
};
_.without=function(array){var values=_.rest(arguments);
return _.filter(array,function(value){return !_.include(values,value)
})
};
_.uniq=function(array,isSorted){return _.reduce(array,[],function(memo,el,i){if(0==i||(isSorted===true?_.last(memo)!=el:!_.include(memo,el))){memo.push(el)
}return memo
})
};
_.intersect=function(array){var rest=_.rest(arguments);
return _.filter(_.uniq(array),function(item){return _.every(rest,function(other){return _.indexOf(other,item)>=0
})
})
};
_.zip=function(){var args=_.toArray(arguments);
var length=_.max(_.pluck(args,"length"));
var results=new Array(length);
for(var i=0;
i<length;
i++){results[i]=_.pluck(args,String(i))
}return results
};
_.indexOf=function(array,item){if(nativeIndexOf&&array.indexOf===nativeIndexOf){return array.indexOf(item)
}for(var i=0,l=array.length;
i<l;
i++){if(array[i]===item){return i
}}return -1
};
_.lastIndexOf=function(array,item){if(nativeLastIndexOf&&array.lastIndexOf===nativeLastIndexOf){return array.lastIndexOf(item)
}var i=array.length;
while(i--){if(array[i]===item){return i
}}return -1
};
_.range=function(start,stop,step){var a=_.toArray(arguments);
var solo=a.length<=1;
var start=solo?0:a[0],stop=solo?a[0]:a[1],step=a[2]||1;
var len=Math.ceil((stop-start)/step);
if(len<=0){return[]
}var range=new Array(len);
for(var i=start,idx=0;
true;
i+=step){if((step>0?i-stop:stop-i)>=0){return range
}range[idx++]=i
}};
_.bind=function(func,obj){var args=_.rest(arguments,2);
return function(){return func.apply(obj||{},args.concat(_.toArray(arguments)))
}
};
_.bindAll=function(obj){var funcs=_.rest(arguments);
if(funcs.length==0){funcs=_.functions(obj)
}each(funcs,function(f){obj[f]=_.bind(obj[f],obj)
});
return obj
};
_.delay=function(func,wait){var args=_.rest(arguments,2);
return setTimeout(function(){return func.apply(func,args)
},wait)
};
_.defer=function(func){return _.delay.apply(_,[func,1].concat(_.rest(arguments)))
};
_.wrap=function(func,wrapper){return function(){var args=[func].concat(_.toArray(arguments));
return wrapper.apply(wrapper,args)
}
};
_.compose=function(){var funcs=_.toArray(arguments);
return function(){var args=_.toArray(arguments);
for(var i=funcs.length-1;
i>=0;
i--){args=[funcs[i].apply(this,args)]
}return args[0]
}
};
_.keys=nativeKeys||function(obj){if(_.isArray(obj)){return _.range(0,obj.length)
}var keys=[];
for(var key in obj){if(hasOwnProperty.call(obj,key)){keys.push(key)
}}return keys
};
_.values=function(obj){return _.map(obj,_.identity)
};
_.functions=function(obj){return _.filter(_.keys(obj),function(key){return _.isFunction(obj[key])
}).sort()
};
_.extend=function(obj){each(_.rest(arguments),function(source){for(var prop in source){obj[prop]=source[prop]
}});
return obj
};
_.clone=function(obj){if(_.isArray(obj)){return obj.slice(0)
}return _.extend({},obj)
};
_.tap=function(obj,interceptor){interceptor(obj);
return obj
};
_.isEqual=function(a,b){if(a===b){return true
}var atype=typeof(a),btype=typeof(b);
if(atype!=btype){return false
}if(a==b){return true
}if((!a&&b)||(a&&!b)){return false
}if(a.isEqual){return a.isEqual(b)
}if(_.isDate(a)&&_.isDate(b)){return a.getTime()===b.getTime()
}if(_.isNaN(a)&&_.isNaN(b)){return false
}if(_.isRegExp(a)&&_.isRegExp(b)){return a.source===b.source&&a.global===b.global&&a.ignoreCase===b.ignoreCase&&a.multiline===b.multiline
}if(atype!=="object"){return false
}if(a.length&&(a.length!==b.length)){return false
}var aKeys=_.keys(a),bKeys=_.keys(b);
if(aKeys.length!=bKeys.length){return false
}for(var key in a){if(!(key in b)||!_.isEqual(a[key],b[key])){return false
}}return true
};
_.isEmpty=function(obj){if(_.isArray(obj)||_.isString(obj)){return obj.length===0
}for(var key in obj){if(hasOwnProperty.call(obj,key)){return false
}}return true
};
_.isElement=function(obj){return !!(obj&&obj.nodeType==1)
};
_.isArray=nativeIsArray||function(obj){return !!(obj&&obj.concat&&obj.unshift&&!obj.callee)
};
_.isArguments=function(obj){return obj&&obj.callee
};
_.isFunction=function(obj){return !!(obj&&obj.constructor&&obj.call&&obj.apply)
};
_.isString=function(obj){return !!(obj===""||(obj&&obj.charCodeAt&&obj.substr))
};
_.isNumber=function(obj){return(obj===+obj)||(toString.call(obj)==="[object Number]")
};
_.isBoolean=function(obj){return obj===true||obj===false
};
_.isDate=function(obj){return !!(obj&&obj.getTimezoneOffset&&obj.setUTCFullYear)
};
_.isRegExp=function(obj){return !!(obj&&obj.test&&obj.exec&&(obj.ignoreCase||obj.ignoreCase===false))
};
_.isNaN=function(obj){return _.isNumber(obj)&&isNaN(obj)
};
_.isNull=function(obj){return obj===null
};
_.isUndefined=function(obj){return typeof obj=="undefined"
};
_.noConflict=function(){root._=previousUnderscore;
return this
};
_.identity=function(value){return value
};
_.times=function(n,iterator,context){for(var i=0;
i<n;
i++){iterator.call(context,i)
}};
_.breakLoop=function(){throw breaker
};
_.mixin=function(obj){each(_.functions(obj),function(name){addToWrapper(name,_[name]=obj[name])
})
};
var idCounter=0;
_.uniqueId=function(prefix){var id=idCounter++;
return prefix?prefix+id:id
};
_.templateSettings={start:"<%",end:"%>",interpolate:/<%=(.+?)%>/g};
_.template=function(str,data){var c=_.templateSettings;
var endMatch=new RegExp("'(?=[^"+c.end.substr(0,1)+"]*"+escapeRegExp(c.end)+")","g");
var fn=new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+str.replace(/[\r\t\n]/g," ").replace(endMatch,"\t").split("'").join("\\'").split("\t").join("'").replace(c.interpolate,"',$1,'").split(c.start).join("');").split(c.end).join("p.push('")+"');}return p.join('');");
return data?fn(data):fn
};
_.each=_.forEach;
_.foldl=_.inject=_.reduce;
_.foldr=_.reduceRight;
_.select=_.filter;
_.all=_.every;
_.any=_.some;
_.head=_.first;
_.tail=_.rest;
_.methods=_.functions;
var wrapper=function(obj){this._wrapped=obj
};
var result=function(obj,chain){return chain?_(obj).chain():obj
};
var addToWrapper=function(name,func){wrapper.prototype[name]=function(){var args=_.toArray(arguments);
unshift.call(args,this._wrapped);
return result(func.apply(_,args),this._chain)
}
};
_.mixin(_);
each(["pop","push","reverse","shift","sort","splice","unshift"],function(name){var method=ArrayProto[name];
wrapper.prototype[name]=function(){method.apply(this._wrapped,arguments);
return result(this._wrapped,this._chain)
}
});
each(["concat","join","slice"],function(name){var method=ArrayProto[name];
wrapper.prototype[name]=function(){return result(method.apply(this._wrapped,arguments),this._chain)
}
});
wrapper.prototype.chain=function(){this._chain=true;
return this
};
wrapper.prototype.value=function(){return this._wrapped
}
})();
(function(){var initializing=false,fnTest=/xyz/.test(function(){xyz
})?/\b_super\b/:/.*/;
this.Class=function(){};
Class.extend=function(prop){var _super=this.prototype;
initializing=true;
var prototype=new this();
initializing=false;
var addProperties=function(obj,newProps,_s){for(var name in newProps){obj[name]=typeof newProps[name]=="function"&&typeof _s[name]=="function"&&fnTest.test(newProps[name])?(function(name,fn){return function(){var tmp=this._super;
this._super=_s[name];
var ret=fn.apply(this,arguments);
this._super=tmp;
return ret
}
})(name,newProps[name]):newProps[name]
}};
addProperties(prototype,prop,_super);
function Class(){if(!initializing&&this._init){this._init.apply(this,arguments)
}}Class.prototype=prototype;
Class.constructor=Class;
Class.extend=arguments.callee;
Class.addProperties=addProperties;
return Class
}
})();
if(!blist){var blist={}
}if(!blist.namespace){blist.namespace={}
}blist.namespace.fetch=function(nsString){var nsArray=nsString.split(".");
var curNS=window;
for(var i=0;
i<nsArray.length;
i++){var n=nsArray[i];
if(!curNS[n]){curNS[n]={}
}curNS=curNS[n]
}return curNS
};
blist.namespace.fetch("blist.util");
blist.namespace.fetch("blist.util.patterns");
String.prototype.startsWith=function(str){return this.indexOf(str)==0
};
String.prototype.endsWith=function(str){return this.length>=str.length&&this.lastIndexOf(str)==(this.length-str.length)
};
String.prototype.format=function(){var txt=this,i=arguments.length;
while(i--){txt=txt.replace(new RegExp("\\{"+i+"\\}","gm"),arguments[i])
}return txt
};
String.prototype.visualLength=function(fontSize){var $ruler=$("#ruler");
if($ruler.length<1){$("body").append('<span id="ruler"></span>');
$ruler=$("#ruler")
}if(!fontSize){fontSize=""
}$ruler.css("font-size",fontSize);
$ruler.text(this+"");
return $ruler.width()
};
String.prototype.capitalize=function(){return this.charAt(0).toUpperCase()+this.substring(1)
};
String.prototype.displayable=function(){return $.map(this.replace(/_/g," ").split(" "),$.capitalize).join(" ")
};
String.prototype.trim=function(){return this.replace(/^\s+/,"").replace(/\s+$/,"")
};
String.prototype.clean=function(){return this.replace(/\xa0/g," ")
};
(function($){$.urlParam=function(url,name,value){var regex=new RegExp("([\\?#&]"+name+"=)([^&#]*)");
if(value!==undefined&&value!==null){return url.replace(regex,"$1"+value)
}var results=regex.exec(url);
if(results){return results[2]||0
}else{return 0
}};
$.escapeQuotes=function(text){if(typeof text!=="string"){return text
}return $.htmlEscape(text).replace(/'/,"&apos;")
};
$.unescapeQuotes=function(text){if(typeof text!=="string"){return text
}return $.htmlUnescape(text).replace(/&apos;/,"'")
};
$.htmlEscape=function(text){if(typeof text!=="string"){return text
}return text.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")
};
$.htmlUnescape=function(text){if(typeof text!=="string"){return text
}return text.replace(/&quot;/g,'"').replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/&amp;/g,"&")
};
$.unescapeObject=function(obj){if(obj===null||obj===undefined){return obj
}else{if(typeof obj=="string"){return $.htmlUnescape(obj)
}else{if(typeof obj=="object"){var newObj=obj instanceof Array?[]:{};
$.each(obj,function(k,v){newObj[k]=$.unescapeObject(v)
});
return newObj
}else{return obj
}}}};
$.htmlStrip=function(text){try{return text.replace(/<[^>]*>/g,"")
}catch(ex){return""
}};
$.urlSafe=function(text){var output=text.replace(/\s+/g,"-").replace(/[^a-zA-Z0-9_\-]/g,"-").replace(/\-+/g,"-");
if(output.length<1){output="-"
}return output.slice(0,50)
};
$.capitalize=function(text){text+="";
return text.charAt(0).toUpperCase()+text.substring(1)
};
$.live=function(selector,type,fn){var $obj=$([]);
$obj.context=document;
$obj.selector=selector;
$obj.live(type,fn);
return $obj
};
$.compact=function(a){for(var i=a.length-1;
i>=0;
i--){if(a[i]===undefined||a[i]===null){a.splice(i,1)
}}};
$.deepCompact=function(obj){if(_.isArray(obj)){return _.map(_.compact(obj),function(o){return $.deepCompact(o)
})
}if(!$.isPlainObject(obj)){return obj
}var newObj={};
_.each(obj,function(v,k){if(!$.isBlank(v)){newObj[k]=$.deepCompact(v)
}});
return newObj
};
$.compareValues=function(obj1,obj2){if(obj1===obj2){return true
}if(obj1===null||obj1===undefined){if(obj2===null||obj2===undefined){return true
}return false
}if(obj2===null||obj2===undefined){return false
}if(!(obj1 instanceof Object)||!(obj2 instanceof Object)){return false
}var compareKey=function(o1,o2,k){if(!o1.hasOwnProperty(k)||!o2.hasOwnProperty(k)){return false
}return $.compareValues(o1[k],o2[k])
};
for(var v1 in obj1){if(!compareKey(obj1,obj2,v1)){return false
}}for(var v2 in obj2){if(!compareKey(obj2,obj1,v2)){return false
}}return true
};
$.syncObjects=function(dest,src){$.extend(dest,src);
_.each(dest,function(v,k){if(_.isUndefined(src[k])){delete dest[k]
}})
};
$.keys=function(obj){if(obj===null||typeof obj!="object"){return[]
}var keys=[];
$.each(obj,function(k,v){keys.push(k)
});
return keys
};
$.objSelect=function(obj,filterFn){var acc={};
_.each(obj,function(v,k){if(filterFn(v,k)){acc[k]=v
}});
return acc
};
$.renderTemplate=function(template,data,directive){var $templateCopy=$("#templates > ."+template).clone();
if(_.isUndefined(data)){return $templateCopy.children()
}else{$templateCopy.appendTo($("<div/>"));
return $templateCopy.render(data,directive).children()
}};
$.compileTemplate=function(template,directive){var $templateCopy=$("#templates > ."+template).clone();
$templateCopy.appendTo($("<div/>"));
var compiledDirective=$templateCopy.compile(directive);
return function(data){return compiledDirective(data).replace(/^\s*<[^<>]+>/i,"").replace(/<\/[^<>]+>\s*$/i,"")
}
};
$.isBlank=function(obj){return _.isUndefined(obj)||_.isNull(obj)||obj===""
};
$.arrayify=function(obj){return !_.isArray(obj)?[obj]:obj
};
$.objectify=function(obj,key){if(!$.isPlainObject(obj)){var newObj={};
newObj[key]=obj;
return newObj
}return obj
};
$.addItemsToObject=function(obj,values,index){values=$.makeArray(values);
var numInserts=values.length;
var tmp={};
_.each(obj,function(r,i){i=parseInt(i);
if(i>=index){if(!$.isBlank(r.index)){r.index=i+numInserts
}tmp[i+numInserts]=r;
delete obj[i]
}});
$.extend(obj,tmp);
_.each(values,function(v,i){i=parseInt(i);
if(!$.isBlank(v.index)){v.index=index+i
}obj[index+i]=v
})
};
$.removeItemsFromObject=function(obj,index,numItems){for(var i=0;
i<numItems;
i++){delete obj[index+i]
}var tmp={};
_.each(obj,function(r,i){i=parseInt(i);
if(i>index){if(!$.isBlank(r.index)){r.index=i-numItems
}tmp[i-numItems]=r;
delete obj[i]
}});
$.extend(obj,tmp)
};
$.safeId=function(id){return id.replace(/(\.|\:)/g,"\\$1")
};
$.arrayToSentence=function(arr,joinWord,separator,alwaysUseSep){return arr.length<3?arr.join((alwaysUseSep?separator:"")+" "+joinWord+" "):arr.slice(0,-1).join(separator+" ")+separator+" "+joinWord+" "+arr[arr.length-1]
};
$.wordify=function(num){var numWords={"0":"zero","1":"one","2":"two","3":"three","4":"four","5":"five","6":"six","7":"seven","8":"eight","9":"nine"};
return numWords[num.toString()]||num
};
$.mixin=function(obj,mixin){var clone=function(){return obj.apply(this,arguments)
};
for(property in obj){if(obj.hasOwnProperty(property)&&property!=="prototype"){clone[property]=obj[property]
}}$.extend(clone.prototype,obj.prototype,mixin.prototype);
return clone
};
blist.util.doAuthedAction=function(actionText,callback){if(!$.isBlank(blist.util.inlineLogin)){blist.util.inlineLogin.verifyUser(function(isSuccess){if(isSuccess){callback()
}},"You must be logged in to "+actionText)
}else{callback()
}};
blist.util.patterns.UID=/^\w{4}-\w{4}$/
})(jQuery);
(function(){this.Model=Class.extend({_init:function(){var that=this;
var listeners={};
var events={};
var verifyEvent=function(evName){if(!events[evName]){throw"Event "+evName+" not registered"
}};
this.bind=function(evName,func){verifyEvent(evName);
listeners[evName]=listeners[evName]||[];
if(!_.include(listeners[evName],func)&&_.isFunction(func)){listeners[evName].push(func)
}return that
};
this.unbind=function(evName,func){verifyEvent(evName);
if(!$.isBlank(func)){listeners[evName]=_.without(listeners[evName]||[],func)
}else{listeners[evName]=[]
}return that
};
this.trigger=function(evName,args){verifyEvent(evName);
_.each(listeners[evName]||[],function(f){f.apply(that,args||[])
});
return that
};
this.registerEvent=function(evName){_.each($.makeArray(evName),function(e){events[e]=true
});
return that
};
this.availableEvents=function(){return _.keys(events).sort()
};
this.registerEvent(["start_request","finish_request"]);
this._reqCount=0
},cleanCopy:function(){var that=this;
var cleanObj=function(val){if(val instanceof Model){return val.cleanCopy()
}else{if(_.isArray(val)){return _.map(val,function(v){return cleanObj(v)
})
}else{if($.isPlainObject(val)){var obj={};
_.each(val,function(v,k){obj[k]=cleanObj(v)
});
return obj
}else{return val
}}}};
var obj={};
_.each(this,function(v,k){if(!_.isFunction(v)&&!k.startsWith("_")&&that._validKeys[k]){obj[k]=cleanObj(v)
}});
return obj
},_makeRequest:function(req){var model=this;
var finishCallback=function(callback){return function(){model._reqCount--;
if(model._reqCount<1){model.trigger("finish_request")
}if(_.isFunction(callback)){callback.apply(this,arguments)
}}
};
if(model._reqCount<1){this.trigger("start_request")
}model._reqCount++;
$.extend(req,{contentType:"application/json",dataType:"json",error:finishCallback(req.error),success:finishCallback(req.success)});
if(!$.isBlank(req.params)){req.url+=(req.url.indexOf("?")>=0?"&":"?")+$.param(req.params)
}if($.isBlank(req.type)||req.type.toLowerCase()=="get"){req.cache=false
}var cleanReq=function(){delete req.batch;
delete req.pageCache;
delete req.params
};
if(req.pageCache){cleanReq();
$.Tache.Get(req)
}else{if(req.batch){cleanReq();
$.socrataServer.addRequest(req)
}else{cleanReq();
$.ajax(req)
}}},_sendBatch:function(successCallback){$.socrataServer.runRequests({success:successCallback})
},_generateBaseUrl:function(domain){var loc=document.location,base=loc.protocol+"//"+($.isBlank(domain)?loc.hostname:domain);
if(loc.port!=80){base+=":"+loc.port
}return base
},_validKeys:{}})
})();
(function($){$.support.borderRadius=false;
_.each(["BorderRadius","MozBorderRadius","WebkitBorderRadius","OBorderRadius","KhtmlBorderRadius"],function(p){if(document.body.style[p]!==undefined){$.support.borderRadius=true
}});
$.support.linearGradient=false;
var div=document.createElement("div");
div.style.cssText=["background-image:-webkit-gradient(linear, 0% 0%, 0% 100%, from(red), to(blue));","background-image:-moz-linear-gradient(top left, bottom right, from(red), to(blue));","background-image:-moz-linear-gradient(left, red, blue);"].join("");
if(div.style.backgroundImage){$.support.linearGradient=true
}$.device=$.device||{};
if(navigator.userAgent.match(/iPad/i)!=null){$.device.ipad=true
}if(navigator.userAgent.match(/(iPhone|iPod)/i)!=null){$.device.iphone=true
}if(navigator.userAgent.match(/Android/i)!=null){$.device.android=true
}})(jQuery);
$(function(){$.browser.majorVersion=parseInt($.browser.version);
if($.browser.msie){$("body").addClass("ie ie"+$.browser.version.slice(0,1));
$("a.button").each(function(){$.tag({tagName:"span","class":"left"}).prependTo($(this))
})
}if($.support.borderRadius===false){$("body").addClass("noBorderRadius")
}if($.support.linearGradient===false){$("body").addClass("noLinearGradient")
}if(($.support.borderRadius===false)&&($.support.linearGradient===false)){$("body").addClass("noCss3")
}});
(function($){$.tag=function(attrs,keepAsString){attrs=tag_parseConditionalElement(attrs);
if(attrs===false){return null
}var result="<"+attrs.tagName.toLowerCase();
_.each(attrs,function(value,key){if(key=="tagName"||key=="contents"){return
}else{if((value===true)&&_.include(["checked","selected","disabled","readonly","multiple","ismap","defer","declare","noresize","nowrap","noshade","compact"],key.toLowerCase())){result+=tag_append(key,key)
}else{if(value===false){return
}else{if(key=="style"){var newValue=[];
_.each(value,function(value,key){var parsedElem=tag_parseConditionalElement(value);
if(parsedElem!==false){newValue.push(key+":"+parsedElem)
}});
result+=tag_append(key,newValue.join(";"))
}else{if(_.isArray(value)){var newValue=[];
_.each(value,function(elem){var parsedElem=tag_parseConditionalElement(elem);
if(parsedElem!==false){newValue.push(parsedElem)
}});
result+=tag_append(key,newValue.join(" "))
}else{if(_.isString(value)){result+=tag_append(key,value)
}else{var parsedElem=tag_parseConditionalElement(value);
if(parsedElem!==false){result+=tag_append(key,parsedElem)
}}}}}}}});
if(_.include(["input","img","link","meta"],attrs.tagName)){result+="/>"
}else{if(!$.isBlank(attrs.contents)){result+=">";
result+=tag_renderChildren(attrs.contents);
result+="</"+attrs.tagName+">"
}else{result+="></"+attrs.tagName+">"
}}if(keepAsString===true){return result
}else{return $(result)
}};
var tag_append=function(key,value){return" "+key+'="'+value+'"'
};
var tag_parseConditionalElement=function(elem){if($.isBlank(elem)){return false
}else{if($.isBlank(elem.tagName)&&(!_.isUndefined(elem.value)||!$.isBlank(elem.onlyIf))){if(elem.onlyIf===true){return elem.value
}else{return false
}}else{return elem
}}};
var tag_renderChildren=function(children){children=$.makeArray(children);
return _.reject(_.map(children,function(child){if($.isPlainObject(child)){child=$.tag(child,true)
}if(_.isArray(child)){child=tag_renderChildren(child)
}return child
}),function(child){return $.isBlank(child)
}).join("")
};
$.button=function(opts,keepAsText){if(_.isString(opts)){opts={text:opts,href:"#"+$.urlSafe(opts)}
}return $.tag($.extend(opts.customAttrs,{tagName:"a",href:opts.href||"#","class":_.flatten(["button",opts.className,opts.iconClass]),contents:[{value:{tagName:"span","class":"icon"},onlyIf:!$.isBlank(opts.iconClass)},opts.text]}),keepAsText)
}
})(jQuery);
function alert(msg){$("#jqmAlert").jqmShow().find(".alertMessage").text(msg)
}$(function(){$("#jqmAlert").jqm({trigger:false})
});
jQuery.analytics={trackEvent:function(category,action,label,value){if((category===undefined)||(action===undefined)){return false
}if(window._gaq===undefined){return false
}_gaq.push(["_trackEvent",category,action,label,value])
}};
(function(){this.ColumnContainer=function(colName,selfUrl,urlBase){var _columnIDLookup;
var _columnTCIDLookup;
var capName=colName.capitalize();
var colSet=colName+"s";
var capSet=colSet.capitalize();
var forID=function(item,id){return item[colName+"ForID"](id)
};
var update=function(item,nc,ff,uo){return item["update"+capSet](nc,ff,uo)
};
var realSet=function(item){return item["real"+capSet]
};
var visibleSet=function(item){return item["visible"+capSet]
};
var props={};
props[colName+"ForID"]=function(id){return _columnIDLookup[parseInt(id)||id]
};
props[colName+"ForTCID"]=function(tcId){return _columnTCIDLookup[parseInt(tcId)]
};
props["clear"+capName]=function(col){if(!$.isBlank(this._super)){this._super(col)
}this[colSet]=_.without(this[colSet],col);
delete _columnIDLookup[col.id];
delete _columnIDLookup[col.lookup];
delete _columnTCIDLookup[col.tableColumnId];
update(this)
};
props[colSet+"ForType"]=function(type,includeHidden){var cols=includeHidden?realSet(this):visibleSet(this);
if(!$.isBlank(type)){cols=_.select(cols,function(c){return _.include($.makeArray(type),c.renderTypeName)
})
}return cols
};
props["add"+capName]=function(column,successCallback,errorCallback,customParams){if(!$.isBlank(this._super)&&this._super(arguments)){return true
}var cont=this;
var columnAdded=function(newCol){cont[colSet].push(newCol);
update(cont);
(cont.view||cont).reload();
if(_.isFunction(successCallback)){successCallback(forID(cont,newCol.id))
}};
var req={url:urlBase+".json",type:"POST",success:columnAdded,error:errorCallback};
if(!$.isBlank(column)){req.data=JSON.stringify(new Column(column,cont).cleanCopy())
}if(!$.isBlank(customParams)){req.params=customParams
}this._makeRequest(req)
};
props["remove"+capSet]=function(columnIds,successCallback,errorCallback){var cont=this;
_.each($.makeArray(columnIds),function(cId){var c=forID(cont,cId);
c.remove(null,errorCallback,true)
});
var columnsRemoved=function(){update(cont);
if(_.isFunction(successCallback)){successCallback()
}};
cont._sendBatch(columnsRemoved)
};
props["setVisible"+capSet]=function(visColIds,callback,skipRequest){var cont=this;
var prevPos=-1;
var needsReorder=false;
_.each(visColIds,function(colId){var col=forID(cont,colId);
if(col.position<=prevPos){needsReorder=true;
_.breakLoop()
}prevPos=col.position
});
var vizCols=[];
_.each(visColIds,function(colId,i){var col=forID(cont,colId);
if(!$.isBlank(col)){col.show(null,null,true);
if(needsReorder){col.update({position:i+1})
}var cc=col.cleanCopy();
if(!$.isBlank(cc.childColumns)){cc.childColumns=_.reject(cc.childColumns,function(ccc){return _.include(ccc.flags||[],"hidden")
})
}vizCols.push(cc)
}});
_.each(realSet(cont),function(c){if($.isBlank(_.detect(vizCols,function(vc){return vc.id==c.id
}))){c.hide(null,null,true)
}});
update(cont,vizCols);
if((cont.view||cont).hasRight("update_view")&&!skipRequest){if(needsReorder){var item={};
item[colSet]=vizCols;
this._makeRequest({url:selfUrl,type:"PUT",data:JSON.stringify(item),batch:true})
}cont._sendBatch(function(){(cont.view||cont).reload();
if(_.isFunction(callback)){callback()
}})
}else{(cont.view||cont)._markTemporary()
}};
props.cleanCopy=function(){var item=this._super();
if(!_.isUndefined(item[colSet])){item[colSet]=_(item[colSet]).chain().reject(function(c){return c.id==-1
}).sortBy(function(c){return c.position
}).value()
}return item
};
props["update"+capSet]=function(newCols,forceFull,updateOrder){if($.isBlank(this[colSet])&&$.isBlank(newCols)){return
}var cont=this;
if(!$.isBlank(newCols)){if($.isBlank(cont[colSet])){cont[colSet]=newCols
}else{_.each(newCols,function(nc,i){var c=nc.dataTypeName!="meta_data"?forID(cont,nc.id):_.detect(cont[colSet],function(mc){return mc.dataTypeName=="meta_data"&&mc.name==nc.name
});
var ci=_.indexOf(cont[colSet],c);
if($.isBlank(c)){if(updateOrder){cont[colSet].splice(i,0,nc)
}else{cont[colSet].push(nc)
}}else{if(updateOrder&&ci!=i){cont[colSet].splice(ci,1);
cont[colSet].splice(i,0,c)
}c.update(nc,forceFull,updateOrder)
}})
}}_columnIDLookup={};
_columnTCIDLookup={};
this[colSet]=_.map(this[colSet],function(c,i){if(!(c instanceof Column)){c=new Column(c,cont)
}_columnIDLookup[c.id]=c;
if(c.lookup!=c.id){_columnIDLookup[c.lookup]=c
}_columnTCIDLookup[c.tableColumnId]=c;
return c
});
this["real"+capSet]=_.reject(this[colSet],function(c){return c.isMeta
});
this["visible"+capSet]=_(realSet(this)).chain().reject(function(c){return c.hidden
}).sortBy(function(c){return c.position
}).value();
_.defer(function(){(cont.view||cont).trigger("columns_changed")
})
};
return props
}
})();
(function(){this.Column=Model.extend({_init:function(c,parent){this._super();
$.extend(this,c);
if(parent instanceof Column){this.parentColumn=parent;
this.view=parent.view
}else{if(parent instanceof Dataset){this.view=parent
}}if(this.dataTypeName=="nested_table"){var selfUrl="/views/"+this.view.id+"/columns/"+this.id;
Column.addProperties(this,ColumnContainer("childColumn",selfUrl+".json",selfUrl+"/sub_columns"),Column.prototype)
}this._setUpColumn();
this.aggregates={};
this.updateChildColumns()
},baseUrl:function(){return"/views/"+this.view.id+"/"+(this.renderTypeName.endsWith("_obsolete")?"obsolete_":"")+"files/"
},getSummary:function(successCallback){var col=this;
var colSumLoaded=function(resp){col._summary={};
_(resp.columnSummaries||[]).chain().select(function(s){return s.columnId==col.id
}).each(function(s){if((s.topFrequencies||[]).length>0){col._summary[s.subColumnType]=s
}});
if(_.isFunction(successCallback)){successCallback(col._summary)
}};
if($.isBlank(col._summary)){col.view._makeRequest({inline:true,params:{method:"getSummary",columnId:col.id},success:colSumLoaded})
}else{if(_.isFunction(successCallback)){successCallback(col._summary)
}}},invalidateData:function(){delete this._summary
},save:function(successCallback,errorCallback){var col=this;
var colSaved=function(newCol){col.update(newCol,true);
if(!$.isBlank(col.parentColumn)){col.parentColumn.updateChildColumns()
}else{col.view.updateColumns()
}if(_.isFunction(successCallback)){successCallback(col)
}};
if(col.view.hasRight("update_view")){this._makeRequest({url:"/views/"+this.view.id+"/columns/"+this.id+".json",type:"PUT",data:JSON.stringify(this.cleanCopy()),success:colSaved,error:errorCallback});
return true
}else{if(!$.isBlank(col.parentColumn)){col.parentColumn.updateChildColumns()
}else{col.view.updateColumns()
}col.view._markTemporary();
return false
}},show:function(successCallback,errorCallback,isBatch){return this.setVisible(true,successCallback,errorCallback,isBatch)
},hide:function(successCallback,errorCallback,isBatch){return this.setVisible(false,successCallback,errorCallback,isBatch)
},setVisible:function(isVisible,successCallback,errorCallback,isBatch){var col=this;
if(col.hidden!==isVisible){return false
}col.hidden=!isVisible;
if(isVisible){col.flags=_.without(col.flags||[],"hidden")
}else{col.flags=col.flags||[];
col.flags.push("hidden")
}if(!isBatch){if(!$.isBlank(col.parentColumn)){col.parentColumn.updateChildColumns()
}else{col.view.updateColumns()
}}if(col.view.hasRight("update_view")){this._makeRequest({url:"/views/"+this.view.id+"/columns/"+this.id+".json",type:"PUT",data:JSON.stringify({hidden:!isVisible}),batch:isBatch,success:successCallback,error:errorCallback})
}else{col.view._markTemporary()
}return true
},update:function(newCol,forceFull,updateColOrder){var col=this;
newCol.id=col.id;
var oldWidth=col.width;
var oldAgg=col.format.aggregate;
if(forceFull){_.each(col._validKeys,function(v,k){if(k!="childColumns"){delete col[k]
}})
}_.each(newCol,function(v,k){if(k!="childColumns"&&col._validKeys[k]){col[k]=v
}});
if(!$.isBlank(newCol.renderTypeName)){col.renderTypeName=newCol.renderTypeName
}if(!$.isBlank(newCol.subColumnTypes)){col.subColumnTypes=newCol.subColumnTypes
}this.updateChildColumns(newCol.childColumns,forceFull,updateColOrder);
if(!$.isBlank(newCol.dropDown)){col.dropDown=newCol.dropDown
}this._setUpColumn();
if(oldWidth!==col.width){col.view.trigger("column_resized",[col])
}if(oldAgg!==col.format.aggregate){col.view.aggregatesChanged()
}},filter:function(value,subColumnType){var col=this;
var query=$.extend(true,{},col.view.query);
col._clearFilterData(query);
var filterItem={type:"operator",value:"EQUALS",children:[{type:"column",columnId:col.id,value:subColumnType.toUpperCase()},{type:"literal",value:value}]};
if($.isBlank(query.filterCondition)){query.filterCondition={type:"operator",value:"AND",children:[filterItem]}
}else{if(query.filterCondition.type=="operator"&&query.filterCondition.value=="AND"){if(!query.filterCondition.children){query.filterCondition.children=[]
}query.filterCondition.children.push(filterItem)
}else{var topF={type:"operator",value:"AND",children:[col.view.query.filterCondition,filterItem]};
query.filterCondition=topF
}}col.currentFilter={value:value,viewFilter:filterItem};
col.view.update({query:query})
},clearFilter:function(){var col=this;
var query=$.extend(true,{},col.view.query);
col._clearFilterData(query);
col.view.update({query:query})
},remove:function(successCallback,errorCallback,isBatch){var col=this;
var colRemoved=function(){col.view.clearColumn(col);
if(!isBatch){if(!$.isBlank(col.parentColumn)){col.parentColumn.updateChildColumns()
}else{col.view.updateColumns()
}}if(_.isFunction(successCallback)){successCallback(col)
}};
col._makeRequest({url:"/views/"+col.view.id+"/columns/"+col.id+".json",type:"DELETE",batch:isBatch,success:colRemoved,error:errorCallback})
},convert:function(newType,successCallback,errorCallback){var col=this;
var columnConverted=function(newCol){col.id=newCol.id;
col.tableColumnId=newCol.tableColumnId;
col.update(newCol,true);
col.invalidateData();
if(!$.isBlank(col.parentColumn)){col.parentColumn.updateChildColumns()
}else{col.view.updateColumns()
}col.view.reload();
if(_.isFunction(successCallback)){successCallback(col)
}};
this._makeRequest({url:"/views/"+this.view.id+"/columns/"+this.id+".json",params:{method:"convert",type:newType},type:"POST",success:columnConverted,error:errorCallback})
},cleanCopy:function(){var col=this._super();
if(_.include(["dataset_link","picklist"],col.dataTypeName)){delete col.dropDownList
}return col
},_setUpColumn:function(){var col=this;
this.format=this.format||{};
if(!$.isBlank(this.dropDown)){this.dropDownList=this.dropDown
}delete this.dropDown;
this.hidden=_.include(this.flags||[],"hidden");
this.dataType=blist.data.types[this.dataTypeName]||{};
this.renderType=blist.data.types[this.renderTypeName]||{};
this.isMeta=this.dataTypeName=="meta_data";
this.lookup=this.isMeta?this.name:this.id;
if(this.dataTypeName=="tag"){this.lookup="tags"
}else{if(this.isMeta&&this.name=="sid"){this.lookup="id"
}else{if(this.isMeta&&this.name=="id"){this.lookup="uuid"
}}}this.dataLookupExpr=_.isString(this.lookup)?("."+this.lookup):("["+this.lookup+"]");
if(!$.isBlank(this.parentColumn)){this.directLookupExpr=this.dataLookupExpr;
this.dataLookupExpr=this.parentColumn.dataLookupExpr+this.dataLookupExpr
}this.minWidth=50;
this.width=Math.max(this.minWidth,this.width||100);
if(!$.isBlank(this.format.grouping_aggregate)&&!$.isBlank(this.format.drill_down)){delete this.format.drill_down;
this.width-=30
}if(!$.isBlank(this.currentFilter)&&!_.any(((this.view.query||{}).filterCondition||{}).children||[],function(fc){return _.isEqual(fc,col.currentFilter.viewFilter)
})){delete this.currentFilter
}},updateChildColumns:function(){},_clearFilterData:function(query){var col=this;
if($.isBlank(col.currentFilter)){return
}if(query.filterCondition==col.currentFilter.viewFilter){query.filterCondition=null
}else{query.filterCondition.children=_.reject(query.filterCondition.children,function(fc){return _.isEqual(fc,col.currentFilter.viewFilter)
});
if(query.filterCondition.children.length<1){delete query.filterCondition
}}delete col.currentFilter
},_validKeys:{childColumns:true,dataTypeName:true,defaultValues:true,description:true,dropDownList:true,flags:true,format:true,id:true,name:true,position:true,width:true}})
})();
(function(){this.Dataset=Model.extend({_init:function(v){this._super();
this.registerEvent(["columns_changed","valid","query_change","set_temporary","clear_temporary","row_change","row_count_change","column_resized","displayformat_change","column_totals_changed"]);
$.extend(this,v);
var selfUrl="/views/"+this.id;
Dataset.addProperties(this,ColumnContainer("column",selfUrl+".json",selfUrl+"/columns"),Dataset.prototype);
this.type=getType(this);
this.styleClass=this.type.capitalize();
this.displayName=getDisplayName(this);
this.displayFormat=this.displayFormat||{};
this.originalViewId=this.id;
Dataset.addProperties(this,Dataset.modules[this.type]||{},Dataset.prototype);
this.updateColumns();
if(_.isFunction(this._convertLegacy)){this._convertLegacy()
}this.temporary=false;
this.valid=this._checkValidity();
this.url=this._generateUrl();
this.apiUrl=this._generateApiUrl();
this._pendingRowEdits={};
this._pendingRowDeletes={};
this._rows={};
this._rowIDLookup={};
this._rowsLoading={};
this._pendingRowReqs=[];
this._aggregatesStale=true;
this._origQuery=$.extend(true,{},this.query);
this._origSearchString=this.searchString
},rowForID:function(id){return this._rowIDLookup[parseInt(id)||id]
},rowForIndex:function(index){return this._rows[index]
},_childRowForID:function(id,parRow,parCol){var cell=parRow[parCol.lookup];
return _.detect(cell||{},function(sr){return sr.id==id
})
},isPublic:function(){var ds=this;
return _.any(this.grants||[],function(grant){return _.include(grant.flags||[],"public")&&grant.type==(ds.type=="form"?"contributor":"viewer")
})
},hasRight:function(right){return _.include(this.rights,right)
},isGrid:function(){return _.include(["blist","filter","grouped"],this.type)
},isGrouped:function(){return((this.query||{}).groupBys||[]).length>0
},save:function(successCallback,errorCallback){var ds=this;
if(!ds.hasRight("update_view")){return false
}var dsSaved=function(newDS){ds._update(newDS,true,false,true);
ds._clearTemporary();
if(_.isFunction(successCallback)){successCallback(ds)
}};
this._makeRequest({url:"/views/"+this.id+".json",type:"PUT",data:JSON.stringify(cleanViewForSave(this)),error:errorCallback,success:dsSaved});
return true
},saveNew:function(successCallback,errorCallback){var dsCreated=function(newDS){newDS=new Dataset(newDS);
if(_.isFunction(successCallback)){successCallback(newDS)
}};
var ds=cleanViewForSave(this);
if(!$.isBlank(ds.columns)){ds.columns=_.reject(ds.columns,function(c){return c.dataTypeName=="tag"
})
}this._makeRequest({url:"/views.json",type:"POST",data:JSON.stringify(ds),error:errorCallback,success:dsCreated})
},update:function(newDS,fullUpdate){this._update(newDS,fullUpdate,fullUpdate);
this._markTemporary()
},reload:function(){var ds=this;
ds._aggregatesStale=true;
ds._loadRows(0,1,function(){ds._invalidateRows()
},true,true)
},userGrants:function(){return _.reject(this.grants||[],function(g){return _.include(g.flags||[],"public")
})
},removeGrant:function(grant,successCallback,errorCallback){var ds=this;
var grantDeleted=function(){ds.grants=_.reject(ds.grants||[],function(g){return(!$.isBlank(grant.userId)&&grant.userId==g.userId)||(!$.isBlank(grant.userEmail)&&grant.userEmail==g.userEmail)
});
if(_.isFunction(successCallback)){successCallback()
}};
ds._makeRequest({url:"/api/views/"+ds.id+"/grants/i",params:{method:"delete"},type:"PUT",data:JSON.stringify(grant),success:grantDeleted,error:errorCallback})
},createGrant:function(grant,successCallback,errorCallback,isBatch){var ds=this;
var grantCreated=function(){ds.grants=ds.grants||[];
ds.grants.push(grant);
if(_.isFunction(successCallback)){successCallback()
}};
ds._makeRequest({url:"/api/views/"+ds.id+"/grants/",type:"POST",data:JSON.stringify(grant),batch:isBatch,success:grantCreated,error:errorCallback})
},replaceGrant:function(oldGrant,newGrant,successCallback,errorCallback){var ds=this;
var grantDeleted=function(){ds.createGrant(newGrant,successCallback,errorCallback)
};
ds.removeGrant(oldGrant,grantDeleted,errorCallback)
},makePublic:function(successCallback,errorCallback){var ds=this;
if(!ds.isPublic()){ds.grants=ds.grants||[];
ds.grants.push({type:(ds.type=="form"?"contributor":"viewer"),flags:["public"]});
ds._makeRequest({url:"/views/"+ds.id+".json",type:"GET",data:{method:"setPermission",value:ds.type=="form"?"public.add":"public.read"},success:successCallback,error:errorCallback})
}else{if(_.isFunction(successCallback)){successCallback()
}}},makePrivate:function(successCallback,errorCallback){var ds=this;
if(ds.isPublic()){ds.grants=_.reject(ds.grants,function(g){return _.include(g.flags||[],"public")&&g.inherited===false
});
ds._makeRequest({url:"/views/"+ds.id+".json",type:"GET",data:{method:"setPermission",value:"private"},success:successCallback,error:errorCallback})
}else{if(_.isFunction(successCallback)){successCallback()
}}},notifyUsers:function(successCallback,errorCallback){this._makeRequest({url:"/api/views/"+this.id+".json",params:{method:"notifyUsers"},type:"POST",success:successCallback,error:errorCallback})
},addColumn:function(column,successCallback,errorCallback,customParams){if(!$.isBlank((column||{}).parentId)){var par=this.columnForID(column.parentId);
if($.isBlank(par)){throw"Column "+column.parentId+" not found"
}par.addChildColumn(column,successCallback,errorCallback);
return true
}},clearColumn:function(col){var ds=this;
var colLookup=col.lookup;
var childLookup;
if(!$.isBlank(col.parentColumn)){childLookup=colLookup;
colLookup=col.parentColumn.lookup;
col.parentColumn.clearChildColumn(col)
}_.each(ds._rows,function(r){if($.isBlank(childLookup)){delete r[colLookup]
}else{_.each(r[colLookup]||[],function(cr){delete cr[childLookup]
})
}})
},getRows:function(start,len,callback){var ds=this;
var pageSize=100;
var reqs=[];
var curReq;
var pendReq;
var finish=start+len-1;
var loaded=[];
var doLoaded=function(){if(loaded.length>0){callback(loaded);
loaded=[]
}};
while(start<=finish&&($.isBlank(ds.totalRows)||start<ds.totalRows)){var r=ds._rows[start];
if($.isBlank(r)){doLoaded();
if(ds._rowsLoading[start]){if(!$.isBlank(curReq)){reqs.push(curReq);
curReq=null
}if($.isBlank(pendReq)){pendReq={start:start,length:1,callback:callback}
}else{pendReq.length++
}}else{if(!$.isBlank(pendReq)){ds._pendingRowReqs.push(pendReq);
pendReq=null
}if($.isBlank(curReq)){curReq={start:start,finish:start}
}else{if(start-curReq.start+1>pageSize){reqs.push(curReq);
curReq={start:start}
}else{curReq.finish=start
}}}}else{if(!$.isBlank(curReq)){reqs.push(curReq);
curReq=null
}if(!$.isBlank(pendReq)){ds._pendingRowReqs.push(pendReq);
pendReq=null
}loaded.push(r)
}start++
}doLoaded();
if(!$.isBlank(curReq)){reqs.push(curReq);
curReq=null
}if(!$.isBlank(pendReq)){ds._pendingRowReqs.push(pendReq);
pendReq=null
}if(reqs.length>0){var loadAllRows=function(){_.each(reqs,function(req){if(req.start>=ds.totalRows){return false
}if(req.finish>=ds.totalRows){req.finish=ds.totalRows-1
}ds._loadRows(req.start,req.finish-req.start+1,callback)
})
};
if($.isBlank(ds.totalRows)){var initReq=reqs.shift();
ds._loadRows(initReq.start,initReq.finish-initReq.start+1,function(rows){if(_.isFunction(callback)){callback(rows)
}loadAllRows()
},true)
}else{loadAllRows()
}}},createRow:function(data,parRowId,parColId,successCallback,errorCallback){var ds=this;
var parCol;
if(!$.isBlank(parColId)){parCol=this.columnForID(parColId)
}var parRow;
if(!$.isBlank(parRowId)){parRow=this.rowForID(parRowId)
}data=data||{};
var newRow={invalid:{},error:{},changed:{}};
_.each(!$.isBlank(parCol)?parCol.childColumns:ds.columns,function(c){if(!$.isBlank(data[c.lookup])){newRow[c.lookup]=data[c.lookup]
}});
newRow.id="saving"+_.uniqueId();
delete newRow.uuid;
if($.isBlank(parRow)){newRow.index=data.index||ds.totalRows;
$.addItemsToObject(ds._rows,newRow,newRow.index);
ds._rowIDLookup[newRow.id]=newRow;
ds.totalRows++;
ds.trigger("row_count_change")
}else{parRow[parCol.lookup]=parRow[parCol.lookup]||[];
if(!$.isBlank(data.index)){parRow[parCol.lookup].splice(data.index,0,newRow)
}else{parRow[parCol.lookup].push(newRow)
}ds.trigger("row_change",[[parRow],true])
}_.each(!$.isBlank(parCol)?parCol.realChildColumns:ds.realColumns,function(c){newRow.changed[c.lookup]=true
});
var key=newRow.id;
if(!$.isBlank(parRow)){key+=":"+parRow.id+":"+parCol.id
}ds._pendingRowEdits[key]=[];
var reqObj={row:newRow,rowData:ds._rowData(newRow,_.pluck(_.reject(!$.isBlank(parCol)?parCol.realChildColumns:ds.realColumns,function(c){return c.dataTypeName=="nested_table"
}),"id"),parCol),parentRow:parRow,parentColumn:parCol,success:successCallback,error:errorCallback};
if($.isBlank(ds._pendingRowCreates)){ds._serverCreateRow(reqObj);
ds._pendingRowCreates=[]
}else{ds._pendingRowCreates.push(reqObj)
}return newRow.id
},setRowValue:function(value,rowId,columnId,isInvalid,parRowId,parColId){var parCol;
var col;
if(!$.isBlank(parColId)){parCol=this.columnForID(parColId);
col=parCol.childColumnForID(columnId)
}else{col=this.columnForID(columnId)
}if($.isBlank(col)){throw"Column "+columnId+" not found"
}if(col.isMeta){throw"Cannot modify metadata on rows: "+columnId
}var row;
if(!$.isBlank(parRowId)){var parRow=this.rowForID(parRowId);
row=this._childRowForID(rowId,parRow,parCol)
}else{row=this.rowForID(rowId)
}if($.isBlank(row)){throw"Row "+rowId+" not found while setting value"
}row[col.lookup]=value;
delete row.error[col.lookup];
row.changed[col.lookup]=true;
row.invalid[col.lookup]=isInvalid||false;
this.trigger("row_change",[parRow||row])
},saveRow:function(rowId,parRowId,parColId,successCallback,errorCallback){var ds=this;
var parCol;
if(!$.isBlank(parColId)){parCol=this.columnForID(parColId)
}var parRow;
var row;
if(!$.isBlank(parRowId)){parRow=this.rowForID(parRowId);
row=this._childRowForID(rowId,parRow,parCol)
}else{row=this.rowForID(rowId)
}if($.isBlank(row)){throw"Row "+rowId+" not found while saving"
}var saving=_.keys(row.changed);
var sendRow=ds._rowData(row,saving,parCol);
var reqObj={row:row,rowData:sendRow,columnsSaving:saving,parentRow:parRow,parentColumn:parCol,success:successCallback,error:errorCallback};
var key=row.id;
if(!$.isBlank(parRow)){key+=":"+parRow.id+":"+parCol.id
}if(!$.isBlank(ds._pendingRowEdits[key])){ds._pendingRowEdits[key].push(reqObj);
return
}ds._pendingRowEdits[key]=[];
ds._serverSaveRow(reqObj)
},removeRows:function(rowIds,parRowId,parColId,successCallback,errorCallback){var ds=this;
rowIds=$.makeArray(rowIds);
var parCol;
if(!$.isBlank(parColId)){parCol=this.columnForID(parColId)
}var parRow;
if(!$.isBlank(parRowId)){parRow=this.rowForID(parRowId)
}_.each(rowIds,function(rId){var uuid;
if($.isBlank(parRow)){var r=ds.rowForID(rId);
if($.isBlank(r)){return
}uuid=r.uuid;
$.removeItemsFromObject(ds._rows,r.index,1);
delete ds._rowIDLookup[rId];
ds.totalRows--
}else{parRow[parCol.lookup]=_.reject(parRow[parCol.lookup],function(cr){if(cr.id==rId){uuid=cr.uuid;
return true
}return false
})
}var key=rId;
if(!$.isBlank(parRow)){key+=":"+parRow.id+":"+parCol.id
}if(!$.isBlank(ds._pendingRowEdits[key])){ds._pendingRowDeletes[key]={rowId:uuid,parRowId:parRowId,parColId:parColId};
return
}ds._serverRemoveRow(uuid,parRowId,parColId,true)
});
if(!$.isBlank(parRow)){ds.trigger("row_change",[[parRow],true])
}else{ds.trigger("row_count_change")
}ds._aggregatesStale=true;
_.each(!$.isBlank(parCol)?parCol.realChildColumns:ds.realColumns,function(c){c.invalidateData()
});
ds._sendBatch({success:successCallback,error:errorCallback})
},getAggregates:function(callback,customAggs){var ds=this;
var aggResult=function(aggs){_.each(aggs,function(a){var c=ds.columnForID(a.columnId);
if($.isBlank(c)){_.each(ds.columnsForType("nested_table",true),function(pc){c=pc.childColumnForID(a.columnId);
if(!$.isBlank(c)){_.breakLoop()
}})
}if(!$.isBlank(c)){c.aggregates[a.name]=parseFloat(a.value)
}});
if($.isBlank(customAggs)){ds._aggregatesStale=false;
if(_.isFunction(callback)){callback()
}}};
var isStale=ds._aggregatesStale||_.any(customAggs||{},function(aList,cId){var col=ds.columnForID(cId);
if($.isBlank(col)){return true
}return _.any($.makeArray(aList),function(a){return $.isBlank(col.aggregates[a])
})
});
if(isStale){var args={success:aggResult,params:{method:"getAggregates"},inline:true};
if(!$.isBlank(customAggs)){var ilViews=[];
_.each(customAggs,function(aggList,cId){_.each(aggList,function(a,i){if($.isBlank(ilViews[i])){ilViews[i]=ds.cleanCopy()
}var col=_.detect(ilViews[i].columns,function(c){return c.id==parseInt(cId)
});
col.format.aggregate=a
})
});
_.each(ilViews,function(v){args=$.extend({},args,{data:JSON.stringify(v),batch:true});
ds._makeRequest(args)
});
ds._sendBatch(callback)
}else{ds._makeRequest(args)
}}else{callback()
}},aggregatesChanged:function(){this._aggregatesStale=true;
this.trigger("column_totals_changed")
},updateRating:function(rating,successCallback,errorCallback){this._makeRequest({url:"/views/"+this.id+"/ratings.json",type:"POST",data:JSON.stringify(rating),success:successCallback,error:errorCallback})
},remove:function(successCallback,errorCallback){this._makeRequest({url:"/datasets/"+this.id+".json",type:"DELETE",success:successCallback,error:errorCallback})
},registerOpening:function(accessType,referrer){var params={method:"opening"};
if(!$.isBlank(accessType)){params.accessType=accessType
}if(!$.isBlank(referrer)){params.referrer=referrer
}this._makeRequest({url:"/views/"+this.id+".json",params:params})
},getComments:function(callback){var ds=this;
if($.isBlank(ds._comments)){ds._makeRequest({url:"/views/"+ds.id+"/comments.json",type:"GET",pageCache:true,success:function(comms){ds._comments=comms;
callback(ds._comments)
}})
}else{callback(ds._comments)
}},addComment:function(comment,successCallback,errorCallback){var ds=this;
var addedComment=function(newCom){if(!$.isBlank(ds._comments)){ds._comments.unshift(newCom)
}if(_.isFunction(successCallback)){successCallback(newCom)
}};
ds._makeRequest({url:"/views/"+ds.id+"/comments.json",type:"POST",data:JSON.stringify(comment),success:addedComment,error:errorCallback})
},flagComment:function(commentId,successCallback,errorCallback){var ds=this;
var com=_.detect(ds._comments||[],function(c){return c.id==parseInt(commentId)
});
if(!$.isBlank(com)){com.flags=com.flags||[];
if(!_.include(com.flags,"flag")){com.flags.push("flag")
}}ds._makeRequest({url:"/views/"+this.id+"/comments/"+commentId+".json",type:"PUT",data:JSON.stringify({flags:["flag"]}),success:successCallback,error:errorCallback})
},rateComment:function(commentId,thumbsUp,successCallback,errorCallback){var ds=this;
var com=_.detect(ds._comments||[],function(c){return c.id==parseInt(commentId)
});
if(!$.isBlank(com)){if((com.currentUserRating||{}).thumbUp!==thumbsUp){var dir=thumbsUp?"up":"down";
com[dir+"Ratings"]++;
if(!$.isBlank(com.currentUserRating)){com[(thumbsUp?"down":"up")+"Ratings"]--
}com.currentUserRating=com.currentUserRating||{};
com.currentUserRating.thumbUp=thumbsUp
}}ds._makeRequest({url:"/views/"+ds.id+"/comments/"+commentId+"/ratings.json",params:{thumbsUp:thumbsUp},type:"POST",success:successCallback,error:errorCallback})
},getParentDataset:function(callback){var ds=this;
if($.isBlank(ds._relatedViews)){ds._loadRelatedViews(function(){callback(ds._parent)
})
}else{callback(ds._parent)
}},getRelatedViews:function(callback){var ds=this;
if($.isBlank(ds._relatedViews)){ds._loadRelatedViews(function(){callback(ds._relatedViews)
})
}else{callback(ds._relatedViews)
}},redirectTo:function(){window.location=this.url
},getSignature:function(successCallback,errorCallback){this._makeRequest({url:"/views/"+this.id+"/signatures.json",type:(this.signed===true)?"GET":"POST",success:successCallback,error:errorCallback})
},_checkValidity:function(){return $.isBlank(this.message)
},_markTemporary:function(){if(!this.temporary){this.temporary=true;
this.trigger("set_temporary")
}},_clearTemporary:function(){if(this.temporary){this.temporary=false;
this.trigger("clear_temporary")
}},_update:function(newDS,forceFull,updateColOrder,masterUpdate){var ds=this;
newDS.id=ds.id;
newDS.flags=_.without(newDS.flags||[],"unsaved");
if(_.include(ds.flags||[],"default")&&!_.include(newDS.flags||[],"default")){newDS.flags=newDS.flags||[];
newDS.flags.push("default")
}var oldGroupings=(ds.query||{}).groupBys;
var oldGroupAggs={};
if((oldGroupings||[]).length>0){_.each(ds.realColumns,function(c){if(!$.isBlank(c.format.grouping_aggregate)){oldGroupAggs[c.id]=c.format.grouping_aggregate
}})
}var oldQuery=ds.query||{};
var oldSearch=ds.searchString;
var oldDispFmt=ds.displayFormat;
if(forceFull){_.each(ds._validKeys,function(v,k){if(k!="columns"){delete ds[k]
}})
}_.each(newDS,function(v,k){if(k!="columns"&&ds._validKeys[k]){ds[k]=v
}});
ds.originalViewId=ds.id;
ds.type=getType(ds);
ds.styleClass=ds.type.capitalize();
ds.displayName=getDisplayName(ds);
ds.displayFormat=ds.displayFormat||{};
if(_.isFunction(ds._convertLegacy)){ds._convertLegacy()
}ds.url=ds._generateUrl();
ds.apiUrl=ds._generateApiUrl();
var oldValid=ds.valid;
ds.valid=ds._checkValidity();
if(!oldValid&&ds.valid){ds.trigger("valid")
}if(!$.isBlank(newDS.columns)){ds.updateColumns(newDS.columns,forceFull,updateColOrder)
}_.each(ds.realColumns||[],function(c){delete c.sortAscending
});
_.each((ds.query||{}).orderBys||[],function(ob){var c=ds.columnForID(ob.expression.columnId);
if(!$.isBlank(c)){c.sortAscending=ob.ascending
}});
ds.query=ds.query||{};
ds._updateGroupings(oldGroupings,oldGroupAggs);
if(!_.isEqual(oldQuery,ds.query)||(oldSearch!==ds.searchString)){if(oldSearch!==ds.searchString||!_.isEqual(oldQuery.filterCondition,ds.query.filterCondition)||!_.isEqual(oldQuery.groupBys,ds.query.groupBys)){ds._rowCountInvalid=true
}ds.trigger("query_change");
ds._invalidateRows()
}if(!_.isEqual(oldDispFmt,ds.displayFormat)){ds.trigger("displayformat_change")
}if(masterUpdate){ds._origQuery=$.extend(true,{},ds.query);
ds._origSearchString=ds.searchString
}else{if(ds._origSearchString==ds.searchString&&_.isEqual(ds._origQuery,ds.query)){ds._clearTemporary()
}}},_updateGroupings:function(oldGroupings,oldGroupAggs){var ds=this;
if($.isBlank((ds.query||{}).groupBys)&&$.isBlank(oldGroupings)){return
}if($.isBlank(oldGroupings)){ds._origColOrder=_.pluck(ds.visibleColumns,"id")
}var curGrouped={};
_.each(ds.realColumns,function(c){if(c.format.drill_down){curGrouped[c.id]=true
}delete c.format.drill_down
});
var newColOrder=[];
_.each(ds.query.groupBys||[],function(g){var col=ds.columnForID(g.columnId);
if($.isBlank(col.format.grouping_aggregate)){if(!curGrouped[col.id]){col.width+=30
}col.format.drill_down=true
}if(col.hidden&&!_.any(oldGroupings,function(og){return og.columnId==col.id
})){col.update({flags:_.without(col.flags,"hidden")})
}newColOrder.push(col.id)
});
var newGroupAggs={};
_(ds.realColumns).chain().select(function(c){return !$.isBlank(c.format.grouping_aggregate)
}).each(function(c){if(c.hidden&&!oldGroupAggs[c.id]){c.update({flags:_.without(c.flags,"hidden")})
}newGroupAggs[c.id]=c.format.grouping_aggregate;
newColOrder.push(c.id)
});
if($.isBlank(ds.query.groupBys)){if(!$.isBlank(ds._origColOrder)){ds.setVisibleColumns(ds._origColOrder,null,true)
}}else{_.each(ds.realColumns,function(c){var i=_.indexOf(newColOrder,c.id);
if(i<0&&!c.hidden){var f=c.flags||[];
f.push("hidden");
c.update({flags:f})
}if(i<0){i=c.position+newColOrder.length
}c.position=i+1
});
ds.updateColumns()
}if(!_.isEqual(oldGroupAggs,newGroupAggs)){ds._columnsInvalid=true;
ds._invalidateRows()
}},_makeRequest:function(req){if(req.inline){req.url="/views/INLINE/rows.json";
req.type="POST";
req.data=req.data||JSON.stringify(this.cleanCopy())
}delete req.inline;
this._super(req)
},_invalidateRows:function(){var invRows=_.values(this._rows);
this._rows={};
this._rowsLoading={};
this._pendingRowReqs=[];
this._rowIDLookup={};
_.each(this.columns||[],function(c){c.invalidateData()
});
this.trigger("row_change",[invRows])
},_loadRows:function(start,len,callback,includeMeta,fullLoad){var ds=this;
var params={method:"getByIds",start:start,length:len};
var cols;
if(includeMeta||ds._rowCountInvalid||ds._columnsInvalid){params.meta=true
}else{cols=ds.columns.slice()
}var rowsLoaded=function(result){var oldCount=ds.totalRows;
if(!$.isBlank(result.meta)){ds.totalRows=result.meta.totalRows;
delete ds._rowCountInvalid;
delete ds._columnsInvalid;
ds._update(result.meta.view,true,true,fullLoad)
}if(fullLoad){ds._clearTemporary()
}var rows=ds._addRows(result.data.data||result.data,start,cols);
for(var i=0;
i<len;
i++){delete ds._rowsLoading[i+start]
}if(oldCount!==ds.totalRows){ds.trigger("row_count_change")
}if(_.isFunction(callback)){callback(rows)
}var pending=ds._pendingRowReqs;
ds._pendingRowReqs=[];
_.each(pending,function(p){ds.getRows(p.start,p.length,p.callback)
})
};
for(var i=0;
i<len;
i++){ds._rowsLoading[i+start]=true
}var req={success:rowsLoaded,params:params,inline:!fullLoad};
if(fullLoad){req.url="/views/"+ds.id+"/rows.json";
req.type="GET"
}ds._makeRequest(req)
},_addRows:function(newRows,start,columns){var ds=this;
var translateRow=function(r,cols,parCol){var tr={invalid:{},changed:{},error:{}};
_.each(cols,function(c,i){var val=r[i];
if(c.isMeta&&c.name=="meta"){val=JSON.parse(val||"null")
}if(c.renderType.isObject&&_.isArray(val)){if(_.all(val,function(v){return $.isBlank(v)||_.isBoolean(v)
})){val=null
}else{var o={};
_.each(val,function(v,k){o[c.subColumnTypes[k]]=v===""?null:v
});
val=o
}}if(c.renderTypeName=="checkbox"&&val===false||c.renderTypeName=="stars"&&val===0){val=null
}if(c.dataTypeName=="nested_table"&&_.isArray(val)){val=_.map(val,function(cr){return translateRow(cr,c.childColumns,c)
})
}tr[c.lookup]=val
});
_.each((tr.meta||{}).invalidCells||{},function(v,tcId){if(!$.isBlank(v)){var c=!$.isBlank(parCol)?parCol.childColumnForTCID(tcId):ds.columnForTCID(tcId);
if(!$.isBlank(c)){tr.invalid[c.id]=true;
tr[c.lookup]=v
}}});
delete (tr.meta||{}).invalidCells;
return tr
};
var adjRows=[];
_.each(newRows,function(nr,i){var r=translateRow(nr,columns||ds.columns);
r.index=start+i;
ds._rows[r.index]=r;
ds._rowIDLookup[r.id]=r;
adjRows.push(r)
});
return adjRows
},_rowData:function(row,savingIds,parCol){var ds=this;
var data={};
_.each(savingIds,function(cId){var c=!$.isBlank(parCol)?parCol.childColumnForID(cId):ds.columnForID(cId);
data[c.lookup]=row[c.lookup]
});
if(!$.isBlank(data.tags)){data._tags=data.tags;
delete data.tags
}data.position=row.position;
data.meta=row.meta;
_.each(row.invalid,function(isI,cId){if(isI){var c=!$.isBlank(parCol)?parCol.childColumnForID(cId):ds.columnForID(cId);
data.meta=data.meta||{};
data.meta.invalidCells=data.meta.invalidCells||{};
data.meta.invalidCells[c.tableColumnId]=data[cId];
data[cId]=null
}});
if(!$.isBlank(data.meta)){data.meta=JSON.stringify(data.meta)
}return data
},_serverCreateRow:function(req,isBatch){var ds=this;
var rowCreated=function(rr){var oldID=req.row.id;
_.each(rr,function(v,k){if(k.startsWith("_")){var adjName=k.slice(1);
var c=!$.isBlank(req.parentColumn)?req.parentColumn.childColumnForID(adjName):ds.columnForID(adjName);
if(!$.isBlank(c)){req.row[c.lookup]=v
}else{req.row[adjName]=v
}}});
if($.isBlank(req.parentRow)){ds._rowIDLookup[req.row.id]=req.row;
delete ds._rowIDLookup[oldID]
}var oldKey=oldID;
var newKey=req.row.id;
if(!$.isBlank(req.parentRow)){oldKey+=":"+req.parentRow.id+":"+req.parentColumn.id;
newKey+=":"+req.parentRow.id+":"+req.parentColumn.id
}ds._pendingRowEdits[newKey]=ds._pendingRowEdits[oldKey];
delete ds._pendingRowEdits[oldKey];
ds._pendingRowDeletes[newKey]=ds._pendingRowDeletes[oldKey];
delete ds._pendingRowDeletes[oldKey];
_.each(!$.isBlank(req.parentColumn)?req.parentColumn.realChildColumns:ds.realColumns,function(c){delete req.row.changed[c.lookup]
});
ds.trigger("row_change",[[{id:oldID},req.parentRow||req.row]]);
ds._processPending(req.row.id,(req.parentRow||{}).id,(req.parentColumn||{}).id);
if(_.isFunction(req.success)){req.success(req.row)
}};
var rowErrored=function(xhr){_.each(!$.isBlank(req.parentColumn)?req.parentColumn.realChildColumns:ds.realColumns,function(c){req.row.error[c.id]=true
});
ds.trigger("row_change",[req.parentRow||req.row]);
if(_.isFunction(req.error)){req.error(xhr)
}};
var rowCompleted=function(){if((ds._pendingRowCreates||[]).length>0){while(ds._pendingRowCreates.length>0){ds._serverCreateRow(ds._pendingRowCreates.shift(),true)
}ds._sendBatch()
}else{delete ds._pendingRowCreates
}};
var url="/views/"+ds.id+"/rows";
if(!$.isBlank(req.parentRow)){url+="/"+req.parentRow.id+"/columns/"+req.parentColumn.id+"/subrows"
}url+=".json";
ds._makeRequest({url:url,type:"POST",data:JSON.stringify(req.rowData),batch:isBatch,success:rowCreated,error:rowErrored,complete:rowCompleted})
},_serverSaveRow:function(r,isBatch){var ds=this;
var rowSaved=function(newRow){_.each(r.columnsSaving,function(cId){delete r.row.changed[cId]
});
ds.trigger("row_change",[r.parentRow||r.row]);
ds.aggregatesChanged();
if(_.isFunction(r.success)){r.success(r.row)
}};
var rowErrored=function(xhr){_.each(r.columnsSaving,function(cId){r.row.error[cId]=true
});
ds.trigger("row_change",[r.parentRow||r.row]);
if(_.isFunction(r.error)){r.error(xhr)
}};
var rowCompleted=function(){ds._processPending(r.row.id,(r.parentRow||{}).id,(r.parentColumn||{}).id)
};
var url="/views/"+ds.id+"/rows/";
if(!$.isBlank(r.parentRow)){url+=r.parentRow.id+"/columns/"+r.parentColumn.id+"/subrows/"
}url+=r.row.uuid+".json";
ds._makeRequest({url:url,type:"PUT",data:JSON.stringify(r.rowData),batch:isBatch,success:rowSaved,error:rowErrored,complete:rowCompleted});
ds._aggregatesStale=true;
_.each(r.columnsSaving,function(cId){(!$.isBlank(r.parentColumn)?r.parentColumn.childColumnForID(cId):ds.columnForID(cId)).invalidateData()
})
},_serverRemoveRow:function(rowId,parRowId,parColId,isBatch){var ds=this;
var rowRemoved=function(){ds.aggregatesChanged()
};
var url="/views/"+ds.id+"/rows/";
if(!$.isBlank(parRowId)){url+=parRowId+"/columns/"+parColId+"/subrows/"
}url+=rowId+".json";
ds._makeRequest({batch:isBatch,url:url,type:"DELETE",success:rowRemoved})
},_processPending:function(rowId,parRowId,parColId){var ds=this;
var key=rowId;
if(!$.isBlank(parRowId)){key+=":"+parRowId+":"+parColId
}if(ds._pendingRowEdits[key]&&ds._pendingRowEdits[key].length>0){while(ds._pendingRowEdits[key].length>0){ds._serverSaveRow(ds._pendingRowEdits[key].shift(),true)
}ds._sendBatch()
}else{delete ds._pendingRowEdits[key];
if(ds._pendingRowDeletes[key]){var pd=ds._pendingRowDeletes[key];
ds._serverRemoveRow(pd.rowId,pd.parRowId,pd.parColId);
delete ds._pendingRowDeletes[key]
}}},_generateUrl:function(){var ds=this;
var base="";
if(!$.isBlank(ds.domainCName)){base=ds._generateBaseUrl(ds.domainCName)
}return base+"/"+$.urlSafe(ds.category||"dataset")+"/"+$.urlSafe(ds.name)+"/"+ds.id
},_generateApiUrl:function(){return this._generateBaseUrl()+"/api/views/"+this.id
},_loadRelatedViews:function(callback){var ds=this;
var processDS=function(views){views=_.map(views,function(v){return new Dataset(v)
});
var parDS=_.detect(views,function(v){return v.type=="blist"
});
if(!$.isBlank(parDS)&&parDS.id!=ds.id){ds._parent=parDS;
views=_.without(views,parDS)
}ds._relatedViews=_.reject(views,function(v){return v.id==ds.id
});
if(_.isFunction(callback)){callback()
}};
this._makeRequest({url:"/views.json",pageCache:true,type:"GET",data:{method:"getByTableId",tableId:this.tableId},success:processDS})
},_validKeys:{attribution:true,attributionLink:true,category:true,columns:true,description:true,displayFormat:true,displayType:true,flags:true,iconUrl:true,id:true,licenseId:true,metadata:true,name:true,originalViewId:true,query:true,queryString:true,searchString:true,tags:true,termsAndConditions:true}});
Dataset.modules={};
var cachedLinkedDatasetOptions={};
Dataset.getLinkedDatasetOptions=function(linkedDatasetUid,col,$field,curVal,useRdfKeyAsDefault){var viewUid=linkedDatasetUid;
if($.isBlank(viewUid)||!viewUid.match(blist.util.patterns.UID)){return[]
}if(cachedLinkedDatasetOptions[viewUid]==null){$.Tache.Get({url:"/api/views/{0}.json".format(viewUid),error:function(req){alert("Fail to get columns from dataset {0}.".format(viewUid))
},success:function(linkedDataset){cachedLinkedDatasetOptions[viewUid]=[];
var cldo=cachedLinkedDatasetOptions[viewUid];
var opt;
var rdfSubject=linkedDataset&&linkedDataset.metadata&&linkedDataset.metadata.rdfSubject?linkedDataset.metadata.rdfSubject:undefined;
_.each(linkedDataset.columns||[],function(c){switch(c.dataTypeName){case"text":opt={value:String(c.id),text:c.name};
if(useRdfKeyAsDefault&&opt.value===rdfSubject){opt.selected=true
}cldo.push(opt);
break
}});
if(cachedLinkedDatasetOptions[viewUid].length<=0){alert("Dataset {0} does not have any column.".format(viewUid))
}else{$field.data("linkedFieldValues","_reset");
_.each($field.data("linkedGroup"),function(f){$(f).trigger("change")
});
_.defer(function(){$field.val(curVal)
})
}}});
return[]
}return cachedLinkedDatasetOptions[viewUid]
};
Dataset.getLinkedDatasetOptionsDefault=function(linkedDatasetUid,col,$field,curVal){return Dataset.getLinkedDatasetOptions(linkedDatasetUid,col,$field,curVal,true)
};
Dataset.getLinkedDatasetOptionsNoDefault=function(linkedDatasetUid,col,$field,curVal){return Dataset.getLinkedDatasetOptions(linkedDatasetUid,col,$field,curVal,false)
};
var VIZ_TYPES=["chart","annotatedtimeline","imagesparkline","areachart","barchart","columnchart","linechart","piechart"];
var MAP_TYPES=["geomap","intensitymap"];
function getType(ds){var type=ds.displayType||"blist";
if(ds.viewType=="blobby"){type="blob"
}else{if(ds.viewType=="href"){type="href"
}else{if(_.include(VIZ_TYPES,type)){type="visualization"
}else{if(_.include(MAP_TYPES,type)){type="map"
}else{if(!$.isBlank(ds.query)&&!$.isBlank(ds.query.groupBys)&&ds.query.groupBys.length>0){type="grouped"
}else{if(type=="blist"&&!_.include(ds.flags||[],"default")){type="filter"
}}}}}}return type
}function getDisplayName(ds){var retType=ds.type;
switch(ds.type){case"blist":retType="dataset";
break;
case"filter":retType="filtered view";
break;
case"grouped":retType="grouped view";
break;
case"visualization":retType="chart";
break;
case"blob":retType="embedded file";
break;
case"href":retType="linked dataset";
break
}return retType
}function cleanViewForSave(ds){ds=ds.cleanCopy();
if(!_.isUndefined(ds.metadata)){delete ds.metadata.facets
}return ds
}})();
(function(){Dataset.modules.calendar={_checkValidity:function(){if($.isBlank(this.displayFormat.startDateTableId)||$.isBlank(this.displayFormat.titleTableId)){return false
}var startCol=this.columnForTCID(this.displayFormat.startDateTableId);
var titleCol=this.columnForTCID(this.displayFormat.titleTableId);
return !$.isBlank(startCol)&&!$.isBlank(titleCol)
},_convertLegacy:function(){var view=this;
_.each(["startDate","endDate","title","description"],function(n){if($.isBlank(view.displayFormat[n+"TableId"])&&!$.isBlank(view.displayFormat[n+"Id"])){var c=view.columnForID(view.displayFormat[n+"Id"]);
if(!$.isBlank(c)){view.displayFormat[n+"TableId"]=c.tableColumnId
}}})
}}
})();
(function(){var legacyTypes={imagesparkline:"line",annotatedtimeline:"timeline",areachart:"area",barchart:"bar",columnchart:"column",linechart:"line",piechart:"pie"};
Dataset.chart={};
Dataset.chart.textualTypes=["text","drop_down_list"];
Dataset.chart.numericTypes=["number","percent","money"];
Dataset.chart.dateTypes=["calendar_date","date"];
Dataset.chart.types={area:{value:"area",text:"Area Chart",requiredColumns:[Dataset.chart.textualTypes,Dataset.chart.numericTypes],displayLimit:100},bar:{value:"bar",text:"Bar Chart",requiredColumns:[Dataset.chart.textualTypes,Dataset.chart.numericTypes],displayLimit:30},column:{value:"column",text:"Column Chart",requiredColumns:[Dataset.chart.textualTypes,Dataset.chart.numericTypes],displayLimit:100},donut:{value:"donut",text:"Donut Chart",requiredColumns:[Dataset.chart.textualTypes,Dataset.chart.numericTypes],displayLimit:30,renderOther:true},line:{value:"line",text:"Line Chart",requiredColumns:[Dataset.chart.numericTypes],displayLimit:100},pie:{value:"pie",text:"Pie Chart",requiredColumns:[Dataset.chart.textualTypes,Dataset.chart.numericTypes],displayLimit:30,renderOther:true},timeline:{value:"timeline",text:"Time Line",requiredColumns:[Dataset.chart.dateTypes,Dataset.chart.numericTypes],displayLimit:300},treemap:{value:"treemap",text:"Tree Map",requiredColumns:[Dataset.chart.textualTypes,Dataset.chart.numericTypes]}};
Dataset.chart.hasRequiredColumns=function(cols,reqCols,includeHidden){cols=cols.slice();
return _.all(reqCols,function(rc){var col=_.detect(cols,function(c){return _.include(rc,c.renderTypeName)&&(includeHidden||!c.hidden)
});
if($.isBlank(col)){return false
}cols=_.without(cols,col);
return true
})
};
Dataset.modules.visualization={_checkValidity:function(){if(!this._super()){return false
}var view=this;
var foundCols=[];
_.each(this.displayFormat.fixedColumns||[],function(fc){foundCols.push(view.columnForTCID(fc))
});
_.each(this.displayFormat.valueColumns||[],function(vc){foundCols.push(view.columnForTCID(vc.tableColumnId))
});
var ct=Dataset.chart.types[this.displayFormat.chartType];
if($.isBlank(ct)){return false
}return Dataset.chart.hasRequiredColumns(_.compact(foundCols),ct.requiredColumns)
},_convertLegacy:function(){var view=this;
var ct=view.displayFormat.chartType||view.displayType;
view.displayFormat.chartType=legacyTypes[ct]||ct;
if($.isBlank(view.displayFormat.dataColumns)&&$.isBlank(view.displayFormat.fixedColumns)&&$.isBlank(view.displayFormat.valueColumns)&&!$.isBlank(view.visibleColumns)){view.displayFormat.dataColumns=_.map(view.visibleColumns,function(c){return c.tableColumnId
})
}if(!$.isBlank(view.displayFormat.dataColumns)){if(!$.isBlank(view.displayFormat.fixedCount)){if(view.displayFormat.chartType=="pie"&&view.displayFormat.fixedCount>1){view.displayFormat.fixedCount--
}view.displayFormat.fixedColumns=view.displayFormat.dataColumns.splice(0,view.displayFormat.fixedCount)
}else{if($.isBlank(view.displayFormat.valueColumns)&&_.isArray(view.displayFormat.dataColumns)&&view.displayFormat.dataColumns.length>0){var firstCol=view.columnForTCID(view.displayFormat.dataColumns[0]);
if(!$.isBlank(firstCol)&&!_.include(Dataset.chart.numericTypes,firstCol.renderTypeName)){view.displayFormat.fixedColumns=view.displayFormat.dataColumns.splice(0,1)
}}}var valueCols=[];
var vcVal;
var i=0;
var cols=view.displayFormat.dataColumns.slice();
while(cols.length>0){var tcid=cols.shift();
var c=view.columnForTCID(tcid);
if($.isBlank(c)){continue
}if(_.include(Dataset.chart.numericTypes,c.renderTypeName)){valueCols.push(vcVal);
vcVal={tableColumnId:tcid};
if(!$.isBlank((view.displayFormat.colors||[])[i])){vcVal.color=view.displayFormat.colors[i]
}i++;
continue
}if(!$.isBlank(vcVal)){vcVal.supplementalColumns=vcVal.supplementalColumns||[];
vcVal.supplementalColumns.push(tcid)
}}if(!$.isBlank(vcVal)){valueCols.push(vcVal)
}view.displayFormat.valueColumns=_.compact(valueCols)
}delete view.displayFormat.dataColumns
}}
})();
(function(){Dataset.modules.form={_checkValidity:function(){return _.any(this.visibleColumns,function(c){return !_.include(["tag","nested_table"],c.dataTypeName)
})
}}
})();
(function(){Dataset.map={};
Dataset.map.toGoogle={feature:function(geometry){return new google.maps.Polygon({paths:_.map(geometry.rings,function(ring,r){return _.map(ring,function(point,p){var point=geometry.getPoint(r,p);
if(point.spatialReference.wkid==102100){point=esri.geometry.webMercatorToGeographic(point)
}return new google.maps.LatLng(point.y,point.x)
})
})})
},extent:function(extent){var sw=new esri.geometry.Point(extent.xmin,extent.ymax,extent.spatialReference);
var ne=new esri.geometry.Point(extent.xmax,extent.ymin,extent.spatialReference);
if(extent.spatialReference.wkid==102100){sw=esri.geometry.webMercatorToGeographic(sw);
ne=esri.geometry.webMercatorToGeographic(ne)
}return new google.maps.LatLngBounds(new google.maps.LatLng(sw.y,sw.x),new google.maps.LatLng(ne.y,ne.x))
}};
Dataset.map.toBing={feature:function(geometry){return _.map(geometry.rings,function(ring,r){if(ring[ring.length-1]!=ring[0]){ring.push(ring[0])
}return new VEShape(VEShapeType.Polygon,_.map(ring,function(point,p){var point=geometry.getPoint(r,p);
if(point.spatialReference.wkid==102100){point=esri.geometry.webMercatorToGeographic(point)
}return new VELatLong(point.y,point.x)
}))
})
}};
Dataset.modules.map={_checkValidity:function(){if(($.isBlank(this.displayFormat.plot.latitudeId)||$.isBlank(this.displayFormat.plot.longitudeId))&&$.isBlank(this.displayFormat.plot.locationId)){return false
}var latCol=this.columnForTCID(this.displayFormat.plot.latitudeId);
var longCol=this.columnForTCID(this.displayFormat.plot.longitudeId);
var locCol=this.columnForTCID(this.displayFormat.plot.locationId);
return !$.isBlank(locCol)||(!$.isBlank(latCol)&&!$.isBlank(longCol))||this.displayFormat.noLocations
},_convertLegacy:function(){var view=this;
var isOldest=$.isBlank(view.displayFormat.plot)&&$.isBlank(view.displayFormat.latitudeId);
view.displayFormat.plot=view.displayFormat.plot||{};
if(_.include(["geomap","intensitymap"],view.displayType)){view.displayFormat.type="heatmap";
var region=view.displayFormat.region||"";
view.displayFormat.heatmap={type:region.toLowerCase().match(/^usa?$/)?"state":"countries"};
_.each(["locationId","quantityId","descriptionId","redirectId"],function(key,index){if(index<(view.visibleColumns||[]).length){view.displayFormat.plot[key]=view.visibleColumns[index].tableColumnId
}})
}if($.isBlank(view.displayFormat.heatmap)&&!$.isBlank(view.displayFormat.heatmapType)){var heatmapType=view.displayFormat.heatmapType.split("_");
config={type:heatmapType[1],region:heatmapType[0],colors:{low:view.displayFormat.lowcolor,high:view.displayFormat.highcolor}};
view.displayFormat.heatmap=config;
delete view.displayFormat.lowcolor;
delete view.displayFormat.highcolor;
delete view.displayFormat.heatmapType
}if(isOldest){if((view.visibleColumns||[]).length>1){view.displayFormat.plot.latitudeId=view.visibleColumns[0].tableColumnId;
view.displayFormat.plot.longitudeId=view.visibleColumns[1].tableColumnId
}if((view.visibleColumns||[]).length>2){view.displayFormat.plot.descriptionId=view.visibleColumns[2].tableColumnId
}}var colObj=view.displayFormat.plot||view.displayFormat;
_.each(["latitudeId","longitudeId","titleId","descriptionId"],function(n){if($.isBlank(view.displayFormat.plot[n])&&!$.isBlank(colObj[n])){view.displayFormat.plot[n]=colObj[n]
}});
_.each({ycol:"latitudeId",xcol:"longitudeId",titleCol:"titleId",bodyCol:"descriptionId"},function(n,o){if($.isBlank(view.displayFormat.plot[n])&&!$.isBlank(colObj[o])){view.displayFormat.plot[n]=view.columnForID(colObj[o]).tableColumnId
}})
}}
})();
(function($){$.templates=$.templates||{};
$.templates.downloadsTable={downloadTypes:["CSV","JSON","PDF","RDF","RSS","XLS","XLSX","XML"],directive:{"tbody .item":{"downloadType<-downloadTypes":{".type a":"#{downloadType}",".type a@href":function(args){return"/views/"+args.context.viewId+"/rows."+args.item.toLowerCase()+"?accessType=DOWNLOAD"
}}}},postRender:function($elem){$elem.find("table.gridList").combinationList({headerContainerSelector:$elem.find(".gridListWrapper"),initialSort:[[0,0]],scrollableBody:false,selectable:false,sortGrouping:false,sortHeaders:{0:{sorter:"text"}}})
}}
})(jQuery);
$(function(){$.socrataServer=$.socrataServer||{};
var batchRequests=[];
$.socrataServer.addRequest=function(req){batchRequests.push(req)
};
$.socrataServer.runRequests=function(callbacks){if(batchRequests.length<1){return false
}callbacks=callbacks||{};
if(batchRequests.length==1){var origBR=batchRequests.shift();
$.ajax($.extend({},origBR,{dataType:"json",contentType:"application/json",complete:function(){if(typeof origBR.complete=="function"){origBR.complete()
}if(typeof callbacks.complete=="function"){callbacks.complete()
}},error:function(xhr){var errBody=JSON.parse(xhr.responseText);
if(typeof origBR.error=="function"){origBR.error(errBody.message)
}if(typeof callbacks.error=="function"){callbacks.error()
}},success:function(resp){if(typeof origBR.success=="function"){origBR.success(resp)
}if(typeof callbacks.success=="function"){callbacks.success()
}}}));
return true
}var serverReqs=[];
var br=batchRequests;
batchRequests=[];
$.each(br,function(i,r){serverReqs.push({url:r.url,requestType:r.type,body:r.data})
});
$.ajax({url:"/batches",dataType:"json",contentType:"application/json",type:"POST",data:JSON.stringify({requests:serverReqs}),success:function(resp){var isError=false;
$.each(resp,function(i,r){if(r.error){isError=true;
if(typeof br[i].error=="function"){br[i].error(r.errorMessage)
}}else{if(typeof br[i].success=="function"){br[i].success(JSON.parse(r.response||'""'))
}}});
if(isError){if(typeof callbacks.error=="function"){callbacks.error()
}}else{if(typeof callbacks.success=="function"){callbacks.success()
}}},complete:function(){$.each(br,function(i,r){if(typeof r.complete=="function"){r.complete()
}});
if(typeof callbacks.complete=="function"){callbacks.complete()
}},error:function(xhr){var errBody=JSON.parse(xhr.responseText);
$.each(br,function(i,r){if(typeof r.error=="function"){r.error(errBody.message)
}});
if(typeof callbacks.error=="function"){callbacks.error()
}}});
return true
}
});
blist.namespace.fetch("blist.data.types");
(function($){STAR_WIDTH=16;
blist.data.types.compile=function(expression,context){for(var _key_ in context){var _object_=context[_key_];
eval(_key_+" = _object_")
}var val;
eval("val = ("+expression+")");
return val
};
var nextVarID=1;
var createUniqueName=function(){return"_u"+nextVarID++
};
var htmlEscape=function(text){if(text==null){return""
}return(text+"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")
};
var htmlStrip=function(text){if(text==null){return""
}return text.replace(/<[^>]*>/g,"")
};
var MATCHES_TAGS=/<[^>]+>/;
var removeTags=function(text){return((text||"")+"").replace(MATCHES_TAGS,"")
};
var sortGenCore=function(compare){return new Function("a","b",compare)
};
var sortGenText=function(a,b){return sortGenCore("var x = (("+a+" || '') + '').toLowerCase();var y = (("+b+" || '') + '').toLowerCase();return x < y ? -1 : x > y ? 1 : 0")
};
var sortGenNumeric=function(a,b){return sortGenCore("return "+a+" - "+b)
};
var groupText=function(value){if(value==null||value==""){return"Empty"
}return(value+"").substring(0,1).toUpperCase()
};
var groupDate=function(value){if(value==null||value==""){return""
}return blist.util.humaneDate.getFromDate(new Date(value*1000),blist.util.humaneDate.DAY)
};
var renderGenText=function(value){return"("+value+" || '')"
};
var renderGenEscapedText=function(value){return"htmlEscape("+value+" || '')"
};
var renderGenTags=function(value){return value+" && "+value+' != "" ? "<div class=\'blist-tag\' title=\'" + htmlEscape('+value+' || "") + "\'></div>" : ""'
};
var DIGITS={"0":true,"1":true,"2":true,"3":true,"4":true,"5":true,"6":true,"7":true,"8":true,"9":true};
var renderNumber=function(value,decimalPlaces,precisionStyle,prefix,suffix,humane){if(value==null){return""
}if(typeof value!="number"){value=parseFloat(value)
}if(precisionStyle=="scientific"){if(decimalPlaces!==undefined){value=value.toExponential(decimalPlaces)
}else{value=value.toExponential()
}}else{if(decimalPlaces!==undefined){value=value.toFixed(decimalPlaces)
}}if(humane===true||humane==="true"){value=blist.util.toHumaneNumber(value,2)
}else{if(value>9999){value=value+"";
var pos=value.indexOf(".");
if(pos==-1){pos=value.length
}pos-=3;
while(pos>0&&DIGITS[value.charAt(pos-1)]){value=value.substring(0,pos)+","+value.substring(pos);
pos-=3
}}}if(prefix){value=prefix+value
}if(suffix){value+=suffix
}return value
};
var renderGenNumber=function(value,plain,column){return"renderNumber("+value+", "+(column.format||{}).precision+", '"+(column.format||{}).precisionStyle+"')"
};
var renderPercentBar=function(value){if(!value){return""
}var cls;
if(value>0){cls="blist-percent-bar-pos"
}else{cls="blist-percent-bar-neg";
value*=-1
}if(value>100){value=100
}return"<div class='blist-cell "+cls+"' style='width: "+value+"%'></div>"
};
var renderGenPercent=function(value,plain,column){if(plain){return"renderNumber("+value+", "+column.format.precision+", '"+column.format.precisionStyle+"', null, '%')"
}var renderText;
var renderBar;
switch(column.format.view){case"percent_bar":renderText=false;
renderBar=true;
break;
case"percent_text":renderText=true;
renderBar=false;
break;
default:renderText=renderBar=true;
break
}var rv="'<div class=\"blist-percent\">'";
if(renderBar){rv+=" + renderPercentBar("+value+")"
}if(renderText){rv+=" + '<div class=\"blist-cell blist-percent-num\">' + renderNumber("+value+", "+column.format.precision+", '"+column.format.precisionStyle+"', null, '%') + '</div>'"
}rv+="+ '</div>'";
return rv
};
var renderGenMoney=function(value,plain,column){var rv="renderNumber({0}, {1}, {2}, '{3}', null, {4})".format(value,column.format.precision||2,column.format.precisionStyle?"'"+column.format.precisionStyle+"'":"undefined",blist.data.types.money.currencies[column.format.currency||"dollar"],column.format.humane||"false");
return rv
};
var renderPhone=function(value,plain,skipURL,skipBlankType){if(!value){return""
}var num;
var type;
if(value instanceof Array){num=value[0]||"";
type=value[1]
}else{if(value instanceof Object){num=value.phone_number||"";
type=value.phone_type
}else{num=value+""
}}var label=num+"";
if(label.match(/^\d{10}$/)){label="("+label.substring(0,3)+") "+label.substring(3,6)+"-"+label.substring(6,10)
}else{if(label.match(/^\d{7}$/)){label=label.substring(0,3)+"-"+label.substring(3,7)
}}var typeStr=type?type.toLowerCase():"unknown";
if(plain){if(type){label+=" ("+typeStr+")"
}return label
}label=(skipBlankType&&!type?"":"<div class='blist-phone-icon blist-phone-icon-"+typeStr+"'>"+typeStr+"</div>&nbsp;")+htmlEscape(label);
return skipURL?label:renderURL(["callto://"+num.replace(/[\-()\s]/g,""),label],true)
};
var renderGenPhone=function(value,plain){return"renderPhone("+value+", "+plain+")"
};
var renderGenCheckbox=function(value,plain,column){if(plain){return value+" ? '&#10003;' : ''"
}return'"<div class=\'blist-cell blist-checkbox blist-checkbox-" + ('+value+" ? 'on' : 'off') + \"' title='\" + ("+value+" ? 'True' : 'False') + \"'></div>\""
};
var renderGenFlag=function(value,plain){if(plain){return value+" || ''"
}return value+' && ("<div class=\'blist-flag blist-flag-" + '+value+" + \"' title='\" + "+value+' + "\'></div>")'
};
var renderHtml=function(value){if(value==null){return""
}return'<div class="blist-html">'+value+"</div>"
};
var renderGenHtml=function(value,plain){return plain?"htmlStrip("+value+" || '')":"renderHtml("+value+" || '')"
};
var renderDate=function(value,format,stringParse){if(value==null){return""
}var d;
if(typeof value=="number"){d=new Date(value*1000)
}else{if(!$.isBlank(stringParse)){d=Date.parseExact(value,stringParse)
}else{d=Date.parse(value)
}}return d?d.format(format):""
};
var OPTIMIZE_FORMAT_DATETIME1="m/d/Y h:i:s A O";
var renderDate_dateTime1=function(value,stringParse){if(value==null){return""
}var d;
if(typeof value=="number"){d=new Date(value*1000)
}else{if(!$.isBlank(stringParse)){d=Date.parseExact(value,stringParse)
}else{d=Date.parse(value)
}}if(!d){return""
}var hour=d.getHours();
if(hour>11){hour-=12;
var meridian=" PM"
}else{meridian=" AM"
}if(!hour){hour=12
}if(hour<10){hour="0"+hour
}var minute=d.getMinutes();
if(minute<10){minute="0"+minute
}var second=d.getSeconds();
if(second<10){second="0"+second
}var day=d.getDate();
if(day<10){day="0"+day
}var month=d.getMonth()+1;
if(month<10){month="0"+month
}return month+"/"+day+"/"+d.getFullYear()+" "+hour+":"+minute+":"+second+meridian+" "+d.getUTCOffset()
};
var renderGenDate=function(value,plain,column){var type=column.renderType;
var format=type.formats[column.format.view]||type.formats.date_time;
if(format==OPTIMIZE_FORMAT_DATETIME1){return"renderDate_dateTime1("+value+", '"+(type.stringParse||"")+"')"
}return"renderDate("+value+", '"+format+"', '"+(type.stringParse||"")+"')"
};
var renderPicklist=function(valueLookupVariable,value){if(typeof value=="string"){return valueLookupVariable[value.toLowerCase()]||'<div class="blist-dataset-link-dangling">{0}</div>'.format(value)
}return""
};
var renderGenPicklist=function(value,plain,column,context){var valueLookupVariable=createUniqueName();
if(column.dropDownList){var valueLookup=context[valueLookupVariable]={};
_.each(column.dropDownList.values,function(opt){if($.isBlank(opt.id)){return
}if(plain){valueLookup[opt.id.toLowerCase()]=option.text
}else{var icon=opt.icon;
if(icon){icon="<img class='blist-table-option-icon' src='"+icon+"'> "
}else{icon=""
}valueLookup[opt.id.toLowerCase()]=icon+htmlEscape(opt.description||"")
}});
return"(renderPicklist("+valueLookupVariable+","+value+"))"
}return"'?'"
};
var renderURL=function(value,captionIsHTML,plain){if(!value){return""
}var url;
var caption;
if(value instanceof Array){url=value[0];
caption=value[1]||url
}else{if(value instanceof Object){url=value.url;
caption=value.description||url
}else{caption=url=value+""
}}if(url&&url!=""&&!url.match(/^([a-z]+):/i)&&url.indexOf("/")!=0){url="http://"+url
}if(plain){return url||""
}if(!captionIsHTML){caption=htmlEscape(caption)
}return"<a target='blist-viewer' rel='external' href='"+htmlEscape(url)+"'>"+caption+"</a>"
};
var renderGenURL=function(value,plain){return"renderURL("+value+", false, "+plain+")"
};
var renderGenEmail=function(value,plain){if(plain){return value
}return"renderURL("+value+" && ['mailto:' + "+value+", "+value+"], false, "+plain+")"
};
var renderStars=function(value,range){if(value==null){return""
}range*=STAR_WIDTH;
var on=Math.round(value*STAR_WIDTH);
if(on<=0){return""
}else{if(on>range){on=range
}}var off=range-on;
return"<div class='blist-tstars-render-wrapper' style='width:"+range+"px'>"+(permissions.canEdit?"<div class='blist-star-0'></div>":"")+"<div class='blist-tstars' style='width: "+range+"px'><div class='blist-cell blist-tstar-on' style='width: "+on+"px'></div><div class='blist-cell blist-tstar-off' style='width: "+off+"px; background-position-x: "+-(on%STAR_WIDTH)+"px'></div></div></div>"
};
var renderTextStars=function(value,range){var rv="";
for(var i=0;
i<value;
i++){rv+="*"
}return rv
};
var renderGenStars=function(value,plain,column){if(plain){return"renderTextStars("+value+")"
}var range=parseFloat(column.format.range);
if(range<=0||isNaN(range)){range=5
}return"renderStars("+value+", "+range+")"
};
var renderGenPhoto=function(value,plain,column){var url="'"+column.baseUrl()+"' + "+value;
if(plain){return url
}return value+" && ('<img src=\"' + escape("+url+") + '\"></img>')"
};
var renderDocument=function(value,base,plain){var url,name,size;
if(!value){return""
}else{if(value instanceof Array){url=value[2];
name=value[1];
size=value[3]
}else{if(value instanceof Object){if(value.id){url=value.id;
name=value.filename;
size=value.size
}else{url=value.file_id+"?";
args=[];
if(value.filename){args.push("filename="+escape(value.filename))
}if(value.content_type){args.push("content_type="+escape(value.content_type))
}url+=args.join("&");
name=value.filename;
size=value.size
}}else{url=value+""
}}}if(!url){return""
}if(plain){return name||""
}var rv=renderURL([(base||"")+url,name||"Document"]);
if(size!=null){size=Math.round(size/1024);
if(size==0){size=1
}rv+="&nbsp;<span class='blist-document-size'>("+size+"k)</span>"
}return rv
};
var renderGenDocument=function(value,plain,column){return"renderDocument("+value+", '"+column.baseUrl()+"', "+plain+")"
};
var renderLocation=function(value,plain,addressOnly){if($.isBlank(value)){return""
}var pieces=[];
if(!$.isBlank(value.human_address)){var a=JSON.parse(value.human_address);
if(!$.isBlank(a.address)&&a.address!==""){pieces.push(a.address)
}pieces.push(_.compact([_.compact([a.city,a.state]).join(", "),a.zip]).join(" "))
}if(!addressOnly&&(!$.isBlank(value.latitude)||!$.isBlank(value.longitude))){pieces.push("("+(value.latitude||"")+(plain?"":"&deg;")+", "+(value.longitude||"")+(plain?"":"&deg;")+")")
}return pieces.join(plain?" \n":"<br />")
};
var renderLocationAddress=function(value,plain){return renderLocation(value,plain,true)
};
var renderGenLocation=function(value,plain){return"renderLocation("+value+", "+plain+")"
};
var renderFilterText=function(value){return htmlStrip((value||"")+"")
};
var renderFilterEscapedText=function(value){return htmlEscape(htmlStrip((value||"")+""))
};
var renderFilterNumber=function(value,column){return renderNumber(value,column.format.precision,column.format.precisionStyle)
};
var renderFilterDate=function(value,column){var type=column.renderType||blist.data.types.date;
var format=type.formats[column.format.view]||type.formats.date_time;
return renderDate(value,format,type.stringParse)
};
var renderFilterMoney=function(value,column){return renderNumber(value,(column.format.precision||2),column.format.precisionStyle,blist.data.types.money.currencies[column.format.currency||"dollar"],null,column.format.humane)
};
var renderFilterCheckbox=function(value,column){var format=column.format.view||"check";
return"<div class='blist-cell blist-checkbox blist-"+format+"-"+(value?"on":"off")+"'>"+(value?"True":"False")+"</div>"
};
var valueFilterCheckbox=function(value){return value?1:0
};
var renderFilterFlag=function(value,column){return value&&"<div class='blist-flag blist-flag-"+value+"'>"+value+"</div>"
};
var renderFilterStars=function(value,column){var range=parseFloat(column.format.range);
if(range<=0||isNaN(range)){range=5
}return"<div class='blist-tstars-wrapper'>"+renderStars(value,range)+value+"</div>"
};
var renderFilterPercent=function(value,column){return renderNumber(value,column.format.precision,column.format.precisionStyle,null,"%")
};
var renderFilterURL=function(value){if(!value){return""
}if(typeof value=="object"){return value[1]||value[0]
}return htmlStrip(value||"")
};
var renderFilterPicklist=function(value,column){if(column.dropDownList){var valueLookup={};
_.each(column.dropDownList.values,function(opt){if($.isBlank(opt.id)){return
}var icon=opt.icon;
if(icon){icon="<img class='blist-table-option-icon' src='"+icon+"' /> "
}else{icon=""
}valueLookup[opt.id.toLowerCase()]={};
valueLookup[opt.id.toLowerCase()]["text"]=htmlStrip(opt.description||"");
valueLookup[opt.id.toLowerCase()]["html"]=icon+htmlStrip(opt.description||"")
});
return"<div class='blist-picklist-wrapper'>"+((valueLookup[value.toLowerCase()]||{})["html"]||value)+"</div>"
}return"?"
};
var renderFilterPhone=function(value,column,subType){var args={};
args[subType]=value;
return renderPhone(args,false,true,true)
};
var renderFilterLocation=function(value,column,subType){if(subType=="machine_address"||subType=="needs_recoding"){return""
}if(subType=="human_address"){return renderLocationAddress({human_address:value},true)
}return renderFilterText(value)
};
var timeFormat="h:i:s A";
var zTimeFormat=timeFormat+" O";
var baseDTFormats={date:"m/d/Y",date_time:"m/d/Y",date_dmy:"d/m/Y",date_dmy_time:"d/m/Y",date_ymd:"Y/m/d",date_ymd_time:"Y/m/d",date_monthdy:"F d, Y",date_dmonthy:"d F Y",date_ymonthd:"Y F d"};
var dateTimeFormats={};
var zDateTimeFormats={};
_.each(baseDTFormats,function(v,k){dateTimeFormats[k]=v;
zDateTimeFormats[k]=v;
if(k.endsWith("_time")){dateTimeFormats[k]+=" "+timeFormat;
zDateTimeFormats[k]+=" "+zTimeFormat
}});
var aggs=[{text:"Average",value:"average"},{text:"Count",value:"count"},{text:"Sum",value:"sum"},{text:"Maximum",value:"maximum"},{text:"Minimum",value:"minimum"}];
var nonNumericAggs=_.select(aggs,function(a){return"count"==a.value
});
var filterConditions={textual:[{value:"EQUALS",text:"equals"},{value:"NOT_EQUALS",text:"does not equal"},{value:"STARTS_WITH",text:"starts with"},{value:"CONTAINS",text:"contains"},{value:"IS_NOT_BLANK",text:"is not blank"},{value:"IS_BLANK",text:"is blank"}],date:[{value:"EQUALS",text:"on"},{value:"NOT_EQUALS",text:"not on"},{value:"LESS_THAN",text:"before"},{value:"GREATER_THAN",text:"after"},{value:"BETWEEN",text:"between"},{value:"IS_NOT_BLANK",text:"is not blank"},{value:"IS_BLANK",text:"is blank"}],comparable:[{value:"EQUALS",text:"equals"},{value:"IS_NOT_BLANK",text:"is not blank"},{value:"IS_BLANK",text:"is blank"}],blob:[{value:"IS_BLANK",text:"is empty"},{value:"IS_NOT_BLANK",text:"exists"}],numeric:[{value:"EQUALS",text:"equals"},{value:"NOT_EQUALS",text:"not equals"},{value:"LESS_THAN",text:"less than"},{value:"LESS_THAN_OR_EQUALS",text:"less than or equal to"},{value:"GREATER_THAN",text:"greater than"},{value:"GREATER_THAN_OR_EQUALS",text:"greater than or equal to"},{value:"BETWEEN",text:"between"},{value:"IS_NOT_BLANK",text:"is not blank"},{value:"IS_BLANK",text:"is blank"}]};
var alignLeft={text:"Left",value:"left"};
var alignCenter={text:"Center",value:"center"};
var alignRight={text:"Right",value:"right"};
var alignment=[alignLeft,alignCenter,alignRight];
var numericAlignment=[alignRight,alignLeft,alignCenter];
var dateViews=[{value:"date",text:"month/day/year"},{value:"date_time",text:"month/day/year hour:minute"},{value:"date_dmy",text:"day/month/year"},{value:"date_dmy_time",text:"day/month/year hour:minute"},{value:"date_ymd",text:"year/month/day"},{value:"date_ymd_time",text:"year/month/day hour:minute"},{value:"date_monthdy",text:"month day, year"},{value:"date_dmonthy",text:"day month year"},{value:"date_ymonthd",text:"year month day"}];
var numericConvertTypes=["money","number","percent","stars"];
$.extend(blist.data.types,{invalid:{renderGen:renderGenEscapedText},text:{title:"Plain Text",priority:1,createable:true,renderGen:renderGenEscapedText,sortGen:sortGenText,filterRender:renderFilterEscapedText,filterText:true,group:groupText,sortable:true,aggregates:nonNumericAggs,rollUpAggregates:nonNumericAggs,alignment:alignment,convertableTypes:["html","calendar_date","date","phone","email","url","checkbox","flag","dataset_link"].concat(numericConvertTypes),filterable:true,filterConditions:filterConditions.textual,deleteable:true},html:{title:"Formatted Text",priority:2,createable:true,renderGen:renderGenHtml,filterRender:renderFilterText,sortGen:sortGenText,filterText:true,sortable:true,aggregates:nonNumericAggs,rollUpAggregates:nonNumericAggs,convertableTypes:["text","calendar_date","date","phone","email","url","checkbox","flag","dataset_link"].concat(numericConvertTypes),filterable:true,filterConditions:filterConditions.textual,deleteable:true},number:{title:"Number",priority:3,createable:true,renderGen:renderGenNumber,sortGen:sortGenNumeric,filterRender:renderFilterNumber,filterText:true,cls:"number",sortable:true,aggregates:aggs,rollUpAggregates:aggs,alignment:numericAlignment,convertableTypes:_.without(numericConvertTypes,"number").concat("text").concat("dataset_link"),precisionStyle:[{text:"Standard (1,020.4)",value:"standard"},{text:"Scientific (1.0204e+3)",value:"scientific"}],filterable:true,filterConditions:filterConditions.numeric,deleteable:true},date:{title:"Date & Time (with timezone)",priority:7,createable:true,cls:"date",renderGen:renderGenDate,sortGen:sortGenNumeric,filterRender:renderFilterDate,filterValue:function(v){return v
},sortable:true,aggregates:nonNumericAggs,rollUpAggregates:nonNumericAggs,alignment:alignment,convertableTypes:["text","calendar_date"],viewTypes:dateViews,filterable:true,filterConditions:filterConditions.date,deleteable:true,group:groupDate,formats:zDateTimeFormats},calendar_date:{title:"Date & Time",priority:6,createable:true,cls:"date",renderGen:renderGenDate,sortGen:sortGenNumeric,filterRender:renderFilterDate,filterValue:function(v){return v
},sortable:true,aggregates:nonNumericAggs,rollUpAggregates:nonNumericAggs,alignment:alignment,convertableTypes:["text","date"],viewTypes:dateViews,filterable:true,filterConditions:filterConditions.date,deleteable:true,group:groupDate,formats:dateTimeFormats,stringFormat:"yyyy-MM-ddTHH:mm:ss"},photo_obsolete:{title:"Photo (Image, old)",renderGen:renderGenPhoto,cls:"photo",filterConditions:filterConditions.blob,aggregates:nonNumericAggs,deleteable:true},photo:{title:"Photo (Image)",priority:16,createable:true,renderGen:renderGenPhoto,cls:"photo",filterConditions:filterConditions.blob,aggregates:nonNumericAggs,deleteable:true},money:{title:"Money",priority:4,createable:true,renderGen:renderGenMoney,sortGen:sortGenNumeric,filterRender:renderFilterMoney,cls:"money",filterText:true,sortable:true,aggregates:aggs,rollUpAggregates:aggs,alignment:numericAlignment,convertableTypes:_.without(numericConvertTypes,"money").concat("text"),filterable:true,filterConditions:filterConditions.numeric,deleteable:true,currencies:{dollar:"$",pound:"£",euro:"€",yen:"¥",forint:"Ft",hk_dollar:"HK$",kuna:"Kn",koruna:"Kč",lats:"Ls",litas:"Lt",nt_dollar:"NT$",peso:"PhP",real:"R$",rupiah:"Rp",rupee:"Rs.",koruna:"Sk",lira:"TL",new_lira:"YTL",krone:"kr",lei_noi:"lei",zloty:"zł",baht:"฿",dong:"₫",won:"₩",ruble:"р.",lev:"лв.",dinar:"Дин.",hryvnia:"грн."}},phone:{title:"Phone",priority:14,createable:true,cls:"phone",renderGen:renderGenPhone,sortGen:sortGenText,filterRender:renderFilterPhone,filterText:true,sortable:true,aggregates:nonNumericAggs,alignment:alignment,convertableTypes:["text"],filterable:true,filterConditions:filterConditions.textual,deleteable:true,isObject:true},checkbox:{title:"Checkbox",priority:11,createable:true,renderGen:renderGenCheckbox,sortGen:sortGenNumeric,filterRender:renderFilterCheckbox,filterValue:valueFilterCheckbox,sortable:true,aggregates:nonNumericAggs,rollUpAggregates:nonNumericAggs,alignment:[alignCenter,alignLeft,alignRight],convertableTypes:["text"],filterable:true,filterConditions:filterConditions.comparable,deleteable:true,isInlineEdit:true},flag:{title:"Flag",priority:12,createable:true,renderGen:renderGenFlag,sortGen:sortGenText,filterRender:renderFilterFlag,sortable:true,aggregates:nonNumericAggs,rollUpAggregates:nonNumericAggs,alignment:alignment,convertableTypes:["text"],filterable:true,filterConditions:filterConditions.comparable,deleteable:true},stars:{title:"Star",priority:13,createable:true,cls:"stars",renderGen:renderGenStars,sortGen:sortGenNumeric,filterRender:renderFilterStars,filterText:true,sortable:true,aggregates:_.reject(aggs,function(a){return a.value=="sum"
}),rollUpAggregates:_.reject(aggs,function(a){return a.value=="sum"
}),alignment:alignment,convertableTypes:_.without(numericConvertTypes,"stars").concat("text"),filterable:true,filterConditions:filterConditions.numeric,deleteable:true,isInlineEdit:true},percent:{title:"Percent",priority:5,createable:true,cls:"percent",renderGen:renderGenPercent,sortGen:sortGenNumeric,filterRender:renderFilterPercent,filterText:true,sortable:true,aggregates:aggs,rollUpAggregates:aggs,alignment:numericAlignment,convertableTypes:_.without(numericConvertTypes,"percent").concat("text"),viewTypes:[{value:"percent_bar_and_text",text:"Bar &amp; Text"},{value:"percent_bar",text:"Bar Only"},{value:"percent_text",text:"Text Only"}],filterable:true,filterConditions:filterConditions.numeric,deleteable:true},url:{title:"Website URL",priority:9,createable:true,renderGen:renderGenURL,filterRender:renderFilterURL,filterText:true,sortable:true,aggregates:nonNumericAggs,rollUpAggregates:nonNumericAggs,alignment:alignment,convertableTypes:["text","dataset_link"],filterable:true,filterConditions:filterConditions.textual,deleteable:true,isObject:true},document:{title:"Document",priority:17,createable:true,renderGen:renderGenDocument,filterConditions:filterConditions.blob,aggregates:nonNumericAggs,deleteable:true,isObject:true},document_obsolete:{title:"Document (old)",renderGen:renderGenDocument,filterConditions:filterConditions.blob,aggregates:nonNumericAggs,deleteable:true,isObject:true},location:{title:"Location",priority:8,createable:true,renderGen:renderGenLocation,deleteable:true,isObject:true,alignment:alignment,renderAddress:renderLocationAddress,filterable:true,filterConditions:filterConditions.comparable,filterRender:renderFilterLocation},tag:{title:"Row Tag",priority:19,renderGen:renderGenTags,aggregates:nonNumericAggs,filterRender:renderFilterText,filterText:true,filterable:true,filterConditions:filterConditions.textual},email:{title:"Email",priority:10,createable:true,renderGen:renderGenEmail,sortGen:sortGenText,filterRender:renderFilterText,filterText:true,sortable:true,aggregates:nonNumericAggs,rollUpAggregates:nonNumericAggs,alignment:alignment,convertableTypes:["text"],filterable:true,filterConditions:filterConditions.textual,deleteable:true},nested_table:{title:"Nested Table",priority:18,createable:true,excludeInNestedTable:true,renderGen:renderGenText,deleteable:true},picklist:{title:"Multiple Choice",renderGen:renderGenPicklist,filterRender:renderFilterPicklist,sortable:true,filterable:true,filterConditions:filterConditions.numeric,deleteable:true},drop_down_list:{title:"Multiple Choice",priority:15,createable:true,renderGen:renderGenPicklist,filterRender:renderFilterPicklist,sortable:true,aggregates:nonNumericAggs,rollUpAggregates:nonNumericAggs,alignment:alignment,filterable:true,filterConditions:filterConditions.numeric,deleteable:true},dataset_link:{title:"Dataset Link",priority:19,createable:true,renderGen:renderGenPicklist,filterRender:renderFilterPicklist,sortable:true,aggregates:nonNumericAggs,rollUpAggregates:nonNumericAggs,alignment:alignment,filterable:true,filterConditions:filterConditions.textual,convertableTypes:["text"],deleteable:true}});
for(var name in blist.data.types){var type=blist.data.types[name];
if(typeof type=="object"){type.name=name
}}})(jQuery);
(function($){$.fn.isSocrataTip=function(){return !_.isUndefined($(this[0]).data("socrataTip"))
};
$.fn.socrataTip=function(options){var $elems=$(this);
if($elems.length<2){var sTip=$elems.data("socrataTip");
if(!sTip){sTip=new sTipObj(options,$elems[0])
}return sTip
}else{$elems.each(function(){var $t=$(this);
var curItem=$t.data("socrataTip");
if(!curItem){new sTipObj(options,$t[0])
}});
return $elems
}};
var sTipObj=function(options,dom){if(typeof options=="string"){options={message:options}
}this.settings=$.extend({},sTipObj.defaults,options);
this.currentDom=dom;
this.init()
};
$.extend(sTipObj,{defaults:{closeOnClick:true,content:null,killTitle:false,isSolo:false,message:null,overlap:0,parent:"body",positions:null,showSpike:true,shrinkToFit:true,trigger:"hover"},prototype:{init:function(){var sTipObj=this;
var $domObj=sTipObj.$dom();
$domObj.data("socrataTip",sTipObj);
if($.isBlank(sTipObj.settings.message)&&$.isBlank(sTipObj.settings.content)){return
}var pos=sTipObj.settings.positions;
if(_.isNull(pos)){pos=["bottom","top"]
}else{if(pos=="auto"){pos=["most"]
}}var content=sTipObj.settings.content;
if($.isBlank(content)){content=$.tag({tagName:"p",contents:sTipObj.settings.message},true)
}$domObj.bt({content:content,fill:"#fefbef",strokeStyle:"#999999",cornerRadius:3,spikeGirth:15,spikeLength:sTipObj.settings.showSpike?12:0,shadow:true,shadowOffsetX:0,shadowOffsetY:0,shadowBlur:3,shadowColor:"rgba(0, 0, 0, 0.3)",noShadowOpts:{strokeWidth:2},clickAnywhereToClose:sTipObj.settings.closeOnClick,closeWhenOthersOpen:sTipObj.settings.isSolo,shrinkToFit:sTipObj.settings.shrinkToFit,trigger:sTipObj.settings.trigger,positions:pos,overlap:sTipObj.settings.overlap,offsetParent:sTipObj.settings.parent,killTitle:sTipObj.settings.killTitle,showTip:function(box){if(!sTipObj._disabled){sTipObj._visible=true;
$(box).fadeIn(300)
}},hideTip:function(box,callback){sTipObj._visible=false;
if(sTipObj._isDestroy){$(box).hide();
_.defer(callback)
}else{$(box).fadeOut(300,callback)
}}})
},$dom:function(){if(!this._$dom){this._$dom=$(this.currentDom)
}return this._$dom
},show:function(){if(!this._visible){this.$dom().btOn()
}},hide:function(){if(this._visible){this.$dom().btOff()
}},quickHide:function(){$getTipBox(this).css("visibility","hidden")
},quickShow:function(){$getTipBox(this).css("visibility","visible")
},disable:function(){this._disabled=true
},enable:function(){this._disabled=false
},destroy:function(){this._isDestroy=true;
this.hide();
this.disable();
this.$dom().removeData("socrataTip")
},adjustPosition:function(adjAmt){var sTipObj=this;
if(sTipObj._disabled||!sTipObj._visible){return
}var $tip=$getTipBox(sTipObj);
if(!$.isBlank(adjAmt.top)){$tip.css("top",$tip.position().top+adjAmt.top)
}if(!$.isBlank(adjAmt.left)){$tip.css("left",$tip.position().left+adjAmt.left)
}},getTipPosition:function(){var sTipObj=this;
if(!sTipObj._visible){return null
}var $tip=$getTipBox(sTipObj).find(".bt-content");
var pos=null;
if(parseInt($tip.css("margin-bottom"))>0){pos="top"
}else{if(parseInt($tip.css("margin-top"))>0){pos="bottom"
}else{if(parseInt($tip.css("margin-right"))>0){pos="left"
}else{if(parseInt($tip.css("margin-left"))>0){pos="right"
}}}}return pos
}}});
var $getTipBox=function(sTipObj){return $(sTipObj.$dom().data("bt-box"))
};
$.fn.socrataAlert=function(options){if(typeof options=="string"){options={message:options}
}var opts=$.extend({},$.fn.socrataAlert.defaults,options);
return this.each(function(){var $socrataAlert=$(this);
var config=$.meta?$.extend({},opts,$socrataAlert.data()):opts;
if(_.isNull(config.message)){return
}if(config.overlay){config.positions="left";
config.overlap=$socrataAlert.width()/2;
config.showSpike=false;
delete config.overlay
}if($socrataAlert.isSocrataTip()){$socrataAlert.socrataTip().destroy()
}$socrataAlert.socrataTip(config);
setTimeout(function(){$socrataAlert.socrataTip().hide()
},5000)
})
};
$.fn.socrataAlert.defaults={message:null,overlay:false,trigger:"now"}
})(jQuery);
var textPromptNS=blist.namespace.fetch("blist.widgets.textPrompt");
$(function(){$.fn.example.defaults.className="prompt";
$(".textPrompt").example(function(){return $(this).attr("title")
});
if(!$.isBlank($.validator)){var oldReq=$.validator.methods.required;
$.validator.methods.required=function(value,element,param){if(element.nodeName.toLowerCase()=="input"&&element.type.toLowerCase()=="text"&&$(element).hasClass("prompt")){return false
}return oldReq.apply(this,[value,element,param])
}
}});
(function($){$.fn.extend({valueManager:function(valueManager){if(valueManager===undefined){return this.data("value-manager")
}this.data("value-manager",valueManager);
return this
},name:function(){var name;
var valueManager=this.data("value-manager");
if(valueManager&&valueManager.name){name=(typeof valueManager.name=="function"?valueManager.name():valueManager.name)
}if(name==null){name=this.attr("name")||this.attr("id")
}return name||undefined
},value:function(value){if(value===undefined){var returnValue=value;
this.each(function(){var $this=$(this);
var valueManager=$this.data("value-manager");
if(value===undefined){if(valueManager&&valueManager.get){returnValue=valueManager.get(value)
}else{if(this.tagName=="TEXTAREA"){returnValue=$this.val();
if(returnValue===""){returnValue=null
}}else{if(this.tagName=="INPUT"||this.tagName=="SELECT"){if($this.attr("type")=="checkbox"||$this.attr("type")=="radio"){returnValue=$this.attr("checked")?true:false
}else{returnValue=this.value;
if(returnValue===""){returnValue=null
}}}}}if(returnValue!==undefined){return false
}}});
return returnValue
}this.each(function(){var $this=$(this);
var valueManager=$this.data("value-manager");
if(valueManager&&valueManager.set){valueManager.set(value)
}else{if(this.tagName=="TEXTAREA"){$this.val(value==null?"":value)
}else{if(this.tagName=="INPUT"||this.tagName=="SELECT"){if($this.attr("type")=="checkbox"||$this.attr("type")=="radio"){$this.attr("checked",value?true:false)
}else{this.value=value==null?"":value
}}}}});
return this
},values:function(values,get){if(values===undefined){values={};
if(get==undefined){get=true
}}this.each(function(){var hasValue=false;
var $this=$(this);
if($this.data("value-manager")){hasValue=true
}else{switch(this.tagName){case"INPUT":case"SELECT":case"TEXTAREA":hasValue=true;
break
}}if(hasValue){var name=$this.name();
if(name){if(get){values[name]=$this.value()
}else{$this.value(values[name])
}}}});
var $children=$(this).children();
if($children.length){$children.values(values,get)
}return values
},valuesRead:function(options){},valuesWrite:function(option){}})
})(jQuery);
(function($){$.fn.dropdownMenu=function(options){var opts=$.extend({},$.fn.dropdownMenu.defaults,options);
return this.each(function(){var $menu=$(this);
var config=$.meta?$.extend({},opts,$menu.data()):$.extend({},$menu.data("config-dropdownMenu"),opts);
$menu.data("config-dropdownMenu",config);
var $trigger=config.triggerButton||$menu.closest(config.menuContainerSelector).find(config.triggerButtonSelector);
$menu.data("triggerButton",$trigger);
$trigger.unbind("click.dropdownMenu.menu_trigger");
$trigger.bind("click.dropdownMenu.menu_trigger",function(event){event.preventDefault();
if(config.openTest===undefined||config.openTest(event,$menu)){event.stopPropagation();
if(!$menu.hasClass(config.menuOpenClass)){showMenu($menu)
}else{hideMenu($menu)
}}});
$menu.unbind("close.dropdownMenu");
$menu.bind("close.dropdownMenu",function(event){hideMenu($menu)
});
if(config.linkCallback!==undefined){$menu.find("a").unbind("click.dropdownMenu.menu_callback").bind("click.dropdownMenu.menu_callback",function(event){config.linkCallback(event,$menu,$trigger)
})
}var $submenus=$menu.find(config.submenuSelector);
if($submenus.length>0){$submenus.unbind("click.dropdownMenu.menu_subclick").bind("click.dropdownMenu.menu_subclick",function(event){if($(event.currentTarget).children("a").find("*").andSelf().index(event.target)>=0){event.stopPropagation()
}}).unbind("mouseover.dropdownMenu.menu_subactivate").bind("mouseover.dropdownMenu.menu_subactivate",function(event){activateSubmenu(event,$menu)
});
$menu.find("li").unbind("mouseover.dropdownMenu.menu_subclose").bind("mouseover.dropdownMenu.menu_subclose",function(event){closeSubmenus(event,$menu)
})
}$menu.find(config.menuSelector).andSelf().filter(config.optionMenuSelector).children("li").unbind("click.dropdownMenu.menu_optclick").bind("click.dropdownMenu.menu_optclick",function(event){$(this).closest(config.menuSelector).children("li").removeClass(config.selectedItemClass);
$(this).closest("li").addClass(config.selectedItemClass)
});
if($menu.is(config.multilevelMenuSelector)){$menu.find(config.topLevelLinkSelector).unbind("click.dropdownMenu.menu_multilevel").bind("click.dropdownMenu.menu_multilevel",function(event){event.stopPropagation()
}).unbind("mouseover.dropdownMenu.menu_multilevel").bind("mouseover.dropdownMenu.menu_multilevel",function(event){activateTopLevelOption(event,$menu)
})
}if(config.menuBar!==undefined){$trigger.unbind("mouseover.dropdownMenu.menu_menubar").bind("mouseover.dropdownMenu.menu_menubar",function(event){var $otherMenus=config.menuBar.find("."+config.menuOpenClass+":not(#"+$menu.attr("id")+")");
if($otherMenus.length>0){$otherMenus.each(function(){hideMenu($(this))
});
showMenu($menu)
}})
}})
};
function showMenu($menu){var documentHeight=$(document).height();
var config=$menu.data("config-dropdownMenu");
$(config.menuSelector+":visible").each(function(){hideMenu($(this))
});
$menu.addClass(config.menuOpenClass);
if(config.openCallback!=null){config.openCallback($menu)
}var $trigger=$menu.data("triggerButton");
$trigger.addClass(config.triggerOpenClass);
$(document).bind("click."+$menu.attr("id"),function(event){documentClickedHandler(event,$menu)
});
if(config.closeOnKeyup){$(document).one("keyup",function(event){hideMenu($menu)
})
}if(config.matchTriggerWidth){$menu.width($trigger.outerWidth(false))
}if(config.forcePosition){$menu.css("left",$trigger.position().left);
$menu.css("top",$trigger.position().top+$trigger.outerHeight(true))
}if(config.pullToTop){config._origPosition=$menu.position();
var offsetPos=$menu.offset();
offsetPos.top+=$menu.offsetParent().scrollTop();
$menu.css(offsetPos).appendTo("body")
}if(config.closeOnResize){$(window).one("resize",function(){hideMenu($menu)
})
}if(config._origWidth){$menu.css("width",config._origWidth)
}if($menu.offset().left+$menu.outerWidth(true)>$(window).width()){if($trigger.offset().left+$trigger.outerWidth(true)-$menu.outerWidth(true)<0){config._origWidth=$menu.css("width");
$menu.css("width",$(window).width()-$menu.offset().left-5)
}else{$menu.css("left",$menu.position().left-($menu.outerWidth(true)-$trigger.outerWidth(true)))
}}if($menu.offset().top+$menu.outerHeight(false)>documentHeight){if($trigger.offset().top-$menu.outerHeight(true)>0){$menu.css("top",$menu.position().top-($menu.outerHeight(true)+$trigger.outerHeight(true)))
}}}function hideMenu($menu){var config=$menu.data("config-dropdownMenu");
if(!config){return
}var $trigger=$menu.data("triggerButton");
if(config.pullToTop&&$trigger[0].parentNode){$menu.css(config._origPosition).insertAfter($trigger)
}$menu.removeClass(config.menuOpenClass);
closeSubmenus(null,$menu);
$trigger.removeClass(config.triggerOpenClass);
$(document).unbind("click."+$menu.attr("id"))
}function closeSubmenus(event,$menu){var config=$menu.data("config-dropdownMenu");
$menu.find("."+config.menuOpenClass).each(function(){if(!event||($(this).find("*").index(event.currentTarget)<0&&$(this).parents("*").index(event.currentTarget)<0)){$(this).removeClass(config.menuOpenClass)
}})
}function documentClickedHandler(event,$menu){var $target=$(event.target);
if($target.parents("*").index($menu[0])<0||$target.is("a:not(.noClose)")||$target.parents("a:not(.noClose)").length>0){hideMenu($menu)
}}function activateTopLevelOption(event,$menu){var config=$menu.data("config-dropdownMenu");
closeSubmenus(null,$menu);
$menu.find("."+config.activeClass).removeClass(config.activeClass);
$(event.currentTarget).closest("li").addClass(config.activeClass)
}function activateSubmenu(event,$menu){var config=$menu.data("config-dropdownMenu");
var $submenus=$(event.currentTarget).children(config.menuSelector);
$submenus.addClass(config.menuOpenClass);
$submenus.css("top",Math.min(0,$(window).height()+$(window).scrollTop()-($submenus.offsetParent().offset().top+$submenus.outerHeight(true))));
$submenus.css("left","");
if($(window).width()<$submenus.offset().left+$submenus.outerWidth(true)){$submenus.css("left",-$submenus.outerWidth(true)+5)
}}$.fn.dropdownMenu.defaults={activeClass:"active",closeOnKeyup:false,forcePosition:false,matchTriggerWidth:false,menuContainerSelector:"li",menuOpenClass:"shown",menuSelector:"ul.menu",multilevelMenuSelector:".multilevelMenu",openCallback:function($menu){},optionMenuSelector:".optionMenu",pullToTop:false,selectedItemClass:"checked",submenuSelector:".submenu",topLevelLinkSelector:"dt a",triggerButtonSelector:"a.dropdownLink",triggerOpenClass:"clicked"}
})(jQuery);
$(function(){$.live("a[rel$=external]","focus",function(event){this.target="_blank"
});
$.live("a[rel$=external]","mouseover",function(event){this.target="_blank"
});
$.validator.addMethod("customUrl",function(value,element){if(this.optional(element)){return true
}var regEx=/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i;
if(!/^(https?|ftp):\/\//i.test(value)){if(regEx.test("http://"+value)){$(element).val("http://"+value);
return true
}}else{return regEx.test(value)
}return false
});
setTimeout(function(){$("#maintenanceNotice").fadeOut()
},5000)
});