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);};}());var TimeSpan=function(days,hours,minutes,seconds,milliseconds){var attrs="days hours minutes seconds milliseconds".split(/\s+/);var gFn=function(attr){return function(){return this[attr];};};var sFn=function(attr){return function(val){this[attr]=val;return this;};};for(var i=0;i<attrs.length;i++){var $a=attrs[i],$b=$a.slice(0,1).toUpperCase()+$a.slice(1);TimeSpan.prototype[$a]=0;TimeSpan.prototype["get"+$b]=gFn($a);TimeSpan.prototype["set"+$b]=sFn($a);}
if(arguments.length==4){this.setDays(days);this.setHours(hours);this.setMinutes(minutes);this.setSeconds(seconds);}else if(arguments.length==5){this.setDays(days);this.setHours(hours);this.setMinutes(minutes);this.setSeconds(seconds);this.setMilliseconds(milliseconds);}else if(arguments.length==1&&typeof days=="number"){var orient=(days<0)?-1:+1;this.setMilliseconds(Math.abs(days));this.setDays(Math.floor(this.getMilliseconds()/86400000)*orient);this.setMilliseconds(this.getMilliseconds()%86400000);this.setHours(Math.floor(this.getMilliseconds()/3600000)*orient);this.setMilliseconds(this.getMilliseconds()%3600000);this.setMinutes(Math.floor(this.getMilliseconds()/60000)*orient);this.setMilliseconds(this.getMilliseconds()%60000);this.setSeconds(Math.floor(this.getMilliseconds()/1000)*orient);this.setMilliseconds(this.getMilliseconds()%1000);this.setMilliseconds(this.getMilliseconds()*orient);}
this.getTotalMilliseconds=function(){return(this.getDays()*86400000)+(this.getHours()*3600000)+(this.getMinutes()*60000)+(this.getSeconds()*1000);};this.compareTo=function(time){var t1=new Date(1970,1,1,this.getHours(),this.getMinutes(),this.getSeconds()),t2;if(time===null){t2=new Date(1970,1,1,0,0,0);}
else{t2=new Date(1970,1,1,time.getHours(),time.getMinutes(),time.getSeconds());}
return(t1<t2)?-1:(t1>t2)?1:0;};this.equals=function(time){return(this.compareTo(time)===0);};this.add=function(time){return(time===null)?this:this.addSeconds(time.getTotalMilliseconds()/1000);};this.subtract=function(time){return(time===null)?this:this.addSeconds(-time.getTotalMilliseconds()/1000);};this.addDays=function(n){return new TimeSpan(this.getTotalMilliseconds()+(n*86400000));};this.addHours=function(n){return new TimeSpan(this.getTotalMilliseconds()+(n*3600000));};this.addMinutes=function(n){return new TimeSpan(this.getTotalMilliseconds()+(n*60000));};this.addSeconds=function(n){return new TimeSpan(this.getTotalMilliseconds()+(n*1000));};this.addMilliseconds=function(n){return new TimeSpan(this.getTotalMilliseconds()+n);};this.get12HourHour=function(){return(this.getHours()>12)?this.getHours()-12:(this.getHours()===0)?12:this.getHours();};this.getDesignator=function(){return(this.getHours()<12)?Date.CultureInfo.amDesignator:Date.CultureInfo.pmDesignator;};this.toString=function(format){this._toString=function(){if(this.getDays()!==null&&this.getDays()>0){return this.getDays()+"."+this.getHours()+":"+this.p(this.getMinutes())+":"+this.p(this.getSeconds());}
else{return this.getHours()+":"+this.p(this.getMinutes())+":"+this.p(this.getSeconds());}};this.p=function(s){return(s.toString().length<2)?"0"+s:s;};var me=this;return format?format.replace(/dd?|HH?|hh?|mm?|ss?|tt?/g,function(format){switch(format){case"d":return me.getDays();case"dd":return me.p(me.getDays());case"H":return me.getHours();case"HH":return me.p(me.getHours());case"h":return me.get12HourHour();case"hh":return me.p(me.get12HourHour());case"m":return me.getMinutes();case"mm":return me.p(me.getMinutes());case"s":return me.getSeconds();case"ss":return me.p(me.getSeconds());case"t":return((me.getHours()<12)?Date.CultureInfo.amDesignator:Date.CultureInfo.pmDesignator).substring(0,1);case"tt":return(me.getHours()<12)?Date.CultureInfo.amDesignator:Date.CultureInfo.pmDesignator;}}):this._toString();};return this;};Date.prototype.getTimeOfDay=function(){return new TimeSpan(0,this.getHours(),this.getMinutes(),this.getSeconds(),this.getMilliseconds());};var TimePeriod=function(years,months,days,hours,minutes,seconds,milliseconds){var attrs="years months days hours minutes seconds milliseconds".split(/\s+/);var gFn=function(attr){return function(){return this[attr];};};var sFn=function(attr){return function(val){this[attr]=val;return this;};};for(var i=0;i<attrs.length;i++){var $a=attrs[i],$b=$a.slice(0,1).toUpperCase()+$a.slice(1);TimePeriod.prototype[$a]=0;TimePeriod.prototype["get"+$b]=gFn($a);TimePeriod.prototype["set"+$b]=sFn($a);}
if(arguments.length==7){this.years=years;this.months=months;this.setDays(days);this.setHours(hours);this.setMinutes(minutes);this.setSeconds(seconds);this.setMilliseconds(milliseconds);}else if(arguments.length==2&&arguments[0]instanceof Date&&arguments[1]instanceof Date){var d1=years.clone();var d2=months.clone();var temp=d1.clone();var orient=(d1>d2)?-1:+1;this.years=d2.getFullYear()-d1.getFullYear();temp.addYears(this.years);if(orient==+1){if(temp>d2){if(this.years!==0){this.years--;}}}else{if(temp<d2){if(this.years!==0){this.years++;}}}
d1.addYears(this.years);if(orient==+1){while(d1<d2&&d1.clone().addDays(Date.getDaysInMonth(d1.getYear(),d1.getMonth()))<d2){d1.addMonths(1);this.months++;}}
else{while(d1>d2&&d1.clone().addDays(-d1.getDaysInMonth())>d2){d1.addMonths(-1);this.months--;}}
var diff=d2-d1;if(diff!==0){var ts=new TimeSpan(diff);this.setDays(ts.getDays());this.setHours(ts.getHours());this.setMinutes(ts.getMinutes());this.setSeconds(ts.getSeconds());this.setMilliseconds(ts.getMilliseconds());}}
return this;};var response_commands={};var commands={};var parser_prototype={_initializeOn:'mouseover',command:null,nodeElement:null,element:null,nodeId:null,_initBase:function(){this.messages={};this.urls={};},setMsg:function(key,msg){this.messages[key]=msg;},setUrl:function(key,url){this.urls[key]=url;},init:function(){return;},isAttrBased:function(){var attr=this.element.attr('data-status');return typeof attr!=='undefined'&&attr!==false;},getStatus:function(){if(this.isAttrBased()){return this.element.attr("data-status");}
return this.element.hasClass('on')?'on':'off';},setStatus:function(status){if(this.isAttrBased()){this.element.attr("data-status",status);return;}
status=='on'?this.element.addClass('on'):this.element.removeClass('on');},switchStatus:function(){this.setStatus(this.getStatus()=="on"?'off':'on');},getUrlSkeleton:function(name){return this.urls[name]!=undefined?this.urls[name]:false;},getParsedUrl:function(name){var urlSkeleton=this.getUrlSkeleton(name);if(urlSkeleton){return urlSkeleton.replace(new RegExp('%25ID%25','g'),this.nodeId);}
return null;},getUrl:function(){var url=this.getParsedUrl('click.'+this.getStatus());if(!url){url=this.getParsedUrl('click');}
if(url){return url;}
url=this.element.attr('href');return url?url:false;},getMessage:function(name){return this.messages[name]!=undefined?this.messages[name]:null;},getTitle:function(){var title=this.getMessage('title.'+this.getStatus());if(title==null){title=this.getMessage('title');}
return title;},getLinkText:function(){var text=this.getMessage('linkText.'+this.getStatus());if(text==null){text=this.getMessage('linkText');}
return text;},updateTitle:function(){var title=this.getTitle();if(title!=null){this.element.attr('title',title);}},updateLinkText:function(){var text=this.getLinkText();if(text!=null){this.element.html(text);}},executeRequest:function(data,evt){try{var rUrl=this.getUrl();if(rUrl){var parser=this;var response_type=this.getResponseType().toLowerCase();var opts={url:rUrl,cache:false,success:function(data){parser.onSuccess(data,evt);parser.onCompleted(true,evt);},error:function(request,status,error){var data=request.responseText;if(response_type=='json'){try{data=$.parseJSON(data);}catch(e){console.log(e)}}
parser.onFailure(data,request.status,status,evt);parser.onCompleted(false,evt);},type:this.getRequestMethod().toUpperCase(),dataType:response_type,traditional:true};if(data){opts.data=data;}
$.ajax(opts);}}catch(e){console.error(e);}},execute:function(evt){this.executeRequest(this.getRequestData(),evt);},onSuccess:function(data,evt){return;},onCompleted:function(success,evt){if(success){this.switchStatus();this.updateTitle();this.updateLinkText();}},onFailure:function(data,status,error,evt){if(data.errors!=undefined&&data.errors.message!=undefined){this.alert(evt,data.errors.message);}},getRequestMethod:function(){return'POST';},getResponseType:function(){return'json';},getRequestData:function(){return this.element.dataAttributes();},confirm:function(evt,title,msg){var parser=this;commandUtils.showConfirmation(evt,title,msg,function(){parser.executeRequest(parser.getRequestData(),evt);})},alert:function(evt,msg){var parser=this;commandUtils.showMessage(evt,msg);},dialog:function(evt,dialogId,context){var parser=this;commandUtils.showPrompt(evt,dialogId,context?context:this.messages,{onOk:function(data){parser.executeRequest(data);}});}};function create_object(o){function F(){}
F.prototype=o;return new F();}
function register_command(command,parser){var base=create_object(parser_prototype);base.command=command;if(parser){$.extend(base,parser);}
base._initBase();commands[command]=base;}
var commandUtils={reloadPage:function(){window.location.href=window.location.href.replace(/#[^#]*$/,'');},getScript:function(url,success){if(url.constructor==Array){function run(i){if(i<url.length){commandUtils.getScript(url[i],function(){run(++i);});}else{if(success){success();}}}
run(0);}
var script=document.createElement('script');script.src=url;var head=document.getElementsByTagName('head')[0],done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=='loaded'||this.readyState=='complete')){done=true;if(success){success();}
script.onload=script.onreadystatechange=null;head.removeChild(script);}};head.appendChild(script);},getStyle:function(url){if(url.constructor==Array){for(var i=0;i<url.length;i++){commandUtils.getStyle(url[i]);}}
var style=document.createElement('link');style.type='text/css';style.rel='stylesheet';style.href=url;style.media='screen';document.getElementsByTagName('head')[0].appendChild(style);},loadExtraScript:function(extra,callback){if(extra.css){commandUtils.getStyle(extra.css);}
if(extra.js){commandUtils.getScript(extra.js,callback);}},preloadImage:function(src,success){var img=document.createElement('img');img.src=src;$(img).hide();var body=document.getElementsByTagName('body')[0],done=false;img.onload=img.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=='loaded'||this.readyState=='complete')){done=true;if(success){success();}
img.onload=img.onreadystatechange=null;body.removeChild(img);}};body.appendChild(img);},findNodeElement:function($el){var $with_nodeid=$el.parents("*[nodeid]");if($with_nodeid.length>0){return $($with_nodeid.get(0));}
return null;},findCommand:function(nodeId,commandName){return $('*[nodeId='+nodeId+'] *[command='+commandName+']');},extractCommand:function($el){var parser=$el.data('command_parser');if(!parser){var command=$el.attr('command');if(commands[command]!=undefined){parser=create_object(commands[command]);parser.element=$el;var $node_el=this.findNodeElement($el);if($node_el!=null){parser.nodeElement=$node_el;parser.nodeId=$node_el.attr('nodeId');}
parser.init();$el.data('command_parser',parser);}}
return parser;},findAndExtractCommand:function(nodeId,commandName){return this.extractCommand(this.findCommand(nodeId,commandName));},initializeLabels:function(){$("*[command]").each(function(){var parser=commandUtils.extractCommand($(this));if(parser){parser.updateTitle();parser.updateLinkText();}});},updatePostScore:function(id,newScore,hideOnZero){var $score_box=$('#post-'+id+'-score');$score_box.css('background','yellow');$score_box.html(newScore);$score_box.animate({backgroundColor:"transparent"},1000,function(){if(newScore==0&&hideOnZero){$score_box.html('');}});},startCommand:function(){$('body').append($('<div id="command-loader"></div>'));running=true;},endCommand:function(success){if(success){$('#command-loader').addClass('success');$('#command-loader').fadeOut("slow",function(){$('#command-loader').remove();running=false;});}else{$('#command-loader').remove();running=false;}},renderTemplate:function(id,context){$.extend(context,pageContext);return $('#'+id).tmpl(context);},renderTemplateSource:function(src,context){$.extend(context,pageContext);return $.tmpl(src,context);},closeDialogFunction:function($diag){return function(){$diag.dialog("close");}},dialogSkeleton:function(options){return{type:'src',value:'<div class="${extraClass}" style="display: none;"><div>${content}</div></div>'}},renderDialog:function($dialog,options){var ui_options={draggable:false,modal:true,width:options.dim.w>200?'auto':200,height:'auto',position:'center'};if(options.ui_options){$.extend(true,ui_options,options.ui_options);}
if(!ui_options.buttons){ui_options.buttons={};}
if(options.title!=undefined){ui_options.title=options.title;}
var closeFunction=this.closeDialogFunction($dialog);if(options.show_yes){ui_options.buttons[options.yes_text]=function(){options.yes_callback($dialog,closeFunction);}}
if(options.show_no){ui_options.buttons[options.no_text]=closeFunction;}
return{element:$dialog,display:function(){$dialog.css('visibility','visible');$dialog.dialog(ui_options);}};},showDialog:function(extern){var options={title:'',extra_class:'',pos:{x:($(window).width()/2)+$(window).scrollLeft(),y:($(window).height()/2)+$(window).scrollTop()},yes_text:pageContext.i18n.ok,show_yes:true,yes_callback:function(){},no_text:pageContext.i18n.cancel,show_no:false,close_on_clickoutside:false};$.extend(true,options,extern);var replace_id=null;if(options.html!=undefined){options.content=options.html;}else{replace_id='replace_'+Math.floor(Math.random()*111111);options.content=replace_id;}
var skeleton=this.dialogSkeleton(options);var $dialog;if(skeleton.type='src'){$dialog=this.renderTemplateSource(skeleton.value,options);}else{$dialog=this.renderTemplate(skeleton.value,options);}
if(replace_id){var $content=$dialog.find("*:contains('"+replace_id+"')");$content.contents().remove();$content.append(options.nodes);}
$dialog.css({visibility:'hidden',display:'block'});$('body').append($dialog);if(options.dim===undefined){options.dim={};}
if(options.dim.w===undefined){options.dim.w=$dialog.width();}
if(options.dim.h===undefined){options.dim.h=$dialog.height();}
var dialog=this.renderDialog($dialog,options);if(options.beforeShow){options.beforeShow(dialog.element);}
dialog.display();if(options.onAfterShow){options.onAfterShow();}
return dialog.element;},getDialogNodes:function(options,defFunc,baseContext){if(options.tpl){var context=options.context?options.context:(options.dialogContext?options.dialogContext:{});if(options.context){context=options.context;}
$.extend(context,baseContext);return commandUtils.renderTemplate(options.tpl,context);}else if(options.nodes){return options.nodes;}else{return defFunc();}},uploadTrackers:0,createUploadTracker:function(authorizeUrl,authorizeContext,callbacks){this.uploadTrackers+=1;var trackerId="uploadTracker"+this.uploadTrackers;var tracker='<span id="'+trackerId+'">0%</span>';var errors=0;function track(trackingId){$.ajax({type:'POST',url:pageContext.url.uploadProgress,data:{'trackingId':trackingId},success:function(data){if(data.success){$('#'+trackerId).html(data.result.progress+'%');if(!data.result.complete){track(trackingId);}else{if(callbacks.onSuccess){callbacks.onSuccess(data);}}}else{errors++;if(errors>3&&callbacks.onError){callbacks.onError(data);}else{track(trackingId);}}},dataType:'json',traditional:true});}
$.ajax({type:'POST',url:authorizeUrl,data:authorizeContext,success:function(data){if(data.success){callbacks.onAuthorize(true,data.result.trackingId);track(data.result.trackingId);}else{callbacks.onAuthorize(false,(data.errors&&data.errors.error)?data.errors.error:"unauthorized");}},dataType:'json',traditional:true});return tracker;},createUploadDialogNodes:function(){var $nodes=$('<div></div>');$nodes.append($('<h3>'+pageContext.i18n.uploadDialog.uploadFile+'</h3>'));var $form=$('<form enctype="multipart/form-data" method="POST" target="uploaderFrame"></form>');$form.append($('<input type="file" name="file" />'));$nodes.append($form);var $progressContainer=$('<span id="uploadProgressContainer"></span>');$nodes.append($progressContainer);return $nodes;},showUploadDialog:function(evt,options){var doptions={nodes:commandUtils.getDialogNodes(options,commandUtils.createUploadDialogNodes,pageContext.i18n.uploadDialog),title:pageContext.i18n.uploadDialog.uploadFile,yes_text:pageContext.i18n.uploadDialog.doUpload,show_no:true};var $progressContainer=doptions.nodes.find(options.progressContainer?options.progressContainer:"#uploadProgressContainer");var $form=doptions.nodes.find('form');var isUploading=false;var actions={dialog:null,close:null,authorizeAndStart:function(){var trackingId=null;var $tracker=commandUtils.createUploadTracker(options.authorizeUrl,options.authorizeContext,{onAuthorize:function(authorized,msg){if(authorized){trackingId=msg;$form.attr('action',pageContext.url.uploadFile+'?trackingId='+msg);var $frame=$('<iframe name="uploaderFrame" style="display: none;"></iframe>');$progressContainer.after($frame);$form.submit();}else{actions.close();commandUtils.showMessage(evt,msg);}},onSuccess:function(data){function done(){if(options.onSuccess){options.onSuccess(trackingId,data.result);actions.close();}}
if(data.result.isImage&&(options.disableCrop==undefined||!options.disableCrop)){var previewOptions=options.previewDialogOptions?options.previewDialogOptions:{};previewOptions.fileData=data.result;if(previewOptions.beforeShow){var oldBeforeShow=options.beforeShow;previewOptions.beforeShow=function($dialog){actions.close();oldBeforeShow($dialog);}}else{previewOptions.beforeShow=function(){actions.close();}}
previewOptions.onSuccess=function(){done();}
commandUtils.showPreviewAndCropDialog(evt,previewOptions);}else{done();}},onError:function(data){if(options.onError){options.onError();}
if(data.errors&&data.errors.error){actions.close();commandUtils.showMessage(evt,data.errors.error);}}});if(!isUploading){$progressContainer.append($tracker);isUploading=true;}}};doptions.yes_callback=function($dialog,close){actions.close=close;actions.dialog=$dialog;if(options.yes_callback){options.yes_callback($dialog,close,actions);}else{actions.authorizeAndStart();}};if(options.dialogContext){$.extend(options.dialogContext,doptions);doptions=options.dialogContext;}
this.showDialog(doptions);},createPreviewAndCropDialogNodes:function(){var $nodes=$('<div></div>');$nodes.append($('<h3>'+pageContext.i18n.previewAndCropDialog.previewAndResize+'</h3>'));var $table=$('<table>'+'<tr><td style="padding: 5px; border: 1px solid black;">'+'<img class="previewEditor" style="max-width: 500px; max-height: 500px;" src="" />'+'</td>'+'</tr></table>');$nodes.append($table);return $nodes;},jcropLoaded:false,showPreviewAndCropDialog:function(evt,options){var doptions={nodes:commandUtils.getDialogNodes(options,commandUtils.createPreviewAndCropDialogNodes,pageContext.i18n.previewAndCropDialog),title:pageContext.i18n.previewAndCropDialog.previewAndResize,yes_text:pageContext.i18n.previewAndCropDialog.accept,show_no:true};var $imageEditor=doptions.nodes.find(options.editor?options.editor:'.previewEditor');var $imagePreview=doptions.nodes.find(options.preview?options.preview:'.finalPreview');var data={'file':options.fileData.fileId,x:0,y:0,w:0,h:0};function showPreview(coords){var rx=100/coords.w;var ry=100/coords.h;$imagePreview.css({width:Math.round(rx*500)+'px',height:Math.round(ry*500)+'px',marginLeft:'-'+Math.round(rx*coords.x)+'px',marginTop:'-'+Math.round(ry*coords.y)+'px'});data.x=coords.x;data.y=coords.y;data.w=coords.w;data.h=coords.h;}
doptions.yes_callback=function($dialog,close){data.refWidth=$imageEditor.width();data.refHeight=$imageEditor.height();$.ajax({type:'POST',url:pageContext.url.cropUpload,data:data,success:function(data){if(data.success){close();if(data.result.newSize){options.fileData.size=data.result.newSize;}
if(options.onSuccess){options.onSuccess();}}else{if(data.errors&&data.errors.image){close();commandUtils.showMessage(evt,data.errors.image);}}},dataType:'json'});};if(options){$.extend(options,doptions);doptions=options;}
var noCacheImageUrl=options.fileData.url+"?noCache="+(new Date().getTime()+""+Math.floor(Math.random()*1001));commandUtils.preloadImage(noCacheImageUrl,function(){$imageEditor.attr('src',noCacheImageUrl);$imagePreview.attr('src',noCacheImageUrl);commandUtils.showDialog(doptions);function setupEditor(){commandUtils.jcropLoaded=true;var jcropOptions={onChange:showPreview,onSelect:showPreview};if(options.forceSquare){jcropOptions.aspectRatio=1;}
$imageEditor.Jcrop(jcropOptions);}
if(!commandUtils.jcropLoaded){commandUtils.loadExtraScript(pageContext.extraScripts.jcrop,setupEditor);}else{setupEditor();}});},showMessage:function(evt,msg,callback){msg=msg.replace("\n","<br />");msg=msg.replace(new RegExp(pageContext.i18n.login,"ig"),'<a href="'+pageContext.url.login+'">'+pageContext.i18n.login+'</a>');msg=msg.replace(new RegExp(pageContext.i18n.register,"ig"),'<a href="'+pageContext.url.register+'">'+pageContext.i18n.register+'</a>');return this.showDialog({nodes:$('<span>'+msg+'</span>'),extra_class:'warning',event:evt,yes_callback:function($dialog,close){close()
if(callback){callback();}},close_on_clickoutside:true});},showConfirmation:function(evt,title,msg,callback){return this.showDialog({event:evt,title:title?title:'',nodes:$('<center>'+(msg?msg:pageContext.i18n.confirm)+'</center>'),extra_class:'prompt',show_no:true,no_test:pageContext.i18n.no,yes_text:pageContext.i18n.yes,yes_callback:function($dialog,close){if(callback){callback();}
close();}});},showPrompt:function(evt,tpl,context,options){var doptions={nodes:commandUtils.renderTemplate(tpl,context),extra_class:'prompt',yes_callback:function($dialog,close){var data=commandUtils.extractFormData($dialog);if(options.onOk!=undefined){options.onOk(data);}
close();},show_no:true};if(options){$.extend(options,doptions);}else{options=doptions;}
if(options.centered==undefined||!options.centered){options.event=evt;}
return this.showDialog(options);},extractFormData:function($el){var ret={};var data=null;if($el.is('form')){data=$el.serializeArray();}else{data=$el.find('form').serializeArray();}
for(var i=0;i<data.length;i++){if(ret[data[i].name]){var old=ret[data[i].name];if(old.constructor==Array){old.push(data[i].value);}else{var a=new Array();a.push(old);a.push(data[i].value);ret[data[i].name]=a;}}else{ret[data[i].name]=data[i].value;}}
return ret;},fillFormData:function($form,values){$form.find(':text, :password, :file, textarea').each(function(){var $input=$(this);$input.val(values[$input.attr('name')?$input.attr('name'):'']);});$form.find('input[type=radio], input[type=checkbox], option').each(function(){var $input=$(this);var name=this.tagName.toUpperCase()=='OPTION'?$input.parents('select').attr('name'):$input.attr('name');var value=values[name];if(value&&((value.constructor==Array&&$.inArray($input.val(),value)>=0)||(value==$input.val()))||(value===true)){$input.attr('checked','checked').attr('selected','selected');}else{$input.removeAttr('checked').removeAttr('selected');}});},friendlyDate:function(toParse,def){var dif=null;var date=null;var parsed=null;var now=Date.today().setTimeToNow();if(toParse.constructor==Date){date=toParse;}else{var negateServerOffset=false;var serverOffset=0;var splitted=toParse.split("+");if(splitted.length!=2){splitted=toParse.split("-");negateServerOffset=true;}
if(splitted.length==2){serverOffset=parseInt(splitted[1],10)/100;toParse=splitted[0];}
var viewerOffset=parseInt(new Date().getUTCOffset(),10)/100;if(negateServerOffset)serverOffset=(0-serverOffset);date=Date.parse(toParse).addHours(viewerOffset-serverOffset);}
dif=new TimeSpan(now-date);if(dif.getDays()>10||pageContext.useRelativeTime!=true){if(def){parsed=def;}else{if(dif.getDays()>=365){parsed=date.toString("MMM dd 'yy");}else{parsed=date.toString("MMM dd")}
parsed=parsed+" "+pageContext.i18n.timeAt+" "+date.toString("h:mm tt");}}else{if(dif.getDays()>1){parsed=dif.getDays()+' '+pageContext.i18n.days;}else if(dif.getDays()==1){parsed='1 '+pageContext.i18n.day;}else if(dif.getHours()>1){parsed=dif.getHours()+' '+pageContext.i18n.hours;}else if(dif.getHours()==1){parsed='1 '+pageContext.i18n.hour;}else if(dif.getMinutes()>1){parsed=dif.getMinutes()+' '+pageContext.i18n.minutes;}else if(dif.getMinutes()==1){parsed='1 '+pageContext.i18n.minute;}else if(dif.getSeconds()>1){parsed=dif.getSeconds()+' '+pageContext.i18n.seconds;}else if(dif.getSeconds()==1){parsed='1 '+pageContext.i18n.second;}else{parsed='0 '+pageContext.i18n.seconds;}
parsed=pageContext.i18n.timeAgo.replace('{0}',parsed);}
return parsed;},generateUploadTrackingCode:function(){return new Date().getTime()+""+Math.floor(Math.random()*1001)},decode:function(s){return decodeURIComponent(s.replace(/\+/g,' '));},decodeAndParse:function(s){var pluses=/\+/g;if(s.indexOf('"')===0){s=s.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,'\\');}
s=this.decode(s);return s;},getCookie:function(key){var cookies=document.cookie.split('; ');var result=key?undefined:{};for(var i=0,l=cookies.length;i<l;i++){var parts=cookies[i].split('=');var name=this.decode(parts.shift());var cookie=parts.join('=');if(key&&key===name){result=this.decodeAndParse(cookie);break;}
if(!key){result[name]=this.decodeAndParse(cookie);}}
return result;},setCookie:function(key,value,options){if(!options){options={};}
if(typeof options.expires==='number'){var days=options.expires,t=options.expires=new Date();t.setDate(t.getDate()+days);}
value=""+value;return(document.cookie=[encodeURIComponent(key),'=',encodeURIComponent(value),options.expires?'; expires='+options.expires.toUTCString():'; expires=-1',options.path?'; path='+options.path:': path=/',options.domain?'; domain='+options.domain:'',options.secure?'; secure':''].join(''));}};$(function($){commandUtils.initializeLabels();$("*[command]").live('click',function(evt){var parser=commandUtils.extractCommand($(this));if(parser){$('.context-menu-dropdown').slideUp('fast');parser.execute(evt);}
return false;});function checkFormsForCSRFToken(){$('form').each(function(){var $form=$(this);if($form.attr('method')&&$form.attr('method').toUpperCase()=='POST'&&$form.find('input[name=TH_CSRF]').length==0){$form.prepend('<input type="hidden" name="TH_CSRF" value="'+pageContext.additional.TH_CSRF+'" />');}});}
function startFormCheckTimeout(){window.setTimeout(function(){checkFormsForCSRFToken();startFormCheckTimeout();},1000);}
checkFormsForCSRFToken();startFormCheckTimeout();$(document).ajaxSend(function(elm,xhr,s){if(s.type&&s.type.toUpperCase()=="POST"){xhr.setRequestHeader('X-TH-CSRF',pageContext.additional.TH_CSRF);}});try{var jsSupportCookie=commandUtils.getCookie("TH_JS_SUPPORT");if(!jsSupportCookie){$.get(pageContext.url.trackJs);}}catch(e){}});(function($){$.fn.dataAttributes=function(){var attributes={};if(!this.length)
return this;$.each(this[0].attributes,function(index,attr){if(/^data\-/.test(attr.nodeName)){attributes[attr.nodeName.substr(5)]=attr.nodeValue;}});return attributes;}})(jQuery);if(typeof String.prototype.trim!=='function'){String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,'');}}
(function($){$(".ui-autocomplete-input").live("autocompleteopen",function(){var autocomplete=$(this).data("autocomplete"),menu=autocomplete.menu;if(!autocomplete.options.autoFocus){return;}
if(autocomplete.term!=$(this).val()){return;}
menu.options.blur=function(event,ui){return}
menu.activate($.Event({type:"mouseenter"}),menu.element.children().first());});}(jQuery));var currentMousePos={x:-1,y:-1};$(document).mousemove(function(event){currentMousePos={x:event.pageX,y:event.pageY};});commandUtils.dialogSkeleton=function(options){return{type:'src',value:'<div class="dialog ${extraClass}" style="display: none;">'
+'<div class="dialog-content">${content}</div>'
+'<div class="dialog-buttons">'
+'<button class="dialog-yes">${yes_text}</button>'
+'{{if show_no }}<button class="dialog-no">${no_text}</button>{{/if}}'
+'</div></div>'};};commandUtils.closeDialogFunction=function($diag){return function(){$diag.remove();}};commandUtils.renderDialog=function($dialog,options){if(options.event!=undefined){options.pos={x:options.event.pageX,y:options.event.pageY};}else if(currentMousePos!=undefined){options.pos=currentMousePos;}
var $message=$dialog.find('.dialog-content');$message.css('visibility','hidden');$dialog.css({top:options.pos.y,left:options.pos.x,width:1,height:1,visibility:'visible'});var top_position_change=(options.dim.h/2)
var left_position_change=(options.dim.w/2)
if(options.pos.x-left_position_change<$(window).scrollLeft()){left_position_change=options.pos.x-$(window).scrollLeft();}else if(options.pos.x+left_position_change>$(window).width()+$(window).scrollLeft()){left_position_change=($(window).width()+$(window).scrollLeft())-options.pos.x;}
if(options.pos.y-top_position_change<$(window).scrollTop()){top_position_change=options.pos.y-$(window).scrollTop();}
else if(options.pos.y+top_position_change>$(window).height()+$(window).scrollTop()){top_position_change=($(window).height()+$(window).scrollTop())-options.pos.y;}
var closeFunction=this.closeDialogFunction($dialog);if(options.close_on_clickoutside){$dialog.one('clickoutside',closeFunction);}
return{element:$dialog,display:function(){$('.context-menu-dropdown').slideUp('fast');var topAnimation="-="+top_position_change;var leftAnimation="-="+left_position_change;$dialog.animate({top:topAnimation,left:leftAnimation,width:options.dim.w,height:options.dim.h},200,function(){$message.css('visibility',"visible");$dialog.css("height","auto");if(options.onAfterShow){options.onAfterShow();}});$dialog.find('.dialog-no').click(closeFunction);$dialog.find('.dialog-yes').click(function(){options.yes_callback($dialog,closeFunction);});}};};function process_ajax_response(data,evt,callback){if(!data.success&&data['error_message']!=undefined){show_message(evt,data.error_message,function(){if(callback)callback(true);});end_command(false);}else if(typeof data['commands']!=undefined){for(var command in data.commands){response_commands[command].apply(null,data.commands[command])}
if(data['message']!=undefined){show_message(evt,data.message,function(){if(callback)callback(false);})}else{if(callback)callback(false);}
end_command(true);}}
$(function(){var numDateRegex=/^\d+$/;function checkDates(){$('.friendly-date').each(function(){try{var $el=$(this);var def=$el.data('defaultDate');if(!def){def=$.trim($el.html());$el.data('defaultDate',def);}
var toParse=$el.attr('title');if(numDateRegex.test(toParse)){toParse=parseInt(toParse);}
var parsed=commandUtils.friendlyDate(toParse,def);$el.html(parsed);}catch(e){}});}
checkDates();window.setInterval(checkDates,30*1000);$('html').live('click',function(){$('.context-menu-dropdown').slideUp('fast');});$('.context-menu-trigger').live('click',function(event){var $trigger=$(this);var $menu=$($trigger.parents('.context-menu').get(0));var $dropdown=$menu.find('.context-menu-dropdown');$dropdown.slideToggle('fast');event.stopPropagation();return false;});if($('#editor, #body').length){var $editor=$('#editor, #body');var $previewer=$('#previewer');var $container=$('#editor-metrics');var initial_whitespace_rExp=/^[^A-Za-z0-9]+/gi;var non_alphanumerics_rExp=rExp=/[^A-Za-z0-9]+/gi;var editor_interval=null;$editor.focus(function(){if(editor_interval==null){editor_interval=window.setInterval(function(){recalc_metrics();},200);}});function recalc_metrics(){var text=$previewer.text();var char_count=text.length;var fullStr=text+" ";var left_trimmedStr=fullStr.replace(initial_whitespace_rExp,"");var cleanedStr=left_trimmedStr.replace(non_alphanumerics_rExp," ");var splitString=cleanedStr.split(" ");var word_count=splitString.length-1;var metrics=char_count+" "+(char_count==1?pageContext.i18n.character:pageContext.i18n.characters);metrics+=" / "+word_count+" "+(word_count==1?pageContext.i18n.word:pageContext.i18n.words);$container.html(metrics);}}});function pickedTags(){var sendAjax=function(tagname,reason,action,callback){var url=scriptUrl;if(action=='add'){url+=$.i18n._('mark-tag/');if(reason=='good'){url+=$.i18n._('interesting/');}
else{url+=$.i18n._('ignored/');}}
else{url+=$.i18n._('unmark-tag/');}
url=url+tagname+'/';var call_settings={type:'POST',url:url,data:''};if(callback!==false){call_settings.success=callback;}
$.ajax(call_settings);};var unpickTag=function(from_target,tagname,reason,send_ajax){var deleteTagLocally=function(){from_target[tagname].remove();delete from_target[tagname];};if(send_ajax){sendAjax(tagname,reason,'remove',deleteTagLocally);}
else{deleteTagLocally();}};var setupTagDeleteEvents=function(obj,tag_store,tagname,reason,send_ajax){obj.unbind('mouseover').bind('mouseover',function(){$(this).attr('src',mediaUrl('media/images/close-small-hover.png'));});obj.unbind('mouseout').bind('mouseout',function(){$(this).attr('src',mediaUrl('media/images/close-small-dark.png'));});obj.click(function(){unpickTag(tag_store,tagname,reason,send_ajax);});};var handlePickedTag=function(obj,reason){var tagname=$.trim($(obj).prev().attr('value'));var to_target=interestingTags;var from_target=ignoredTags;var to_tag_container;if(reason=='bad'){to_target=ignoredTags;from_target=interestingTags;to_tag_container=$('div .tags.ignored');}
else if(reason!='good'){return;}
else{to_tag_container=$('div .tags.interesting');}
if(tagname in from_target){unpickTag(from_target,tagname,reason,false);}
if(!(tagname in to_target)){sendAjax(tagname,reason,'add',function(){var new_tag=$('<span></span>');new_tag.addClass('deletable-tag');var tag_link=$('<a></a>');tag_link.attr('rel','tag');tag_link.attr('href',scriptUrl+$.i18n._('tags/')+tagname);tag_link.html(tagname);var del_link=$('<img></img>');del_link.addClass('delete-icon');del_link.attr('src',mediaUrl('/media/images/close-small-dark.png'));setupTagDeleteEvents(del_link,to_target,tagname,reason,true);new_tag.append(tag_link);new_tag.append(del_link);to_tag_container.append(new_tag);to_target[tagname]=new_tag;});}};var collectPickedTags=function(){var good_prefix='interesting-tag-';var bad_prefix='ignored-tag-';var good_re=RegExp('^'+good_prefix);var bad_re=RegExp('^'+bad_prefix);interestingTags={};ignoredTags={};$('.deletable-tag').each(function(i,item){var item_id=$(item).attr('id');var tag_name,tag_store;if(good_re.test(item_id)){tag_name=item_id.replace(good_prefix,'');tag_store=interestingTags;reason='good';}
else if(bad_re.test(item_id)){tag_name=item_id.replace(bad_prefix,'');tag_store=ignoredTags;reason='bad';}
else{return;}
tag_store[tag_name]=$(item);setupTagDeleteEvents($(item).find('img'),tag_store,tag_name,reason,true);});};var setupHideIgnoredQuestionsControl=function(){$('#hideIgnoredTagsCb').unbind('click').click(function(){$.ajax({type:'POST',dataType:'json',cache:false,url:scriptUrl+$.i18n._('command/'),data:{command:'toggle-ignored-questions'}});});};return{init:function(){collectPickedTags();setupHideIgnoredQuestionsControl();$("#interestingTagInput, #ignoredTagInput").autocomplete(messages.matching_tags_url,{minChars:1,matchContains:true,max:20,formatItem:function(row,i,max,value){return row[1]+" ("+row[2]+")";},formatResult:function(row,i,max,value){return row[1];}});$("#interestingTagAdd").click(function(){handlePickedTag(this,'good');});$("#ignoredTagAdd").click(function(){handlePickedTag(this,'bad');});}};}
Hilite={elementid:"content",exact:true,max_nodes:1000,onload:true,style_name:"hilite",style_name_suffix:true,debug_referrer:""};Hilite.search_engines=[["local","q"],["cnprog\\.","q"],["google\\.","q"],["search\\.yahoo\\.","p"],["search\\.msn\\.","q"],["search\\.live\\.","query"],["search\\.aol\\.","userQuery"],["ask\\.com","q"],["altavista\\.","q"],["feedster\\.","q"],["search\\.lycos\\.","q"],["alltheweb\\.","q"],["technorati\\.com/search/([^\\?/]+)",1],["dogpile\\.com/info\\.dogpl/search/web/([^\\?/]+)",1,true]];Hilite.decodeReferrer=function(d){var g=null;var e=new RegExp("");for(var c=0;c<Hilite.search_engines.length;c++){var f=Hilite.search_engines[c];e.compile("^http://(www\\.)?"+f[0],"i");var b=d.match(e);if(b){var a;if(isNaN(f[1])){a=Hilite.decodeReferrerQS(d,f[1])}else{a=b[f[1]+1]}if(a){a=decodeURIComponent(a);if(f.length>2&&f[2]){a=decodeURIComponent(a)}a=a.replace(/\'|"/g,"");a=a.split(/[\s,\+\.]+/);return a}break}}return null};Hilite.decodeReferrerQS=function(f,d){var b=f.indexOf("?");var c;if(b>=0){var a=new String(f.substring(b+1));b=0;c=0;while((b>=0)&&((c=a.indexOf("=",b))>=0)){var e,g;e=a.substring(b,c);b=a.indexOf("&",c)+1;if(e==d){if(b<=0){return a.substring(c+1)}else{return a.substring(c+1,b-1)}}else{if(b<=0){return null}}}}return null};Hilite.hiliteElement=function(f,e){if(!e||f.childNodes.length==0){return}var c=new Array();for(var b=0;b<e.length;b++){e[b]=e[b].toLowerCase();if(Hilite.exact){c.push("\\b"+e[b]+"\\b")}else{c.push(e[b])}}c=new RegExp(c.join("|"),"i");var a={};for(var b=0;b<e.length;b++){if(Hilite.style_name_suffix){a[e[b]]=Hilite.style_name+(b+1)}else{a[e[b]]=Hilite.style_name}}var d=function(m){var j=c.exec(m.data);if(j){var n=j[0];var i="";var h=m.splitText(j.index);var g=h.splitText(n.length);var l=m.ownerDocument.createElement("SPAN");m.parentNode.replaceChild(l,h);l.className=a[n.toLowerCase()];l.appendChild(h);return l}else{return m}};Hilite.walkElements(f.childNodes[0],1,d)};Hilite.hilite=function(){var a=Hilite.debug_referrer?Hilite.debug_referrer:document.referrer;var b=null;a=Hilite.decodeReferrer(a);if(a&&((Hilite.elementid&&(b=document.getElementById(Hilite.elementid)))||(b=document.body))){Hilite.hiliteElement(b,a)}};Hilite.walkElements=function(d,f,e){var a=/^(script|style|textarea)/i;var c=0;while(d&&f>0){c++;if(c>=Hilite.max_nodes){var b=function(){Hilite.walkElements(d,f,e)};setTimeout(b,50);return}if(d.nodeType==1){if(!a.test(d.tagName)&&d.childNodes.length>0){d=d.childNodes[0];f++;continue}}else{if(d.nodeType==3){d=e(d)}}if(d.nextSibling){d=d.nextSibling}else{while(f>0){d=d.parentNode;f--;if(d.nextSibling){d=d.nextSibling;break}}}}};if(Hilite.onload){if(window.attachEvent){window.attachEvent("onload",Hilite.hilite)}else{if(window.addEventListener){window.addEventListener("load",Hilite.hilite,false)}else{var __onload=window.onload;window.onload=function(){Hilite.hilite();__onload()}}}};var mediaUrl=function(resource){return scriptUrl+'m/'+osqaSkin+'/'+resource;};(function($){$.i18n={setDictionary:function(i18n_dict){i18n_dict=i18n_dict;},_:function(str,params){var transl=str;if(i18n_dict&&i18n_dict[str]){transl=i18n_dict[str];}
return this.printf(transl,params);},toEntity:function(str){var result='';for(var i=0;i<str.length;i++){if(str.charCodeAt(i)>128)
result+="&#"+str.charCodeAt(i)+";";else
result+=str.charAt(i);}
return result;},stripStr:function(str){return str.replace(/^\s*/,"").replace(/\s*$/,"");},stripStrML:function(str){var parts=str.split('\n');for(var i=0;i<parts.length;i++)
parts[i]=stripStr(parts[i]);return stripStr(parts.join(" "));},printf:function(S,L){if(!L)return S;var nS="";var tS=S.split("%s");for(var i=0;i<L.length;i++){if(tS[i].lastIndexOf('%')==tS[i].length-1&&i!=L.length-1)
tS[i]+="s"+tS.splice(i+1,1)[0];nS+=tS[i]+L[i];}
return nS+tS[tS.length-1];}};})(jQuery);var i18nZh={'insufficient privilege':'??????????','cannot pick own answer as best':'??????????????','anonymous users cannot select favorite questions':'?????????????','please login':'??????','anonymous users cannot vote':'????????','>15 points requried to upvote':'??+15?????????','>100 points required to downvote':'??+100?????????','please see':'??','cannot vote for own posts':'??????????','daily vote cap exhausted':'????????????????','cannot revoke old vote':'??????????????','please confirm offensive':"??????????????????????",'anonymous users cannot flag offensive posts':'???????????','cannot flag message as offensive twice':'???????','flag offensive cap exhausted':'?????????????5????????','need >15 points to report spam':"??+15????????????",'confirm delete':"?????/????????",'anonymous users cannot delete/undelete':"???????????????",'post recovered':"?????????????",'post deleted':"????????????",'add comment':'????','community karma points':'????','to comment, need':'????','delete this comment':'?????','hide comments':"????",'add a comment':"????",'comments':"??",'confirm delete comment':"?????????",'characters':'??','can write':'???','click to close':'???????','loading...':'???...','tags cannot be empty':'???????','tablimits info':"??5????????????20????",'content cannot be empty':'???????','content minchars':'????? {0} ???','please enter title':'??????','title minchars':"????? {0} ???",'delete':'??','undelete':'??','bold':'??','italic':'??','link':'???','quote':'??','preformatted text':'??','image':'??','numbered list':'??????','bulleted list':'??????','heading':'??','horizontal bar':'???','undo':'??','redo':'??','enter image url':'<b>??????</b></p><p>???<br />http://www.example.com/image.jpg   \"????\"','enter url':'<b>??Web??</b></p><p>???<br />http://www.cnprog.com/   \"????\"</p>"','upload image':'?????????'};var i18nEn={'need >15 points to report spam':'need >15 points to report spam ','>15 points requried to upvote':'>15 points required to upvote ','tags cannot be empty':'please enter at least one tag','anonymous users cannot vote':'sorry, anonymous users cannot vote ','anonymous users cannot select favorite questions':'sorry, anonymous users cannot select favorite questions ','to comment, need':'(to comment other people\'s posts, karma ','please see':'please see ','community karma points':' or more is necessary) - ','upload image':'Upload image:','enter image url':'enter URL of the image, e.g. http://www.example.com/image.jpg \"image title\"','enter url':'enter Web address, e.g. http://www.example.com \"page title\"','daily vote cap exhausted':'sorry, you\'ve used up todays vote cap','cannot pick own answer as best':'sorry, you cannot accept your own answer','cannot revoke old vote':'sorry, older votes cannot be revoked','please confirm offensive':'are you sure this post is offensive, contains spam, advertising, malicious remarks, etc.?','flag offensive cap exhausted':'sorry, you\'ve used up todays cap of flagging offensive messages ','confirm delete':'are you sure you want to delete this?','anonymous users cannot delete/undelete':'sorry, anonymous users cannot delete or undelete posts','post recovered':'your post is now restored!','post deleted':'your post has been deleted','confirm delete comment':'do you really want to delete this comment?','can write':'have ','tablimits info':'up to 5 tags, no more than 20 characters each','content minchars':'please enter more than {0} characters','title minchars':"please enter at least {0} characters",'characters':'characters left','cannot vote for own posts':'sorry, you cannot vote for your own posts','cannot flag message as offensive twice':'cannot flag message as offensive twice ','>100 points required to downvote':'>100 points required to downvote '};var i18nEs={'insufficient privilege':'privilegio insuficiente','cannot pick own answer as best':'no puede escoger su propia respuesta com la mejor','anonymous users cannot select favorite questions':'usuarios anonimos no pueden seleccionar','please login':'por favor inicie sesi?n','anonymous users cannot vote':'usuarios an?nimos no pueden votar','>15 points requried to upvote':'>15 puntos requeridos para votar positivamente','>100 points required to downvote':'>100 puntos requeridos para votar negativamente','please see':'por favor vea','cannot vote for own posts':'no se puede votar por sus propias publicaciones','daily vote cap exhausted':'cuota de votos diarios excedida','cannot revoke old vote':'no puede revocar un voto viejo','please confirm offensive':"por favor confirme ofensiva",'anonymous users cannot flag offensive posts':'usuarios an?nimos no pueden marcar publicaciones com ofensivas','cannot flag message as offensive twice':'no puede marcar mensaje com ofensivo dos veces','flag offensive cap exhausted':'cuota para marcar ofensivas ha sido excedida','need >15 points to report spam':"necesita >15 puntos para reportar spam",'confirm delete':"?Est? seguro que desea borrar esto?",'anonymous users cannot delete/undelete':"usuarios an?nimos no pueden borrar o recuperar publicaciones",'post recovered':"publicaci?n recuperada",'post deleted':"publicaci?n borrada?",'add comment':'agregar comentario','community karma points':'reputaci?n comunitaria','to comment, need':'para comentar, necesita reputaci?n','delete this comment':'borrar este comentario','hide comments':"ocultar comentarios",'add a comment':"agregar comentarios",'comments':"comentarios",'confirm delete comment':"?Realmente desea borrar este comentario?",'characters':'caracteres faltantes','can write':'tiene ','click to close':'haga click para cerrar','loading...':'cargando...','tags cannot be empty':'las etiquetas no pueden estar vac?as','tablimits info':"hasta 5 etiquetas de no mas de 20 caracteres cada una",'content cannot be empty':'el contenido no puede estar vac?o','content minchars':'por favor introduzca mas de {0} caracteres','please enter title':'por favor ingrese un t?tulo','title minchars':"por favor introduzca al menos {0} caracteres",'delete':'borrar','undelete':'recuperar','bold':'negrita','italic':'cursiva','link':'enlace','quote':'citar','preformatted text':'texto preformateado','image':'imagen','numbered list':'lista numerada','bulleted list':'lista no numerada','heading':'??','horizontal bar':'barra horizontal','undo':'deshacer','redo':'rehacer','enter image url':'introduzca la URL de la imagen, por ejemplo?<br />http://www.example.com/image.jpg   \"titulo de imagen\"','enter url':'introduzca direcciones web, ejemplo?<br />http://www.cnprog.com/   \"titulo del enlace\"</p>"','upload image':'cargar imagen?','questions/':'preguntas/','vote/':'votar/'};var i18n={'en':i18nEn,'zh_CN':i18nZh,'es':i18nEs};var i18n_dict=i18n['en'];(function($){var textarea,staticOffset;var iLastMousePos=0;var iMin=32;var grip;$.fn.TextAreaResizer=function(){return this.each(function(){textarea=$(this).addClass('processed'),staticOffset=null;$(this).wrap('<div class="resizable-textarea"><span></span></div>').parent().append($('<div class="grippie"></div>').bind("mousedown",{el:this},startDrag));var grippie=$('div.grippie',$(this).parent())[0];grippie.style.marginRight=(grippie.offsetWidth-$(this)[0].offsetWidth)+'px'})};function startDrag(e){textarea=$(e.data.el);textarea.blur();iLastMousePos=mousePosition(e).y;staticOffset=textarea.height()-iLastMousePos;textarea.css('opacity',0.25);$(document).mousemove(performDrag).mouseup(endDrag);return false}function performDrag(e){var iThisMousePos=mousePosition(e).y;var iMousePos=staticOffset+iThisMousePos;if(iLastMousePos>=(iThisMousePos)){iMousePos-=5}iLastMousePos=iThisMousePos;iMousePos=Math.max(iMin,iMousePos);textarea.height(iMousePos+'px');if(iMousePos<iMin){endDrag(e)}return false}function endDrag(e){$(document).unbind('mousemove',performDrag).unbind('mouseup',endDrag);textarea.css('opacity',1);textarea.focus();textarea=null;staticOffset=null;iLastMousePos=0}function mousePosition(e){return{x:e.clientX+document.documentElement.scrollLeft,y:e.clientY+document.documentElement.scrollTop}}})(jQuery);var notify=function(){var visible=false;return{show:function(html){if(html){$("body").css("margin-top","2.2em");$(".notify span").html(html);}
$(".notify").fadeIn("slow");visible=true;},close:function(doPostback){$(".notify").fadeOut("fast");$("body").css("margin-top","0");visible=false;},isVisible:function(){return visible;}};}();(function($,c,b){$.map("click dblclick mousemove mousedown mouseup mouseover mouseout change select submit keydown keypress keyup".split(" "),function(d){a(d)});a("focusin","focus"+b);a("focusout","blur"+b);$.addOutsideEvent=a;function a(g,e){e=e||g+b;var d=$(),h=g+"."+e+"-special-event";$.event.special[e]={setup:function(){d=d.add(this);if(d.length===1){$(c).bind(h,f)}},teardown:function(){d=d.not(this);if(d.length===0){$(c).unbind(h)}},add:function(i){var j=i.handler;i.handler=function(l,k){l.target=k;j.apply(this,arguments)}}};function f(i){$(d).each(function(){var j=$(this);if(this!==i.target&&!j.has(i.target).length){j.triggerHandler(e,[i.target])}})}}})(jQuery,document,"outside");$(document).ready(function(){pickedTags().init();$('input#bnewaccount').click(function(){$('#bnewaccount').disabled=true;});});function yourWorkWillBeLost(e){if(browserTester('chrome')||browserTester('safari')||browserTester('msie')){return"Are you sure you want to leave?  Your work will be lost.";}else{if(!e)e=window.event;e.cancelBubble=true;e.returnValue='If you leave, your work will be lost.';if(e.stopPropagation){e.stopPropagation();e.preventDefault();}
return e;}}
function browserTester(browserString){return navigator.userAgent.toLowerCase().indexOf(browserString)>-1;}
if(!window.addEventListener){if(window.attachEvent){window.addEventListener=function(type,listener,useCapture){window.attachEvent('on'+type,listener);};window.removeEventListener=function(type,listener,useCapture){window.detachEvent('on'+type,listener);};}else{window.addEventListener=function(type,listener,useCapture){window['on'+type]=listener;};window.removeEventListener=function(type,listener,useCapture){window['on'+type]=null;};}}
function updateAndSubmitOpenID(openid){if($('#openid_placeholder .openid_entry_'+openid).val()){$('#openid_'+openid+' .openid_identifier_'+openid).val($('#openid_placeholder .openid_identifier_'+openid).val().replace('%s',$('#openid_placeholder .openid_entry_'+openid).val().replace(" ","%20")));$('#openid_'+openid).submit();}
return false;}
(function(a){var r=a.fn.domManip,d="_tmplitem",q=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,b={},f={},e,p={key:0,data:{}},i=0,c=0,l=[];function g(g,d,h,e){var c={data:e||(e===0||e===false)?e:d?d.data:{},_wrap:d?d._wrap:null,tmpl:null,parent:d||null,nodes:[],calls:u,nest:w,wrap:x,html:v,update:t};g&&a.extend(c,g,{nodes:[],parent:d});if(h){c.tmpl=h;c._ctnt=c._ctnt||c.tmpl(a,c);c.key=++i;(l.length?f:b)[i]=c}return c}a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(f,d){a.fn[f]=function(n){var g=[],i=a(n),k,h,m,l,j=this.length===1&&this[0].parentNode;e=b||{};if(j&&j.nodeType===11&&j.childNodes.length===1&&i.length===1){i[d](this[0]);g=this}else{for(h=0,m=i.length;h<m;h++){c=h;k=(h>0?this.clone(true):this).get();a(i[h])[d](k);g=g.concat(k)}c=0;g=this.pushStack(g,f,i.selector)}l=e;e=null;a.tmpl.complete(l);return g}});a.fn.extend({tmpl:function(d,c,b){return a.tmpl(this[0],d,c,b)},tmplItem:function(){return a.tmplItem(this[0])},template:function(b){return a.template(b,this[0])},domManip:function(d,m,k){if(d[0]&&a.isArray(d[0])){var g=a.makeArray(arguments),h=d[0],j=h.length,i=0,f;while(i<j&&!(f=a.data(h[i++],"tmplItem")));if(f&&c)g[2]=function(b){a.tmpl.afterManip(this,b,k)};r.apply(this,g)}else r.apply(this,arguments);c=0;!e&&a.tmpl.complete(b);return this}});a.extend({tmpl:function(d,h,e,c){var i,k=!c;if(k){c=p;d=a.template[d]||a.template(null,d);f={}}else if(!d){d=c.tmpl;b[c.key]=c;c.nodes=[];c.wrapped&&n(c,c.wrapped);return a(j(c,null,c.tmpl(a,c)))}if(!d)return[];if(typeof h==="function")h=h.call(c||{});e&&e.wrapped&&n(e,e.wrapped);i=a.isArray(h)?a.map(h,function(a){return a?g(e,c,d,a):null}):[g(e,c,d,h)];return k?a(j(c,null,i)):i},tmplItem:function(b){var c;if(b instanceof a)b=b[0];while(b&&b.nodeType===1&&!(c=a.data(b,"tmplItem"))&&(b=b.parentNode));return c||p},template:function(c,b){if(b){if(typeof b==="string")b=o(b);else if(b instanceof a)b=b[0]||{};if(b.nodeType)b=a.data(b,"tmpl")||a.data(b,"tmpl",o(b.innerHTML));return typeof c==="string"?(a.template[c]=b):b}return c?typeof c!=="string"?a.template(null,c):a.template[c]||a.template(null,q.test(c)?c:a(c)):null},encode:function(a){return(""+a).split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}});a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(){b={}},afterManip:function(f,b,d){var e=b.nodeType===11?a.makeArray(b.childNodes):b.nodeType===1?[b]:[];d.call(f,b);m(e);c++}});function j(e,g,f){var b,c=f?a.map(f,function(a){return typeof a==="string"?e.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+e.key+'" $2'):a:j(a,e,a._ctnt)}):e;if(g)return c;c=c.join("");c.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(f,c,e,d){b=a(e).get();m(b);if(c)b=k(c).concat(b);if(d)b=b.concat(k(d))});return b?b:k(c)}function k(c){var b=document.createElement("div");b.innerHTML=c;return a.makeArray(b.childNodes)}function o(b){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function(m,l,k,g,b,c,d){var j=a.tmpl.tag[k],i,e,f;if(!j)throw"Unknown template tag: "+k;i=j._default||[];if(c&&!/\w$/.test(b)){b+=c;c=""}if(b){b=h(b);d=d?","+h(d)+")":c?")":"";e=c?b.indexOf(".")>-1?b+h(c):"("+b+").call($item"+d:b;f=c?e:"(typeof("+b+")==='function'?("+b+").call($item):("+b+"))"}else f=e=i.$1||"null";g=h(g);return"');"+j[l?"close":"open"].split("$notnull_1").join(b?"typeof("+b+")!=='undefined' && ("+b+")!=null":"true").split("$1a").join(f).split("$1").join(e).split("$2").join(g||i.$2||"")+"__.push('"})+"');}return __;")}function n(c,b){c._wrap=j(c,true,a.isArray(b)?b:[q.test(b)?b:a(b).html()]).join("")}function h(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(b){var a=document.createElement("div");a.appendChild(b.cloneNode(true));return a.innerHTML}function m(o){var n="_"+c,k,j,l={},e,p,h;for(e=0,p=o.length;e<p;e++){if((k=o[e]).nodeType!==1)continue;j=k.getElementsByTagName("*");for(h=j.length-1;h>=0;h--)m(j[h]);m(k)}function m(j){var p,h=j,k,e,m;if(m=j.getAttribute(d)){while(h.parentNode&&(h=h.parentNode).nodeType===1&&!(p=h.getAttribute(d)));if(p!==m){h=h.parentNode?h.nodeType===11?0:h.getAttribute(d)||0:0;if(!(e=b[m])){e=f[m];e=g(e,b[h]||f[h]);e.key=++i;b[i]=e}c&&o(m)}j.removeAttribute(d)}else if(c&&(e=a.data(j,"tmplItem"))){o(e.key);b[e.key]=e;h=a.data(j.parentNode,"tmplItem");h=h?h.key:0}if(e){k=e;while(k&&k.key!=h){k.nodes.push(j);k=k.parent}delete e._ctnt;delete e._wrap;a.data(j,"tmplItem",e)}function o(a){a=a+n;e=l[a]=l[a]||g(e,b[e.parent.key+n]||e.parent)}}}function u(a,d,c,b){if(!a)return l.pop();l.push({_:a,tmpl:d,item:this,data:c,options:b})}function w(d,c,b){return a.tmpl(a.template(d),c,b,this)}function x(b,d){var c=b.options||{};c.wrapped=d;return a.tmpl(a.template(b.tmpl),b.data,c,b.item)}function v(d,c){var b=this._wrap;return a.map(a(a.isArray(b)?b.join(""):b).filter(d||"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML||s(a)})}function t(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]);a(b).remove()}})(jQuery);var q=null;window.PR_SHOULD_USE_CONTINUATION=!0;(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a=[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c<i;++c){var j=f[c];if(/\\[bdsw]/i.test(j))a.push(j);else{var j=m(j),d;c+2<i&&"-"===f[c+1]?(d=m(f[c+2]),c+=2):d=j;b.push([j,d]);d<65||j>122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;c<b.length;++c)i=b[c],i[0]<=j[1]+1?j[1]=Math.max(j[1],i[1]):f.push(j=i);b=["["];o&&b.push("^");b.push.apply(b,a);for(c=0;c<f.length;++c)i=f[c],b.push(e(i[0])),i[1]>i[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c<b;++c){var j=f[c];j==="("?++i:"\\"===j.charAt(0)&&(j=+j.substring(1))&&j<=i&&(d[j]=-1)}for(c=1;c<d.length;++c)-1===d[c]&&(d[c]=++t);for(i=c=0;c<b;++c)j=f[c],j==="("?(++i,d[i]===void 0&&(f[c]="(?:")):"\\"===j.charAt(0)&&(j=+j.substring(1))&&j<=i&&(f[c]="\\"+d[i]);for(i=c=0;c<b;++c)"^"===f[c]&&"^"!==f[c+1]&&(f[c]="");if(a.ignoreCase&&s)for(c=0;c<b;++c)j=f[c],a=j.charAt(0),j.length>=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p<d;++p){var g=a[p];if(g.ignoreCase)l=!0;else if(/[a-z]/i.test(g.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){s=!0;l=!1;break}}for(var r={b:8,t:9,n:10,v:11,f:12,r:13},n=[],p=0,d=a.length;p<d;++p){g=a[p];if(g.global||g.multiline)throw Error(""+g);n.push("(?:"+y(g)+")")}return RegExp(n.join("|"),l?"gi":"g")}function M(a){function m(a){switch(a.nodeType){case 1:if(e.test(a.className))break;for(var g=a.firstChild;g;g=g.nextSibling)m(g);g=a.nodeName;if("BR"===g||"LI"===g)h[s]="\n",t[s<<1]=y++,t[s++<<1|1]=a;break;case 3:case 4:g=a.nodeValue,g.length&&(g=p?g.replace(/\r\n?/g,"\n"):g.replace(/[\t\n\r ]+/g," "),h[s]=g,t[s<<1]=y,y+=g.length,t[s++<<1|1]=a)}}var e=/(?:^|\s)nocode(?:\s|$)/,h=[],y=0,t=[],s=0,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=document.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);m(a);return{a:h.join("").replace(/\n$/,""),c:t}}function B(a,m,e,h){m&&(a={a:m,d:a},e(a),h.push.apply(h,a.e))}function x(a,m){function e(a){for(var l=a.d,p=[l,"pln"],d=0,g=a.a.match(y)||[],r={},n=0,z=g.length;n<z;++n){var f=g[n],b=r[f],o=void 0,c;if(typeof b==="string")c=!1;else{var i=h[f.charAt(0)];if(i)o=f.match(i[1]),b=i[0];else{for(c=0;c<t;++c)if(i=m[c],o=f.match(i[1])){b=i[0];break}o||(b="pln")}if((c=b.length>=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m),l=[],p={},d=0,g=e.length;d<g;++d){var r=e[d],n=r[3];if(n)for(var k=n.length;--k>=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/,q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g,"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a),a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e}
for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g<d.length;++g)e(d[g]);m===(m|0)&&d[0].setAttribute("value",m);var r=s.createElement("OL");r.className="linenums";for(var n=Math.max(0,m-1|0)||0,g=0,z=d.length;g<z;++g)l=d[g],l.className="L"+(g+n)%10,l.firstChild||l.appendChild(s.createTextNode("\xa0")),r.appendChild(l);a.appendChild(r)}function k(a,m){for(var e=m.length;--e>=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*</.test(m)?"default-markup":"default-code";return A[a]}function E(a){var m=a.g;try{var e=M(a.h),h=e.a;a.a=h;a.c=e.c;a.d=0;C(m,h)(a);var k=/\bMSIE\b/.test(navigator.userAgent),m=/\n/g,t=a.a,s=t.length,e=0,l=a.c,p=l.length,h=0,d=a.e,g=d.length,a=0;d[g]=s;var r,n;for(n=r=0;n<g;)d[n]!==d[n+2]?(d[r++]=d[n++],d[r++]=d[n++]):n+=2;g=r;for(n=r=0;n<g;){for(var z=d[n],f=d[n+1],b=n+2;b+2<=g&&d[b+1]===f;)b+=2;d[r++]=z;d[r++]=f;n=b}for(d.length=r;h<p;){var o=l[h+2]||s,c=d[a+2]||s,b=Math.min(o,c),i=l[h+1],j;if(i.nodeType!==1&&(j=t.substring(e,b))){k&&(j=j.replace(m,"\r"));i.nodeValue=j;var u=i.ownerDocument,v=u.createElement("SPAN");v.className=d[a+1];var x=i.parentNode;x.replaceChild(v,i);v.appendChild(i);e<o&&(l[h+1]=i=u.createTextNode(t.substring(b,o)),x.insertBefore(i,v.nextSibling))}e=b;e>=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"],H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+
I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes",hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p<h.length&&l.now()<e;p++){var n=h[p],k=n.className;if(k.indexOf("prettyprint")>=0){var k=k.match(g),f,b;if(b=!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p<h.length?setTimeout(m,250):a&&a()}for(var e=[document.getElementsByTagName("pre"),document.getElementsByTagName("code"),document.getElementsByTagName("xmp")],h=[],k=0;k<e.length;++k)for(var t=0,s=e[k].length;t<s;++t)h.push(e[k][t]);var e=q,l=Date;l.now||(l={now:function(){return+new Date}});var p=0,d,g=/\blang(?:uage)?-([\w.]+)(?!\S)/;m()};window.PR={createSimpleLexer:x,registerLangHandler:k,sourceDecorator:u,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ"}})();function addAttachmentToForm(attachment){$('#main-attachments-container').slideDown();var $el=null;function createDeleteButton(){return $('<a class="node-attachment-delete" href="#">x</a>');}
if(attachment.isImage){$el=$('<div class="img-node-attachment"></div>');var $link=$('<a href="'+attachment.url+'" target="_blank"></a>');$link.append($('<img src="'+attachment.url+'" width="100" />'));$link.append($('<span>'+attachment.fileName+'('+attachment.size+')'+'</span>'));$el.append($link);$el.append($('<input type="hidden" name="attachments" value="'+attachment.fileId+'" />'));$el.append(createDeleteButton());$('#img-attachments-container').append($el);}else{$el=$('<div class="node-attachment"></div>');$el.append('<span class="attachment-icon"></span>');$el.append($('<a href="'+attachment.url+'" target="_blank">'+attachment.fileName+'</a>'));$el.append($('<span> ('+attachment.size+')</span>'));$el.append($('<input type="hidden" name="attachments" value="'+attachment.fileId+'" />'));$el.append(createDeleteButton());$('#attachments-container').append($el);}}
function getAuthorizeContext(image){var current=[];$('#main-attachments-container').find('input[name=attachments]').each(function(){current.push($(this).val());});var ret={};$.extend(ret,pageContext.authorizeUploadContext);if(current.length>0){ret.current=current;}
if(image){ret.image=image;}
return ret;}
$(function(){$('.node-attachment-delete').live('click',function(){var $link=$(this);var fileId=$link.parent().find('input[type=hidden]').val();$.getJSON(pageContext.url.cancelUpload,{file:fileId});$link.parent().fadeOut('fast',function(){$link.parent().remove();if($(".img-node-attachment").length<1&&$(".node-attachment").length<1){$('#main-attachments-container').slideUp();}});return false;});});var Attacklab=Attacklab||{}
Attacklab.showdown=Attacklab.showdown||{}
Attacklab.showdown.converter=function(){var SaveHash=function(){this.set=function(key,value){this["s_"+key]=value;}
this.get=function(key){return this["s_"+key];}}
var g_urls;var g_titles;var g_html_blocks;var g_list_level=0;this.makeHtml=function(text){text=text.replace(/^>/mg,'\n(!GT!)');text=text.replace(/^\(!GT!\)/mg,'\n>');g_urls=new SaveHash();g_titles=new SaveHash();g_html_blocks=new Array();text=text.replace(/~/g,"~T");text=text.replace(/\$/g,"~D");text=text.replace(/\r\n/g,"\n");text=text.replace(/\r/g,"\n");text="\n\n"+text+"\n\n";text=_Detab(text);text=text.replace(/^[ \t]+$/mg,"");text=_HashHTMLBlocks(text);text=_StripLinkDefinitions(text);text=_RunBlockGamut(text);text=_UnescapeSpecialChars(text);text=text.replace(/~D/g,"$$");text=text.replace(/~T/g,"~");return text;}
var _StripLinkDefinitions=function(text){var text=text.replace(/^[ ]{0,3}\[(.+)\]:[ \t]*\n?[ \t]*<?(\S+?)>?(?=\s|$)[ \t]*\n?[ \t]*((\n*)["(](.+?)[")][ \t]*)?(?:\n+)/gm,function(wholeMatch,m1,m2,m3,m4,m5){m1=m1.toLowerCase();g_urls.set(m1,_EncodeAmpsAndAngles(m2));if(m4){return m3;}else if(m5){g_titles.set(m1,m5.replace(/"/g,"&quot;"));}
return"";});return text;}
var _HashHTMLBlocks=function(text){var block_tags_a="p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del"
var block_tags_b="p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math"
text=text.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\b[^\r]*?\n<\/\2>[ \t]*(?=\n+))/gm,hashElement);text=text.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math)\b[^\r]*?.*<\/\2>[ \t]*(?=\n+)\n)/gm,hashElement);text=text.replace(/\n[ ]{0,3}((<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,hashElement);text=text.replace(/\n\n[ ]{0,3}(<!(--(?:|(?:[^>-]|-[^>])(?:[^-]|-[^-])*)--)>[ \t]*(?=\n{2,}))/g,hashElement);text=text.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,hashElement);return text;}
var hashElement=function(wholeMatch,m1){var blockText=m1;blockText=blockText.replace(/^\n+/,"");blockText=blockText.replace(/\n+$/g,"");blockText="\n\n~K"+(g_html_blocks.push(blockText)-1)+"K\n\n";return blockText;};var _RunBlockGamut=function(text,doNotUnhash){text=_DoHeaders(text);var key=hashBlock("<hr />");text=text.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm,key);text=text.replace(/^[ ]{0,2}([ ]?-[ ]?){3,}[ \t]*$/gm,key);text=text.replace(/^[ ]{0,2}([ ]?_[ ]?){3,}[ \t]*$/gm,key);text=_DoLists(text);text=_DoCodeBlocks(text);text=_DoBlockQuotes(text);text=_HashHTMLBlocks(text);text=_FormParagraphs(text,doNotUnhash);return text;}
var _RunSpanGamut=function(text){text=_DoCodeSpans(text);text=_EscapeSpecialCharsWithinTagAttributes(text);text=_EncodeBackslashEscapes(text);text=_DoImages(text);text=_DoAnchors(text);text=_DoAutoLinks(text);text=_EncodeAmpsAndAngles(text);text=_DoItalicsAndBold(text);text=text.replace(/  +\n/g," <br />\n");return text;}
var _EscapeSpecialCharsWithinTagAttributes=function(text){var regex=/(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|<!(--(?:|(?:[^>-]|-[^>])(?:[^-]|-[^-])*)--)>)/gi;text=text.replace(regex,function(wholeMatch){var tag=wholeMatch.replace(/(.)<\/?code>(?=.)/g,"$1`");tag=escapeCharacters(tag,"\\`*_");return tag;});return text;}
var _DoAnchors=function(text){text=text.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,writeAnchorTag);text=text.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()<?((?:\([^)]*\)|[^()])*?)>?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,writeAnchorTag);text=text.replace(/(\[([^\[\]]+)\])()()()()()/g,writeAnchorTag);return text;}
var writeAnchorTag=function(wholeMatch,m1,m2,m3,m4,m5,m6,m7){if(m7==undefined)m7="";var whole_match=m1;var link_text=m2;var link_id=m3.toLowerCase();var url=m4;var title=m7;if(url==""){if(link_id==""){link_id=link_text.toLowerCase().replace(/ ?\n/g," ");}
url="#"+link_id;if(g_urls.get(link_id)!=undefined){url=g_urls.get(link_id);if(g_titles.get(link_id)!=undefined){title=g_titles.get(link_id);}}
else{if(whole_match.search(/\(\s*\)$/m)>-1){url="";}else{return whole_match;}}}
url=escapeCharacters(url,"*_");var result="<a href=\""+url+"\"";if(title!=""){title=title.replace(/"/g,"&quot;");title=escapeCharacters(title,"*_");result+=" title=\""+title+"\"";}
result+=">"+link_text+"</a>";return result;}
var _DoImages=function(text){text=text.replace(/(!\[(.*?)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,writeImageTag);text=text.replace(/(!\[(.*?)\]\s?\([ \t]*()<?(\S+?)>?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,writeImageTag);return text;}
var writeImageTag=function(wholeMatch,m1,m2,m3,m4,m5,m6,m7){var whole_match=m1;var alt_text=m2;var link_id=m3.toLowerCase();var url=m4;var title=m7;if(!title)title="";if(url==""){if(link_id==""){link_id=alt_text.toLowerCase().replace(/ ?\n/g," ");}
url="#"+link_id;if(g_urls.get(link_id)!=undefined){url=g_urls.get(link_id);if(g_titles.get(link_id)!=undefined){title=g_titles.get(link_id);}}
else{return whole_match;}}
alt_text=alt_text.replace(/"/g,"&quot;");url=escapeCharacters(url,"*_");var result="<img src=\""+url+"\" alt=\""+alt_text+"\"";title=title.replace(/"/g,"&quot;");title=escapeCharacters(title,"*_");result+=" title=\""+title+"\"";result+=" />";return result;}
var _DoHeaders=function(text){text=text.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm,function(wholeMatch,m1){return"<h1>"+_RunSpanGamut(m1)+"</h1>\n\n";});text=text.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,function(matchFound,m1){return"<h2>"+_RunSpanGamut(m1)+"</h2>\n\n";});text=text.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm,function(wholeMatch,m1,m2){var h_level=m1.length;return"<h"+h_level+">"+_RunSpanGamut(m2)+"</h"+h_level+">\n\n";});return text;}
var _ProcessListItems;var _DoLists=function(text){text+="~0";var whole_list=/^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;if(g_list_level){text=text.replace(whole_list,function(wholeMatch,m1,m2){var list=m1;var list_type=(m2.search(/[*+-]/g)>-1)?"ul":"ol";var result=_ProcessListItems(list,list_type);result=result.replace(/\s+$/,"");result="<"+list_type+">"+result+"</"+list_type+">\n";return result;});}else{whole_list=/(\n\n|^\n?)(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/g;text=text.replace(whole_list,function(wholeMatch,m1,m2,m3){var runup=m1;var list=m2;var list_type=(m3.search(/[*+-]/g)>-1)?"ul":"ol";var result=_ProcessListItems(list,list_type);result=runup+"<"+list_type+">\n"+result+"</"+list_type+">\n";return result;});}
text=text.replace(/~0/,"");return text;}
var _listItemMarkers={ol:"\\d+[.]",ul:"[*+-]"};_ProcessListItems=function(list_str,list_type){g_list_level++;list_str=list_str.replace(/\n{2,}$/,"\n");list_str+="~0";var marker=_listItemMarkers[list_type];var re=new RegExp("(^[ \\t]*)("+marker+")[ \\t]+([^\\r]+?(\\n+))(?=(~0|\\1("+marker+")[ \\t]+))","gm");var last_item_had_a_double_newline=false;list_str=list_str.replace(re,function(wholeMatch,m1,m2,m3){var item=m3;var leading_space=m1;var ends_with_double_newline=/\n\n$/.test(item);var contains_double_newline=ends_with_double_newline||item.search(/\n{2,}/)>-1;if(contains_double_newline||last_item_had_a_double_newline){item=_RunBlockGamut(_Outdent(item),true);}
else{item=_DoLists(_Outdent(item));item=item.replace(/\n$/,"");item=_RunSpanGamut(item);}
last_item_had_a_double_newline=ends_with_double_newline;return"<li>"+item+"</li>\n";});list_str=list_str.replace(/~0/g,"");g_list_level--;return list_str;}
var _DoCodeBlocks=function(text){text+="~0";text=text.replace(/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g,function(wholeMatch,m1,m2){var codeblock=m1;var nextChar=m2;codeblock=_EncodeCode(_Outdent(codeblock));codeblock=_Detab(codeblock);codeblock=codeblock.replace(/^\n+/g,"");codeblock=codeblock.replace(/\n+$/g,"");codeblock="<pre><code>"+codeblock+"\n</code></pre>";return"\n\n"+codeblock+"\n\n"+nextChar;});text=text.replace(/~0/,"");return text;}
var hashBlock=function(text){text=text.replace(/(^\n+|\n+$)/g,"");return"\n\n~K"+(g_html_blocks.push(text)-1)+"K\n\n";}
var _DoCodeSpans=function(text){text=text.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(wholeMatch,m1,m2,m3,m4){var c=m3;c=c.replace(/^([ \t]*)/g,"");c=c.replace(/[ \t]*$/g,"");c=_EncodeCode(c);return m1+"<code>"+c+"</code>";});return text;}
var _EncodeCode=function(text){text=text.replace(/&/g,"&amp;");text=text.replace(/</g,"&lt;");text=text.replace(/>/g,"&gt;");text=escapeCharacters(text,"\*_{}[]\\",false);return text;}
var _DoItalicsAndBold=function(text){text=text.replace(/(^|\W)(\*\*|__)(?=\S)([^\r]*?\S)\2(\W|$)/g,"$1<strong>$3</strong>$4");text=text.replace(/(^|\W)(\*|_)(?=\S)([^\r]*?\S)\2(\W|$)/g,"$1<em>$3</em>$4");return text;}
var _DoBlockQuotes=function(text){text=text.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm,function(wholeMatch,m1){var bq=m1;bq=bq.replace(/^[ \t]*>[ \t]?/gm,"~0");bq=bq.replace(/~0/g,"");bq=bq.replace(/^[ \t]+$/gm,"");bq=_RunBlockGamut(bq);bq=bq.replace(/(^|\n)/g,"$1  ");bq=bq.replace(/(\s*<pre>[^\r]+?<\/pre>)/gm,function(wholeMatch,m1){var pre=m1;pre=pre.replace(/^  /mg,"~0");pre=pre.replace(/~0/g,"");return pre;});return hashBlock("<blockquote>\n"+bq+"\n</blockquote>");});return text;}
var _FormParagraphs=function(text,doNotUnhash){text=text.replace(/^\n+/g,"");text=text.replace(/\n+$/g,"");var grafs=text.split(/\n{2,}/g);var grafsOut=new Array();var end=grafs.length;for(var i=0;i<end;i++){var str=grafs[i];if(str.search(/~K(\d+)K/g)>=0){grafsOut.push(str);}
else if(str.search(/\S/)>=0){str=_RunSpanGamut(str);str=str.replace(/^([ \t]*)/g,"<p>");str+="</p>"
grafsOut.push(str);}}
if(!doNotUnhash){end=grafsOut.length;for(var i=0;i<end;i++){while(grafsOut[i].search(/~K(\d+)K/)>=0){var blockText=g_html_blocks[RegExp.$1];blockText=blockText.replace(/\$/g,"$$$$");grafsOut[i]=grafsOut[i].replace(/~K\d+K/,blockText);}}}
return grafsOut.join("\n\n");}
var _EncodeAmpsAndAngles=function(text){text=text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&amp;");text=text.replace(/<(?![a-z\/?\$!])/gi,"&lt;");return text;}
var _EncodeBackslashEscapes=function(text){text=text.replace(/\\+/g,escapeSlashes);text=text.replace(/\\([`*_{}\[\]()>#+-.!])/g,escapeCharacters_callback);return text;}
var _DoAutoLinks=function(text){text=text.replace(/<((https?|ftp|dict):[^'">\s]+)>/gi,"<a href=\"$1\">$1</a>");text=text.replace(/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi,function(wholeMatch,m1){return _EncodeEmailAddress(_UnescapeSpecialChars(m1));});return text;}
var _EncodeEmailAddress=function(addr){function char2hex(ch){var hexDigits='0123456789ABCDEF';var dec=ch.charCodeAt(0);return(hexDigits.charAt(dec>>4)+hexDigits.charAt(dec&15));}
var encode=[function(ch){return"&#"+ch.charCodeAt(0)+";";},function(ch){return"&#x"+char2hex(ch)+";";},function(ch){return ch;}];addr="mailto:"+addr;addr=addr.replace(/./g,function(ch){if(ch=="@"){ch=encode[Math.floor(Math.random()*2)](ch);}else if(ch!=":"){var r=Math.random();ch=(r>.9?encode[2](ch):r>.45?encode[1](ch):encode[0](ch));}
return ch;});addr="<a href=\""+addr+"\">"+addr+"</a>";addr=addr.replace(/">.+:/g,"\">");return addr;}
var _UnescapeSpecialChars=function(text){text=text.replace(/~E(\d+)E/g,function(wholeMatch,m1){var charCodeToReplace=parseInt(m1);return String.fromCharCode(charCodeToReplace);});return text;}
var _Outdent=function(text){text=text.replace(/^(\t|[ ]{1,4})/gm,"~0");text=text.replace(/~0/g,"")
return text;}
var _Detab=function(text){if(!/\t/.test(text))
return text;var spaces=["    ","   ","  "," "],skew=0,v;return text.replace(/[\n\t]/g,function(match,offset){if(match==="\n"){skew=offset+1;return match;}
v=(offset-skew)%4;skew=offset+1;return spaces[v];});}
var escapeCharacters=function(text,charsToEscape,afterBackslash){var regexString="(["+charsToEscape.replace(/([\[\]\\])/g,"\\$1")+"])";if(afterBackslash){regexString="\\\\"+regexString;}
var regex=new RegExp(regexString,"g");text=text.replace(regex,escapeCharacters_callback);return text;}
var escapeCharacters_callback=function(wholeMatch,m1){var charCodeToEscape=m1.charCodeAt(0);return"~E"+charCodeToEscape+"E";}
var escapeSlashes=function(slashes){if(slashes.length%2>0){slashes=slashes.substr(0,slashes.length-1);}
if(slashes.length>0){var ret='';for(var i=0;i<slashes.length/2;i++){ret+=escapeCharacters_callback(slashes,'\\');}
return ret;}else{return'';}}}
var Showdown=Attacklab.showdown;if(Attacklab.fileLoaded){Attacklab.fileLoaded("showdown.js");}
jQuery.extend({createUploadIframe:function(d,b){var a="jUploadFrame"+d;if(window.ActiveXObject){var c=document.createElement('<iframe id="'+a+'" name="'+a+'" />');if(typeof b=="boolean"){c.src="javascript:false"}else{if(typeof b=="string"){c.src=b}}}else{var c=document.createElement("iframe");c.id=a;c.name=a}c.style.position="absolute";c.style.top="-1000px";c.style.left="-1000px";document.body.appendChild(c);return c},createUploadForm:function(g,b){var e="jUploadForm"+g;var a="jUploadFile"+g;var d=$('<form  action="" method="POST" name="'+e+'" id="'+e+'" enctype="multipart/form-data"></form>');var c=$("#"+b);var f=$(c).clone();$(c).attr("id",a);$(c).before(f);$(c).appendTo(d);$(d).css("position","absolute");$(d).css("top","-1200px");$(d).css("left","-1200px");$(d).appendTo("body");return d},ajaxFileUpload:function(k){k=jQuery.extend({},jQuery.ajaxSettings,k);var a=new Date().getTime();var b=jQuery.createUploadForm(a,k.fileElementId);var i=jQuery.createUploadIframe(a,k.secureuri);var h="jUploadFrame"+a;var j="jUploadForm"+a;if(k.global&&!jQuery.active++){jQuery.event.trigger("ajaxStart")}var c=false;var f={};if(k.global){jQuery.event.trigger("ajaxSend",[f,k])}var d=function(l){var p=document.getElementById(h);try{if(p.contentWindow){f.responseText=p.contentWindow.document.body?p.contentWindow.document.body.innerText:null;f.responseXML=p.contentWindow.document.XMLDocument?p.contentWindow.document.XMLDocument:p.contentWindow.document}else{if(p.contentDocument){f.responseText=p.contentDocument.document.body?p.contentDocument.document.body.textContent||document.body.innerText:null;f.responseXML=p.contentDocument.document.XMLDocument?p.contentDocument.document.XMLDocument:p.contentDocument.document}}}catch(o){jQuery.handleError(k,f,null,o)}if(f||l=="timeout"){c=true;var m;try{m=l!="timeout"?"success":"error";if(m!="error"){var n=jQuery.uploadHttpData(f,k.dataType);if(k.success){k.success(n,m)}if(k.global){jQuery.event.trigger("ajaxSuccess",[f,k])}}else{jQuery.handleError(k,f,m)}}catch(o){m="error";jQuery.handleError(k,f,m,o)}if(k.global){jQuery.event.trigger("ajaxComplete",[f,k])}if(k.global&&!--jQuery.active){jQuery.event.trigger("ajaxStop")}if(k.complete){k.complete(f,m)}jQuery(p).unbind();setTimeout(function(){try{$(p).remove();$(b).remove()}catch(q){jQuery.handleError(k,f,null,q)}},100);f=null}};if(k.timeout>0){setTimeout(function(){if(!c){d("timeout")}},k.timeout)}try{var b=$("#"+j);$(b).attr("action",k.url);$(b).attr("method","POST");$(b).attr("target",h);if(b.encoding){b.encoding="multipart/form-data"}else{b.enctype="multipart/form-data"}$(b).submit()}catch(g){jQuery.handleError(k,f,null,g)}if(window.attachEvent){document.getElementById(h).attachEvent("onload",d)}else{document.getElementById(h).addEventListener("load",d,false)}return{abort:function(){}}},uploadHttpData:function(r,type){var data=!type;data=type=="xml"||data?r.responseXML:r.responseText;if(type=="script"){jQuery.globalEval(data)}if(type=="json"){eval("data = "+data)}if(type=="html"){jQuery("<div>").html(data).evalScripts()}return data}});function ajaxFileUpload(imageUrl)
{$("#loading").ajaxStart(function(){$(this).show();}).ajaxComplete(function(){$(this).hide();});$("#upload").ajaxStart(function(){$(this).hide();}).ajaxComplete(function(){$(this).show();});$.ajaxFileUpload
({url:'/upload/',secureuri:false,fileElementId:'file-upload',dataType:'xml',success:function(data,status)
{var fileURL=$(data).find('file_url').text();console.log(fileURL)
var error=$(data).find('error').text();if(error!=''){alert(error);}else{imageUrl.attr('value',fileURL);}},error:function(data,status,e)
{alert(e);}});return false;}
function createWmd(Attacklab){Attacklab.wmdBase=function(editorElements,hideHelp,attachments){var wmd=Attacklab;var doc=top.document;var re=top.RegExp;var nav=top.navigator;wmd.Util={};wmd.Position={};wmd.Command={};wmd.Global={};var util=wmd.Util;var position=wmd.Position;var command=wmd.Command;var global=wmd.Global;global.isIE=/msie/.test(nav.userAgent.toLowerCase());global.isIE_5or6=/msie 6/.test(nav.userAgent.toLowerCase())||/msie 5/.test(nav.userAgent.toLowerCase());global.isIE_7plus=global.isIE&&!global.isIE_5or6;global.isIE_9=/msie 9/.test(nav.userAgent.toLowerCase());global.isOpera=/opera/.test(nav.userAgent.toLowerCase());global.isKonqueror=/konqueror/.test(nav.userAgent.toLowerCase());var toolbar_strong_label=$.i18n._('bold')+" <strong> Ctrl-B";var toolbar_emphasis_label=$.i18n._('italic')+" <em> Ctrl-I";var toolbar_hyperlink_label=$.i18n._('link')+" <a> Ctrl-L";var toolbar_blockquote_label=$.i18n._('quote')+" <blockquote> Ctrl-.";var toolbar_code_label=$.i18n._('preformatted text')+" <pre><code> Ctrl-K";var toolbar_image_label=$.i18n._('image')+" <img> Ctrl-G";var toolbar_numbered_label=$.i18n._('numbered list')+" <ol> Ctrl-O";var toolbar_bulleted_label=$.i18n._('bulleted list')+" <ul> Ctrl-U";var toolbar_heading_label=$.i18n._('heading')+" <h1>/<h2> Ctrl-H";var toolbar_horizontal_label=$.i18n._('horizontal bar')+" <hr> Ctrl-R";var toolbar_undo_label=$.i18n._('undo')+" Ctrl-Z";var toolbar_redo_label=$.i18n._('redo')+" Ctrl-Y";var imageDialogText=pageContext.i18n.WMDImageDialogText;var linkDialogText=pageContext.i18n.WMDLinkDialogText;var uploadImageHTML="<div>"+pageContext.i18n.WMDUploadImage+"</div>"+"<input type=\"file\" name=\"file-upload\" id=\"file-upload\" size=\"26\" "+"onchange=\"return ajaxFileUpload($('#image-url'));\"/><br>"+"<img id=\"loading\" src=\""+mediaUrl("media/images/indicator.gif")+"\" style=\"display:none;\"/>";var imageDefaultText="http://";var linkDefaultText="http://";var imageDirectory="images/";var previewPollInterval=500;var pastePollInterval=100;var helpLink=pageContext.url.markdownHelp;var helpHoverTitle=pageContext.i18n.WMDHelp;var helpTarget="_blank";if(editorElements){wmd.PanelCollection=function(){this.buttonBar=editorElements.buttonBar;this.preview=editorElements.preview;this.output=editorElements.output;this.input=editorElements.input;};}else{wmd.PanelCollection=function(){this.buttonBar=doc.getElementById("wmd-button-bar");this.preview=doc.getElementById("previewer");this.output=doc.getElementById("wmd-output");this.input=doc.getElementById("body");};}
wmd.panels=undefined;wmd.ieCachedRange=null;wmd.ieRetardedClick=false;util.isVisible=function(elem){if(window.getComputedStyle){return window.getComputedStyle(elem,null).getPropertyValue("display")!=="none";}
else if(elem.currentStyle){return elem.currentStyle["display"]!=="none";}};util.addEvent=function(elem,event,listener){if(elem.attachEvent){elem.attachEvent("on"+event,listener);}
else{elem.addEventListener(event,listener,false);}};util.removeEvent=function(elem,event,listener){if(elem.detachEvent){elem.detachEvent("on"+event,listener);}
else{elem.removeEventListener(event,listener,false);}};util.fixEolChars=function(text){text=text.replace(/\r\n/g,"\n");text=text.replace(/\r/g,"\n");return text;};util.extendRegExp=function(regex,pre,post){if(pre===null||pre===undefined)
{pre="";}
if(post===null||post===undefined)
{post="";}
var pattern=regex.toString();var flags="";var result=pattern.match(/\/([gim]*)$/);if(result===null){flags=result[0];}
else{flags="";}
pattern=pattern.replace(/(^\/|\/[gim]*$)/g,"");pattern=pre+pattern+post;return new RegExp(pattern,flags);}
util.createImage=function(img){var imgPath=imageDirectory+img;var elem=doc.createElement("img");elem.className="wmd-button";elem.src=imgPath;return elem;};util.prompt=function(text,defaultInputText,makeLinkMarkdown,isImage){var $defNodes='<span><h3>'+text+'</h3><input type="text" size="40" value="http://" /></span>';var $nodes=null;if(isImage){$nodes=commandUtils.createUploadDialogNodes();$nodes.find('h3').before($defNodes);}else{$nodes=$defNodes;}
var input=$nodes.find('input')[0];var doptions={nodes:$nodes,yes_callback:function($dialog,close){var text=$dialog.find('input').val();text=text.replace('http://http://','http://');text=text.replace('http://https://','https://');text=text.replace('http://ftp://','ftp://');if(text.indexOf('http://')===-1&&text.indexOf('ftp://')===-1&&text.indexOf('https://')===-1){text='http://'+text;}
makeLinkMarkdown(text);close();},show_no:true,onAfterShow:function(){var defTextLen=defaultInputText.length;console.log(input);if(input.selectionStart!==undefined){input.selectionStart=0;input.selectionEnd=defTextLen;}
else if(input.createTextRange){var range=input.createTextRange();range.collapse(false);range.moveStart("character",-defTextLen);range.moveEnd("character",defTextLen);range.select();}
input.focus();}};commandUtils.showDialog(doptions);};position.getTop=function(elem,isInner){var result=elem.offsetTop;if(!isInner){while(elem=elem.offsetParent){result+=elem.offsetTop;}}
return result;};position.getHeight=function(elem){return elem.offsetHeight||elem.scrollHeight;};position.getWidth=function(elem){return elem.offsetWidth||elem.scrollWidth;};position.getPageSize=function(){var scrollWidth,scrollHeight;var innerWidth,innerHeight;if(self.innerHeight&&self.scrollMaxY){scrollWidth=doc.body.scrollWidth;scrollHeight=self.innerHeight+self.scrollMaxY;}
else if(doc.body.scrollHeight>doc.body.offsetHeight){scrollWidth=doc.body.scrollWidth;scrollHeight=doc.body.scrollHeight;}
else{scrollWidth=doc.body.offsetWidth;scrollHeight=doc.body.offsetHeight;}
if(self.innerHeight){innerWidth=self.innerWidth;innerHeight=self.innerHeight;}
else if(doc.documentElement&&doc.documentElement.clientHeight){innerWidth=doc.documentElement.clientWidth;innerHeight=doc.documentElement.clientHeight;}
else if(doc.body){innerWidth=doc.body.clientWidth;innerHeight=doc.body.clientHeight;}
var maxWidth=Math.max(scrollWidth,innerWidth);var maxHeight=Math.max(scrollHeight,innerHeight);return[maxWidth,maxHeight,innerWidth,innerHeight];};wmd.inputPoller=function(callback,interval){var pollerObj=this;var inputArea=wmd.panels.input;var lastStart;var lastEnd;var markdown;var killHandle;this.tick=function(){if(!util.isVisible(inputArea)){return;}
if(inputArea.selectionStart||inputArea.selectionStart===0){var start=inputArea.selectionStart;var end=inputArea.selectionEnd;if(start!=lastStart||end!=lastEnd){lastStart=start;lastEnd=end;if(markdown!=inputArea.value){markdown=inputArea.value;return true;}}}
return false;};var doTickCallback=function(){if(!util.isVisible(inputArea)){return;}
if(pollerObj.tick()){callback();}};var assignInterval=function(){killHandle=top.setInterval(doTickCallback,interval);};this.destroy=function(){top.clearInterval(killHandle);};assignInterval();};wmd.undoManager=function(callback){var undoObj=this;var undoStack=[];var stackPtr=0;var mode="none";var lastState;var poller;var timer;var inputStateObj;var setMode=function(newMode,noSave){if(mode!=newMode){mode=newMode;if(!noSave){saveState();}}
if(!global.isIE||mode!="moving"){timer=top.setTimeout(refreshState,1);}
else{inputStateObj=null;}};var refreshState=function(){inputStateObj=new wmd.TextareaState();poller.tick();timer=undefined;};this.setCommandMode=function(){mode="command";saveState();timer=top.setTimeout(refreshState,0);};this.canUndo=function(){return stackPtr>1;};this.canRedo=function(){if(undoStack[stackPtr+1]){return true;}
return false;};this.undo=function(){if(undoObj.canUndo()){if(lastState){lastState.restore();lastState=null;}
else{undoStack[stackPtr]=new wmd.TextareaState();undoStack[--stackPtr].restore();if(callback){callback();}}}
mode="none";wmd.panels.input.focus();refreshState();};this.redo=function(){if(undoObj.canRedo()){undoStack[++stackPtr].restore();if(callback){callback();}}
mode="none";wmd.panels.input.focus();refreshState();};var saveState=function(){var currState=inputStateObj||new wmd.TextareaState();if(!currState){return false;}
if(mode=="moving"){if(!lastState){lastState=currState;}
return;}
if(lastState){if(undoStack[stackPtr-1].text!=lastState.text){undoStack[stackPtr++]=lastState;}
lastState=null;}
undoStack[stackPtr++]=currState;undoStack[stackPtr+1]=null;if(callback){callback();}};var handleCtrlYZ=function(event){var handled=false;if(event.ctrlKey||event.metaKey){var keyCode=event.charCode||event.keyCode;var keyCodeChar=String.fromCharCode(keyCode);switch(keyCodeChar){case"y":undoObj.redo();handled=true;break;case"z":if(!event.shiftKey){undoObj.undo();}
else{undoObj.redo();}
handled=true;break;}}
if(handled){if(event.preventDefault){event.preventDefault();}
if(top.event){top.event.returnValue=false;}
return;}};var handleModeChange=function(event){if(!event.ctrlKey&&!event.metaKey){var keyCode=event.keyCode;if((keyCode>=33&&keyCode<=40)||(keyCode>=63232&&keyCode<=63235)){setMode("moving");}
else if(keyCode==8||keyCode==46||keyCode==127){setMode("deleting");}
else if(keyCode==13){setMode("newlines");}
else if(keyCode==27){setMode("escape");}
else if((keyCode<16||keyCode>20)&&keyCode!=91){setMode("typing");}}};var setEventHandlers=function(){util.addEvent(wmd.panels.input,"keypress",function(event){if((event.ctrlKey||event.metaKey)&&(event.keyCode==89||event.keyCode==90)){event.preventDefault();}});var handlePaste=function(){if(global.isIE||(inputStateObj&&inputStateObj.text!=wmd.panels.input.value)){if(timer==undefined){mode="paste";saveState();refreshState();}}};poller=new wmd.inputPoller(handlePaste,pastePollInterval);util.addEvent(wmd.panels.input,"keydown",handleCtrlYZ);util.addEvent(wmd.panels.input,"keydown",handleModeChange);util.addEvent(wmd.panels.input,"mousedown",function(){setMode("moving");});wmd.panels.input.onpaste=handlePaste;wmd.panels.input.ondrop=handlePaste;};var init=function(){setEventHandlers();refreshState();saveState();};this.destroy=function(){if(poller){poller.destroy();}};init();};wmd.editor=function(previewRefreshCallback){if(!previewRefreshCallback){previewRefreshCallback=function(){};}
var inputBox=wmd.panels.input;var offsetHeight=0;var editObj=this;var mainDiv;var mainSpan;var div;var creationHandle;var undoMgr;var doClick=function(button){inputBox.focus();if(button.textOp){if(undoMgr){undoMgr.setCommandMode();}
var state=new wmd.TextareaState();if(!state){return;}
var chunks=state.getChunks();var fixupInputArea=function(){inputBox.focus();if(chunks){state.setChunks(chunks);}
state.restore();previewRefreshCallback();};var useDefaultText=true;var noCleanup=button.textOp(chunks,fixupInputArea,useDefaultText);if(!noCleanup){fixupInputArea();}}
if(button.execute){button.execute(editObj);}};var undoButton=null;var redoButton=null;var setUndoRedoButtonStates=function(){if(undoMgr){setupButton(undoButton,undoMgr.canUndo());setupButton(redoButton,undoMgr.canRedo());}};var setupButton=function(button,isEnabled){var normalYShift="0px";var disabledYShift="-20px";var highlightYShift="-40px";if(isEnabled){button.style.backgroundPosition=button.XShift+" "+normalYShift;button.onmouseover=function(){this.style.backgroundPosition=this.XShift+" "+highlightYShift;};button.onmouseout=function(){this.style.backgroundPosition=this.XShift+" "+normalYShift;};if(global.isIE){button.onmousedown=function(){wmd.ieRetardedClick=true;wmd.ieCachedRange=document.selection.createRange();};}
if(!button.isHelp)
{button.onclick=function(){if(this.onmouseout){this.onmouseout();}
doClick(this);return false;}}}
else{button.style.backgroundPosition=button.XShift+" "+disabledYShift;button.onmouseover=button.onmouseout=button.onclick=function(){};}}
var makeSpritedButtonRow=function(){var $buttonBar=$(editorElements?editorElements.buttonBar:document.getElementById("wmd-button-bar"));$buttonBar.addClass('wmd-button-bar');var buttons={};var normalYShift="0px";var disabledYShift="-20px";var highlightYShift="-40px";var buttonRow=$("<ul></ul>");buttonRow.addClass("wmd-button-row");$buttonBar.append(buttonRow);buttonRow=buttonRow.get(0);var boldButton=document.createElement("li");boldButton.className="wmd-button wmd-bold-button";boldButton.title=pageContext.i18n.WMDBold;boldButton.XShift="0px";boldButton.textOp=command.doBold;setupButton(boldButton,true);buttonRow.appendChild(boldButton);buttons.bold=boldButton;var italicButton=document.createElement("li");italicButton.className="wmd-button wmd-italic-button";italicButton.title=pageContext.i18n.WMDItalic;italicButton.XShift="-20px";italicButton.textOp=command.doItalic;setupButton(italicButton,true);buttonRow.appendChild(italicButton);buttons.italic=italicButton;var spacer1=document.createElement("li");spacer1.className="wmd-spacer wmd-spacer1";buttonRow.appendChild(spacer1);var linkButton=document.createElement("li");linkButton.className="wmd-button wmd-link-button";linkButton.title=pageContext.i18n.WMDLink;linkButton.XShift="-40px";linkButton.textOp=function(chunk,postProcessing,useDefaultText){return command.doLinkOrImage(chunk,postProcessing,'link');};setupButton(linkButton,true);buttonRow.appendChild(linkButton);buttons.link=linkButton;var quoteButton=document.createElement("li");quoteButton.className="wmd-button wmd-quote-button";quoteButton.title=pageContext.i18n.WMDQuote;quoteButton.XShift="-60px";quoteButton.textOp=command.doBlockquote;setupButton(quoteButton,true);buttonRow.appendChild(quoteButton);buttons.quote=quoteButton;var codeButton=document.createElement("li");codeButton.className="wmd-button wmd-code-button";codeButton.title=pageContext.i18n.WMDCode;codeButton.XShift="-80px";codeButton.textOp=command.doCode;setupButton(codeButton,true);buttonRow.appendChild(codeButton);buttons.code=codeButton;var imageButton=document.createElement("li");imageButton.className="wmd-button wmd-image-button";imageButton.title=pageContext.i18n.WMDImage;imageButton.XShift="-120px";imageButton.textOp=function(chunk,postProcessing,useDefaultText){return command.doLinkOrImage(chunk,postProcessing,'image');};setupButton(imageButton,true);buttonRow.appendChild(imageButton);buttons.image=imageButton;if(attachments){var attachmentButton=document.createElement("li");attachmentButton.className="wmd-button wmd-attachment-button";attachmentButton.title=pageContext.i18n.WMDAttachment;attachmentButton.XShift="-100px";attachmentButton.textOp=function(chunk,postProcessing,useDefaultText){return command.doLinkOrImage(chunk,postProcessing,'attachment');};setupButton(attachmentButton,true);buttonRow.appendChild(attachmentButton);buttons.attachment=attachmentButton;}
var spacer2=document.createElement("li");spacer2.className="wmd-spacer wmd-spacer2";buttonRow.appendChild(spacer2);var olistButton=document.createElement("li");olistButton.className="wmd-button wmd-olist-button";olistButton.title=pageContext.i18n.WMDOrderedList;olistButton.XShift="-140px";olistButton.textOp=function(chunk,postProcessing,useDefaultText){command.doList(chunk,postProcessing,true,useDefaultText);};setupButton(olistButton,true);buttonRow.appendChild(olistButton);buttons.olist=olistButton;var ulistButton=document.createElement("li");ulistButton.className="wmd-button wmd-ulist-button";ulistButton.title=pageContext.i18n.WMDUnorderedList;ulistButton.XShift="-160px";ulistButton.textOp=function(chunk,postProcessing,useDefaultText){command.doList(chunk,postProcessing,false,useDefaultText);};setupButton(ulistButton,true);buttonRow.appendChild(ulistButton);buttons.ulist=ulistButton;var headingButton=document.createElement("li");headingButton.className="wmd-button wmd-heading-button";headingButton.title=pageContext.i18n.WMDHeading;headingButton.XShift="-180px";headingButton.textOp=command.doHeading;setupButton(headingButton,true);buttonRow.appendChild(headingButton);buttons.heading=headingButton;var hrButton=document.createElement("li");hrButton.className="wmd-button wmd-hr-button";hrButton.title=pageContext.i18n.WMDHorizontalRule;hrButton.XShift="-200px";hrButton.textOp=command.doHorizontalRule;setupButton(hrButton,true);buttonRow.appendChild(hrButton);buttons.hr=hrButton;var spacer3=document.createElement("li");spacer3.className="wmd-spacer wmd-spacer3";buttonRow.appendChild(spacer3);undoButton=document.createElement("li");undoButton.className="wmd-button wmd-undo-button";undoButton.title=pageContext.i18n.WMDUndo;undoButton.XShift="-220px";undoButton.execute=function(manager){manager.undo();};setupButton(undoButton,true);buttonRow.appendChild(undoButton);buttons.undo=undoButton;redoButton=document.createElement("li");redoButton.className="wmd-button wmd-redo-button";redoButton.title=pageContext.i18n.WMDRedoWin;if(/win/.test(nav.platform.toLowerCase())){redoButton.title=pageContext.i18n.WMDRedoWin;}
else{redoButton.title=pageContext.i18n.WMDRedoOther;}
redoButton.XShift="-240px";redoButton.execute=function(manager){manager.redo();};setupButton(redoButton,true);buttonRow.appendChild(redoButton);buttons.redo=redoButton;var helpButton=document.createElement("li");helpButton.className="wmd-button wmd-help-button";helpButton.XShift="-260px";helpButton.isHelp=true;if(!hideHelp){var helpAnchor=document.createElement("a");helpAnchor.href=helpLink;helpAnchor.target=helpTarget
helpAnchor.title=helpHoverTitle;helpButton.appendChild(helpAnchor);setupButton(helpButton,true);buttonRow.appendChild(helpButton);buttons.help=helpButton;}
setUndoRedoButtonStates();return buttons;}
var setupEditor=function(){if(/\?noundo/.test(doc.location.href)){wmd.nativeUndo=true;}
if(!wmd.nativeUndo){undoMgr=new wmd.undoManager(function(){previewRefreshCallback();setUndoRedoButtonStates();});}
var buttons=makeSpritedButtonRow();var keyEvent="keydown";if(global.isOpera){keyEvent="keypress";}
util.addEvent(inputBox,keyEvent,function(key){if(key.ctrlKey||key.metaKey){var keyCode=key.charCode||key.keyCode;var keyCodeStr=String.fromCharCode(keyCode).toLowerCase();switch(keyCodeStr){case"b":doClick(buttons.bold);break;case"i":doClick(buttons.italic);break;case"l":doClick(buttons.link);break;case"q":doClick(buttons.quote);break;case"k":doClick(buttons.code);break;case"g":doClick(buttons.image);break;case"o":doClick(buttons.olist);break;case"u":doClick(buttons.ulist);break;case"h":doClick(buttons.heading);break;case"r":doClick(buttons.hr);break;case"y":doClick(buttons.redo);break;case"z":if(key.shiftKey){doClick(buttons.redo);}
else{doClick(buttons.undo);}
break;default:return;}
if(key.preventDefault){key.preventDefault();}
if(top.event){top.event.returnValue=false;}}});util.addEvent(inputBox,"keyup",function(key){if(!key.shiftKey&&!key.ctrlKey&&!key.metaKey){var keyCode=key.charCode||key.keyCode;if(keyCode===13){fakeButton={};fakeButton.textOp=command.doAutoindent;doClick(fakeButton);}}});if(global.isIE){util.addEvent(inputBox,"keydown",function(key){var code=key.keyCode;if(code===27){return false;}});}};var convertToHtml=function(){if(wmd.showdown){var markdownConverter=new wmd.showdown.converter();}
var text=inputBox.value;var callback=function(){inputBox.value=text;};if(!/markdown/.test(wmd.wmd_env.output.toLowerCase())){if(markdownConverter){inputBox.value=markdownConverter.makeHtml(text);top.setTimeout(callback,0);}}
return true;};this.undo=function(){if(undoMgr){undoMgr.undo();}};this.redo=function(){if(undoMgr){undoMgr.redo();}};var init=function(){setupEditor();};this.destroy=function(){if(undoMgr){undoMgr.destroy();}
if(div.parentNode){div.parentNode.removeChild(div);}
if(inputBox){inputBox.style.marginTop="";}
top.clearInterval(creationHandle);};init();};wmd.TextareaState=function(){var stateObj=this;var inputArea=wmd.panels.input;this.init=function(){if(!util.isVisible(inputArea)){return;}
this.setInputAreaSelectionStartEnd();this.scrollTop=inputArea.scrollTop;if(!this.text&&inputArea.selectionStart||inputArea.selectionStart===0){this.text=inputArea.value;}}
this.setInputAreaSelection=function(){if(!util.isVisible(inputArea)){return;}
if(inputArea.selectionStart!==undefined&&!global.isOpera&&!global.isIE_9){inputArea.focus();inputArea.selectionStart=stateObj.start;inputArea.selectionEnd=stateObj.end;inputArea.scrollTop=stateObj.scrollTop;}
else if(doc.selection){if(doc.activeElement&&doc.activeElement!==inputArea){return;}
inputArea.focus();var range=inputArea.createTextRange();range.moveStart("character",-inputArea.value.length);range.moveEnd("character",-inputArea.value.length);range.moveEnd("character",stateObj.end);range.moveStart("character",stateObj.start);range.select();}};this.setInputAreaSelectionStartEnd=function(){if((inputArea.selectionStart||inputArea.selectionStart===0)&&!global.isIE_9){stateObj.start=inputArea.selectionStart;stateObj.end=inputArea.selectionEnd;}
else if(doc.selection){stateObj.text=util.fixEolChars(inputArea.value);var range;if(wmd.ieRetardedClick&&wmd.ieCachedRange){range=wmd.ieCachedRange;wmd.ieRetardedClick=false;}
else{range=doc.selection.createRange();}
var fixedRange=util.fixEolChars(range.text);var marker="\x07";var markedRange=marker+fixedRange+marker;range.text=markedRange;var inputText=util.fixEolChars(inputArea.value);range.moveStart("character",-markedRange.length);range.text=fixedRange;stateObj.start=inputText.indexOf(marker);stateObj.end=inputText.lastIndexOf(marker)-marker.length;var len=stateObj.text.length-util.fixEolChars(inputArea.value).length;if(len){range.moveStart("character",-fixedRange.length);while(len--){fixedRange+="\n";stateObj.end+=1;}
range.text=fixedRange;}
this.setInputAreaSelection();}};this.restore=function(){if(stateObj.text!=undefined&&stateObj.text!=inputArea.value){inputArea.value=stateObj.text+"\n";}
this.setInputAreaSelection();inputArea.scrollTop=stateObj.scrollTop;};this.getChunks=function(){var chunk=new wmd.Chunks();chunk.before=util.fixEolChars(stateObj.text.substring(0,stateObj.start));chunk.startTag="";chunk.selection=util.fixEolChars(stateObj.text.substring(stateObj.start,stateObj.end));chunk.endTag="";chunk.after=util.fixEolChars(stateObj.text.substring(stateObj.end));chunk.scrollTop=stateObj.scrollTop;return chunk;};this.setChunks=function(chunk){chunk.before=chunk.before+chunk.startTag;chunk.after=chunk.endTag+chunk.after;if(global.isOpera){chunk.before=chunk.before.replace(/\n/g,"\r\n");chunk.selection=chunk.selection.replace(/\n/g,"\r\n");chunk.after=chunk.after.replace(/\n/g,"\r\n");}
this.start=chunk.before.length;this.end=chunk.before.length+chunk.selection.length;this.text=chunk.before+chunk.selection+chunk.after;this.scrollTop=chunk.scrollTop;};this.init();};wmd.Chunks=function(){};wmd.Chunks.prototype.findTags=function(startRegex,endRegex){var chunkObj=this;var regex;if(startRegex){regex=util.extendRegExp(startRegex,"","$");this.before=this.before.replace(regex,function(match){chunkObj.startTag=chunkObj.startTag+match;return"";});regex=util.extendRegExp(startRegex,"^","");this.selection=this.selection.replace(regex,function(match){chunkObj.startTag=chunkObj.startTag+match;return"";});}
if(endRegex){regex=util.extendRegExp(endRegex,"","$");this.selection=this.selection.replace(regex,function(match){chunkObj.endTag=match+chunkObj.endTag;return"";});regex=util.extendRegExp(endRegex,"^","");this.after=this.after.replace(regex,function(match){chunkObj.endTag=match+chunkObj.endTag;return"";});}};wmd.Chunks.prototype.trimWhitespace=function(remove){this.selection=this.selection.replace(/^(\s*)/,"");if(!remove){this.before+=re.$1;}
this.selection=this.selection.replace(/(\s*)$/,"");if(!remove){this.after=re.$1+this.after;}};wmd.Chunks.prototype.addBlankLines=function(nLinesBefore,nLinesAfter,findExtraNewlines){if(nLinesBefore===undefined){nLinesBefore=1;}
if(nLinesAfter===undefined){nLinesAfter=1;}
nLinesBefore++;nLinesAfter++;var regexText;var replacementText;if(navigator.userAgent.match(/Chrome/)){"X".match(/()./)}
this.selection=this.selection.replace(/(^\n*)/,"");this.startTag=this.startTag+re.$1;this.selection=this.selection.replace(/(\n*$)/,"");this.endTag=this.endTag+re.$1;this.startTag=this.startTag.replace(/(^\n*)/,"");this.before=this.before+re.$1;this.endTag=this.endTag.replace(/(\n*$)/,"");this.after=this.after+re.$1;if(this.before){regexText=replacementText="";while(nLinesBefore--){regexText+="\\n?";replacementText+="\n";}
if(findExtraNewlines){regexText="\\n*";}
this.before=this.before.replace(new re(regexText+"$",""),replacementText);}
if(this.after){regexText=replacementText="";while(nLinesAfter--){regexText+="\\n?";replacementText+="\n";}
if(findExtraNewlines){regexText="\\n*";}
this.after=this.after.replace(new re(regexText,""),replacementText);}};command.prefixes="(?:\\s{4,}|\\s*>|\\s*-\\s+|\\s*\\d+\\.|=|\\+|-|_|\\*|#|\\s*\\[[^\n]]+\\]:)";command.unwrap=function(chunk){var txt=new re("([^\\n])\\n(?!(\\n|"+command.prefixes+"))","g");chunk.selection=chunk.selection.replace(txt,"$1 $2");};command.wrap=function(chunk,len){command.unwrap(chunk);var regex=new re("(.{1,"+len+"})( +|$\\n?)","gm");chunk.selection=chunk.selection.replace(regex,function(line,marked){if(new re("^"+command.prefixes,"").test(line)){return line;}
return marked+"\n";});chunk.selection=chunk.selection.replace(/\s+$/,"");};command.doBold=function(chunk,postProcessing,useDefaultText){return command.doBorI(chunk,2,"strong text");};command.doItalic=function(chunk,postProcessing,useDefaultText){return command.doBorI(chunk,1,"emphasized text");};command.doBorI=function(chunk,nStars,insertText){chunk.trimWhitespace();chunk.selection=chunk.selection.replace(/\n{2,}/g,"\n");chunk.before.search(/(\**$)/);var starsBefore=re.$1;chunk.after.search(/(^\**)/);var starsAfter=re.$1;var prevStars=Math.min(starsBefore.length,starsAfter.length);if((prevStars>=nStars)&&(prevStars!=2||nStars!=1)){chunk.before=chunk.before.replace(re("[*]{"+nStars+"}$",""),"");chunk.after=chunk.after.replace(re("^[*]{"+nStars+"}",""),"");}
else if(!chunk.selection&&starsAfter){chunk.after=chunk.after.replace(/^([*_]*)/,"");chunk.before=chunk.before.replace(/(\s?)$/,"");var whitespace=re.$1;chunk.before=chunk.before+starsAfter+whitespace;}
else{if(!chunk.selection&&!starsAfter){chunk.selection=insertText;}
var markup=nStars<=1?"*":"**";chunk.before=chunk.before+markup;chunk.after=markup+chunk.after;}
return;};command.stripLinkDefs=function(text,defsToAdd){text=text.replace(/^[ ]{0,3}\[(\d+)\]:[ \t]*\n?[ \t]*<?(\S+?)>?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|$)/gm,function(totalMatch,id,link,newlines,title){defsToAdd[id]=totalMatch.replace(/\s*$/,"");if(newlines){defsToAdd[id]=totalMatch.replace(/["(](.+?)[")]$/,"");return newlines+title;}
return"";});return text;};command.addLinkDef=function(chunk,linkDef){var refNumber=0;var defsToAdd={};chunk.before=command.stripLinkDefs(chunk.before,defsToAdd);chunk.selection=command.stripLinkDefs(chunk.selection,defsToAdd);chunk.after=command.stripLinkDefs(chunk.after,defsToAdd);var defs="";var regex=/(\[)((?:\[[^\]]*\]|[^\[\]])*)(\][ ]?(?:\n[ ]*)?\[)(\d+)(\])/g;var addDefNumber=function(def){refNumber++;def=def.replace(/^[ ]{0,3}\[(\d+)\]:/,"  ["+refNumber+"]:");defs+="\n"+def;};var getLink=function(wholeMatch,before,inner,afterInner,id,end){inner=inner.replace(regex,getLink);if(defsToAdd[id]){addDefNumber(defsToAdd[id]);return before+inner+afterInner+refNumber+end;}
return wholeMatch;};chunk.before=chunk.before.replace(regex,getLink);if(linkDef){addDefNumber(linkDef);}
else{chunk.selection=chunk.selection.replace(regex,getLink);}
var refOut=refNumber;chunk.after=chunk.after.replace(regex,getLink);if(chunk.after){chunk.after=chunk.after.replace(/\n*$/,"");}
if(!chunk.after){chunk.selection=chunk.selection.replace(/\n*$/,"");}
chunk.after+="\n\n"+defs;return refOut;};command.doLinkOrImage=function(chunk,postProcessing,type){var isImage=type=='image';var isAttachment=type=='attachment';chunk.trimWhitespace();chunk.findTags(/\s*!?\[/,/\][ ]?(?:\n[ ]*)?(\[.*?\])?/);if(chunk.endTag.length>1){chunk.startTag=chunk.startTag.replace(/!?\[/,"");chunk.endTag="";command.addLinkDef(chunk,null);}
else{if(/\n\n/.test(chunk.selection)){command.addLinkDef(chunk,null);return;}
var makeLinkMarkdown=function(link,isImageOverride){if(isImageOverride!=undefined){isImage=isImageOverride;}
if(link!==null){link=link.replace(/\s/g,'+');chunk.startTag=chunk.endTag="";var linkDef=" [999]: "+link;var num=command.addLinkDef(chunk,linkDef);chunk.startTag=isImage?"![":"[";chunk.endTag="]["+num+"]";if(!chunk.selection){if(isImage){chunk.selection="alt text";}
else{chunk.selection="link text";}}}
postProcessing();};var text=null;var defaultInputText=null;if(isImage){text=imageDialogText;defaultInputText=imageDefaultText;}else{text=linkDialogText;defaultInputText=linkDefaultText;}
var $defNodes=$('<span><h3>'+text+'</h3><input type="text" size="40" value="http://" /></span>');if(isImage){command.doImage($defNodes,defaultInputText,makeLinkMarkdown);}else if(isAttachment){command.doAttachment(makeLinkMarkdown);}else{command.doLink($defNodes,makeLinkMarkdown,defaultInputText);}
return true;}};command.doAttachment=function(makeLinkMarkdown){commandUtils.showUploadDialog(null,{authorizeUrl:pageContext.url.authorizeAttachmentsUrl,authorizeContext:attachments.authorize(false),onSuccess:function(tid,data){attachments.toForm(data);makeLinkMarkdown(data.url,data.isImage);}});};command.doImage=function($defNodes,defaultInputText,makeLinkMarkdown){if(!attachments){command.doLink($defNodes,makeLinkMarkdown,defaultInputText);return;}
var $nodes=commandUtils.createUploadDialogNodes();$nodes.find('h3').before($defNodes);var $input=$nodes.find('input[type=text]');commandUtils.showUploadDialog(null,{nodes:$nodes,authorizeUrl:pageContext.url.authorizeAttachmentsUrl,authorizeContext:attachments.authorize(true),onAfterShow:function(){var input=$input[0];var defTextLen=defaultInputText.length;if(input.selectionStart!==undefined){input.selectionStart=0;input.selectionEnd=defTextLen;}
else if(input.createTextRange){var range=input.createTextRange();range.collapse(false);range.moveStart("character",-defTextLen);range.moveEnd("character",defTextLen);range.select();}
input.focus();},yes_callback:function($dialog,close,actions){if($dialog.find('input[type=file]').val()){actions.authorizeAndStart();}else{if($input.val()!=defaultInputText){makeLinkMarkdown($input.val());actions.close();}}},onSuccess:function(tid,data){attachments.toForm(data);makeLinkMarkdown(data.url);}});};command.doLink=function($nodes,makeLinkMarkdown,defaultInputText){var input=$nodes.find('input')[0];var doptions={nodes:$nodes,yes_callback:function($dialog,close){var text=$dialog.find('input').val();text=text.replace('http://http://','http://');text=text.replace('http://https://','https://');text=text.replace('http://ftp://','ftp://');if(text.indexOf('http://')===-1&&text.indexOf('ftp://')===-1&&text.indexOf('https://')===-1){text='http://'+text;}
makeLinkMarkdown(text);close();},show_no:true,onAfterShow:function(){var defTextLen=defaultInputText.length;if(input.selectionStart!==undefined){input.selectionStart=0;input.selectionEnd=defTextLen;}
else if(input.createTextRange){var range=input.createTextRange();range.collapse(false);range.moveStart("character",-defTextLen);range.moveEnd("character",defTextLen);range.select();}
input.focus();}};commandUtils.showDialog(doptions);};util.makeAPI=function(){wmd.wmd={};wmd.wmd.editor=wmd.editor;wmd.wmd.previewManager=wmd.previewManager;};util.startEditor=function(){if(wmd.wmd_env.autostart===false){util.makeAPI();return;}
var edit;var previewMgr;var loadListener=function(){wmd.panels=new wmd.PanelCollection();previewMgr=new wmd.previewManager();var previewRefreshCallback=previewMgr.refresh;edit=new wmd.editor(previewRefreshCallback);previewMgr.refresh(true);};util.addEvent(top,"load",loadListener);};wmd.previewManager=function(){var managerObj=this;var converter;var poller;var timeout;var elapsedTime;var oldInputText;var htmlOut;var maxDelay=3000;var startType="delayed";var setupEvents=function(inputElem,listener){util.addEvent(inputElem,"input",listener);inputElem.onpaste=listener;inputElem.ondrop=listener;util.addEvent(inputElem,"keypress",listener);util.addEvent(inputElem,"keydown",listener);poller=new wmd.inputPoller(listener,previewPollInterval);};var getDocScrollTop=function(){var result=0;if(top.innerHeight){result=top.pageYOffset;}
else
if(doc.documentElement&&doc.documentElement.scrollTop){result=doc.documentElement.scrollTop;}
else
if(doc.body){result=doc.body.scrollTop;}
return result;};var makePreviewHtml=function(){if(!wmd.panels.preview&&!wmd.panels.output){return;}
var text=wmd.panels.input.value;if(text&&text==oldInputText){return;}
else{oldInputText=text;}
var prevTime=new Date().getTime();if(text){$.ajax({type:'POST',url:pageContext.url.updateMarkdown,data:{markdown:text},success:function(response){text=response.result.parsed;var currTime=new Date().getTime();elapsedTime=currTime-prevTime;pushPreviewHtml(text);htmlOut=text;}});}};var applyTimeout=function(){if(timeout){top.clearTimeout(timeout);timeout=undefined;}
if(startType!=="manual"){var delay=0;if(startType==="delayed"){delay=elapsedTime+500;}
if(delay>maxDelay){delay=maxDelay;}
timeout=top.setTimeout(makePreviewHtml,delay);}};var getScaleFactor=function(panel){if(panel.scrollHeight<=panel.clientHeight){return 1;}
return panel.scrollTop/(panel.scrollHeight-panel.clientHeight);};var setPanelScrollTops=function(){if(wmd.panels.preview){wmd.panels.preview.scrollTop=(wmd.panels.preview.scrollHeight-wmd.panels.preview.clientHeight)*getScaleFactor(wmd.panels.preview);;}
if(wmd.panels.output){wmd.panels.output.scrollTop=(wmd.panels.output.scrollHeight-wmd.panels.output.clientHeight)*getScaleFactor(wmd.panels.output);;}};this.refresh=function(requiresRefresh){if(requiresRefresh){oldInputText="";makePreviewHtml();}
else{applyTimeout();}};this.processingTime=function(){return elapsedTime;};this.output=function(){return htmlOut;};this.setUpdateMode=function(mode){startType=mode;managerObj.refresh();};var isFirstTimeFilled=true;var pushPreviewHtml=function(text){var emptyTop=position.getTop(wmd.panels.input)-getDocScrollTop();if(wmd.panels.output){if(wmd.panels.output.value!==undefined){wmd.panels.output.value=text;wmd.panels.output.readOnly=true;}
else{var newText=text.replace(/&/g,"&amp;");newText=newText.replace(/</g,"&lt;");wmd.panels.output.innerHTML="<pre><code>"+newText+"</code></pre>";}}
if(wmd.panels.preview){wmd.panels.preview.innerHTML=text;}
setPanelScrollTops();if(isFirstTimeFilled){isFirstTimeFilled=false;return;}
var fullTop=position.getTop(wmd.panels.input)-getDocScrollTop();};var init=function(){poller=new wmd.inputPoller(applyTimeout,previewPollInterval);makePreviewHtml();if(wmd.panels.preview){wmd.panels.preview.scrollTop=0;}
if(wmd.panels.output){wmd.panels.output.scrollTop=0;}};this.destroy=function(){if(poller){poller.destroy();}};init();};command.doAutoindent=function(chunk,postProcessing,useDefaultText){chunk.before=chunk.before.replace(/(\n|^)[ ]{0,3}([*+-]|\d+[.])[ \t]*\n$/,"\n\n");chunk.before=chunk.before.replace(/(\n|^)[ ]{0,3}>[ \t]*\n$/,"\n\n");chunk.before=chunk.before.replace(/(\n|^)[ \t]+\n$/,"\n\n");useDefaultText=false;if(/(\n|^)[ ]{0,3}([*+-])[ \t]+.*\n$/.test(chunk.before)){if(command.doList){command.doList(chunk,postProcessing,false,true);}}
if(/(\n|^)[ ]{0,3}(\d+[.])[ \t]+.*\n$/.test(chunk.before)){if(command.doList){command.doList(chunk,postProcessing,true,true);}}
if(/(\n|^)[ ]{0,3}>[ \t]+.*\n$/.test(chunk.before)){if(command.doBlockquote){command.doBlockquote(chunk,postProcessing,useDefaultText);}}
if(/(\n|^)(\t|[ ]{4,}).*\n$/.test(chunk.before)){if(command.doCode){command.doCode(chunk,postProcessing,useDefaultText,true);}}};command.doBlockquote=function(chunk,postProcessing,useDefaultText){chunk.selection=chunk.selection.replace(/^(\n*)([^\r]+?)(\n*)$/,function(totalMatch,newlinesBefore,text,newlinesAfter){chunk.before+=newlinesBefore;chunk.after=newlinesAfter+chunk.after;return text;});chunk.before=chunk.before.replace(/(>[ \t]*)$/,function(totalMatch,blankLine){chunk.selection=blankLine+chunk.selection;return"";});var defaultText=useDefaultText?"Blockquote":"";chunk.selection=chunk.selection.replace(/^(\s|>)+$/,"");chunk.selection=chunk.selection||defaultText;var match="";var leftOver="";if(chunk.before){var lines=chunk.before.replace(/\n$/,"").split("\n");var inChain=false;for(var i in lines){var good=false;line=lines[i];inChain=inChain&&line.length>0;if(/^>/.test(line)){good=true;if(!inChain&&line.length>1)
inChain=true;}else if(/^[ \t]*$/.test(line)){good=true;}else{good=inChain;}
if(good){match+=line+"\n";}else{leftOver+=match+line;match="\n";}}
if(!/(^|\n)>/.test(match)){leftOver+=match;match="";}}
chunk.startTag=match;chunk.before=leftOver;if(chunk.after){chunk.after=chunk.after.replace(/^\n?/,"\n");}
chunk.after=chunk.after.replace(/^(((\n|^)(\n[ \t]*)*>(.+\n)*.*)+(\n[ \t]*)*)/,function(totalMatch){chunk.endTag=totalMatch;return"";});var replaceBlanksInTags=function(useBracket){var replacement=useBracket?"> ":"";if(chunk.startTag){chunk.startTag=chunk.startTag.replace(/\n((>|\s)*)\n$/,function(totalMatch,markdown){return"\n"+markdown.replace(/^[ ]{0,3}>?[ \t]*$/gm,replacement)+"\n";});}
if(chunk.endTag){chunk.endTag=chunk.endTag.replace(/^\n((>|\s)*)\n/,function(totalMatch,markdown){return"\n"+markdown.replace(/^[ ]{0,3}>?[ \t]*$/gm,replacement)+"\n";});}};if(/^(?![ ]{0,3}>)/m.test(chunk.selection)){command.wrap(chunk,wmd.wmd_env.lineLength-2);chunk.selection=chunk.selection.replace(/^/gm,"> ");replaceBlanksInTags(true);chunk.addBlankLines();}
else{chunk.selection=chunk.selection.replace(/^[ ]{0,3}> ?/gm,"");command.unwrap(chunk);replaceBlanksInTags(false);if(!/^(\n|^)[ ]{0,3}>/.test(chunk.selection)&&chunk.startTag){chunk.startTag=chunk.startTag.replace(/\n{0,2}$/,"\n\n");}
if(!/(\n|^)[ ]{0,3}>.*$/.test(chunk.selection)&&chunk.endTag){chunk.endTag=chunk.endTag.replace(/^\n{0,2}/,"\n\n");}}
if(!/\n/.test(chunk.selection)){chunk.selection=chunk.selection.replace(/^(> *)/,function(wholeMatch,blanks){chunk.startTag+=blanks;return"";});}};command.doCode=function(chunk,postProcessing,useDefaultText,disableDialog){var hasTextBefore=/\S[ ]*$/.test(chunk.before);var hasTextAfter=/^[ ]*\S/.test(chunk.after);if((!hasTextAfter&&!hasTextBefore)||/\n/.test(chunk.selection)){chunk.before=chunk.before.replace(/[ ]{4}$/,function(totalMatch){chunk.selection=totalMatch+chunk.selection;return"";});var nLinesBefore=1;var nLinesAfter=1;if(/\n(\t|[ ]{4,}).*\n$/.test(chunk.before)||chunk.after===""){nLinesBefore=0;}
if(/^\n(\t|[ ]{4,})/.test(chunk.after)){nLinesAfter=0;}
chunk.addBlankLines(nLinesBefore,nLinesAfter);if(!chunk.selection&&!disableDialog){var $nodes=$('<textarea rows="15" cols="200" placeholder="enter code here" style="width: 500px; height: 250px;"></textarea>');var doptions={nodes:$nodes,extra_class:'prompt',onAfterShow:function(){var $textarea=$nodes;$textarea.focus();$textarea.select();},yes_callback:function($dialog,close){var code=$dialog.find('textarea').val();if(pageContext.options.markdownCodeInBackticks){chunk.selection='```\n'+code+'\n```';}else if(pageContext.options.markdownCodeInPreTags){chunk.selection='<pre><code>\n'+code+'\n</pre></code>';}else{chunk.selection=code.replace(/^/gm,"    ");}
postProcessing();close();},show_no:true};commandUtils.showDialog(doptions);}
else{if(/^[ ]{0,3}\S/m.test(chunk.selection)){chunk.selection=chunk.selection.replace(/^/gm,"    ");}
else{chunk.selection=chunk.selection.replace(/^[ ]{4}/gm,"");}}}
else{chunk.trimWhitespace();chunk.findTags(/`/,/`/);if(!chunk.startTag&&!chunk.endTag){chunk.startTag=chunk.endTag="`";if(!chunk.selection){chunk.selection=useDefaultText?"enter code here":"";}}
else if(chunk.endTag&&!chunk.startTag){chunk.before+=chunk.endTag;chunk.endTag="";}
else{chunk.startTag=chunk.endTag="";}}};command.doList=function(chunk,postProcessing,isNumberedList,useDefaultText){var previousItemsRegex=/(\n|^)(([ ]{0,3}([*+-]|\d+[.])[ \t]+.*)(\n.+|\n{2,}([*+-].*|\d+[.])[ \t]+.*|\n{2,}[ \t]+\S.*)*)\n*$/;var nextItemsRegex=/^\n*(([ ]{0,3}([*+-]|\d+[.])[ \t]+.*)(\n.+|\n{2,}([*+-].*|\d+[.])[ \t]+.*|\n{2,}[ \t]+\S.*)*)\n*/;var bullet="-";var num=1;var getItemPrefix=function(){var prefix;if(isNumberedList){prefix=" "+num+". ";num++;}
else{prefix=" "+bullet+" ";}
return prefix;};var getPrefixedItem=function(itemText){if(isNumberedList===undefined){isNumberedList=/^\s*\d/.test(itemText);}
itemText=itemText.replace(/^[ ]{0,3}([*+-]|\d+[.])\s/gm,function(_){return getItemPrefix();});return itemText;};chunk.findTags(/(\n|^)*[ ]{0,3}([*+-]|\d+[.])\s+/,null);if(chunk.before&&!/\n$/.test(chunk.before)&&!/^\n/.test(chunk.startTag)){chunk.before+=chunk.startTag;chunk.startTag="";}
if(chunk.startTag){var hasDigits=/\d+[.]/.test(chunk.startTag);chunk.startTag="";chunk.selection=chunk.selection.replace(/\n[ ]{4}/g,"\n");command.unwrap(chunk);chunk.addBlankLines();if(hasDigits){chunk.after=chunk.after.replace(nextItemsRegex,getPrefixedItem);}
if(isNumberedList==hasDigits){return;}}
var nLinesBefore=1;chunk.before=chunk.before.replace(previousItemsRegex,function(itemText){if(/^\s*([*+-])/.test(itemText)){bullet=re.$1;}
nLinesBefore=/[^\n]\n\n[^\n]/.test(itemText)?1:0;return getPrefixedItem(itemText);});if(!chunk.selection){chunk.selection=useDefaultText?"List item":" ";}
var prefix=getItemPrefix();var nLinesAfter=1;chunk.after=chunk.after.replace(nextItemsRegex,function(itemText){nLinesAfter=/[^\n]\n\n[^\n]/.test(itemText)?1:0;return getPrefixedItem(itemText);});chunk.trimWhitespace(true);chunk.addBlankLines(nLinesBefore,nLinesAfter,true);chunk.startTag=prefix;var spaces=prefix.replace(/./g," ");command.wrap(chunk,wmd.wmd_env.lineLength-spaces.length);chunk.selection=chunk.selection.replace(/\n/g,"\n"+spaces);};command.doHeading=function(chunk,postProcessing,useDefaultText){chunk.selection=chunk.selection.replace(/\s+/g," ");chunk.selection=chunk.selection.replace(/(^\s+|\s+$)/g,"");if(!chunk.selection){chunk.startTag="## ";chunk.selection="Heading";chunk.endTag=" ##";return;}
var headerLevel=0;chunk.findTags(/#+[ ]*/,/[ ]*#+/);if(/#+/.test(chunk.startTag)){headerLevel=re.lastMatch.length;}
chunk.startTag=chunk.endTag="";chunk.findTags(null,/\s?(-+|=+)/);if(/=+/.test(chunk.endTag)){headerLevel=1;}
if(/-+/.test(chunk.endTag)){headerLevel=2;}
chunk.startTag=chunk.endTag="";chunk.addBlankLines(1,1);var headerLevelToCreate=headerLevel==0?2:headerLevel-1;if(headerLevelToCreate>0){var headerChar=headerLevelToCreate>=2?"-":"=";var len=chunk.selection.length;if(len>wmd.wmd_env.lineLength){len=wmd.wmd_env.lineLength;}
chunk.endTag="\n";while(len--){chunk.endTag+=headerChar;}}};command.doHorizontalRule=function(chunk,postProcessing,useDefaultText){chunk.startTag="----------\n";chunk.selection="";chunk.addBlankLines(2,1,true);}};Attacklab.wmd_env={};Attacklab.account_options={};Attacklab.wmd_defaults={version:1,output:"HTML",lineLength:40,delayLoad:false};Attacklab.wmd=function()
{Attacklab.loadEnv=function()
{var mergeEnv=function(env)
{if(!env)
{return;}
for(var key in env)
{Attacklab.wmd_env[key]=env[key];}};mergeEnv(Attacklab.wmd_defaults);mergeEnv(Attacklab.account_options);mergeEnv(top["wmd_options"]);Attacklab.full=true;var defaultButtons="bold italic link blockquote code image ol ul heading hr";Attacklab.wmd_env.buttons=Attacklab.wmd_env.buttons||defaultButtons;};Attacklab.loadEnv();};return Attacklab;}
var Attacklab=createWmd(Attacklab||{});$(function(){if($('#body').length>0){Attacklab.wmd();var attachmentsContext=null;if(typeof window.getAuthorizeContext!='undefined'){attachmentsContext={authorize:getAuthorizeContext,toForm:addAttachmentToForm};}
Attacklab.wmdBase(null,false,attachmentsContext);Attacklab.Util.startEditor();}});{var html4={},html,html_sanitize;html4.atype={'NONE':0,'URI':1,'URI_FRAGMENT':11,'SCRIPT':2,'STYLE':3,'ID':4,'IDREF':5,'IDREFS':6,'GLOBAL_NAME':7,'LOCAL_NAME':8,'CLASSES':9,'FRAME_TARGET':10},html4.ATTRIBS={'*::class':9,'*::dir':0,'*::id':4,'*::lang':0,'*::onclick':2,'*::ondblclick':2,'*::onkeydown':2,'*::onkeypress':2,'*::onkeyup':2,'*::onload':2,'*::onmousedown':2,'*::onmousemove':2,'*::onmouseout':2,'*::onmouseover':2,'*::onmouseup':2,'*::style':3,'*::title':0,'a::accesskey':0,'a::coords':0,'a::href':1,'a::hreflang':0,'a::name':7,'a::onblur':2,'a::onfocus':2,'a::rel':0,'a::rev':0,'a::shape':0,'a::tabindex':0,'a::target':10,'a::type':0,'area::accesskey':0,'area::alt':0,'area::coords':0,'area::href':1,'area::nohref':0,'area::onblur':2,'area::onfocus':2,'area::shape':0,'area::tabindex':0,'area::target':10,'bdo::dir':0,'blockquote::cite':1,'br::clear':0,'button::accesskey':0,'button::disabled':0,'button::name':8,'button::onblur':2,'button::onfocus':2,'button::tabindex':0,'button::type':0,'button::value':0,'canvas::height':0,'canvas::width':0,'caption::align':0,'col::align':0,'col::char':0,'col::charoff':0,'col::span':0,'col::valign':0,'col::width':0,'colgroup::align':0,'colgroup::char':0,'colgroup::charoff':0,'colgroup::span':0,'colgroup::valign':0,'colgroup::width':0,'del::cite':1,'del::datetime':0,'dir::compact':0,'div::align':0,'dl::compact':0,'font::color':0,'font::face':0,'font::size':0,'form::accept':0,'form::action':1,'form::autocomplete':0,'form::enctype':0,'form::method':0,'form::name':7,'form::onreset':2,'form::onsubmit':2,'form::target':10,'h1::align':0,'h2::align':0,'h3::align':0,'h4::align':0,'h5::align':0,'h6::align':0,'hr::align':0,'hr::noshade':0,'hr::size':0,'hr::width':0,'iframe::align':0,'iframe::frameborder':0,'iframe::height':0,'iframe::marginheight':0,'iframe::marginwidth':0,'iframe::width':0,'img::align':0,'img::alt':0,'img::border':0,'img::height':0,'img::hspace':0,'img::ismap':0,'img::name':7,'img::src':1,'img::usemap':11,'img::vspace':0,'img::width':0,'input::accept':0,'input::accesskey':0,'input::align':0,'input::alt':0,'input::autocomplete':0,'input::checked':0,'input::disabled':0,'input::ismap':0,'input::maxlength':0,'input::name':8,'input::onblur':2,'input::onchange':2,'input::onfocus':2,'input::onselect':2,'input::readonly':0,'input::size':0,'input::src':1,'input::tabindex':0,'input::type':0,'input::usemap':11,'input::value':0,'ins::cite':1,'ins::datetime':0,'label::accesskey':0,'label::for':5,'label::onblur':2,'label::onfocus':2,'legend::accesskey':0,'legend::align':0,'li::type':0,'li::value':0,'map::name':7,'menu::compact':0,'ol::compact':0,'ol::start':0,'ol::type':0,'optgroup::disabled':0,'optgroup::label':0,'option::disabled':0,'option::label':0,'option::selected':0,'option::value':0,'p::align':0,'pre::width':0,'q::cite':1,'select::disabled':0,'select::multiple':0,'select::name':8,'select::onblur':2,'select::onchange':2,'select::onfocus':2,'select::size':0,'select::tabindex':0,'table::align':0,'table::bgcolor':0,'table::border':0,'table::cellpadding':0,'table::cellspacing':0,'table::frame':0,'table::rules':0,'table::summary':0,'table::width':0,'tbody::align':0,'tbody::char':0,'tbody::charoff':0,'tbody::valign':0,'td::abbr':0,'td::align':0,'td::axis':0,'td::bgcolor':0,'td::char':0,'td::charoff':0,'td::colspan':0,'td::headers':6,'td::height':0,'td::nowrap':0,'td::rowspan':0,'td::scope':0,'td::valign':0,'td::width':0,'textarea::accesskey':0,'textarea::cols':0,'textarea::disabled':0,'textarea::name':8,'textarea::onblur':2,'textarea::onchange':2,'textarea::onfocus':2,'textarea::onselect':2,'textarea::readonly':0,'textarea::rows':0,'textarea::tabindex':0,'tfoot::align':0,'tfoot::char':0,'tfoot::charoff':0,'tfoot::valign':0,'th::abbr':0,'th::align':0,'th::axis':0,'th::bgcolor':0,'th::char':0,'th::charoff':0,'th::colspan':0,'th::headers':6,'th::height':0,'th::nowrap':0,'th::rowspan':0,'th::scope':0,'th::valign':0,'th::width':0,'thead::align':0,'thead::char':0,'thead::charoff':0,'thead::valign':0,'tr::align':0,'tr::bgcolor':0,'tr::char':0,'tr::charoff':0,'tr::valign':0,'ul::compact':0,'ul::type':0},html4.eflags={'OPTIONAL_ENDTAG':1,'EMPTY':2,'CDATA':4,'RCDATA':8,'UNSAFE':16,'FOLDABLE':32,'SCRIPT':64,'STYLE':128},html4.ELEMENTS={'a':0,'abbr':0,'acronym':0,'address':0,'applet':16,'area':2,'b':0,'base':18,'basefont':18,'bdo':0,'big':0,'blockquote':0,'body':49,'br':2,'button':0,'canvas':0,'caption':0,'center':0,'cite':0,'code':0,'col':2,'colgroup':1,'dd':1,'del':0,'dfn':0,'dir':0,'div':0,'dl':0,'dt':1,'em':0,'fieldset':0,'font':0,'form':0,'frame':18,'frameset':16,'h1':0,'h2':0,'h3':0,'h4':0,'h5':0,'h6':0,'head':49,'hr':2,'html':49,'i':0,'iframe':4,'img':2,'input':2,'ins':0,'isindex':18,'kbd':0,'label':0,'legend':0,'li':1,'link':18,'map':0,'menu':0,'meta':18,'nav':0,'nobr':0,'noembed':4,'noframes':20,'noscript':20,'object':16,'ol':0,'optgroup':0,'option':1,'p':1,'param':18,'pre':0,'q':0,'s':0,'samp':0,'script':84,'select':0,'small':0,'span':0,'strike':0,'strong':0,'style':148,'sub':0,'sup':0,'table':0,'tbody':1,'td':1,'textarea':8,'tfoot':1,'th':1,'thead':1,'title':24,'tr':1,'tt':0,'u':0,'ul':0,'var':0},html4.ueffects={'NOT_LOADED':0,'SAME_DOCUMENT':1,'NEW_DOCUMENT':2},html4.URIEFFECTS={'a::href':2,'area::href':2,'blockquote::cite':0,'body::background':1,'del::cite':0,'form::action':2,'img::src':1,'input::src':1,'ins::cite':0,'q::cite':0},html4.ltypes={'UNSANDBOXED':2,'SANDBOXED':1,'DATA':0},html4.LOADERTYPES={'a::href':2,'area::href':2,'blockquote::cite':2,'body::background':1,'del::cite':2,'form::action':2,'img::src':1,'input::src':1,'ins::cite':2,'q::cite':2},html=(function(html4){var
ENTITIES,INSIDE_TAG_TOKEN,OUTSIDE_TAG_TOKEN,URI_SCHEME_RE,WHITELISTED_SCHEMES,ampRe,decimalEscapeRe,entityRe,gtRe,hexEscapeRe,lcase,looseAmpRe,ltRe,nulRe,quotRe;'script'==='SCRIPT'.toLowerCase()?(lcase=function(s){return s.toLowerCase()}):(lcase=function(s){return s.replace(/[A-Z]/g,function(ch){return String.fromCharCode(ch.charCodeAt(0)|32)})}),ENTITIES={'lt':'<','gt':'>','amp':'&','nbsp':'\xa0','quot':'\"','apos':'\''},WHITELISTED_SCHEMES=/^(?:https?|mailto)$/i,decimalEscapeRe=/^#(\d+)$/,hexEscapeRe=/^#x([0-9A-Fa-f]+)$/;function
lookupEntity(name){var m;return name=lcase(name),ENTITIES.hasOwnProperty(name)?ENTITIES[name]:(m=name.match(decimalEscapeRe),m?String.fromCharCode(parseInt(m[1],10)):(m=name.match(hexEscapeRe))?String.fromCharCode(parseInt(m[1],16)):'')}function
decodeOneEntity(_,name){return lookupEntity(name)}nulRe=/\0/g;function stripNULs(s){return s.replace(nulRe,'')}entityRe=/&(#\d+|#x[0-9A-Fa-f]+|\w+);/g;function
unescapeEntities(s){return s.replace(entityRe,decodeOneEntity)}ampRe=/&/g,looseAmpRe=/&([^a-z#]|#(?:[^0-9x]|x(?:[^0-9a-f]|$)|$)|$)/gi,ltRe=/</g,gtRe=/>/g,quotRe=/\"/g;function
escapeAttrib(s){return(''+s).replace(ampRe,'&amp;').replace(ltRe,'&lt;').replace(gtRe,'&gt;').replace(quotRe,'&#34;')}function
normalizeRCData(rcdata){return rcdata.replace(looseAmpRe,'&amp;$1').replace(ltRe,'&lt;').replace(gtRe,'&gt;')}INSIDE_TAG_TOKEN=new
RegExp('^\\s*(?:(?:([a-z][a-z-]*)(\\s*=\\s*(\"[^\"]*\"|\'[^\']*\'|(?=[a-z][a-z-]*\\s*=)|[^>\"\'\\s]*))?)|(/?>)|[\\s\\S][^a-z\\s>]*)','i'),OUTSIDE_TAG_TOKEN=new
RegExp('^(?:&(\\#[0-9]+|\\#[x][0-9a-f]+|\\w+);|<!--[\\s\\S]*?-->|<!\\w[^>]*>|<\\?[^>*]*>|<(/)?([a-z][a-z0-9]*)|([^<&>]+)|([<&>]))','i');function
makeSaxParser(handler){return function parse(htmlText,param){var attribName,attribs,dataEnd,decodedValue,eflags,encodedValue,htmlLower,inTag,m,openTag,tagName;htmlText=String(htmlText),htmlLower=null,inTag=false,attribs=[],tagName=void
0,eflags=void 0,openTag=void 0,handler.startDoc&&handler.startDoc(param);while(htmlText){m=htmlText.match(inTag?INSIDE_TAG_TOKEN:OUTSIDE_TAG_TOKEN),htmlText=htmlText.substring(m[0].length);if(inTag){if(m[1]){attribName=lcase(m[1]);if(m[2]){encodedValue=m[3];switch(encodedValue.charCodeAt(0)){case
34:case 39:encodedValue=encodedValue.substring(1,encodedValue.length-1)}decodedValue=unescapeEntities(stripNULs(encodedValue))}else
decodedValue=attribName;attribs.push(attribName,decodedValue)}else if(m[4])eflags!==void
0&&(openTag?handler.startTag&&handler.startTag(tagName,attribs,param):handler.endTag&&handler.endTag(tagName,param)),openTag&&eflags&(html4.eflags.CDATA|html4.eflags.RCDATA)&&(htmlLower===null?(htmlLower=lcase(htmlText)):(htmlLower=htmlLower.substring(htmlLower.length-htmlText.length)),dataEnd=htmlLower.indexOf('</'+tagName),dataEnd<0&&(dataEnd=htmlText.length),dataEnd&&(eflags&html4.eflags.CDATA?handler.cdata&&handler.cdata(htmlText.substring(0,dataEnd),param):handler.rcdata&&handler.rcdata(normalizeRCData(htmlText.substring(0,dataEnd)),param),htmlText=htmlText.substring(dataEnd))),tagName=eflags=openTag=void
0,attribs.length=0,inTag=false}else if(m[1])handler.pcdata&&handler.pcdata(m[0],param);else
if(m[3])openTag=!m[2],inTag=true,tagName=lcase(m[3]),eflags=html4.ELEMENTS.hasOwnProperty(tagName)?html4.ELEMENTS[tagName]:void
0;else if(m[4])handler.pcdata&&handler.pcdata(m[4],param);else if(m[5]){if(handler.pcdata)switch(m[5]){case'<':handler.pcdata('&lt;',param);break;case'>':handler.pcdata('&gt;',param);break;case'&':handler.pcdata('&amp;',param)}}}handler.endDoc&&handler.endDoc(param)}}function
makeHtmlSanitizer(tagPolicy){var ignoring,stack;return makeSaxParser({'startDoc':function(_){stack=[],ignoring=false},'startTag':function(tagName,attribs,out){var
attribName,eflags,i,n,value;if(ignoring)return;if(!html4.ELEMENTS.hasOwnProperty(tagName))return;eflags=html4.ELEMENTS[tagName];if(eflags&html4.eflags.FOLDABLE)return;attribs=tagPolicy(tagName,attribs);if(!attribs)return ignoring=!(eflags&html4.eflags.EMPTY),void
0;eflags&html4.eflags.EMPTY||stack.push(tagName),out.push('<',tagName);for(i=0,n=attribs.length;i<n;i+=2)attribName=attribs[i],value=attribs[i+1],value!==null&&value!==void
0&&out.push(' ',attribName,'=\"',escapeAttrib(value),'\"');out.push('>')},'endTag':function(tagName,out){var
eflags,i,index,stackEl;if(ignoring)return ignoring=false,void 0;if(!html4.ELEMENTS.hasOwnProperty(tagName))return;eflags=html4.ELEMENTS[tagName];if(!(eflags&(html4.eflags.EMPTY|html4.eflags.FOLDABLE))){if(eflags&html4.eflags.OPTIONAL_ENDTAG)for(index=stack.length;--index>=0;){stackEl=stack[index];if(stackEl===tagName)break;if(!(html4.ELEMENTS[stackEl]&html4.eflags.OPTIONAL_ENDTAG))return}else
for(index=stack.length;--index>=0;)if(stack[index]===tagName)break;if(index<0)return;for(i=stack.length;--i>index;)stackEl=stack[i],html4.ELEMENTS[stackEl]&html4.eflags.OPTIONAL_ENDTAG||out.push('</',stackEl,'>');stack.length=index,out.push('</',tagName,'>')}},'pcdata':function(text,out){ignoring||out.push(text)},'rcdata':function(text,out){ignoring||out.push(text)},'cdata':function(text,out){ignoring||out.push(text)},'endDoc':function(out){var
i;for(i=stack.length;--i>=0;)out.push('</',stack[i],'>');stack.length=0}})}URI_SCHEME_RE=new
RegExp('^(?:([^:/?#]+):)?');function sanitizeAttribs(tagName,attribs,opt_uriPolicy,opt_nmTokenPolicy){var
attribKey,attribName,atype,i,parsedUri,value;for(i=0;i<attribs.length;i+=2){attribName=attribs[i],value=attribs[i+1],atype=null,((attribKey=tagName+'::'+attribName,html4.ATTRIBS.hasOwnProperty(attribKey))||(attribKey='*::'+attribName,html4.ATTRIBS.hasOwnProperty(attribKey)))&&(atype=html4.ATTRIBS[attribKey]);if(atype!==null)switch(atype){case
html4.atype.NONE:break;case html4.atype.SCRIPT:case html4.atype.STYLE:value=null;break;case
html4.atype.ID:case html4.atype.IDREF:case html4.atype.IDREFS:case html4.atype.GLOBAL_NAME:case
html4.atype.LOCAL_NAME:case html4.atype.CLASSES:value=opt_nmTokenPolicy?opt_nmTokenPolicy(value):value;break;case
html4.atype.URI:parsedUri=(''+value).match(URI_SCHEME_RE),parsedUri?!parsedUri[1]||WHITELISTED_SCHEMES.test(parsedUri[1])?(value=opt_uriPolicy?opt_uriPolicy(value):null):(value=null):(value=null);break;case
html4.atype.URI_FRAGMENT:value&&'#'===value.charAt(0)?(value=value.substring(1),value=opt_nmTokenPolicy?opt_nmTokenPolicy(value):value,value!==null&&value!==void
0&&(value='#'+value)):(value=null);break;default:value=null}else value=null;attribs[i+1]=value}return attribs}function
makeTagPolicy(opt_uriPolicy,opt_nmTokenPolicy){return function(tagName,attribs){if(!(html4.ELEMENTS[tagName]&html4.eflags.UNSAFE))return sanitizeAttribs(tagName,attribs,opt_uriPolicy,opt_nmTokenPolicy)}}function
sanitizeWithPolicy(inputHtml,tagPolicy){var outputArray=[];return makeHtmlSanitizer(tagPolicy)(inputHtml,outputArray),outputArray.join('')}function
sanitize(inputHtml,opt_uriPolicy,opt_nmTokenPolicy){var tagPolicy=makeTagPolicy(opt_uriPolicy,opt_nmTokenPolicy);return sanitizeWithPolicy(inputHtml,tagPolicy)}return{'escapeAttrib':escapeAttrib,'makeHtmlSanitizer':makeHtmlSanitizer,'makeSaxParser':makeSaxParser,'makeTagPolicy':makeTagPolicy,'normalizeRCData':normalizeRCData,'sanitize':sanitize,'sanitizeAttribs':sanitizeAttribs,'sanitizeWithPolicy':sanitizeWithPolicy,'unescapeEntities':unescapeEntities}})(html4),html_sanitize=html.sanitize,typeof
window!=='undefined'&&(window.html=html,window.html_sanitize=html_sanitize)}
var CommentsBox={initialize:function($topContainer,canUseComments,commentsLocked,pcPermissions,defaultVisibility){var $container=$topContainer.find('.comment-form-container');var $comment_tools=$topContainer.find('.comment-tools');this.elements={topContainer:$topContainer,formContainer:$container,commentTools:$topContainer.find('.comment-tools'),commentsContainer:$topContainer.find('.comments-container'),form:$container.find('form'),textarea:$container.find('textarea'),extraInputs:$container.find('.comment-form-extra-inputs'),submitButton:$container.find('.comment-submit'),cancelButton:$container.find('.comment-cancel'),charsLeftMessage:$container.find('.comments-chars-left-msg'),charsToGoMessage:$container.find('.comments-chars-togo-msg'),charsCounter:$container.find('.comments-char-left-count'),showAllCommentsLink:$comment_tools.find('.show-all-comments-link'),addCommentLink:$comment_tools.find('.add-comment-link'),commentsLockedLabel:$container.parent().find('.comments-locked'),recipientsMenu:$container.find('.comment-recipient-container'),recipientsLabel:$container.find('.comment-recipients-label'),recipientsType:$container.find('input[name="visibility"]')};var chars_limits=this.elements.charsCounter.html().split('|');this.options={'commentsLocked':commentsLocked,'canUseComments':canUseComments,'pcPermissions':pcPermissions,'defaultVisibility':defaultVisibility,minLength:parseInt(chars_limits[0]),maxLength:parseInt(chars_limits[1]),commentsEditor:pageContext.options&&pageContext.options.commentsEditor?pageContext.options.commentsEditor:null,fixHeight:!($.browser.msie||$.browser.opera)};this.options.warnLength=this.options.maxLength-30;this.state={currentLength:0,inputCheckInterval:null,editing:null,replying:null,formContext:null,inPanelsTransition:false,currentPanel:'comments',panelsContent:{}};this.setupUiMods();this.setupCallbacks();},listenToFormChanges:function(){if(this.state.inputCheckInterval){window.clearInterval(this.state.inputCheckInterval);}
var self=this;var options=self.options;var elements=self.elements;var state=self.state;this.state.inputCheckInterval=window.setInterval(function(){var length=elements.textarea.val().replace(/[ ]{2,}/g," ").length;if(state.currentLength==length)
return;if(length<options.warnLength){elements.charsCounter.removeClass('warn');}else if(length>=options.warnLength){elements.charsCounter.addClass('warn');}
if(length<options.minLength){elements.charsLeftMessage.hide();elements.charsToGoMessage.show();elements.charsCounter.html(options.minLength-length);}else{elements.charsToGoMessage.hide();elements.charsLeftMessage.show();elements.charsCounter.html(options.maxLength-length);}
if(length>options.maxLength||length<options.minLength){elements.submitButton.attr("disabled","disabled");}else{elements.submitButton.removeAttr("disabled");}
var current_height=elements.textarea.height();if(options.fixHeight)
elements.textarea.css('height','0');var h=Math.max(80,elements.textarea[0].scrollHeight);elements.textarea.css('height',current_height+'px');if(h!=current_height){elements.textarea.animate({height:h+'px'},50);}
state.currentLength=length;},200);},cleanupForm:function(){if(this.state.inputCheckInterval){window.clearInterval(this.state.inputCheckInterval);this.state.inputCheckInterval=null;}
this.elements.textarea.val('');this.elements.extraInputs.html('');this.elements.textarea.css('height',80);this.elements.charsCounter.html(this.options.maxLength);this.elements.charsLeftMessage.removeClass('warn');this.state.currentLength=0;this.state.editing=null;this.state.replying=null;this.state.formContext=null;this.elements.charsLeftMessage.hide();this.elements.charsToGoMessage.show();this.elements.charsCounter.removeClass('warn');this.elements.charsCounter.html(this.options.minLength);this.elements.submitButton.attr("disabled","disabled");if(this.elements.attachments){this.elements.attachments.img.html('');this.elements.attachments.node.html('');}},showForm:function($location){if($location){$location.after(this.elements.formContainer);}
this.elements.formContainer.slideDown('slow');this.elements.addCommentLink.fadeOut('slow');this.elements.showAllCommentsLink.fadeOut('slow');this.elements.commentsContainer.find('.comment-reply').fadeOut('slow');this.elements.textarea.focus();this.elements.extraInputs.html('');this.elements.recipientsLabel.text(pageContext.i18n.commentVisibility[this.options.defaultVisibility]);this.elements.recipientsType.val(this.options.defaultVisibility);if(this.options.pcPermissions.u){if(this.state.editing){this.elements.recipientsMenu.hide();}else{this.elements.recipientsMenu.show();}}
this.listenToFormChanges();},hideForm:function(){var self=this;this.elements.formContainer.slideUp('slow',function(){self.cleanupForm();});this.elements.addCommentLink.fadeIn('slow');this.elements.showAllCommentsLink.fadeIn('slow');this.elements.commentsContainer.find('.comment-reply').fadeIn('slow');},setupUiMods:function(){var self=this;if(this.options.canUseComments){this.elements.addCommentLink.show();}
if(this.options.commentsLocked){this.elements.commentsLockedLabel.show();}
if(this.options.commentsEditor=='wmd'){var $wmdBar=$('<div></div>');this.elements.textarea.before($wmdBar);this.elements.wmdBar=$wmdBar;var editor=createWmd({});var attachments=null;if(pageContext.options.commentsAttachmentsEnabled){var $mainAttachmentsContainer=$('<div class="comments-form-attachments"></div>');var $attachmentsContainer=$('<div></div>');var $imgAttachmentsContainer=$('<div></div>');$mainAttachmentsContainer.append($attachmentsContainer);$mainAttachmentsContainer.append($imgAttachmentsContainer);this.elements.textarea.after($mainAttachmentsContainer);this.elements.attachments={main:$mainAttachmentsContainer,node:$attachmentsContainer,img:$imgAttachmentsContainer};self.addAttachmentToForm=function(attachment){var $el=null;function createDeleteButton(){return $('<a class="node-attachment-delete" href="#">x</a>');}
if(attachment.isImage){$el=$('<div class="img-node-attachment"></div>');var $link=$('<a href="'+attachment.url+'" target="_blank"></a>');$link.append($('<img src="'+attachment.url+'" width="100" />'));$link.append($('<span>'+attachment.fileName+'('+attachment.size+')'+'</span>'));$el.append($link);$el.append($('<input type="hidden" name="attachments" value="'+attachment.fileId+'" />'));$el.append(createDeleteButton());$imgAttachmentsContainer.append($el);}else{$el=$('<div class="node-attachment"></div>');$el.append('<span class="attachment-icon"></span>');$el.append($('<a href="'+attachment.url+'" target="_blank">'+attachment.fileName+'</a>'));$el.append($('<span> ('+attachment.size+')</span>'));$el.append($('<input type="hidden" name="attachments" value="'+attachment.fileId+'" />'));$el.append(createDeleteButton());$attachmentsContainer.append($el);}};attachments={authorize:function(image){var current=[];$attachmentsContainer.find('input[name=attachments]').each(function(){current.push($(this).val());});var ret={};$.extend(ret,pageContext.authorizeUploadContext);if(current.length>0){ret.current=current;}
if(image){ret.image=image;}
return ret;},toForm:self.addAttachmentToForm};}
editor.wmd();editor.wmdBase({'buttonBar':this.elements.wmdBar.get(0),'input':this.elements.textarea.get(0)},true,attachments);editor.Util.startEditor();}
if(this.elements.attachments){self.attachmentsToComment=function($comment,attachments){if($comment.find('.comment-text:first').next().is('.node-attachments')){$comment.find('.comment-text:first').next().remove();}
var $attachments=$('<div class="node-attachments"></div>');$comment.find('.comment-text:first').after($attachments);$.each(attachments,function(i,attachment){var $attachment=$('<div class="node-attachment"><span></span></div>');$attachment.find('span').addClass(attachment.isImage?'img-attachment-icon':'attachment-icon');$attachment.append($('<a href="'+attachment.url+'">'+attachment.fileName+'</a>'));$attachment.append($('<span>'+'('+attachment.size+')'+'</span>'));$attachments.append($attachment);});};}
this.setupRecipientsMenu();},setupRecipientsMenu:function(){var self=this;var perm=this.options.pcPermissions;if(perm.u&&(perm.op||perm.m||perm.og||perm.as||perm.ag)){if(!perm.op){this.elements.recipientsMenu.find('.comment-recipients-selector[value=op]').parent().remove();}
if(!perm.m){this.elements.recipientsMenu.find('.comment-recipients-selector[value=mod]').parent().remove();}
if(!(perm.op&&perm.m)){this.elements.recipientsMenu.find('.comment-recipients-selector[value=opAndMod]').parent().remove();}
if(!(perm.og||perm.ag||perm.as)){this.elements.recipientsMenu.find('.comment-recipients-selector[value=recipient]').parent().remove();}
this.elements.recipientsMenu.find('.comment-recipients-selector').click(function(e){var value=$(this).attr('value');if(value!='recipient'){self.elements.recipientsLabel.text(pageContext.i18n.commentVisibility[value]);self.elements.recipientsType.val(value);}else{$.getJSON(pageContext.url.possibleCommentRecipients.replace("%ID%",self.elements.formContainer.parents("[nodeid]").attr("nodeid")),function(data){var context=data.result;context.groupsCheck=data.result.groups.length<=5;context.msg=pageContext.i18n.commentVisibility;context.perm=perm;commandUtils.showPrompt(e,"advanced-visibility-dialog",context,{title:pageContext.i18n.commentVisibility.dialogTitle,onOk:function(data){if(data.recipients||data.specialRecipients){self.elements.extraInputs.html('');if(data.recipients){if(data.recipients.constructor!=Array){data.recipients=[data.recipients];}
$.each(data.recipients,function(i,recipient){self.elements.extraInputs.append('<input type="hidden" name="recipients" value="'+recipient+'" />');});}
if(data.specialRecipients){if(data.specialRecipients.constructor!=Array){data.specialRecipients=[data.specialRecipients];}
$.each(data.specialRecipients,function(i,recipient){self.elements.extraInputs.append('<input type="hidden" name="specialRecipients" value="'+recipient+'" />');});}
self.elements.recipientsLabel.text(pageContext.i18n.commentVisibility['other']);self.elements.recipientsType.val('recipient');}},beforeShow:function($dialog){if(!context.groupsCheck){var groupsSource=[];$.each(context.groups,function(i,group){groupsSource.push({label:group.name,value:group.id})});var $autocomplete=$dialog.find('.comment-recipients-groups-autocomplete');var $selectedContainer=$dialog.find('.comment-recipients-groups-container');$autocomplete.autocomplete({source:groupsSource,select:function(e,ui){if($selectedContainer.find('span.group[name='+ui.item.value+']').length==0){var $newEl=$('<span class="group" name="'+ui.item.value+'">'+ui.item.label+'<a href="#" title="Removing tag">x</a>'+'<input type="hidden" name="recipients" value="'+ui.item.value+'" />'+'</span>');$selectedContainer.append($newEl);$newEl.find('a').click(function(){$newEl.remove();return false;});}
$autocomplete.val('');return false;}});}}});});}
self.elements.recipientsMenu.find('.context-menu-dropdown').hide();return false;});}else{this.elements.recipientsMenu.remove();self.elements.recipientsType.val("full");}},setupCallbacks:function(){var self=this;self.elements.showAllCommentsLink.click(function(){if($(this).is('.loading')){return false;}
$(this).addClass('loading');self.loadComments(pageContext.url.getComments.replace("%25ID%25",self.elements.formContainer.parents("[nodeid]").attr("nodeid")),self.elements.commentsContainer,'',null);$(this).fadeOut('fast',function(){$(this).remove();});return false;});self.elements.addCommentLink.click(function(){self.cleanupForm();self.showForm(self.elements.commentTools);return false;});self.elements.cancelButton.click(function(event){if(self.state.editing){$('#comment-'+self.state.editing).slideDown('slow');}
self.hideForm();return false;});self.elements.submitButton.click(function(evt){self.elements.submitButton.attr('disabled','disabled');var post_data=commandUtils.extractFormData(self.elements.form);if(self.state.editing){post_data['edit']='true';}else{post_data['edit']='false';}
if(self.state.formContext){$.extend(post_data,self.state.formContext);}
$.ajax({'type':'POST','url':self.elements.form.attr('action'),'data':post_data,'dataType':'json','traditional':true,'success':function(data){if(data.comment!=undefined){var post_id=data['comment']['parentId'];var comment_id=data['comment']['id'];var now=Date.today().setTimeToNow();data.commentDate=now.toString("MMM dd")+", "+now.toString("h:mm tt")+new Date().getUTCOffset();data.commentDateFriendly="("+pageContext.i18n.justNow+")";data.author=pageContext.currentUser;self.elements.commentsContainer.find('.comments-empty').remove();if(post_data['edit']=='true'){$('#comment-'+comment_id).find('.comment-text:first').html(data['comment']['bodyAsHTML']);if(self.elements.attachments){self.attachmentsToComment($('#comment-'+comment_id),data.comment.attachments?data.comment.attachments:[]);}}else{var $new_comment=commandUtils.renderTemplate('new-comment-skeleton',data);if(self.state.replying){var $container=$('#comment-'+self.state.replying);if(!tools.settings.nsc){if($container.is('.comment')&&$container.is('.even')){$new_comment.addClass('odd');}else{$new_comment.addClass('even');}}
$container.append($new_comment);}else{$new_comment.addClass('even');self.elements.commentsContainer.append($new_comment);}
if(self.elements.attachments&&data.comment.attachments){self.attachmentsToComment($('#comment-'+comment_id),data.comment.attachments);}}
if(!post_data['edit']||post_data['edit']!="true"){var jsonRelation={};jsonRelation[data.comment.id]={type:'comment'};tools.rel(jsonRelation);}
$('#comment-'+comment_id).slideDown('slow');if(data.comment.activeRevisionId){$('#comment-'+comment_id).attr('activerev',data.comment.activeRevisionId);}
self.hideForm();}else{}
self.elements.submitButton.removeAttr("disabled")}});return false;});$('#'+self.elements.commentsContainer.attr('id')+' .comment-edit').live('click',function(){self.cleanupForm();var $link=$(this);var $parent=$link.parents('.comment:first');var comment_id=$parent.attr('nodeid');var activerev_id=$parent.attr('activerev');var $comment=$('#comment-'+comment_id);self.state.editing=comment_id;self.state.formContext={node:comment_id,revisionId:activerev_id};$.post(pageContext.url.getRevision,{revision:activerev_id},function(revision){if(revision.body!=undefined){self.elements.textarea.val(revision.body);}else{}},"json");if(self.elements.attachments){$comment.find('.node-attachments:first').find('.node-attachment').each(function(){var $attachment=$(this);var attachment={};attachment.isImage=$attachment.find('.img-attachment-icon').length>0;attachment.url=$attachment.find('a').attr('href');attachment.fileName=$attachment.find('a').text();attachment.size=$attachment.find('span:last').text();attachment.size=/\(([^\)]*)\)/.exec(attachment.size)[1];attachment.fileId=/\/(\d+)\-/.exec(attachment.url)[1];;self.addAttachmentToForm(attachment);});}
$comment.slideUp('slow');self.showForm($comment);return false;});$('#'+self.elements.commentsContainer.attr('id')+' .comment-replies-show').live('click',function(){var $link=$(this);var $parent=$link.parents('.comment:first');var comment_id=$parent.attr('nodeid');$link.remove();self.loadComments(pageContext.url.getComments.replace("%25ID%25",comment_id),$parent,'',null);return false;});$('#'+self.elements.commentsContainer.attr('id')+' .comments-expand').live('click',function(){var $link=$(this);var $parent=$link.parents("[nodeid]:first");if(tools.settings.nsc){$parent=$parent.parents("[nodeid]:first");}
var comment_id=$parent.attr('nodeid');$link.remove();self.loadComments(pageContext.url.getComments.replace("%25ID%25",comment_id),$parent.is('.comment')?$parent:self.elements.commentsContainer,'',null);return false;});if(self.options.commentsLocked){$('head').append('<style type="text/css"> \n#'+self.elements.commentsContainer.attr('id')+' .comment-reply{visibility: hidden;}\n</style>');}else{$('#'+self.elements.commentsContainer.attr('id')+' .comment-reply').live('click',function(){self.cleanupForm();var $parentContainer=$(this).parent().parent('.comment');var in_reply_id=$parentContainer.attr('nodeid');self.state.replying=in_reply_id;self.state.formContext={inReply:in_reply_id};self.showForm($parentContainer);return false;});}},renderLoadedComments:function($container,comments,jsonRelation){for(var i=0;i<comments.length;i++){var comment=comments[i];var tplData={showTools:false};tplData.comment=comment;tplData.author={id:comment.author.id,username:comment.author.username,url:pageContext.url.profile.replace("{id}",comment.author.id).replace("{plug}",comment.author.username),avatar:comment.author.avatar};tplData.commentDate=comment.creationDate;tplData.commentDateFriendly=commandUtils.friendlyDate(new Date(comment.creationDate));var $el=commandUtils.renderTemplate('new-comment-skeleton',tplData);if(!tools.settings.nsc){if($container.is('.comment')&&$container.is('.even')){$el.addClass('odd');}else{$el.addClass('even');}}
if(i>0){$container.find('#comment-'+comments[i-1].id).after($el);}else{$container.append($el);}
if(this.elements.attachments&&comment.attachments){this.attachmentsToComment($el,comment.attachments);}
if(comment.replies){this.renderLoadedComments($el,comment.replies.comments,comment.replies.jsonRelation?comment.replies.jsonRelation:null);}}
if(jsonRelation){tools.rel(jsonRelation);}},loadComments:function(url,$container,no_comments_text,callback){var self=this;$.getJSON(url,function(data){if(data.success){if($container.is('.comment')){$container.find('.comment').remove();}else{$container.html('');}
if(data.result.comments&&data.result.comments.length==0){self.elements.commentsContainer.html('<span class="comments-empty">'+no_comments_text+'</span>');}else{if(data.result.replies){self.renderLoadedComments($container,data.result.replies.comments,data.result.replies.jsonRelation);}else{self.renderLoadedComments($container,data.result.comments,null);}}
self.elements.commentTools.find('.comments-showing').fadeOut('slow');if(callback){callback();}}});}};function initCommandOverrides(){function showWikiMark($el){var context={canEdit:false,isAnswer:false};var $editlink=$el.find('.node-tools-edit-link');if($editlink.length>0){if($el.parents("[nodeid]:first").is('.answer')){context.isAnswer=true;}
context.canEdit=true;context.editUrl=$editlink.attr('href');}
$el.append(commandUtils.renderTemplate('post-wiki-mark',context));}
function removeWikiMark($el){$el.find('.community-wiki').remove();}
commands.wikifyPost.showWikiMark=showWikiMark;commands.wikifyPost.removeWikiMark=removeWikiMark;commands.wikifyPost.updateLinkText=function(){var text=this.getLinkText();if(text!=null){this.element.html(text);}
if(this.getStatus()=='on'){showWikiMark(this.element.parents('.post-controls'));}else{removeWikiMark(this.element.parents('.post-controls'));}};}
var tools={roles:null,settings:null,questionAuthor:null,init:function(roles,settings){this.roles=roles;this.settings=settings;if(settings.nsc){if(!('ontouchstart'in document.documentElement)){$('.comment').live('mouseenter',function(){var $this=$(this);$this.find('.comment-left:first').find('.comment-like').css('visibility','visible');$this.find('.comment-info:first').css('visibility','visible');$this.addClass('highlighted');});$('.comment').live('click',function(){var $this=$(this);$this.find('.comment-left:first').find('.comment-like').css('visibility','visible');$this.find('.comment-info:first').css('visibility','visible');$this.addClass('highlighted');});$('.comment').live('mouseleave',function(){var $this=$(this);$this.find('.comment-left:first').find('.comment-like').css('visibility','hidden');$this.find('.comment-info:first').css('visibility','hidden');$this.removeClass('highlighted');});}else
{$('.comment').find('.comment-left:first').find('.comment-like').css('visibility','visible');$('.comment').find('.comment-info:first').css('visibility','visible');$('.comment').addClass('highlighted');}}},createLink:function(id,options){var tag=options.tag?options.tag:'a';var $newLink=$('<'+tag+' href="#"></'+tag+'>');if(options.id){$newLink.attr('id',options.id);}
if(options.extraClass){$newLink.addClass(options.extraClass);}
if(options.url){$newLink.attr('href',options.url);}
if(options.label){$newLink.html(options.label);}
if(options.command){$newLink.addClass("ajax-command");$newLink.attr("command",options.command);}
if(options.on){$newLink.addClass("on");}
return $newLink;},addToTools:function(id,options){var $newLink=this.createLink(id,options);$('#node-'+id+'-menu').before($('<span class="action-link"></span>').append($newLink));return $newLink;},addToMenu:function(id,options){var $newLink=this.createLink(id,options);$('#node-'+id+'-menu-dropdown').prepend($('<li class="item"></li>').append($newLink));return $newLink;},addToComment:function(id,options){if(this.settings.nsc&&options.extraClass&&pageContext.i18n.commentMenuLabels[options.extraClass]){options.label=pageContext.i18n.commentMenuLabels[options.extraClass];}
var $newLink=this.createLink(id,options);if(this.settings.nsc){if(options.command&&options.command=='likeComment'){$('#comment-'+id+'-left').append($newLink);}else if(options.extraClass&&options.extraClass=='comment-reply'){$('#comment-'+id+'-info').append($newLink);}else{var $context_menu=$('#comment-'+id+'-info').find('.comment-menu');if(!$context_menu.length){$context_menu=$('<span class="comment-menu context-menu">'+'<span class="context-menu-trigger">&#9660;</span><ul class="context-menu-dropdown"></ul>'+'</span>');$('#comment-'+id+'-info').prepend($context_menu);}
$newLink=this.createLink(id,options);$context_menu.find('ul').append($('<li class="item"></li>').append($newLink));}}else{if(pageContext.i18n.commentMenuLabels!==undefined){$newLink.attr("title",pageContext.i18n.commentMenuLabels[options.extraClass]);}
$('#comment-'+id+'-info').append($newLink);}
return $newLink;},addSeparator:function(id){$('#node-'+id+'-menu').before('<span class="action-link-separator">|</span>');},roleOrAuthor:function(r1,isAuthor,r2){return r1||(isAuthor&&r2);},roleOrAuthorByType:function(isAuthor,type,rq1,rq2,ra1,ra2){return type=="question"?this.roleOrAuthor(rq1,isAuthor,rq2):this.roleOrAuthor(ra1,isAuthor,ra2);},rel:function(rel){var userId=pageContext.currentUser.id;var ar=this.roles.a;var qr=this.roles.q;var cr=this.roles.c;var nr=this.roles.n;var mr=this.roles.m;for(var id in rel){var nodeRel=rel[id];var authorId=$("[nodeid="+id+"]").attr("authorId");var isAuthor=userId==authorId;if(nodeRel.type=="question"){this.questionAuthor=isAuthor;$("#question-tags").append($("#question-tags-box").find('.tags').find('a').clone());}
var $topContainer;if(nodeRel.type=="answer"){$topContainer=$('#answer-container-'+id);}else{$topContainer=$('#question-table');}
if(nodeRel.type=="comment"){if(this.settings.tc&&!nodeRel.locked&&this.roleOrAuthor(nr.c,isAuthor,nr.co)){this.addToComment(id,{extraClass:'comment-reply',id:'comment-'+id+'-reply',label:pageContext.i18n.replyToComment});}
if(!isAuthor&&cr.l){this.addToComment(id,{command:'likeComment',extraClass:'comment-like',id:'post-'+id+'-upvote'});}
if(this.roleOrAuthor(cr.e,isAuthor,cr.eo)){this.addToComment(id,{url:pageContext.url.commentEdit.replace("%25ID%25",id),extraClass:'comment-edit',id:'post-'+id+'-edit'});}
if(this.roleOrAuthor(cr.d,isAuthor,cr.dow)){this.addToComment(id,{command:'deleteComment',extraClass:'comment-delete',id:'post-'+id+'-delete'});}
if(this.roleOrAuthor(cr.ta,isAuthor,cr.tao)){this.addToComment(id,{command:'convertToAnswer',extraClass:'comment-convert',id:'post-'+id+'-convert'});}
if(this.roleOrAuthor(cr.mc,isAuthor,cr.mco)){this.addToComment(id,{command:'moveComment',extraClass:'comment-move',id:'post-'+id+'-move'});}
var visibility=nodeRel.visibility;$('#comment-'+id).data('visibility',visibility);if(visibility&&visibility!='full'){$('#comment-'+id).addClass('not-public');}}else{if(this.roleOrAuthorByType(isAuthor,nodeRel.type,qr.e,qr.eo,ar.e,ar.eo)||(nodeRel.isWiki&&(nodeRel.type=="answer"?ar.ew:qr.ew))){this.addToTools(id,{url:(nodeRel.type=="answer"?pageContext.url.answerEdit:pageContext.url.questionEdit).replace("%25ID%25",id),label:pageContext.i18n.edit.toLowerCase(),extraClass:'node-tools-edit-link'});this.addSeparator(id);}
if(nodeRel.type=="question"&&this.roleOrAuthor(qr.c,isAuthor,qr.co)){this.addToTools(id,{command:"closeQuestion",on:nodeRel.closed});this.addSeparator(id);}
if(!isAuthor&&nr.f){var $link=this.addToMenu(id,{command:"reportPost",on:nodeRel.reported});if(this.roleOrAuthor(nr.vf,isAuthor,nr.vfo)){var reportCount=nodeRel.reportCount?nodeRel.reportCount:0;$link.attr('reportCount',reportCount);}}
if(nodeRel.inModeration){if(nodeRel.type=="question"?qr.p:ar.p){this.addToMenu(id,{command:"publishPost"});}}else{if(nodeRel.type=="question"?qr.p:ar.p){this.addToMenu(id,{command:"sendToMod"});}}
if(this.roleOrAuthorByType(isAuthor,nodeRel.type,qr.d,qr.dow,ar.d,ar.dow)){this.addToTools(id,{command:"deletePost",on:nodeRel.deleted});this.addSeparator(id);}
if(this.roleOrAuthor(nr.w,isAuthor,nr.wo)){this.addToMenu(id,{command:"wikifyPost",on:nodeRel.isWiki});}
if(nr.l){this.addToMenu(id,{command:"lockPost",on:nodeRel.locked});}
if(nodeRel.type=="answer"&&this.roleOrAuthor(ar.tc,isAuthor,ar.tco)){this.addToMenu(id,{command:"convertToComment"});}
if(nodeRel.locked){$topContainer.find('.comments-locked').show();}
tools.setupComments($topContainer,(!nodeRel.locked&&this.roleOrAuthor(nr.c,isAuthor,nr.co)),nodeRel.locked,this.roles.pc);if(this.roleOrAuthor(nr.vr,isAuthor,nr.vro)){this.addToMenu(id,{url:pageContext.url.seeRevisions.replace("%25ID%25",id),label:pageContext.i18n.seeRevisions});$topContainer.find('.post-update-info-edited').show();}
if(nodeRel.type=="question"){if(nodeRel.favoriteCount){$('#favorite-count').html(nodeRel.favoriteCount);if(nodeRel.favorite){$('#favorite-mark').addClass('on');}}
if(this.roleOrAuthor(qr.r,isAuthor,qr.ro)){$("#question-tags").append($(this.createLink('retag-question',{id:'retag-question',extraClass:'retag-question',label:pageContext.i18n.retag})));}
if(this.roleOrAuthor(qr.ms,isAuthor,qr.mos)){this.addToMenu(id,{command:"moveToSpace"});}
if(nr.l){commands.closeQuestion.messages.canLock=true;}}else if(nodeRel.type=="answer"){if(nodeRel.accepted){$('#post-'+id+'-accept').addClass('on');$('#post-'+id+'-accept').show();$topContainer.addClass('accepted-answer');}
if(ar.a||(this.questionAuthor&&ar.aoq)||(isAuthor&&ar.ao)){$('#post-'+id+'-accept').show();}}}
if(nodeRel.votedUp){$('#post-'+id+'-upvote').addClass('on');}
if(nodeRel.votedDown){$('#post-'+id+'-downvote').addClass('on');}
if(nodeRel.score){$('#post-'+id+'-score').html(nodeRel.score);}}},setupComments:function($topContainer,canUseComments,commentsLocked,pcPermissions,defaultVisibility){if($topContainer.find('.comment-form-container').find('form').length==0){return;}
if(!defaultVisibility){defaultVisibility='full';}
create_object(CommentsBox).initialize($topContainer,canUseComments,commentsLocked,pcPermissions,defaultVisibility);}};$(function(){$('#retag-question').live('click',function(){var $button=$(this);var data={nodeId:$button.parents("#question-table").attr('nodeid'),saveLabel:pageContext.i18n.save,cancelLabel:pageContext.i18n.cancel};$button.parent().hide();$button.parent().after(commandUtils.renderTemplate('retag-form-skeleton',data));$('#retag-question-container').find('.save').click(function(evt){var postData=commandUtils.extractFormData($('#retag-question-container'));$.post(pageContext.url.retagUrl,postData,function(data){if(data.success){$button.parent().find('a[rel=tag]').remove();$('#retag-question-container').remove();$("#question-tags-box").find('.tags').html('');$("#question-tags-box").find('.tags').append(commandUtils.renderTemplate('question-tags-list',data.result));$button.before($("#question-tags-box").find('.tags').find('a').clone());$button.parent().show();}else{commandUtils.showMessage(evt,data.errors.topics);}},'json');return false;});$('#retag-question-container').find('.cancel').click(function(){$('#retag-question-container').remove();$button.parent().show();return false;});function split(val){return val.split(/,\s*/);}
function extractLast(term){return split(term).pop();}
var inputTags=$('#retag-question-box').tagsInput({autocomplete_url:pageContext.url.jsonSearchUrl,autocomplete:{source:function(request,response){$.ajax({url:pageContext.url.jsonSearchUrl,dataType:'json',data:{q:extractLast(request.term)},success:function(data){var $results=$.map(data.topics,function(item,index){return{label:item.name+" ("+item.usedCount+")",value:item.name};});response($results);}});},search:function(){var term=extractLast(this.value);if(term.length<=1){return false;}},focus:function(){return false;},select:function(event,ui){var keyCode=event.keyCode||event.which;if(keyCode==0||keyCode==1){$("#retag-question-box").removeLastTag();}
if(!$('#retag-question-box').tagExist(ui.item.value)){$('#retag-question-box').addTag(ui.item.value,{focus:true});}
return false;}},delimiter:",",unique:true,'height':'38px','width':'500px','defaultText':''});$("#question-tags-box").find('p.tags').find('a').each(function(){$('#retag-question-box').addTag($(this).text());});return false;});});(function($){var delimiter=new Array();var tags_callbacks=new Array();$.fn.addTag=function(value,options){var options=jQuery.extend({focus:false,callback:true},options);this.each(function(){id=$(this).attr('id');var tagslist=$(this).val().split(delimiter[id]);if(tagslist[0]==''){tagslist=new Array();}
var found=$.inArray(jQuery.trim(value),tagslist)>-1;if(found)
{return false;}
value=jQuery.trim(value);if(options.unique){skipTag=$(tagslist).tagExist(value);}else{skipTag=false;}
if(value!=''&&skipTag!=true){$('<span>').addClass('tag').append($('<span>').text(value).append('&nbsp;&nbsp;'),$('<a>',{href:'#',title:pageContext.i18n.removingTag,text:'x'}).click(function(){return $('#'+id).removeTag(escape(value));})).insertBefore('#'+id+'_addTag');tagslist.push(value);$('#'+id+'_tag').val('');if(options.focus){$('#'+id+'_tag').focus();}else{$('#'+id+'_tag').blur();}
if(options.callback&&tags_callbacks[id]&&tags_callbacks[id]['onAddTag']){var f=tags_callbacks[id]['onAddTag'];f(value);}
if(tags_callbacks[id]&&tags_callbacks[id]['onChange'])
{var i=tagslist.length;var f=tags_callbacks[id]['onChange'];f($(this),tagslist[i]);}}
$.fn.tagsInput.updateTagsField(this,tagslist);});$('#'+id).adjustContainDivSize();return false;};$.fn.removeTag=function(value){value=unescape(value);this.each(function(){id=$(this).attr('id');var old=$(this).val().split(delimiter[id]);$('#'+id+'_tagsinput .tag').remove();str='';for(i=0;i<old.length;i++){if(old[i]!=value){str=str+delimiter[id]+old[i];}}
$.fn.tagsInput.importTags(this,str);if(tags_callbacks[id]&&tags_callbacks[id]['onRemoveTag']){var f=tags_callbacks[id]['onRemoveTag'];f(value);}});$('#'+id).adjustContainDivSize();return false;};$.fn.removeLastTag=function(){this.each(function(){id=$(this).attr('id');var old=$(this).val().split(delimiter[id]);$('#'+id+'_tagsinput .tag').remove();str='';for(i=0;i<old.length-1;i++){str=str+delimiter[id]+old[i];}
jQuery.fn.tagsInput.importTags(this,str);jQuery.fn.adjustContainDivSize();});return false;};$.fn.tagExist=function(val){if(jQuery.inArray(val,$(this))==-1){return false;}else{return true;}};$.fn.adjustContainDivSize=function(value){var containerDiv=$("div.tagsinput");var totalWidth=0;var currTag=null;$('#'+id+'_tagsinput .tag').each(function(){var currTag=$(this);totalWidth+=$(this).outerWidth(true);});totalWidth+=$('#'+id+'_tag').outerWidth(true);var rowCount=Math.floor(totalWidth/containerDiv.innerWidth())+1;if(containerDiv[0].originalHeight==null||containerDiv[0].originalHeight==0){containerDiv[0].originalHeight=containerDiv.height();}
containerDiv.css("height",rowCount*containerDiv[0].originalHeight+"px");if(($('#'+id+'_tag').offset().top+$('#'+id+'_tag').height())>(containerDiv.offset().top+containerDiv.innerHeight()))
{var inputHeight=($('#'+id+'_tag').offset().top+$('#'+id+'_tag').height());var containerHeight=containerDiv.offset().top+containerDiv.innerHeight();++rowCount;containerDiv.css("height",rowCount*containerDiv[0].originalHeight+"px");}};$.fn.importTags=function(str){$('#'+id+'_tagsinput .tag').remove();$.fn.tagsInput.importTags(this,str);}
$.fn.tagsInput=function(options){var settings=jQuery.extend({interactive:true,defaultText:'add a tag',minChars:0,width:'300px',height:'100px','hide':true,'delimiter':',',autocomplete:{selectFirst:false},'unique':true,removeWithBackspace:true},options);var removeStarted=false;this.each(function(){if(settings.hide){$(this).hide();}
id=$(this).attr('id')
data=jQuery.extend({pid:id,real_input:'#'+id,holder:'#'+id+'_tagsinput',input_wrapper:'#'+id+'_addTag',fake_input:'#'+id+'_tag'},settings);if($(this).attr('placeholder')){settings.defaultText=$(this).attr('placeholder');}
delimiter[id]=data.delimiter;if(settings.onAddTag||settings.onRemoveTag||settings.onChange){tags_callbacks[id]=new Array();tags_callbacks[id]['onAddTag']=settings.onAddTag;tags_callbacks[id]['onRemoveTag']=settings.onRemoveTag;tags_callbacks[id]['onChange']=settings.onChange;}
var markup='<div id="'+id+'_tagsinput" class="tagsinput"><div id="'+id+'_addTag">';if(settings.interactive){markup=markup+'<input id="'+id+'_tag" value="" placeholder="'+settings.defaultText+'" />';}
markup=markup+'</div><div class="tags_clear"></div></div>';$(markup).insertAfter(this);$(data.holder).css('width',settings.width);$(data.holder).css('height',settings.height);if($(data.real_input).val()!=''){$.fn.tagsInput.importTags($(data.real_input),$(data.real_input).val());}
if(settings.interactive){$(data.fake_input).val($(data.fake_input).attr('data-default'));$(data.fake_input).css('color','#666666');$(data.holder).bind('click',data,function(event){$(event.data.fake_input).focus();});$(data.fake_input).bind('focus',data,function(event){if($(event.data.fake_input).val()==$(event.data.fake_input).attr('data-default')){$(event.data.fake_input).val('');}
$(event.data.fake_input).css('color','#000000');});if(settings.autocomplete_url!=undefined){$(data.fake_input).autocomplete(settings.autocomplete).bind('result',data,function(event,data,formatted){if(data)
{$(event.data.real_input).addTag(formatted,{focus:true,unique:(settings.unique)});}});$(data.fake_input).bind('blur',data,function(event){if($('.ac_results').is(':visible'))return false;if($(event.data.fake_input).val()!=$(event.data.fake_input).attr('data-default')){if((event.data.minChars<=$(event.data.fake_input).val().length)&&(!event.data.maxChars||(event.data.maxChars>=$(event.data.fake_input).val().length)))
$(event.data.real_input).addTag($(event.data.fake_input).val(),{focus:false,unique:(settings.unique)});}
$(event.data.fake_input).val($(event.data.fake_input).attr('data-default'));$(event.data.fake_input).css('color','#666666');return false;});}else{$(data.fake_input).bind('blur',data,function(event){var d=$(this).attr('data-default');if($(event.data.fake_input).val()!=''&&$(event.data.fake_input).val()!=d){if((event.data.minChars<=$(event.data.fake_input).val().length)&&(!event.data.maxChars||(event.data.maxChars>=$(event.data.fake_input).val().length)))
$(event.data.real_input).addTag($(event.data.fake_input).val(),{focus:true,unique:(settings.unique)});}else{$(event.data.fake_input).val($(event.data.fake_input).attr('data-default'));$(event.data.fake_input).css('color','#666666');}
return false;});}
$(data.fake_input).bind('keypress',data,function(event){var commaArray=$(this).val().trim().split(",");var spaceArray=$(this).val().trim().split(" ");if($('#tags-help-drop-down').css('display')=="none"&&spaceArray!=null&&spaceArray.length>2&&commaArray.length<=1){$("#tags-help-drop-down").slideDown();$('#tags-help-drop-down').css('display','block');$(".ui-autocomplete").hide();}
if(event.which==event.data.delimiter.charCodeAt(0)||event.which==13){if((event.data.minChars<=$(event.data.fake_input).val().length)&&(!event.data.maxChars||(event.data.maxChars>=$(event.data.fake_input).val().length)))
$(event.data.real_input).addTag($(event.data.fake_input).val(),{focus:true,unique:(settings.unique)});return false;}});data.removeWithBackspace&&$(data.fake_input).bind('keyup',function(event)
{if(event.keyCode==8&&$(this).val()==''){if(removeStarted){var last_tag=$(this).closest('.tagsinput').find('.tag:last').text();var id=$(this).attr('id').replace(/_tag$/,'');last_tag=last_tag.replace(/[\s]+x$/,'');$('#'+id).removeTag(escape(last_tag));$(this).trigger('focus');}else{removeStarted=true;}}else{removeStarted=false;}});$(data.fake_input).blur();}
return false;});return this;};$.fn.tagsInput.updateTagsField=function(obj,tagslist){id=$(obj).attr('id');$(obj).val(tagslist.join(delimiter[id]));};$.fn.tagsInput.importTags=function(obj,val){$(obj).val('');id=$(obj).attr('id');var tags=val.split(delimiter[id]);for(i=0;i<tags.length;i++){$(obj).addTag(tags[i],{focus:false,callback:false});}
if(tags_callbacks[id]&&tags_callbacks[id]['onChange'])
{var f=tags_callbacks[id]['onChange'];f(obj,tags[i]);}};})(jQuery);