pax_global_header00006660000000000000000000000064121720505020014504gustar00rootroot0000000000000052 comment=459f51e98c53c817df7f8a6e1d4bd488a327b043 melange-0.5.2/000077500000000000000000000000001217205050200131205ustar00rootroot00000000000000melange-0.5.2/.gitignore000066400000000000000000000000351217205050200151060ustar00rootroot00000000000000configuration/ *.pyc widgets melange-0.5.2/data/000077500000000000000000000000001217205050200140315ustar00rootroot00000000000000melange-0.5.2/data/add_dialog.glade000066400000000000000000000246611217205050200171070ustar00rootroot00000000000000 5 Add a widget center 450 350 dialog True vertical 2 True 5 True True never automatic True queue 100 True True categories False False False True column True 2 0 0 False False 0 True vertical True 5 True gtk-missing-image False 0 True label False False 1 False False 5 0 True True automatic automatic True queue True True widgets False column 0 1 1 1 1 1 True end gtk-cancel True True True True False False 0 gtk-add True True True True True False False 1 False end 0 cancel add melange-0.5.2/data/common/000077500000000000000000000000001217205050200153215ustar00rootroot00000000000000melange-0.5.2/data/common/core/000077500000000000000000000000001217205050200162515ustar00rootroot00000000000000melange-0.5.2/data/common/core/events.js000066400000000000000000000001241217205050200201100ustar00rootroot00000000000000var Widget = new Class({ Implements: Events }); var events = new Widget(); melange-0.5.2/data/common/core/melange.js000066400000000000000000000077521217205050200202320ustar00rootroot00000000000000var REMOTECALLDELTA = 50; // prevent calls to get invoked short after another // as one will get lost because melange won't pickup the fast // window.location.href change var Remote = new Class({ initialize: function() { this.lastRemoteCallTime = 0; }, call: function(url) { var now = new Date().getTime(); if(this.lastRemoteCallTime + REMOTECALLDELTA > now) { setTimeout(function() { remote.call(url); }, 50); } else { this.lastRemoteCallTime = now; this._call(url); } }, _call: function(url) { window.location.href = url; } }); var Widget = new Class({ initialize: function(main) { this.api = {}; this.config = new ConfigurationWrapper(); this.main = main || function() {}; this.callbacks = {}; this.signalCallbacks = {}; this.callbackId = 0; // register signal callbacks var _this = this; this.api['addEvent'] = function(signal, cb) { _this.signalCallbacks[signal] = cb; } remote.call('melange://init'); }, main: function() { this.main(); }, registerMethod: function(method) { this.api[method] = function() { var args = []; var cb = null; Array.each(arguments, function(arg) { if(typeof arg == 'function') cb = arg; else args.push(arg); }); widget.callRemote(method, args, cb); } }, callRemote: function(method, args, cb) { var data = {}; if(cb !== null) { var callbackId = this.callbackId++; this.callbacks[callbackId] = cb; data['callback_id'] = callbackId; } var i = 0; Array.each(args, function(v) { data['argument_' + i.toString()] = v i++; }); var qs = Object.toQueryString(data); remote.call('melange://call/' + method + '?' + qs); }, invokeCallback: function(callbackId, data) { var callback = this.callbacks[callbackId]; callback(data); delete this.callbacks[callbackId]; }, emitSignal: function(signal, data) { if(signal in this.signalCallbacks) this.signalCallbacks[signal](data); }, fireDrop: function(x, y, data) { data = JSON.decode(data); // find the drop target var el = document.elementFromPoint(x, y); var events = el.retrieve('events'); while(events === null || !'drop' in events) { el = el.getParent(); events = el.retrieve('events'); } el.fireEvent('drop', [data]); } }); var ConfigurationWrapper = new Class({ Implements: Events, initialize: function() { this.callbacks = {}; this.callbackId = 0; }, get: function(option, cb) { var id = this.callbackId++; this.callbacks[id] = cb; var qs = Object.toQueryString({option: option, callback_id: id}); remote.call('config://get/?' + qs); }, set: function(option, value) { if(value === undefined) { // Javascript allows this, but I don't want that. throw new TypeError("`config.set` expects two arguments"); } var qs = Object.toQueryString({option: option, value: value}) remote.call('config://set/?' + qs); }, invokeCallback: function(callbackId, value) { var cb = this.callbacks[callbackId]; cb(value); delete this.callbacks[callbackId]; }, // // Invoked on every gpyconf event. // Uses MooTools' Events for dispatching. // onConfigEvent: function(event_name, key, value) { args = [key, value]; this.fireEvent(event_name, args); } }); var remote = new Remote(); var widget = null; window.addEvent('domready', function() { widget = new Widget(window.main); }); melange-0.5.2/data/common/core/mootools-more.js000066400000000000000000007164311217205050200214360ustar00rootroot00000000000000// MooTools: the javascript framework. // Load this file's selection again by visiting: http://mootools.net/more/065f2f092ece4e3b32bb5214464cf926 // Or build this file again with packager using: packager build More/More More/Events.Pseudos More/Class.Refactor More/Class.Binds More/Class.Occlude More/Chain.Wait More/Array.Extras More/Date More/Date.Extras More/Number.Format More/Object.Extras More/String.Extras More/String.QueryString More/URI More/URI.Relative More/Hash More/Hash.Extras More/Element.Forms More/Elements.From More/Element.Event.Pseudos More/Element.Event.Pseudos.Keys More/Element.Measure More/Element.Pin More/Element.Position More/Element.Shortcuts More/Form.Request More/Form.Request.Append More/Form.Validator More/Form.Validator.Inline More/Form.Validator.Extras More/OverText More/Fx.Elements More/Fx.Accordion More/Fx.Move More/Fx.Reveal More/Fx.Scroll More/Fx.Slide More/Fx.SmoothScroll More/Fx.Sort More/Drag More/Drag.Move More/Slider More/Sortables More/Request.JSONP More/Request.Queue More/Request.Periodical More/Assets More/Color More/Group More/Hash.Cookie More/IframeShim More/Table More/HtmlTable More/HtmlTable.Zebra More/HtmlTable.Sort More/HtmlTable.Select More/Keyboard More/Keyboard.Extras More/Mask More/Scroller More/Tips More/Spinner More/Locale More/Locale.Set.From More/Locale.en-US.Date More/Locale.en-US.Form.Validator More/Locale.en-US.Number More/Locale.ar.Date More/Locale.ar.Form.Validator More/Locale.ca-CA.Date More/Locale.ca-CA.Form.Validator More/Locale.cs-CZ.Date More/Locale.cs-CZ.Form.Validator More/Locale.da-DK.Date More/Locale.da-DK.Form.Validator More/Locale.de-CH.Date More/Locale.de-CH.Form.Validator More/Locale.de-DE.Date More/Locale.de-DE.Form.Validator More/Locale.de-DE.Number More/Locale.en-GB.Date More/Locale.es-AR.Date More/Locale.es-AR.Form.Validator More/Locale.es-ES.Date More/Locale.es-ES.Form.Validator More/Locale.et-EE.Date More/Locale.et-EE.Form.Validator More/Locale.EU.Number More/Locale.fa.Date More/Locale.fa.Form.Validator More/Locale.fi-FI.Date More/Locale.fi-FI.Form.Validator More/Locale.fi-FI.Number More/Locale.fr-FR.Date More/Locale.fr-FR.Form.Validator More/Locale.fr-FR.Number More/Locale.he-IL.Date More/Locale.he-IL.Form.Validator More/Locale.he-IL.Number More/Locale.hu-HU.Date More/Locale.hu-HU.Form.Validator More/Locale.it-IT.Date More/Locale.it-IT.Form.Validator More/Locale.ja-JP.Date More/Locale.ja-JP.Form.Validator More/Locale.ja-JP.Number More/Locale.nl-NL.Date More/Locale.nl-NL.Form.Validator More/Locale.nl-NL.Number More/Locale.no-NO.Date More/Locale.no-NO.Form.Validator More/Locale.pl-PL.Date More/Locale.pl-PL.Form.Validator More/Locale.pt-BR.Date More/Locale.pt-BR.Form.Validator More/Locale.pt-PT.Date More/Locale.pt-PT.Form.Validator More/Locale.ru-RU-unicode.Date More/Locale.ru-RU-unicode.Form.Validator More/Locale.si-SI.Date More/Locale.si-SI.Form.Validator More/Locale.sv-SE.Date More/Locale.sv-SE.Form.Validator More/Locale.uk-UA.Date More/Locale.uk-UA.Form.Validator More/Locale.zh-CH.Date More/Locale.zh-CH.Form.Validator /* --- copyrights: - [MooTools](http://mootools.net) licenses: - [MIT License](http://mootools.net/license.txt) ... */ MooTools.More={version:"1.4.0.1",build:"a4244edf2aa97ac8a196fc96082dd35af1abab87"};(function(){Events.Pseudos=function(h,e,f){var d="_monitorEvents:";var c=function(i){return{store:i.store?function(j,k){i.store(d+j,k); }:function(j,k){(i._monitorEvents||(i._monitorEvents={}))[j]=k;},retrieve:i.retrieve?function(j,k){return i.retrieve(d+j,k);}:function(j,k){if(!i._monitorEvents){return k; }return i._monitorEvents[j]||k;}};};var g=function(k){if(k.indexOf(":")==-1||!h){return null;}var j=Slick.parse(k).expressions[0][0],p=j.pseudos,i=p.length,o=[]; while(i--){var n=p[i].key,m=h[n];if(m!=null){o.push({event:j.tag,value:p[i].value,pseudo:n,original:k,listener:m});}}return o.length?o:null;};return{addEvent:function(m,p,j){var n=g(m); if(!n){return e.call(this,m,p,j);}var k=c(this),r=k.retrieve(m,[]),i=n[0].event,l=Array.slice(arguments,2),o=p,q=this;n.each(function(s){var t=s.listener,u=o; if(t==false){i+=":"+s.pseudo+"("+s.value+")";}else{o=function(){t.call(q,s,u,arguments,o);};}});r.include({type:i,event:p,monitor:o});k.store(m,r);if(m!=i){e.apply(this,[m,p].concat(l)); }return e.apply(this,[i,o].concat(l));},removeEvent:function(m,l){var k=g(m);if(!k){return f.call(this,m,l);}var n=c(this),j=n.retrieve(m);if(!j){return this; }var i=Array.slice(arguments,2);f.apply(this,[m,l].concat(i));j.each(function(o,p){if(!l||o.event==l){f.apply(this,[o.type,o.monitor].concat(i));}delete j[p]; },this);n.store(m,j);return this;}};};var b={once:function(e,f,d,c){f.apply(this,d);this.removeEvent(e.event,c).removeEvent(e.original,f);},throttle:function(d,e,c){if(!e._throttled){e.apply(this,c); e._throttled=setTimeout(function(){e._throttled=false;},d.value||250);}},pause:function(d,e,c){clearTimeout(e._pause);e._pause=e.delay(d.value||250,this,c); }};Events.definePseudo=function(c,d){b[c]=d;return this;};Events.lookupPseudo=function(c){return b[c];};var a=Events.prototype;Events.implement(Events.Pseudos(b,a.addEvent,a.removeEvent)); ["Request","Fx"].each(function(c){if(this[c]){this[c].implement(Events.prototype);}});})();Class.refactor=function(b,a){Object.each(a,function(e,d){var c=b.prototype[d]; c=(c&&c.$origin)||c||function(){};b.implement(d,(typeof e=="function")?function(){var f=this.previous;this.previous=c;var g=e.apply(this,arguments);this.previous=f; return g;}:e);});return b;};Class.Mutators.Binds=function(a){if(!this.prototype.initialize){this.implement("initialize",function(){});}return Array.from(a).concat(this.prototype.Binds||[]); };Class.Mutators.initialize=function(a){return function(){Array.from(this.Binds).each(function(b){var c=this[b];if(c){this[b]=c.bind(this);}},this);return a.apply(this,arguments); };};Class.Occlude=new Class({occlude:function(c,b){b=document.id(b||this.element);var a=b.retrieve(c||this.property);if(a&&!this.occluded){return(this.occluded=a); }this.occluded=false;b.store(c||this.property,this);return this.occluded;}});(function(){var a={wait:function(b){return this.chain(function(){this.callChain.delay(b==null?500:b,this); return this;}.bind(this));}};Chain.implement(a);if(this.Fx){Fx.implement(a);}if(this.Element&&Element.implement&&this.Fx){Element.implement({chains:function(b){Array.from(b||["tween","morph","reveal"]).each(function(c){c=this.get(c); if(!c){return;}c.setOptions({link:"chain"});},this);return this;},pauseFx:function(c,b){this.chains(b).get(b||"tween").wait(c);return this;}});}})();(function(a){Array.implement({min:function(){return Math.min.apply(null,this); },max:function(){return Math.max.apply(null,this);},average:function(){return this.length?this.sum()/this.length:0;},sum:function(){var b=0,c=this.length; if(c){while(c--){b+=this[c];}}return b;},unique:function(){return[].combine(this);},shuffle:function(){for(var c=this.length;c&&--c;){var b=this[c],d=Math.floor(Math.random()*(c+1)); this[c]=this[d];this[d]=b;}return this;},reduce:function(d,e){for(var c=0,b=this.length;c3&&a<21)?"th":["th","st","nd","rd","th"][Math.min(a%10,4)]; },lessThanMinuteAgo:"less than a minute ago",minuteAgo:"about a minute ago",minutesAgo:"{delta} minutes ago",hourAgo:"about an hour ago",hoursAgo:"about {delta} hours ago",dayAgo:"1 day ago",daysAgo:"{delta} days ago",weekAgo:"1 week ago",weeksAgo:"{delta} weeks ago",monthAgo:"1 month ago",monthsAgo:"{delta} months ago",yearAgo:"1 year ago",yearsAgo:"{delta} years ago",lessThanMinuteUntil:"less than a minute from now",minuteUntil:"about a minute from now",minutesUntil:"{delta} minutes from now",hourUntil:"about an hour from now",hoursUntil:"about {delta} hours from now",dayUntil:"1 day from now",daysUntil:"{delta} days from now",weekUntil:"1 week from now",weeksUntil:"{delta} weeks from now",monthUntil:"1 month from now",monthsUntil:"{delta} months from now",yearUntil:"1 year from now",yearsUntil:"{delta} years from now"}); (function(){var a=this.Date;var f=a.Methods={ms:"Milliseconds",year:"FullYear",min:"Minutes",mo:"Month",sec:"Seconds",hr:"Hours"};["Date","Day","FullYear","Hours","Milliseconds","Minutes","Month","Seconds","Time","TimezoneOffset","Week","Timezone","GMTOffset","DayOfYear","LastMonth","LastDayOfMonth","UTCDate","UTCDay","UTCFullYear","AMPM","Ordinal","UTCHours","UTCMilliseconds","UTCMinutes","UTCMonth","UTCSeconds","UTCMilliseconds"].each(function(s){a.Methods[s.toLowerCase()]=s; });var p=function(u,t,s){if(t==1){return u;}return u28){return 1;}if(y==0&&s<-2){x=new a(x).decrement("day",u); u=0;}w=new a(x.get("year"),0,1).get("day")||7;if(w>4){t=-7;}}else{w=new a(x.get("year"),0,1).get("day");}t+=x.get("dayofyear");t+=6-u;t+=(7+w-v)%7;return(t/7); },getOrdinal:function(s){return a.getMsg("ordinal",s||this.get("date"));},getTimezone:function(){return this.toString().replace(/^.*? ([A-Z]{3}).[0-9]{4}.*$/,"$1").replace(/^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/,"$1$2$3"); },getGMTOffset:function(){var s=this.get("timezoneOffset");return((s>0)?"-":"+")+p((s.abs()/60).floor(),2)+p(s%60,2);},setAMPM:function(s){s=s.toUpperCase(); var t=this.get("hr");if(t>11&&s=="AM"){return this.decrement("hour",12);}else{if(t<12&&s=="PM"){return this.increment("hour",12);}}return this;},getAMPM:function(){return(this.get("hr")<12)?"AM":"PM"; },parse:function(s){this.set("time",a.parse(s));return this;},isValid:function(s){if(!s){s=this;}return typeOf(s)=="date"&&!isNaN(s.valueOf());},format:function(s){if(!this.isValid()){return"invalid date"; }if(!s){s="%x %X";}if(typeof s=="string"){s=g[s.toLowerCase()]||s;}if(typeof s=="function"){return s(this);}var t=this;return s.replace(/%([a-z%])/gi,function(v,u){switch(u){case"a":return a.getMsg("days_abbr")[t.get("day")]; case"A":return a.getMsg("days")[t.get("day")];case"b":return a.getMsg("months_abbr")[t.get("month")];case"B":return a.getMsg("months")[t.get("month")]; case"c":return t.format("%a %b %d %H:%M:%S %Y");case"d":return p(t.get("date"),2);case"e":return p(t.get("date"),2," ");case"H":return p(t.get("hr"),2); case"I":return p((t.get("hr")%12)||12,2);case"j":return p(t.get("dayofyear"),3);case"k":return p(t.get("hr"),2," ");case"l":return p((t.get("hr")%12)||12,2," "); case"L":return p(t.get("ms"),3);case"m":return p((t.get("mo")+1),2);case"M":return p(t.get("min"),2);case"o":return t.get("ordinal");case"p":return a.getMsg(t.get("ampm")); case"s":return Math.round(t/1000);case"S":return p(t.get("seconds"),2);case"T":return t.format("%H:%M:%S");case"U":return p(t.get("week"),2);case"w":return t.get("day"); case"x":return t.format(a.getMsg("shortDate"));case"X":return t.format(a.getMsg("shortTime"));case"y":return t.get("year").toString().substr(2);case"Y":return t.get("year"); case"z":return t.get("GMTOffset");case"Z":return t.get("Timezone");}return u;});},toISOString:function(){return this.format("iso8601");}}).alias({toJSON:"toISOString",compare:"diff",strftime:"format"}); var k=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],h=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];var g={db:"%Y-%m-%d %H:%M:%S",compact:"%Y%m%dT%H%M%S","short":"%d %b %H:%M","long":"%B %d, %Y %H:%M",rfc822:function(s){return k[s.get("day")]+s.format(", %d ")+h[s.get("month")]+s.format(" %Y %H:%M:%S %Z"); },rfc2822:function(s){return k[s.get("day")]+s.format(", %d ")+h[s.get("month")]+s.format(" %Y %H:%M:%S %z");},iso8601:function(s){return(s.getUTCFullYear()+"-"+p(s.getUTCMonth()+1,2)+"-"+p(s.getUTCDate(),2)+"T"+p(s.getUTCHours(),2)+":"+p(s.getUTCMinutes(),2)+":"+p(s.getUTCSeconds(),2)+"."+p(s.getUTCMilliseconds(),3)+"Z"); }};var c=[],n=a.parse;var r=function(v,x,u){var t=-1,w=a.getMsg(v+"s");switch(typeOf(x)){case"object":t=w[x.get(v)];break;case"number":t=w[x];if(!t){throw new Error("Invalid "+v+" index: "+x); }break;case"string":var s=w.filter(function(y){return this.test(y);},new RegExp("^"+x,"i"));if(!s.length){throw new Error("Invalid "+v+" string");}if(s.length>1){throw new Error("Ambiguous "+v); }t=s[0];}return(u)?w.indexOf(t):t;};var i=1900,o=70;a.extend({getMsg:function(t,s){return Locale.get("Date."+t,s);},units:{ms:Function.from(1),second:Function.from(1000),minute:Function.from(60000),hour:Function.from(3600000),day:Function.from(86400000),week:Function.from(608400000),month:function(t,s){var u=new a; return a.daysInMonth(t!=null?t:u.get("mo"),s!=null?s:u.get("year"))*86400000;},year:function(s){s=s||new a().get("year");return a.isLeapYear(s)?31622400000:31536000000; }},daysInMonth:function(t,s){return[31,a.isLeapYear(s)?29:28,31,30,31,30,31,31,30,31,30,31][t];},isLeapYear:function(s){return((s%4===0)&&(s%100!==0))||(s%400===0); },parse:function(v){var u=typeOf(v);if(u=="number"){return new a(v);}if(u!="string"){return v;}v=v.clean();if(!v.length){return null;}var s;c.some(function(w){var t=w.re.exec(v); return(t)?(s=w.handler(t)):false;});if(!(s&&s.isValid())){s=new a(n(v));if(!(s&&s.isValid())){s=new a(v.toInt());}}return s;},parseDay:function(s,t){return r("day",s,t); },parseMonth:function(t,s){return r("month",t,s);},parseUTC:function(t){var s=new a(t);var u=a.UTC(s.get("year"),s.get("mo"),s.get("date"),s.get("hr"),s.get("min"),s.get("sec"),s.get("ms")); return new a(u);},orderIndex:function(s){return a.getMsg("dateOrder").indexOf(s)+1;},defineFormat:function(s,t){g[s]=t;return this;},defineParser:function(s){c.push((s.re&&s.handler)?s:l(s)); return this;},defineParsers:function(){Array.flatten(arguments).each(a.defineParser);return this;},define2DigitYearStart:function(s){o=s%100;i=s-o;return this; }}).extend({defineFormats:a.defineFormat.overloadSetter()});var d=function(s){return new RegExp("(?:"+a.getMsg(s).map(function(t){return t.substr(0,3); }).join("|")+")[a-z]*");};var m=function(s){switch(s){case"T":return"%H:%M:%S";case"x":return((a.orderIndex("month")==1)?"%m[-./]%d":"%d[-./]%m")+"([-./]%y)?"; case"X":return"%H([.:]%M)?([.:]%S([.:]%s)?)? ?%p? ?%z?";}return null;};var j={d:/[0-2]?[0-9]|3[01]/,H:/[01]?[0-9]|2[0-3]/,I:/0?[1-9]|1[0-2]/,M:/[0-5]?\d/,s:/\d+/,o:/[a-z]*/,p:/[ap]\.?m\.?/,y:/\d{2}|\d{4}/,Y:/\d{4}/,z:/Z|[+-]\d{2}(?::?\d{2})?/}; j.m=j.I;j.S=j.M;var e;var b=function(s){e=s;j.a=j.A=d("days");j.b=j.B=d("months");c.each(function(u,t){if(u.format){c[t]=l(u.format);}});};var l=function(u){if(!e){return{format:u}; }var s=[];var t=(u.source||u).replace(/%([a-z])/gi,function(w,v){return m(v)||w;}).replace(/\((?!\?)/g,"(?:").replace(/ (?!\?|\*)/g,",? ").replace(/%([a-z%])/gi,function(w,v){var x=j[v]; if(!x){return v;}s.push(v);return"("+x.source+")";}).replace(/\[a-z\]/gi,"[a-z\\u00c0-\\uffff;&]");return{format:u,re:new RegExp("^"+t+"$","i"),handler:function(y){y=y.slice(1).associate(s); var v=new a().clearTime(),x=y.y||y.Y;if(x!=null){q.call(v,"y",x);}if("d" in y){q.call(v,"d",1);}if("m" in y||y.b||y.B){q.call(v,"m",1);}for(var w in y){q.call(v,w,y[w]); }return v;}};};var q=function(s,t){if(!t){return this;}switch(s){case"a":case"A":return this.set("day",a.parseDay(t,true));case"b":case"B":return this.set("mo",a.parseMonth(t,true)); case"d":return this.set("date",t);case"H":case"I":return this.set("hr",t);case"m":return this.set("mo",t-1);case"M":return this.set("min",t);case"p":return this.set("ampm",t.replace(/\./g,"")); case"S":return this.set("sec",t);case"s":return this.set("ms",("0."+t)*1000);case"w":return this.set("day",t);case"Y":return this.set("year",t);case"y":t=+t; if(t<100){t+=i+(t0.75*a){e=c;}break;}f/=a;e=c+"s";}f=f.round();return Date.getMsg(e+d,f).substitute({delta:f});}}).defineParsers({re:/^(?:tod|tom|yes)/i,handler:function(a){var b=new Date().clearTime(); switch(a[0]){case"tom":return b.increment();case"yes":return b.decrement();default:return b;}}},{re:/^(next|last) ([a-z]+)$/i,handler:function(e){var f=new Date().clearTime(); var b=f.getDay();var c=Date.parseDay(e[2],true);var a=c-b;if(c<=b){a+=7;}if(e[1]=="last"){a-=7;}return f.set("date",f.getDate()+a);}}).alias("timeAgoInWords","timeDiffInWords"); Locale.define("en-US","Number",{decimal:".",group:",",currency:{prefix:"$ "}});Number.implement({format:function(q){var n=this;q=q?Object.clone(q):{};var a=function(i){if(q[i]!=null){return q[i]; }return Locale.get("Number."+i);};var f=n<0,h=a("decimal"),k=a("precision"),o=a("group"),c=a("decimals");if(f){var e=a("negative")||{};if(e.prefix==null&&e.suffix==null){e.prefix="-"; }["prefix","suffix"].each(function(i){if(e[i]){q[i]=a(i)+e[i];}});n=-n;}var l=a("prefix"),p=a("suffix");if(c!==""&&c>=0&&c<=20){n=n.toFixed(c);}if(k>=1&&k<=21){n=(+n).toPrecision(k); }n+="";var m;if(a("scientific")===false&&n.indexOf("e")>-1){var j=n.split("e"),b=+j[1];n=j[0].replace(".","");if(b<0){b=-b-1;m=j[0].indexOf(".");if(m>-1){b-=m-1; }while(b--){n="0"+n;}n="0."+n;}else{m=j[0].lastIndexOf(".");if(m>-1){b-=j[0].length-m-1;}while(b--){n+="0";}}}if(h!="."){n=n.replace(".",h);}if(o){m=n.lastIndexOf(h); m=(m>-1)?m:n.length;var d=n.substring(m),g=m;while(g--){if((m-g-1)%3==0&&g!=(m-1)){d=o+d;}d=n.charAt(g)+d;}n=d;}if(l){n=l+n;}if(p){n+=p;}return n;},formatCurrency:function(b){var a=Locale.get("Number.currency")||{}; if(a.scientific==null){a.scientific=false;}a.decimals=b!=null?b:(a.decimals==null?2:a.decimals);return this.format(a);},formatPercentage:function(b){var a=Locale.get("Number.percentage")||{}; if(a.suffix==null){a.suffix="%";}a.decimals=b!=null?b:(a.decimals==null?2:a.decimals);return this.format(a);}});(function(){var c={a:/[àáâãäåăą]/g,A:/[ÀÁÂÃÄÅĂĄ]/g,c:/[ćčç]/g,C:/[ĆČÇ]/g,d:/[ďđ]/g,D:/[ĎÐ]/g,e:/[èéêëěę]/g,E:/[ÈÉÊËĚĘ]/g,g:/[ğ]/g,G:/[Ğ]/g,i:/[ìíîï]/g,I:/[ÌÍÎÏ]/g,l:/[ĺľł]/g,L:/[ĹĽŁ]/g,n:/[ñňń]/g,N:/[ÑŇŃ]/g,o:/[òóôõöøő]/g,O:/[ÒÓÔÕÖØ]/g,r:/[řŕ]/g,R:/[ŘŔ]/g,s:/[ššş]/g,S:/[ŠŞŚ]/g,t:/[ťţ]/g,T:/[ŤŢ]/g,ue:/[ü]/g,UE:/[Ü]/g,u:/[ùúûůµ]/g,U:/[ÙÚÛŮ]/g,y:/[ÿý]/g,Y:/[ŸÝ]/g,z:/[žźż]/g,Z:/[ŽŹŻ]/g,th:/[þ]/g,TH:/[Þ]/g,dh:/[ð]/g,DH:/[Ð]/g,ss:/[ß]/g,oe:/[œ]/g,OE:/[Œ]/g,ae:/[æ]/g,AE:/[Æ]/g},b={" ":/[\xa0\u2002\u2003\u2009]/g,"*":/[\xb7]/g,"'":/[\u2018\u2019]/g,'"':/[\u201c\u201d]/g,"...":/[\u2026]/g,"-":/[\u2013]/g,"»":/[\uFFFD]/g}; var a=function(f,h){var e=f,g;for(g in h){e=e.replace(h[g],g);}return e;};var d=function(e,g){e=e||"";var h=g?"<"+e+"(?!\\w)[^>]*>([\\s\\S]*?)":"]+)?>",f=new RegExp(h,"gi"); return f;};String.implement({standardize:function(){return a(this,c);},repeat:function(e){return new Array(e+1).join(this);},pad:function(e,h,g){if(this.length>=e){return this; }var f=(h==null?" ":""+h).repeat(e-this.length).substr(0,e-this.length);if(!g||g=="right"){return this+f;}if(g=="left"){return f+this;}return f.substr(0,(f.length/2).floor())+this+f.substr(0,(f.length/2).ceil()); },getTags:function(e,f){return this.match(d(e,f))||[];},stripTags:function(e,f){return this.replace(d(e,f),"");},tidy:function(){return a(this,b);},truncate:function(e,f,i){var h=this; if(f==null&&arguments.length==1){f="…";}if(h.length>e){h=h.substring(0,e);if(i){var g=h.lastIndexOf(i);if(g!=-1){h=h.substr(0,g);}}if(f){h+=f;}}return h; }});})();String.implement({parseQueryString:function(d,a){if(d==null){d=true;}if(a==null){a=true;}var c=this.split(/[&;]/),b={};if(!c.length){return b; }c.each(function(i){var e=i.indexOf("=")+1,g=e?i.substr(e):"",f=e?i.substr(0,e-1).match(/([^\]\[]+|(\B)(?=\]))/g):[i],h=b;if(!f){return;}if(a){g=decodeURIComponent(g); }f.each(function(k,j){if(d){k=decodeURIComponent(k);}var l=h[k];if(j0){c.pop(); }else{if(f!="."){c.push(f);}}});return c.join("/")+"/";},combine:function(c){return c.value||c.scheme+"://"+(c.user?c.user+(c.password?":"+c.password:"")+"@":"")+(c.host||"")+(c.port&&c.port!=this.schemes[c.scheme]?":"+c.port:"")+(c.directory||"/")+(c.file||"")+(c.query?"?"+c.query:"")+(c.fragment?"#"+c.fragment:""); },set:function(d,f,e){if(d=="value"){var c=f.match(a.regs.scheme);if(c){c=c[1];}if(c&&this.schemes[c.toLowerCase()]==null){this.parsed={scheme:c,value:f}; }else{this.parsed=this.parse(f,(e||this).parsed)||(c?{scheme:c,value:f}:{value:f});}}else{if(d=="data"){this.setData(f);}else{this.parsed[d]=f;}}return this; },get:function(c,d){switch(c){case"value":return this.combine(this.parsed,d?d.parsed:false);case"data":return this.getData();}return this.parsed[c]||""; },go:function(){document.location.href=this.toString();},toURI:function(){return this;},getData:function(e,d){var c=this.get(d||"query");if(!(c||c===0)){return e?null:{}; }var f=c.parseQueryString();return e?f[e]:f;},setData:function(c,f,d){if(typeof c=="string"){var e=this.getData();e[arguments[0]]=arguments[1];c=e;}else{if(f){c=Object.merge(this.getData(),c); }}return this.set(d||"query",Object.toQueryString(c));},clearData:function(c){return this.set(c||"query","");},toString:b,valueOf:b});a.regs={endSlash:/\/$/,scheme:/^(\w+):/,directoryDot:/\.\/|\.$/}; a.base=new a(Array.from(document.getElements("base[href]",true)).getLast(),{base:document.location});String.implement({toURI:function(c){return new a(this,c); }});})();URI=Class.refactor(URI,{combine:function(f,e){if(!e||f.scheme!=e.scheme||f.host!=e.host||f.port!=e.port){return this.previous.apply(this,arguments); }var a=f.file+(f.query?"?"+f.query:"")+(f.fragment?"#"+f.fragment:"");if(!e.directory){return(f.directory||(f.file?"":"./"))+a;}var d=e.directory.split("/"),c=f.directory.split("/"),g="",h; var b=0;for(h=0;h=0||g.parentPositioned||d.allowNegative)?c.x:0).toInt(); c.top=((c.y>=0||g.parentPositioned||d.allowNegative)?c.y:0).toInt();a.toMinMax(c,d);if(d.relFixedPosition||f.getStyle("position")=="fixed"){a.toRelFixedPosition(f,c); }if(d.ignoreScroll){a.toIgnoreScroll(f,c);}if(d.ignoreMargins){a.toIgnoreMargins(c,d);}c.left=Math.ceil(c.left);c.top=Math.ceil(c.top);delete c.x;delete c.y; return c;},setPositionCoordinates:function(k,g,d){var f=k.offset.y,h=k.offset.x,e=(d==document.body)?window.getScroll():d.getPosition(),j=e.y,c=e.x,i=window.getSize(); switch(k.position.x){case"left":g.x=c+h;break;case"right":g.x=c+h+d.offsetWidth;break;default:g.x=c+((d==document.body?i.x:d.offsetWidth)/2)+h;break;}switch(k.position.y){case"top":g.y=j+f; break;case"bottom":g.y=j+f+d.offsetHeight;break;default:g.y=j+((d==document.body?i.y:d.offsetHeight)/2)+f;break;}},toMinMax:function(c,d){var f={left:"x",top:"y"},e; ["minimum","maximum"].each(function(g){["left","top"].each(function(h){e=d[g]?d[g][f[h]]:null;if(e!=null&&((g=="minimum")?c[h]e)){c[h]=e;}});}); },toRelFixedPosition:function(e,c){var d=window.getScroll();c.top+=d.y;c.left+=d.x;},toIgnoreScroll:function(e,d){var c=e.getScroll();d.top-=c.y;d.left-=c.x; },toIgnoreMargins:function(c,d){c.left+=d.edge.x=="right"?d.dimensions["margin-right"]:(d.edge.x!="center"?-d.dimensions["margin-left"]:-d.dimensions["margin-left"]+((d.dimensions["margin-right"]+d.dimensions["margin-left"])/2)); c.top+=d.edge.y=="bottom"?d.dimensions["margin-bottom"]:(d.edge.y!="center"?-d.dimensions["margin-top"]:-d.dimensions["margin-top"]+((d.dimensions["margin-bottom"]+d.dimensions["margin-top"])/2)); },toEdge:function(c,d){var e={},g=d.dimensions,f=d.edge;switch(f.x){case"left":e.x=0;break;case"right":e.x=-g.x-g.computedRight-g.computedLeft;break;default:e.x=-(Math.round(g.totalWidth/2)); break;}switch(f.y){case"top":e.y=0;break;case"bottom":e.y=-g.y-g.computedTop-g.computedBottom;break;default:e.y=-(Math.round(g.totalHeight/2));break;}c.x+=e.x; c.y+=e.y;},getCoordinateFromValue:function(c){if(typeOf(c)!="string"){return c;}c=c.toLowerCase();return{x:c.test("left")?"left":(c.test("right")?"right":"center"),y:c.test(/upper|top/)?"top":(c.test("bottom")?"bottom":"center")}; }};Element.implement({position:function(d){if(d&&(d.x!=null||d.y!=null)){return(b?b.apply(this,arguments):this);}var c=this.setStyle("position","absolute").calculatePosition(d); return(d&&d.returnPos)?c:this.setStyles(c);},calculatePosition:function(c){return a.getPosition(this,c);}});})(Element.prototype.position);Element.implement({isDisplayed:function(){return this.getStyle("display")!="none"; },isVisible:function(){var a=this.offsetWidth,b=this.offsetHeight;return(a==0&&b==0)?false:(a>0&&b>0)?true:this.style.display!="none";},toggle:function(){return this[this.isDisplayed()?"hide":"show"](); },hide:function(){var b;try{b=this.getStyle("display");}catch(a){}if(b=="none"){return this;}return this.store("element:_originalDisplay",b||"").setStyle("display","none"); },show:function(a){if(!a&&this.isDisplayed()){return this;}a=a||this.retrieve("element:_originalDisplay")||"block";return this.setStyle("display",(a=="none")?"block":a); },swapClass:function(a,b){return this.removeClass(a).addClass(b);}});Document.implement({clearSelection:function(){if(window.getSelection){var a=window.getSelection(); if(a&&a.removeAllRanges){a.removeAllRanges();}}else{if(document.selection&&document.selection.empty){try{document.selection.empty();}catch(b){}}}}});var IframeShim=new Class({Implements:[Options,Events,Class.Occlude],options:{className:"iframeShim",src:'javascript:false;document.write("");',display:false,zIndex:null,margin:0,offset:{x:0,y:0},browsers:(Browser.ie6||(Browser.firefox&&Browser.version<3&&Browser.Platform.mac))},property:"IframeShim",initialize:function(b,a){this.element=document.id(b); if(this.occlude()){return this.occluded;}this.setOptions(a);this.makeShim();return this;},makeShim:function(){if(this.options.browsers){var c=this.element.getStyle("zIndex").toInt(); if(!c){c=1;var b=this.element.getStyle("position");if(b=="static"||!b){this.element.setStyle("position","relative");}this.element.setStyle("zIndex",c); }c=((this.options.zIndex!=null||this.options.zIndex===0)&&c>this.options.zIndex)?this.options.zIndex:c-1;if(c<0){c=1;}this.shim=new Element("iframe",{src:this.options.src,scrolling:"no",frameborder:0,styles:{zIndex:c,position:"absolute",border:"none",filter:"progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)"},"class":this.options.className}).store("IframeShim",this); var a=(function(){this.shim.inject(this.element,"after");this[this.options.display?"show":"hide"]();this.fireEvent("inject");}).bind(this);if(!IframeShim.ready){window.addEvent("load",a); }else{a();}}else{this.position=this.hide=this.show=this.dispose=Function.from(this);}},position:function(){if(!IframeShim.ready||!this.shim){return this; }var a=this.element.measure(function(){return this.getSize();});if(this.options.margin!=undefined){a.x=a.x-(this.options.margin*2);a.y=a.y-(this.options.margin*2); this.options.offset.x+=this.options.margin;this.options.offset.y+=this.options.margin;}this.shim.set({width:a.x,height:a.y}).position({relativeTo:this.element,offset:this.options.offset}); return this;},hide:function(){if(this.shim){this.shim.setStyle("display","none");}return this;},show:function(){if(this.shim){this.shim.setStyle("display","block"); }return this.position();},dispose:function(){if(this.shim){this.shim.dispose();}return this;},destroy:function(){if(this.shim){this.shim.destroy();}return this; }});window.addEvent("load",function(){IframeShim.ready=true;});var Mask=new Class({Implements:[Options,Events],Binds:["position"],options:{style:{},"class":"mask",maskMargins:false,useIframeShim:true,iframeShimOptions:{}},initialize:function(b,a){this.target=document.id(b)||document.id(document.body); this.target.store("mask",this);this.setOptions(a);this.render();this.inject();},render:function(){this.element=new Element("div",{"class":this.options["class"],id:this.options.id||"mask-"+String.uniqueID(),styles:Object.merge({},this.options.style,{display:"none"}),events:{click:function(a){this.fireEvent("click",a); if(this.options.hideOnClick){this.hide();}}.bind(this)}});this.hidden=true;},toElement:function(){return this.element;},inject:function(b,a){a=a||(this.options.inject?this.options.inject.where:"")||this.target==document.body?"inside":"after"; b=b||(this.options.inject&&this.options.inject.target)||this.target;this.element.inject(b,a);if(this.options.useIframeShim){this.shim=new IframeShim(this.element,this.options.iframeShimOptions); this.addEvents({show:this.shim.show.bind(this.shim),hide:this.shim.hide.bind(this.shim),destroy:this.shim.destroy.bind(this.shim)});}},position:function(){this.resize(this.options.width,this.options.height); this.element.position({relativeTo:this.target,position:"topLeft",ignoreMargins:!this.options.maskMargins,ignoreScroll:this.target==document.body});return this; },resize:function(a,e){var b={styles:["padding","border"]};if(this.options.maskMargins){b.styles.push("margin");}var d=this.target.getComputedSize(b);if(this.target==document.body){this.element.setStyles({width:0,height:0}); var c=window.getScrollSize();if(d.totalHeight=0&&a.options[a.selectedIndex].value!=""); }else{return((a.get("value")==null)||(a.get("value").length==0));}}});Form.Validator.addAllThese([["required",{errorMsg:function(){return Form.Validator.getMsg("required"); },test:function(a){return !Form.Validator.getValidator("IsEmpty").test(a);}}],["length",{errorMsg:function(a,b){if(typeOf(b.length)!="null"){return Form.Validator.getMsg("length").substitute({length:b.length,elLength:a.get("value").length}); }else{return"";}},test:function(a,b){if(typeOf(b.length)!="null"){return(a.get("value").length==b.length||a.get("value").length==0);}else{return true;}}}],["minLength",{errorMsg:function(a,b){if(typeOf(b.minLength)!="null"){return Form.Validator.getMsg("minLength").substitute({minLength:b.minLength,length:a.get("value").length}); }else{return"";}},test:function(a,b){if(typeOf(b.minLength)!="null"){return(a.get("value").length>=(b.minLength||0));}else{return true;}}}],["maxLength",{errorMsg:function(a,b){if(typeOf(b.maxLength)!="null"){return Form.Validator.getMsg("maxLength").substitute({maxLength:b.maxLength,length:a.get("value").length}); }else{return"";}},test:function(a,b){return a.get("value").length<=(b.maxLength||10000);}}],["validate-integer",{errorMsg:Form.Validator.getMsg.pass("integer"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^(-?[1-9]\d*|0)$/).test(a.get("value")); }}],["validate-numeric",{errorMsg:Form.Validator.getMsg.pass("numeric"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^-?(?:0$0(?=\d*\.)|[1-9]|0)\d*(\.\d+)?$/).test(a.get("value")); }}],["validate-digits",{errorMsg:Form.Validator.getMsg.pass("digits"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^[\d() .:\-\+#]+$/.test(a.get("value"))); }}],["validate-alpha",{errorMsg:Form.Validator.getMsg.pass("alpha"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^[a-zA-Z]+$/).test(a.get("value")); }}],["validate-alphanum",{errorMsg:Form.Validator.getMsg.pass("alphanum"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||!(/\W/).test(a.get("value")); }}],["validate-date",{errorMsg:function(a,b){if(Date.parse){var c=b.dateFormat||"%x";return Form.Validator.getMsg("dateSuchAs").substitute({date:new Date().format(c)}); }else{return Form.Validator.getMsg("dateInFormatMDY");}},test:function(e,g){if(Form.Validator.getValidator("IsEmpty").test(e)){return true;}var a=Locale.getCurrent().sets.Date,b=new RegExp([a.days,a.days_abbr,a.months,a.months_abbr].flatten().join("|"),"i"),i=e.get("value"),f=i.match(/[a-z]+/gi); if(f&&!f.every(b.exec,b)){return false;}var c=Date.parse(i),h=g.dateFormat||"%x",d=c.format(h);if(d!="invalid date"){e.set("value",d);}return c.isValid(); }}],["validate-email",{errorMsg:Form.Validator.getMsg.pass("email"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^(?:[a-z0-9!#$%&'*+\/=?^_`{|}~-]\.?){0,63}[a-z0-9!#$%&'*+\/=?^_`{|}~-]@(?:(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\])$/i).test(a.get("value")); }}],["validate-url",{errorMsg:Form.Validator.getMsg.pass("url"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^(https?|ftp|rmtp|mms):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i).test(a.get("value")); }}],["validate-currency-dollar",{errorMsg:Form.Validator.getMsg.pass("currencyDollar"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^\$?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/).test(a.get("value")); }}],["validate-one-required",{errorMsg:Form.Validator.getMsg.pass("oneRequired"),test:function(a,b){var c=document.id(b["validate-one-required"])||a.getParent(b["validate-one-required"]); return c.getElements("input").some(function(d){if(["checkbox","radio"].contains(d.get("type"))){return d.get("checked");}return d.get("value");});}}]]); Element.Properties.validator={set:function(a){this.get("validator").setOptions(a);},get:function(){var a=this.retrieve("validator");if(!a){a=new Form.Validator(this); this.store("validator",a);}return a;}};Element.implement({validate:function(a){if(a){this.set("validator",a);}return this.get("validator").validate();}}); Form.Validator.Inline=new Class({Extends:Form.Validator,options:{showError:function(a){if(a.reveal){a.reveal();}else{a.setStyle("display","block");}},hideError:function(a){if(a.dissolve){a.dissolve(); }else{a.setStyle("display","none");}},scrollToErrorsOnSubmit:true,scrollToErrorsOnBlur:false,scrollToErrorsOnChange:false,scrollFxOptions:{transition:"quad:out",offset:{y:-20}}},initialize:function(b,a){this.parent(b,a); this.addEvent("onElementValidate",function(g,f,e,h){var d=this.getValidator(e);if(!g&&d.getError(f)){if(h){f.addClass("warning");}var c=this.makeAdvice(e,f,d.getError(f),h); this.insertAdvice(c,f);this.showAdvice(e,f);}else{this.hideAdvice(e,f);}});},makeAdvice:function(d,f,c,g){var e=(g)?this.warningPrefix:this.errorPrefix; e+=(this.options.useTitles)?f.title||c:c;var a=(g)?"warning-advice":"validation-advice";var b=this.getAdvice(d,f);if(b){b=b.set("html",e);}else{b=new Element("div",{html:e,styles:{display:"none"},id:"advice-"+d.split(":")[0]+"-"+this.getFieldId(f)}).addClass(a); }f.store("$moo:advice-"+d,b);return b;},getFieldId:function(a){return a.id?a.id:a.id="input_"+a.name;},showAdvice:function(b,c){var a=this.getAdvice(b,c); if(a&&!c.retrieve("$moo:"+this.getPropName(b))&&(a.getStyle("display")=="none"||a.getStyle("visiblity")=="hidden"||a.getStyle("opacity")==0)){c.store("$moo:"+this.getPropName(b),true); this.options.showError(a);this.fireEvent("showAdvice",[c,a,b]);}},hideAdvice:function(b,c){var a=this.getAdvice(b,c);if(a&&c.retrieve("$moo:"+this.getPropName(b))){c.store("$moo:"+this.getPropName(b),false); this.options.hideError(a);this.fireEvent("hideAdvice",[c,a,b]);}},getPropName:function(a){return"advice"+a;},resetField:function(a){a=document.id(a);if(!a){return this; }this.parent(a);a.get("validators").each(function(b){this.hideAdvice(b,a);},this);return this;},getAllAdviceMessages:function(d,c){var b=[];if(d.hasClass("ignoreValidation")&&!c){return b; }var a=d.get("validators").some(function(g){var e=g.test("^warn-")||d.hasClass("warnOnly");if(e){g=g.replace(/^warn-/,"");}var f=this.getValidator(g);if(!f){return; }b.push({message:f.getError(d),warnOnly:e,passed:f.test(),validator:f});},this);return b;},getAdvice:function(a,b){return b.retrieve("$moo:advice-"+a); },insertAdvice:function(a,c){var b=c.get("validatorProps");if(!b.msgPos||!document.id(b.msgPos)){if(c.type&&c.type.toLowerCase()=="radio"){c.getParent().adopt(a); }else{a.inject(document.id(c),"after");}}else{document.id(b.msgPos).grab(a);}},validateField:function(g,f,b){var a=this.parent(g,f);if(((this.options.scrollToErrorsOnSubmit&&b==null)||b)&&!a){var c=document.id(this).getElement(".validation-failed"); var d=document.id(this).getParent();while(d!=document.body&&d.getScrollSize().y==d.getSize().y){d=d.getParent();}var e=d.retrieve("$moo:fvScroller");if(!e&&window.Fx&&Fx.Scroll){e=new Fx.Scroll(d,this.options.scrollFxOptions); d.store("$moo:fvScroller",e);}if(c){if(e){e.toElement(c);}else{d.scrollTo(d.getScroll().x,c.getPosition(d).y-20);}}}return a;},watchFields:function(a){a.each(function(b){if(this.options.evaluateFieldsOnBlur){b.addEvent("blur",this.validationMonitor.pass([b,false,this.options.scrollToErrorsOnBlur],this)); }if(this.options.evaluateFieldsOnChange){b.addEvent("change",this.validationMonitor.pass([b,true,this.options.scrollToErrorsOnChange],this));}},this);}}); Form.Validator.addAllThese([["validate-enforce-oncheck",{test:function(a,b){var c=a.getParent("form").retrieve("validator");if(!c){return true;}(b.toEnforce||document.id(b.enforceChildrenOf).getElements("input, select, textarea")).map(function(d){if(a.checked){c.enforceField(d); }else{c.ignoreField(d);c.resetField(d);}});return true;}}],["validate-ignore-oncheck",{test:function(a,b){var c=a.getParent("form").retrieve("validator"); if(!c){return true;}(b.toIgnore||document.id(b.ignoreChildrenOf).getElements("input, select, textarea")).each(function(d){if(a.checked){c.ignoreField(d); c.resetField(d);}else{c.enforceField(d);}});return true;}}],["validate-nospace",{errorMsg:function(){return Form.Validator.getMsg("noSpace");},test:function(a,b){return !a.get("value").test(/\s/); }}],["validate-toggle-oncheck",{test:function(b,c){var d=b.getParent("form").retrieve("validator");if(!d){return true;}var a=c.toToggle||document.id(c.toToggleChildrenOf).getElements("input, select, textarea"); if(!b.checked){a.each(function(e){d.ignoreField(e);d.resetField(e);});}else{a.each(function(e){d.enforceField(e);});}return true;}}],["validate-reqchk-bynode",{errorMsg:function(){return Form.Validator.getMsg("reqChkByNode"); },test:function(a,b){return(document.id(b.nodeId).getElements(b.selector||"input[type=checkbox], input[type=radio]")).some(function(c){return c.checked; });}}],["validate-required-check",{errorMsg:function(a,b){return b.useTitle?a.get("title"):Form.Validator.getMsg("requiredChk");},test:function(a,b){return !!a.checked; }}],["validate-reqchk-byname",{errorMsg:function(a,b){return Form.Validator.getMsg("reqChkByName").substitute({label:b.label||a.get("type")});},test:function(b,d){var c=d.groupName||b.get("name"); var a=$$(document.getElementsByName(c)).some(function(g,f){return g.checked;});var e=b.getParent("form").retrieve("validator");if(a&&e){e.resetField(b); }return a;}}],["validate-match",{errorMsg:function(a,b){return Form.Validator.getMsg("match").substitute({matchName:b.matchName||document.id(b.matchInput).get("name")}); },test:function(b,c){var d=b.get("value");var a=document.id(c.matchInput)&&document.id(c.matchInput).get("value");return d&&a?d==a:true;}}],["validate-after-date",{errorMsg:function(a,b){return Form.Validator.getMsg("afterDate").substitute({label:b.afterLabel||(b.afterElement?Form.Validator.getMsg("startDate"):Form.Validator.getMsg("currentDate"))}); },test:function(b,c){var d=document.id(c.afterElement)?Date.parse(document.id(c.afterElement).get("value")):new Date();var a=Date.parse(b.get("value")); return a&&d?a>=d:true;}}],["validate-before-date",{errorMsg:function(a,b){return Form.Validator.getMsg("beforeDate").substitute({label:b.beforeLabel||(b.beforeElement?Form.Validator.getMsg("endDate"):Form.Validator.getMsg("currentDate"))}); },test:function(b,c){var d=Date.parse(b.get("value"));var a=document.id(c.beforeElement)?Date.parse(document.id(c.beforeElement).get("value")):new Date(); return a&&d?a>=d:true;}}],["validate-custom-required",{errorMsg:function(){return Form.Validator.getMsg("required");},test:function(a,b){return a.get("value")!=b.emptyValue; }}],["validate-same-month",{errorMsg:function(a,b){var c=document.id(b.sameMonthAs)&&document.id(b.sameMonthAs).get("value");var d=a.get("value");if(d!=""){return Form.Validator.getMsg(c?"sameMonth":"startMonth"); }},test:function(a,b){var d=Date.parse(a.get("value"));var c=Date.parse(document.id(b.sameMonthAs)&&document.id(b.sameMonthAs).get("value"));return d&&c?d.format("%B")==c.format("%B"):true; }}],["validate-cc-num",{errorMsg:function(a){var b=a.get("value").replace(/[^0-9]/g,"");return Form.Validator.getMsg("creditcard").substitute({length:b.length}); },test:function(c){if(Form.Validator.getValidator("IsEmpty").test(c)){return true;}var g=c.get("value");g=g.replace(/[^0-9]/g,"");var a=false;if(g.test(/^4[0-9]{12}([0-9]{3})?$/)){a="Visa"; }else{if(g.test(/^5[1-5]([0-9]{14})$/)){a="Master Card";}else{if(g.test(/^3[47][0-9]{13}$/)){a="American Express";}else{if(g.test(/^6011[0-9]{12}$/)){a="Discover"; }}}}if(a){var d=0;var e=0;for(var b=g.length-1;b>=0;--b){e=g.charAt(b).toInt();if(e==0){continue;}if((g.length-b)%2==0){e+=e;}if(e>9){e=e.toString().charAt(0).toInt()+e.toString().charAt(1).toInt(); }d+=e;}if((d%10)==0){return true;}}var f="";while(g!=""){f+=" "+g.substr(0,4);g=g.substr(4);}c.getParent("form").retrieve("validator").ignoreField(c);c.set("value",f.clean()); c.getParent("form").retrieve("validator").enforceField(c);return false;}}]]);var OverText=new Class({Implements:[Options,Events,Class.Occlude],Binds:["reposition","assert","focus","hide"],options:{element:"label",labelClass:"overTxtLabel",positionOptions:{position:"upperLeft",edge:"upperLeft",offset:{x:4,y:2}},poll:false,pollInterval:250,wrap:false},property:"OverText",initialize:function(b,a){b=this.element=document.id(b); if(this.occlude()){return this.occluded;}this.setOptions(a);this.attach(b);OverText.instances.push(this);if(this.options.poll){this.poll();}},toElement:function(){return this.element; },attach:function(){var b=this.element,a=this.options,c=a.textOverride||b.get("alt")||b.get("title");if(!c){return this;}var d=this.text=new Element(a.element,{"class":a.labelClass,styles:{lineHeight:"normal",position:"absolute",cursor:"text"},html:c,events:{click:this.hide.pass(a.element=="label",this)}}).inject(b,"after"); if(a.element=="label"){if(!b.get("id")){b.set("id","input_"+String.uniqueID());}d.set("for",b.get("id"));}if(a.wrap){this.textHolder=new Element("div.overTxtWrapper",{styles:{lineHeight:"normal",position:"relative"}}).grab(d).inject(b,"before"); }return this.enable();},destroy:function(){this.element.eliminate(this.property);this.disable();if(this.text){this.text.destroy();}if(this.textHolder){this.textHolder.destroy(); }return this;},disable:function(){this.element.removeEvents({focus:this.focus,blur:this.assert,change:this.assert});window.removeEvent("resize",this.reposition); this.hide(true,true);return this;},enable:function(){this.element.addEvents({focus:this.focus,blur:this.assert,change:this.assert});window.addEvent("resize",this.reposition); this.reposition();return this;},wrap:function(){if(this.options.element=="label"){if(!this.element.get("id")){this.element.set("id","input_"+String.uniqueID()); }this.text.set("for",this.element.get("id"));}},startPolling:function(){this.pollingPaused=false;return this.poll();},poll:function(a){if(this.poller&&!a){return this; }if(a){clearInterval(this.poller);}else{this.poller=(function(){if(!this.pollingPaused){this.assert(true);}}).periodical(this.options.pollInterval,this); }return this;},stopPolling:function(){this.pollingPaused=true;return this.poll(true);},focus:function(){if(this.text&&(!this.text.isDisplayed()||this.element.get("disabled"))){return this; }return this.hide();},hide:function(c,a){if(this.text&&(this.text.isDisplayed()&&(!this.element.get("disabled")||a))){this.text.hide();this.fireEvent("textHide",[this.text,this.element]); this.pollingPaused=true;if(!c){try{this.element.fireEvent("focus");this.element.focus();}catch(b){}}}return this;},show:function(){if(this.text&&!this.text.isDisplayed()){this.text.show(); this.reposition();this.fireEvent("textShow",[this.text,this.element]);this.pollingPaused=false;}return this;},test:function(){return !this.element.get("value"); },assert:function(a){return this[this.test()?"show":"hide"](a);},reposition:function(){this.assert(true);if(!this.element.isVisible()){return this.stopPolling().hide(); }if(this.text&&this.test()){this.text.position(Object.merge(this.options.positionOptions,{relativeTo:this.element}));}return this;}});OverText.instances=[]; Object.append(OverText,{each:function(a){return OverText.instances.each(function(c,b){if(c.element&&c.text){a.call(OverText,c,b);}});},update:function(){return OverText.each(function(a){return a.reposition(); });},hideAll:function(){return OverText.each(function(a){return a.hide(true,true);});},showAll:function(){return OverText.each(function(a){return a.show(); });}});Fx.Elements=new Class({Extends:Fx.CSS,initialize:function(b,a){this.elements=this.subject=$$(b);this.parent(a);},compute:function(g,h,j){var c={}; for(var d in g){var a=g[d],e=h[d],f=c[d]={};for(var b in a){f[b]=this.parent(a[b],e[b],j);}}return c;},set:function(b){for(var c in b){if(!this.elements[c]){continue; }var a=b[c];for(var d in a){this.render(this.elements[c],d,a[d],this.options.unit);}}return this;},start:function(c){if(!this.check(c)){return this;}var h={},j={}; for(var d in c){if(!this.elements[d]){continue;}var f=c[d],a=h[d]={},g=j[d]={};for(var b in f){var e=this.prepare(this.elements[d],b,f[b]);a[b]=e.from; g[b]=e.to;}}return this.parent(h,j);}});Fx.Accordion=new Class({Extends:Fx.Elements,options:{fixedHeight:false,fixedWidth:false,display:0,show:false,height:true,width:false,opacity:true,alwaysHide:false,trigger:"click",initialDisplayFx:true,resetHeight:true},initialize:function(){var g=function(h){return h!=null; };var f=Array.link(arguments,{container:Type.isElement,options:Type.isObject,togglers:g,elements:g});this.parent(f.elements,f.options);var b=this.options,e=this.togglers=$$(f.togglers); this.previous=-1;this.internalChain=new Chain();if(b.alwaysHide){this.options.link="chain";}if(b.show||this.options.show===0){b.display=false;this.previous=b.show; }if(b.start){b.display=false;b.show=false;}var d=this.effects={};if(b.opacity){d.opacity="fullOpacity";}if(b.width){d.width=b.fixedWidth?"fullWidth":"offsetWidth"; }if(b.height){d.height=b.fixedHeight?"fullHeight":"scrollHeight";}for(var c=0,a=e.length;c=0?a-1:0)).chain(d);}else{d();}return this;},detach:function(b){var a=function(c){c.removeEvent(this.options.trigger,c.retrieve("accordion:display")); }.bind(this);if(!b){this.togglers.each(a);}else{a(b);}return this;},display:function(b,c){if(!this.check(b,c)){return this;}var h={},g=this.elements,a=this.options,f=this.effects; if(c==null){c=true;}if(typeOf(b)=="element"){b=g.indexOf(b);}if(b==this.previous&&!a.alwaysHide){return this;}if(a.resetHeight){var e=g[this.previous]; if(e&&!this.selfHidden){for(var d in f){e.setStyle(d,e[f[d]]);}}}if((this.timer&&a.link=="chain")||(b===this.previous&&!a.alwaysHide)){return this;}this.previous=b; this.selfHidden=false;g.each(function(l,k){h[k]={};var j;if(k!=b){j=true;}else{if(a.alwaysHide&&((l.offsetHeight>0&&a.height)||l.offsetWidth>0&&a.width)){j=true; this.selfHidden=true;}}this.fireEvent(j?"background":"active",[this.togglers[k],l]);for(var m in f){h[k][m]=j?0:l[f[m]];}if(!c&&!j&&a.resetHeight){h[k].height="auto"; }},this);this.internalChain.clearChain();this.internalChain.chain(function(){if(a.resetHeight&&!this.selfHidden){var i=g[b];if(i){i.setStyle("height","auto"); }}}.bind(this));return c?this.start(h):this.set(h).internalChain.callChain();}});Fx.Move=new Class({Extends:Fx.Morph,options:{relativeTo:document.body,position:"center",edge:false,offset:{x:0,y:0}},start:function(a){var b=this.element,c=b.getStyles("top","left"); if(c.top=="auto"||c.left=="auto"){b.setPosition(b.getPosition(b.getOffsetParent()));}return this.parent(b.position(Object.merge({},this.options,a,{returnPos:true}))); }});Element.Properties.move={set:function(a){this.get("move").cancel().setOptions(a);return this;},get:function(){var a=this.retrieve("move");if(!a){a=new Fx.Move(this,{link:"cancel"}); this.store("move",a);}return a;}};Element.implement({move:function(a){this.get("move").start(a);return this;}});(function(){Fx.Scroll=new Class({Extends:Fx,options:{offset:{x:0,y:0},wheelStops:true},initialize:function(c,b){this.element=this.subject=document.id(c); this.parent(b);if(typeOf(this.element)!="element"){this.element=document.id(this.element.getDocument().body);}if(this.options.wheelStops){var d=this.element,e=this.cancel.pass(false,this); this.addEvent("start",function(){d.addEvent("mousewheel",e);},true);this.addEvent("complete",function(){d.removeEvent("mousewheel",e);},true);}},set:function(){var b=Array.flatten(arguments); if(Browser.firefox){b=[Math.round(b[0]),Math.round(b[1])];}this.element.scrollTo(b[0],b[1]);return this;},compute:function(d,c,b){return[0,1].map(function(e){return Fx.compute(d[e],c[e],b); });},start:function(c,d){if(!this.check(c,d)){return this;}var b=this.element.getScroll();return this.parent([b.x,b.y],[c,d]);},calculateScroll:function(g,f){var d=this.element,b=d.getScrollSize(),h=d.getScroll(),j=d.getSize(),c=this.options.offset,i={x:g,y:f}; for(var e in i){if(!i[e]&&i[e]!==0){i[e]=h[e];}if(typeOf(i[e])!="number"){i[e]=b[e]-j[e];}i[e]+=c[e];}return[i.x,i.y];},toTop:function(){return this.start.apply(this,this.calculateScroll(false,0)); },toLeft:function(){return this.start.apply(this,this.calculateScroll(0,false));},toRight:function(){return this.start.apply(this,this.calculateScroll("right",false)); },toBottom:function(){return this.start.apply(this,this.calculateScroll(false,"bottom"));},toElement:function(d,e){e=e?Array.from(e):["x","y"];var c=a(this.element)?{x:0,y:0}:this.element.getScroll(); var b=Object.map(document.id(d).getPosition(this.element),function(g,f){return e.contains(f)?g+c[f]:false;});return this.start.apply(this,this.calculateScroll(b.x,b.y)); },toElementEdge:function(d,g,e){g=g?Array.from(g):["x","y"];d=document.id(d);var i={},f=d.getPosition(this.element),j=d.getSize(),h=this.element.getScroll(),b=this.element.getSize(),c={x:f.x+j.x,y:f.y+j.y}; ["x","y"].each(function(k){if(g.contains(k)){if(c[k]>h[k]+b[k]){i[k]=c[k]-b[k];}if(f[k]this.elements.length){e.splice(this.elements.length-1,e.length-this.elements.length); }}var b=0;i=a=0;e.each(function(k){var j={};if(d){j.top=i-f[k].top-b;i+=f[k].height;}else{j.left=a-f[k].left;a+=f[k].width;}b=b+f[k].margin;c[k]=j;},this); var g={};Array.clone(e).sort().each(function(j){g[j]=c[j];});this.start(g);this.currentOrder=e;return this;},rearrangeDOM:function(a){a=a||this.currentOrder; var b=this.elements[0].getParent();var c=[];this.elements.setStyle("opacity",0);a.each(function(d){c.push(this.elements[d].inject(b).setStyles({top:0,left:0})); },this);this.elements.setStyle("opacity",1);this.elements=$$(c);this.setDefaultOrder();return this;},getDefaultOrder:function(){return this.elements.map(function(b,a){return a; });},getCurrentOrder:function(){return this.currentOrder;},forward:function(){return this.sort(this.getDefaultOrder());},backward:function(){return this.sort(this.getDefaultOrder().reverse()); },reverse:function(){return this.sort(this.currentOrder.reverse());},sortByElements:function(a){return this.sort(a.map(function(b){return this.elements.indexOf(b); },this));},swap:function(c,b){if(typeOf(c)=="element"){c=this.elements.indexOf(c);}if(typeOf(b)=="element"){b=this.elements.indexOf(b);}var a=Array.clone(this.currentOrder); a[this.currentOrder.indexOf(c)]=b;a[this.currentOrder.indexOf(b)]=c;return this.sort(a);}});var Drag=new Class({Implements:[Events,Options],options:{snap:6,unit:"px",grid:false,style:true,limit:false,handle:false,invert:false,preventDefault:false,stopPropagation:false,modifiers:{x:"left",y:"top"}},initialize:function(){var b=Array.link(arguments,{options:Type.isObject,element:function(c){return c!=null; }});this.element=document.id(b.element);this.document=this.element.getDocument();this.setOptions(b.options||{});var a=typeOf(this.options.handle);this.handles=((a=="array"||a=="collection")?$$(this.options.handle):document.id(this.options.handle))||this.element; this.mouse={now:{},pos:{}};this.value={start:{},now:{}};this.selection=(Browser.ie)?"selectstart":"mousedown";if(Browser.ie&&!Drag.ondragstartFixed){document.ondragstart=Function.from(false); Drag.ondragstartFixed=true;}this.bound={start:this.start.bind(this),check:this.check.bind(this),drag:this.drag.bind(this),stop:this.stop.bind(this),cancel:this.cancel.bind(this),eventStop:Function.from(false)}; this.attach();},attach:function(){this.handles.addEvent("mousedown",this.bound.start);return this;},detach:function(){this.handles.removeEvent("mousedown",this.bound.start); return this;},start:function(a){var j=this.options;if(a.rightClick){return;}if(j.preventDefault){a.preventDefault();}if(j.stopPropagation){a.stopPropagation(); }this.mouse.start=a.page;this.fireEvent("beforeStart",this.element);var c=j.limit;this.limit={x:[],y:[]};var e,g;for(e in j.modifiers){if(!j.modifiers[e]){continue; }var b=this.element.getStyle(j.modifiers[e]);if(b&&!b.match(/px$/)){if(!g){g=this.element.getCoordinates(this.element.getOffsetParent());}b=g[j.modifiers[e]]; }if(j.style){this.value.now[e]=(b||0).toInt();}else{this.value.now[e]=this.element[j.modifiers[e]];}if(j.invert){this.value.now[e]*=-1;}this.mouse.pos[e]=a.page[e]-this.value.now[e]; if(c&&c[e]){var d=2;while(d--){var f=c[e][d];if(f||f===0){this.limit[e][d]=(typeof f=="function")?f():f;}}}}if(typeOf(this.options.grid)=="number"){this.options.grid={x:this.options.grid,y:this.options.grid}; }var h={mousemove:this.bound.check,mouseup:this.bound.cancel};h[this.selection]=this.bound.eventStop;this.document.addEvents(h);},check:function(a){if(this.options.preventDefault){a.preventDefault(); }var b=Math.round(Math.sqrt(Math.pow(a.page.x-this.mouse.start.x,2)+Math.pow(a.page.y-this.mouse.start.y,2)));if(b>this.options.snap){this.cancel();this.document.addEvents({mousemove:this.bound.drag,mouseup:this.bound.stop}); this.fireEvent("start",[this.element,a]).fireEvent("snap",this.element);}},drag:function(b){var a=this.options;if(a.preventDefault){b.preventDefault(); }this.mouse.now=b.page;for(var c in a.modifiers){if(!a.modifiers[c]){continue;}this.value.now[c]=this.mouse.now[c]-this.mouse.pos[c];if(a.invert){this.value.now[c]*=-1; }if(a.limit&&this.limit[c]){if((this.limit[c][1]||this.limit[c][1]===0)&&(this.value.now[c]>this.limit[c][1])){this.value.now[c]=this.limit[c][1];}else{if((this.limit[c][0]||this.limit[c][0]===0)&&(this.value.now[c]d.left&&b.xd.top);},this).getLast();if(this.overed!=a){if(this.overed){this.fireEvent("leave",[this.element,this.overed]); }if(a){this.fireEvent("enter",[this.element,a]);}this.overed=a;}},drag:function(a){this.parent(a);if(this.options.checkDroppables&&this.droppables.length){this.checkDroppables(); }},stop:function(a){this.checkDroppables();this.fireEvent("drop",[this.element,this.overed,a]);this.overed=null;return this.parent(a);}});Element.implement({makeDraggable:function(a){var b=new Drag.Move(this,a); this.store("dragger",b);return b;}});var Slider=new Class({Implements:[Events,Options],Binds:["clickedElement","draggedKnob","scrolledElement"],options:{onTick:function(a){this.setKnobPosition(a); },initialStep:0,snap:false,offset:0,range:false,wheel:false,steps:100,mode:"horizontal"},initialize:function(f,a,e){this.setOptions(e);e=this.options;this.element=document.id(f); a=this.knob=document.id(a);this.previousChange=this.previousEnd=this.step=-1;var b={},d={x:false,y:false};switch(e.mode){case"vertical":this.axis="y";this.property="top"; this.offset="offsetHeight";break;case"horizontal":this.axis="x";this.property="left";this.offset="offsetWidth";}this.setSliderDimensions();this.setRange(e.range); if(a.getStyle("position")=="static"){a.setStyle("position","relative");}a.setStyle(this.property,-e.offset);d[this.axis]=this.property;b[this.axis]=[-e.offset,this.full-e.offset]; var c={snap:0,limit:b,modifiers:d,onDrag:this.draggedKnob,onStart:this.draggedKnob,onBeforeStart:(function(){this.isDragging=true;}).bind(this),onCancel:function(){this.isDragging=false; }.bind(this),onComplete:function(){this.isDragging=false;this.draggedKnob();this.end();}.bind(this)};if(e.snap){this.setSnap(c);}this.drag=new Drag(a,c); this.attach();if(e.initialStep!=null){this.set(e.initialStep);}},attach:function(){this.element.addEvent("mousedown",this.clickedElement);if(this.options.wheel){this.element.addEvent("mousewheel",this.scrolledElement); }this.drag.attach();return this;},detach:function(){this.element.removeEvent("mousedown",this.clickedElement).removeEvent("mousewheel",this.scrolledElement); this.drag.detach();return this;},autosize:function(){this.setSliderDimensions().setKnobPosition(this.toPosition(this.step));this.drag.options.limit[this.axis]=[-this.options.offset,this.full-this.options.offset]; if(this.options.snap){this.setSnap();}return this;},setSnap:function(a){if(!a){a=this.drag.options;}a.grid=Math.ceil(this.stepWidth);a.limit[this.axis][1]=this.full; return this;},setKnobPosition:function(a){if(this.options.snap){a=this.toPosition(this.step);}this.knob.setStyle(this.property,a);return this;},setSliderDimensions:function(){this.full=this.element.measure(function(){this.half=this.knob[this.offset]/2; return this.element[this.offset]-this.knob[this.offset]+(this.options.offset*2);}.bind(this));return this;},set:function(a){if(!((this.range>0)^(a0)^(a>this.max))){a=this.max;}this.step=Math.round(a);return this.checkStep().fireEvent("tick",this.toPosition(this.step)).end();},setRange:function(a,b){this.min=Array.pick([a[0],0]); this.max=Array.pick([a[1],this.options.steps]);this.range=this.max-this.min;this.steps=this.options.steps||this.full;this.stepSize=Math.abs(this.range)/this.steps; this.stepWidth=this.stepSize*this.full/Math.abs(this.range);if(a){this.set(Array.pick([b,this.step]).floor(this.min).max(this.max));}return this;},clickedElement:function(c){if(this.isDragging||c.target==this.knob){return; }var b=this.range<0?-1:1,a=c.page[this.axis]-this.element.getPosition()[this.axis]-this.half;a=a.limit(-this.options.offset,this.full-this.options.offset); this.step=Math.round(this.min+b*this.toStep(a));this.checkStep().fireEvent("tick",a).end();},scrolledElement:function(a){var b=(this.options.mode=="horizontal")?(a.wheel<0):(a.wheel>0); this.set(this.step+(b?-1:1)*this.stepSize);a.stop();},draggedKnob:function(){var b=this.range<0?-1:1,a=this.drag.value.now[this.axis];a=a.limit(-this.options.offset,this.full-this.options.offset); this.step=Math.round(this.min+b*this.toStep(a));this.checkStep();},checkStep:function(){var a=this.step;if(this.previousChange!=a){this.previousChange=a; this.fireEvent("change",a);}return this;},end:function(){var a=this.step;if(this.previousEnd!==a){this.previousEnd=a;this.fireEvent("complete",a+"");}return this; },toStep:function(a){var b=(a+this.options.offset)*this.stepSize/this.full*this.steps;return this.options.steps?Math.round(b-=b%this.stepSize):b;},toPosition:function(a){return(this.full*Math.abs(this.min-a))/(this.steps*this.stepSize)-this.options.offset; }});var Sortables=new Class({Implements:[Events,Options],options:{opacity:1,clone:false,revert:false,handle:false,dragOptions:{}},initialize:function(a,b){this.setOptions(b); this.elements=[];this.lists=[];this.idle=true;this.addLists($$(document.id(a)||a));if(!this.options.clone){this.options.revert=false;}if(this.options.revert){this.effect=new Fx.Morph(null,Object.merge({duration:250,link:"cancel"},this.options.revert)); }},attach:function(){this.addLists(this.lists);return this;},detach:function(){this.lists=this.removeLists(this.lists);return this;},addItems:function(){Array.flatten(arguments).each(function(a){this.elements.push(a); var b=a.retrieve("sortables:start",function(c){this.start.call(this,c,a);}.bind(this));(this.options.handle?a.getElement(this.options.handle)||a:a).addEvent("mousedown",b); },this);return this;},addLists:function(){Array.flatten(arguments).each(function(a){this.lists.include(a);this.addItems(a.getChildren());},this);return this; },removeItems:function(){return $$(Array.flatten(arguments).map(function(a){this.elements.erase(a);var b=a.retrieve("sortables:start");(this.options.handle?a.getElement(this.options.handle)||a:a).removeEvent("mousedown",b); return a;},this));},removeLists:function(){return $$(Array.flatten(arguments).map(function(a){this.lists.erase(a);this.removeItems(a.getChildren());return a; },this));},getClone:function(b,a){if(!this.options.clone){return new Element(a.tagName).inject(document.body);}if(typeOf(this.options.clone)=="function"){return this.options.clone.call(this,b,a,this.list); }var c=a.clone(true).setStyles({margin:0,position:"absolute",visibility:"hidden",width:a.getStyle("width")}).addEvent("mousedown",function(d){a.fireEvent("mousedown",d); });if(c.get("html").test("radio")){c.getElements("input[type=radio]").each(function(d,e){d.set("name","clone_"+e);if(d.get("checked")){a.getElements("input[type=radio]")[e].set("checked",true); }});}return c.inject(this.list).setPosition(a.getPosition(a.getOffsetParent()));},getDroppables:function(){var a=this.list.getChildren().erase(this.clone).erase(this.element); if(!this.options.constrain){a.append(this.lists).erase(this.list);}return a;},insert:function(c,b){var a="inside";if(this.lists.contains(b)){this.list=b; this.drag.droppables=this.getDroppables();}else{a=this.element.getAllPrevious().contains(b)?"before":"after";}this.element.inject(b,a);this.fireEvent("sort",[this.element,this.clone]); },start:function(b,a){if(!this.idle||b.rightClick||["button","input","a","textarea"].contains(b.target.get("tag"))){return;}this.idle=false;this.element=a; this.opacity=a.getStyle("opacity");this.list=a.getParent();this.clone=this.getClone(b,a);this.drag=new Drag.Move(this.clone,Object.merge({droppables:this.getDroppables()},this.options.dragOptions)).addEvents({onSnap:function(){b.stop(); this.clone.setStyle("visibility","visible");this.element.setStyle("opacity",this.options.opacity||0);this.fireEvent("start",[this.element,this.clone]); }.bind(this),onEnter:this.insert.bind(this),onCancel:this.end.bind(this),onComplete:this.end.bind(this)});this.clone.inject(this.element,"before");this.drag.start(b); },end:function(){this.drag.detach();this.element.setStyle("opacity",this.opacity);if(this.effect){var b=this.element.getStyles("width","height"),d=this.clone,c=d.computePosition(this.element.getPosition(this.clone.getOffsetParent())); var a=function(){this.removeEvent("cancel",a);d.destroy();};this.effect.element=d;this.effect.start({top:c.top,left:c.left,width:b.width,height:b.height,opacity:0.25}).addEvent("cancel",a).chain(a); }else{this.clone.destroy();}this.reset();},reset:function(){this.idle=true;this.fireEvent("complete",this.element);},serialize:function(){var c=Array.link(arguments,{modifier:Type.isFunction,index:function(d){return d!=null; }});var b=this.lists.map(function(d){return d.getChildren().map(c.modifier||function(e){return e.get("id");},this);},this);var a=c.index;if(this.lists.length==1){a=0; }return(a||a===0)&&a>=0&&a2083){this.fireEvent("error",f);}Request.JSONP.request_map["request_"+b]=function(){this.success(arguments,b);}.bind(this);var a=this.getScript(f).inject(c.injectScript); this.fireEvent("request",[f,a]);if(c.timeout){this.timeout.delay(c.timeout,this);}return this;},getScript:function(a){if(!this.script){this.script=new Element("script",{type:"text/javascript",async:true,src:a}); }return this.script;},success:function(b,a){if(!this.running){return;}this.clear().fireEvent("complete",b).fireEvent("success",b).callChain();},cancel:function(){if(this.running){this.clear().fireEvent("cancel"); }return this;},isRunning:function(){return !!this.running;},clear:function(){this.running=false;if(this.script){this.script.destroy();this.script=null; }return this;},timeout:function(){if(this.running){this.running=false;this.fireEvent("timeout",[this.script.get("src"),this.script]).fireEvent("failure").cancel(); }return this;}});Request.JSONP.counter=0;Request.JSONP.request_map={};Request.Queue=new Class({Implements:[Options,Events],Binds:["attach","request","complete","cancel","success","failure","exception"],options:{stopOnFailure:true,autoAdvance:true,concurrent:1,requests:{}},initialize:function(a){var b; if(a){b=a.requests;delete a.requests;}this.setOptions(a);this.requests={};this.queue=[];this.reqBinders={};if(b){this.addRequests(b);}},addRequest:function(a,b){this.requests[a]=b; this.attach(a,b);return this;},addRequests:function(a){Object.each(a,function(c,b){this.addRequest(b,c);},this);return this;},getName:function(a){return Object.keyOf(this.requests,a); },attach:function(a,b){if(b._groupSend){return this;}["request","complete","cancel","success","failure","exception"].each(function(c){if(!this.reqBinders[a]){this.reqBinders[a]={}; }this.reqBinders[a][c]=function(){this["on"+c.capitalize()].apply(this,[a,b].append(arguments));}.bind(this);b.addEvent(c,this.reqBinders[a][c]);},this); b._groupSend=b.send;b.send=function(c){this.send(a,c);return b;}.bind(this);return this;},removeRequest:function(b){var a=typeOf(b)=="object"?this.getName(b):b; if(!a&&typeOf(a)!="string"){return this;}b=this.requests[a];if(!b){return this;}["request","complete","cancel","success","failure","exception"].each(function(c){b.removeEvent(c,this.reqBinders[a][c]); },this);b.send=b._groupSend;delete b._groupSend;return this;},getRunning:function(){return Object.filter(this.requests,function(a){return a.running;}); },isRunning:function(){return !!(Object.keys(this.getRunning()).length);},send:function(b,a){var c=function(){this.requests[b]._groupSend(a);this.queue.erase(c); }.bind(this);c.name=b;if(Object.keys(this.getRunning()).length>=this.options.concurrent||(this.error&&this.options.stopOnFailure)){this.queue.push(c);}else{c(); }return this;},hasNext:function(a){return(!a)?!!this.queue.length:!!this.queue.filter(function(b){return b.name==a;}).length;},resume:function(){this.error=false; (this.options.concurrent-Object.keys(this.getRunning()).length).times(this.runNext,this);return this;},runNext:function(a){if(!this.queue.length){return this; }if(!a){this.queue[0]();}else{var b;this.queue.each(function(c){if(!b&&c.name==a){b=true;c();}});}return this;},runAll:function(){this.queue.each(function(a){a(); });return this;},clear:function(a){if(!a){this.queue.empty();}else{this.queue=this.queue.map(function(b){if(b.name!=a){return b;}else{return false;}}).filter(function(b){return b; });}return this;},cancel:function(a){this.requests[a].cancel();return this;},onRequest:function(){this.fireEvent("request",arguments);},onComplete:function(){this.fireEvent("complete",arguments); if(!this.queue.length){this.fireEvent("end");}},onCancel:function(){if(this.options.autoAdvance&&!this.error){this.runNext();}this.fireEvent("cancel",arguments); },onSuccess:function(){if(this.options.autoAdvance&&!this.error){this.runNext();}this.fireEvent("success",arguments);},onFailure:function(){this.error=true; if(!this.options.stopOnFailure&&this.options.autoAdvance){this.runNext();}this.fireEvent("failure",arguments);},onException:function(){this.error=true; if(!this.options.stopOnFailure&&this.options.autoAdvance){this.runNext();}this.fireEvent("exception",arguments);}});Request.implement({options:{initialDelay:5000,delay:5000,limit:60000},startTimer:function(b){var a=function(){if(!this.running){this.send({data:b}); }};this.lastDelay=this.options.initialDelay;this.timer=a.delay(this.lastDelay,this);this.completeCheck=function(c){clearTimeout(this.timer);this.lastDelay=(c)?this.options.delay:(this.lastDelay+this.options.delay).min(this.options.limit); this.timer=a.delay(this.lastDelay,this);};return this.addEvent("complete",this.completeCheck);},stopTimer:function(){clearTimeout(this.timer);return this.removeEvent("complete",this.completeCheck); }});var Asset={javascript:function(d,b){if(!b){b={};}var a=new Element("script",{src:d,type:"text/javascript"}),e=b.document||document,c=b.onload||b.onLoad; delete b.onload;delete b.onLoad;delete b.document;if(c){if(typeof a.onreadystatechange!="undefined"){a.addEvent("readystatechange",function(){if(["loaded","complete"].contains(this.readyState)){c.call(this); }});}else{a.addEvent("load",c);}}return a.set(b).inject(e.head);},css:function(d,a){if(!a){a={};}var b=new Element("link",{rel:"stylesheet",media:"screen",type:"text/css",href:d}); var c=a.onload||a.onLoad,e=a.document||document;delete a.onload;delete a.onLoad;delete a.document;if(c){b.addEvent("load",c);}return b.set(a).inject(e.head); },image:function(c,b){if(!b){b={};}var d=new Image(),a=document.id(d)||new Element("img");["load","abort","error"].each(function(e){var g="on"+e,f="on"+e.capitalize(),h=b[g]||b[f]||function(){}; delete b[f];delete b[g];d[g]=function(){if(!d){return;}if(!a.parentNode){a.width=d.width;a.height=d.height;}d=d.onload=d.onabort=d.onerror=null;h.delay(1,a,a); a.fireEvent(e,a,1);};});d.src=a.src=c;if(d&&d.complete){d.onload.delay(1);}return a.set(b);},images:function(c,b){c=Array.from(c);var d=function(){},a=0; b=Object.merge({onComplete:d,onProgress:d,onError:d,properties:{}},b);return new Elements(c.map(function(f,e){return Asset.image(f,Object.append(b.properties,{onload:function(){a++; b.onProgress.call(this,a,e,f);if(a==c.length){b.onComplete();}},onerror:function(){a++;b.onError.call(this,a,e,f);if(a==c.length){b.onComplete();}}})); }));}};(function(){var a=this.Color=new Type("Color",function(c,d){if(arguments.length>=3){d="rgb";c=Array.slice(arguments,0,3);}else{if(typeof c=="string"){if(c.match(/rgb/)){c=c.rgbToHex().hexToRgb(true); }else{if(c.match(/hsb/)){c=c.hsbToRgb();}else{c=c.hexToRgb(true);}}}}d=d||"rgb";switch(d){case"hsb":var b=c;c=c.hsbToRgb();c.hsb=b;break;case"hex":c=c.hexToRgb(true); break;}c.rgb=c.slice(0,3);c.hsb=c.hsb||c.rgbToHsb();c.hex=c.rgbToHex();return Object.append(c,this);});a.implement({mix:function(){var b=Array.slice(arguments); var d=(typeOf(b.getLast())=="number")?b.pop():50;var c=this.slice();b.each(function(e){e=new a(e);for(var f=0;f<3;f++){c[f]=Math.round((c[f]/100*(100-d))+(e[f]/100*d)); }});return new a(c,"rgb");},invert:function(){return new a(this.map(function(b){return 255-b;}));},setHue:function(b){return new a([b,this.hsb[1],this.hsb[2]],"hsb"); },setSaturation:function(b){return new a([this.hsb[0],b,this.hsb[2]],"hsb");},setBrightness:function(b){return new a([this.hsb[0],this.hsb[1],b],"hsb"); }});this.$RGB=function(e,d,c){return new a([e,d,c],"rgb");};this.$HSB=function(e,d,c){return new a([e,d,c],"hsb");};this.$HEX=function(b){return new a(b,"hex"); };Array.implement({rgbToHsb:function(){var c=this[0],d=this[1],k=this[2],h=0;var j=Math.max(c,d,k),f=Math.min(c,d,k);var l=j-f;var i=j/255,g=(j!=0)?l/j:0; if(g!=0){var e=(j-c)/l;var b=(j-d)/l;var m=(j-k)/l;if(c==j){h=m-b;}else{if(d==j){h=2+e-m;}else{h=4+b-e;}}h/=6;if(h<0){h++;}}return[Math.round(h*360),Math.round(g*100),Math.round(i*100)]; },hsbToRgb:function(){var d=Math.round(this[2]/100*255);if(this[1]==0){return[d,d,d];}else{var b=this[0]%360;var g=b%60;var h=Math.round((this[2]*(100-this[1]))/10000*255); var e=Math.round((this[2]*(6000-this[1]*g))/600000*255);var c=Math.round((this[2]*(6000-this[1]*(60-g)))/600000*255);switch(Math.floor(b/60)){case 0:return[d,c,h]; case 1:return[e,d,h];case 2:return[h,d,c];case 3:return[h,e,d];case 4:return[c,h,d];case 5:return[d,h,e];}}return false;}});String.implement({rgbToHsb:function(){var b=this.match(/\d{1,3}/g); return(b)?b.rgbToHsb():null;},hsbToRgb:function(){var b=this.match(/\d{1,3}/g);return(b)?b.hsbToRgb():null;}});})();(function(){this.Group=new Class({initialize:function(){this.instances=Array.flatten(arguments); },addEvent:function(e,d){var g=this.instances,a=g.length,f=a,c=new Array(a),b=this;g.each(function(h,j){h.addEvent(e,function(){if(!c[j]){f--;}c[j]=arguments; if(!f){d.call(b,g,h,c);f=a;c=new Array(a);}});});}});})();Hash.Cookie=new Class({Extends:Cookie,options:{autoSave:true},initialize:function(b,a){this.parent(b,a); this.load();},save:function(){var a=JSON.encode(this.hash);if(!a||a.length>4096){return false;}if(a=="{}"){this.dispose();}else{this.write(a);}return true; },load:function(){this.hash=new Hash(JSON.decode(this.read(),true));return this;}});Hash.each(Hash.prototype,function(b,a){if(typeof b=="function"){Hash.Cookie.implement(a,function(){var c=b.apply(this.hash,arguments); if(this.options.autoSave){this.save();}return c;});}});(function(){var a=this.Table=function(){this.length=0;var c=[],b=[];this.set=function(e,g){var d=c.indexOf(e); if(d==-1){var f=c.length;c[f]=e;b[f]=g;this.length++;}else{b[d]=g;}return this;};this.get=function(e){var d=c.indexOf(e);return(d==-1)?null:b[d];};this.erase=function(e){var d=c.indexOf(e); if(d!=-1){this.length--;c.splice(d,1);return b.splice(d,1)[0];}return null;};this.each=this.forEach=function(f,g){for(var e=0,d=this.length;e1?$$(a):a.length?document.id(a[0]):false;},setHeaders:function(a){this.set("headers",a); return this;},setFooters:function(a){this.set("footers",a);return this;},update:function(d,e,a){var b=d.getChildren(a||"td"),c=b.length-1;e.each(function(i,f){var j=b[f]||new Element(a||"td").inject(d),h=(i?i.content:"")||i,g=typeOf(h); if(i&&i.properties){j.set(i.properties);}if(/(element(s?)|array|collection)/.test(g)){j.empty().adopt(h);}else{j.set("html",h);}if(f>c){b.push(j);}else{b[f]=j; }});return{tr:d,tds:b};},push:function(e,c,d,a,b){if(typeOf(e)=="element"&&e.get("tag")=="tr"){e.inject(d||this.body,b);return{tr:e,tds:e.getChildren("td")}; }return this.update(new Element("tr",c).inject(d||this.body,b),e,a);},pushMany:function(d,c,e,a,b){return d.map(function(f){return this.push(f,c,e,a,b); },this);}});["adopt","inject","wraps","grab","replaces","dispose"].each(function(a){HtmlTable.implement(a,function(){this.element[a].apply(this.element,arguments); return this;});});HtmlTable=Class.refactor(HtmlTable,{options:{classZebra:"table-tr-odd",zebra:true,zebraOnlyVisibleRows:true},initialize:function(){this.previous.apply(this,arguments); if(this.occluded){return this.occluded;}if(this.options.zebra){this.updateZebras();}},updateZebras:function(){var a=0;Array.each(this.body.rows,function(b){if(!this.options.zebraOnlyVisibleRows||b.isDisplayed()){this.zebra(b,a++); }},this);},setRowStyle:function(b,a){if(this.previous){this.previous(b,a);}this.zebra(b,a);},zebra:function(b,a){return b[((a%2)?"remove":"add")+"Class"](this.options.classZebra); },push:function(){var a=this.previous.apply(this,arguments);if(this.options.zebra){this.updateZebras();}return a;}});HtmlTable=Class.refactor(HtmlTable,{options:{sortIndex:0,sortReverse:false,parsers:[],defaultParser:"string",classSortable:"table-sortable",classHeadSort:"table-th-sort",classHeadSortRev:"table-th-sort-rev",classNoSort:"table-th-nosort",classGroupHead:"table-tr-group-head",classGroup:"table-tr-group",classCellSort:"table-td-sort",classSortSpan:"table-th-sort-span",sortable:false,thSelector:"th"},initialize:function(){this.previous.apply(this,arguments); if(this.occluded){return this.occluded;}this.sorted={index:null,dir:1};if(!this.bound){this.bound={};}this.bound.headClick=this.headClick.bind(this);this.sortSpans=new Elements(); if(this.options.sortable){this.enableSort();if(this.options.sortIndex!=null){this.sort(this.options.sortIndex,this.options.sortReverse);}}},attachSorts:function(a){this.detachSorts(); if(a!==false){this.element.addEvent("click:relay("+this.options.thSelector+")",this.bound.headClick);}},detachSorts:function(){this.element.removeEvents("click:relay("+this.options.thSelector+")"); },setHeaders:function(){this.previous.apply(this,arguments);if(this.sortEnabled){this.setParsers();}},setParsers:function(){this.parsers=this.detectParsers(); },detectParsers:function(){return this.head&&this.head.getElements(this.options.thSelector).flatten().map(this.detectParser,this);},detectParser:function(a,b){if(a.hasClass(this.options.classNoSort)||a.retrieve("htmltable-parser")){return a.retrieve("htmltable-parser"); }var c=new Element("div");c.adopt(a.childNodes).inject(a);var f=new Element("span",{"class":this.options.classSortSpan}).inject(c,"top");this.sortSpans.push(f); var g=this.options.parsers[b],e=this.body.rows,d;switch(typeOf(g)){case"function":g={convert:g};d=true;break;case"string":g=g;d=true;break;}if(!d){HtmlTable.ParserPriority.some(function(k){var o=HtmlTable.Parsers[k],m=o.match; if(!m){return false;}for(var n=0,l=e.length;nc){b[f].position--;}}}},setRowStyle:function(b,a){this.previous(b,a);b.cells[this.sorted.index].addClass(this.options.classCellSort); },setGroupSort:function(b,c,a){if(b==a.value){c.removeClass(this.options.classGroupHead).addClass(this.options.classGroup);}else{c.removeClass(this.options.classGroup).addClass(this.options.classGroupHead); }return a.value;},getParser:function(){var a=this.parsers[this.sorted.index];return typeOf(a)=="string"?HtmlTable.Parsers[a]:a;},sort:function(c,b,e){if(!this.head){return; }if(!e){this.clearSort();this.setSortedState(c,b);this.setHeadSort(true);}var f=this.getParser();if(!f){return;}var a;if(!Browser.ie){a=this.body.getParent(); this.body.dispose();}var d=this.parseData(f).sort(function(h,g){if(h.value===g.value){return 0;}return h.value>g.value?1:-1;});if(this.sorted.reverse==(f==HtmlTable.Parsers["input-checked"])){d.reverse(true); }this.setRowSort(d,e);if(a){a.grab(this.body);}this.fireEvent("stateChanged");return this.fireEvent("sort",[this.body,this.sorted.index]);},parseData:function(a){return Array.map(this.body.rows,function(d,b){var c=a.convert.call(document.id(d.cells[this.sorted.index])); return{position:b,value:c};},this);},clearSort:function(){this.setHeadSort(false);this.body.getElements("td").removeClass(this.options.classCellSort);},reSort:function(){if(this.sortEnabled){this.sort.call(this,this.sorted.index,this.sorted.reverse); }return this;},enableSort:function(){this.element.addClass(this.options.classSortable);this.attachSorts(true);this.setParsers();this.sortEnabled=true;return this; },disableSort:function(){this.element.removeClass(this.options.classSortable);this.attachSorts(false);this.sortSpans.each(function(a){a.destroy();});this.sortSpans.empty(); this.sortEnabled=false;return this;}});HtmlTable.ParserPriority=["date","input-checked","input-value","float","number"];HtmlTable.Parsers={date:{match:/^\d{2}[-\/ ]\d{2}[-\/ ]\d{2,4}$/,convert:function(){var a=Date.parse(this.get("text").stripTags()); return(typeOf(a)=="date")?a.format("db"):"";},type:"date"},"input-checked":{match:/ type="(radio|checkbox)" /,convert:function(){return this.getElement("input").checked; }},"input-value":{match:/0)){return null; }if(d){b+=e;}else{var a=0,c=0;if(e>0){while(ce&&b>0){if(this.body.rows[--b].isDisplayed()){c--; }}}}return b;},attachSelects:function(d){d=d!=null?d:true;var g=d?"addEvents":"removeEvents";this.element[g]({mouseleave:this.bound.mouseleave,click:this.bound.activateKeyboard}); this.body[g]({"click:relay(tr)":this.bound.clickRow,"contextmenu:relay(tr)":this.bound.clickRow});if(this.options.useKeyboard||this.keyboard){if(!this.keyboard){this.keyboard=new Keyboard(); }if(!this.selectKeysDefined){this.selectKeysDefined=true;var f,e;var c=function(i){var h=function(j){clearTimeout(f);j.preventDefault();var k=this.body.rows[this.getRowByOffset(i,this.options.selectHiddenRows)]; if(j.shift&&k&&this.isSelected(k)){this.deselectRow(this.focused);this.focused=k;}else{if(k&&(!this.options.allowMultiSelect||!j.shift)){this.selectNone(); }this.shiftFocus(i,j);}if(e){f=h.delay(100,this,j);}else{f=(function(){e=true;h(j);}).delay(400);}}.bind(this);return h;}.bind(this);var b=function(){clearTimeout(f); e=false;};this.keyboard.addEvents({"keydown:shift+up":c(-1),"keydown:shift+down":c(1),"keyup:shift+up":b,"keyup:shift+down":b,"keyup:up":b,"keyup:down":b}); var a="";if(this.options.allowMultiSelect&&this.options.shiftForMultiSelect&&this.options.useKeyboard){a=" (Shift multi-selects).";}this.keyboard.addShortcuts({"Select Previous Row":{keys:"up",shortcut:"up arrow",handler:c(-1),description:"Select the previous row in the table."+a},"Select Next Row":{keys:"down",shortcut:"down arrow",handler:c(1),description:"Select the next row in the table."+a}}); }this.keyboard[d?"activate":"deactivate"]();}this.updateSelects();},mouseleave:function(){if(this.hovered){this.leaveRow(this.hovered);}}});var Scroller=new Class({Implements:[Events,Options],options:{area:20,velocity:1,onChange:function(a,b){this.element.scrollTo(a,b); },fps:50},initialize:function(b,a){this.setOptions(a);this.element=document.id(b);this.docBody=document.id(this.element.getDocument().body);this.listener=(typeOf(this.element)!="element")?this.docBody:this.element; this.timer=null;this.bound={attach:this.attach.bind(this),detach:this.detach.bind(this),getCoords:this.getCoords.bind(this)};},start:function(){this.listener.addEvents({mouseover:this.bound.attach,mouseleave:this.bound.detach}); return this;},stop:function(){this.listener.removeEvents({mouseover:this.bound.attach,mouseleave:this.bound.detach});this.detach();this.timer=clearInterval(this.timer); return this;},attach:function(){this.listener.addEvent("mousemove",this.bound.getCoords);},detach:function(){this.listener.removeEvent("mousemove",this.bound.getCoords); this.timer=clearInterval(this.timer);},getCoords:function(a){this.page=(this.listener.get("tag")=="body")?a.client:a.page;if(!this.timer){this.timer=this.scroll.periodical(Math.round(1000/this.options.fps),this); }},scroll:function(){var c=this.element.getSize(),a=this.element.getScroll(),h=this.element!=this.docBody?this.element.getOffsets():{x:0,y:0},d=this.element.getScrollSize(),g={x:0,y:0},e=this.options.area.top||this.options.area,b=this.options.area.bottom||this.options.area; for(var f in this.page){if(this.page[f]<(e+h[f])&&a[f]!=0){g[f]=(this.page[f]-e-h[f])*this.options.velocity;}else{if(this.page[f]+b>(c[f]+h[f])&&a[f]+c[f]!=d[f]){g[f]=(this.page[f]-c[f]+b-h[f])*this.options.velocity; }}g[f]=g[f].round();}if(g.y||g.x){this.fireEvent("change",[a.x+g.x,a.y+g.y]);}}});(function(){var a=function(c,b){return(c)?(typeOf(c)=="function"?c(b):b.get(c)):""; };this.Tips=new Class({Implements:[Events,Options],options:{onShow:function(){this.tip.setStyle("display","block");},onHide:function(){this.tip.setStyle("display","none"); },title:"title",text:function(b){return b.get("rel")||b.get("href");},showDelay:100,hideDelay:100,className:"tip-wrap",offset:{x:16,y:16},windowPadding:{x:0,y:0},fixed:false,waiAria:true},initialize:function(){var b=Array.link(arguments,{options:Type.isObject,elements:function(c){return c!=null; }});this.setOptions(b.options);if(b.elements){this.attach(b.elements);}this.container=new Element("div",{"class":"tip"});if(this.options.id){this.container.set("id",this.options.id); if(this.options.waiAria){this.attachWaiAria();}}},toElement:function(){if(this.tip){return this.tip;}this.tip=new Element("div",{"class":this.options.className,styles:{position:"absolute",top:0,left:0}}).adopt(new Element("div",{"class":"tip-top"}),this.container,new Element("div",{"class":"tip-bottom"})); return this.tip;},attachWaiAria:function(){var b=this.options.id;this.container.set("role","tooltip");if(!this.waiAria){this.waiAria={show:function(c){if(b){c.set("aria-describedby",b); }this.container.set("aria-hidden","false");},hide:function(c){if(b){c.erase("aria-describedby");}this.container.set("aria-hidden","true");}};}this.addEvents(this.waiAria); },detachWaiAria:function(){if(this.waiAria){this.container.erase("role");this.container.erase("aria-hidden");this.removeEvents(this.waiAria);}},attach:function(b){$$(b).each(function(d){var f=a(this.options.title,d),e=a(this.options.text,d); d.set("title","").store("tip:native",f).retrieve("tip:title",f);d.retrieve("tip:text",e);this.fireEvent("attach",[d]);var c=["enter","leave"];if(!this.options.fixed){c.push("move"); }c.each(function(h){var g=d.retrieve("tip:"+h);if(!g){g=function(i){this["element"+h.capitalize()].apply(this,[i,d]);}.bind(this);}d.store("tip:"+h,g).addEvent("mouse"+h,g); },this);},this);return this;},detach:function(b){$$(b).each(function(d){["enter","leave","move"].each(function(e){d.removeEvent("mouse"+e,d.retrieve("tip:"+e)).eliminate("tip:"+e); });this.fireEvent("detach",[d]);if(this.options.title=="title"){var c=d.retrieve("tip:native");if(c){d.set("title",c);}}},this);return this;},elementEnter:function(c,b){clearTimeout(this.timer); this.timer=(function(){this.container.empty();["title","text"].each(function(e){var d=b.retrieve("tip:"+e);var f=this["_"+e+"Element"]=new Element("div",{"class":"tip-"+e}).inject(this.container); if(d){this.fill(f,d);}},this);this.show(b);this.position((this.options.fixed)?{page:b.getPosition()}:c);}).delay(this.options.showDelay,this);},elementLeave:function(c,b){clearTimeout(this.timer); this.timer=this.hide.delay(this.options.hideDelay,this,b);this.fireForParent(c,b);},setTitle:function(b){if(this._titleElement){this._titleElement.empty(); this.fill(this._titleElement,b);}return this;},setText:function(b){if(this._textElement){this._textElement.empty();this.fill(this._textElement,b);}return this; },fireForParent:function(c,b){b=b.getParent();if(!b||b==document.body){return;}if(b.retrieve("tip:enter")){b.fireEvent("mouseenter",c);}else{this.fireForParent(c,b); }},elementMove:function(c,b){this.position(c);},position:function(f){if(!this.tip){document.id(this);}var c=window.getSize(),b=window.getScroll(),g={x:this.tip.offsetWidth,y:this.tip.offsetHeight},d={x:"left",y:"top"},e={y:false,x2:false,y2:false,x:false},h={}; for(var i in d){h[d[i]]=f.page[i]+this.options.offset[i];if(h[d[i]]<0){e[i]=true;}if((h[d[i]]+g[i]-b[i])>c[i]-this.options.windowPadding[i]){h[d[i]]=f.page[i]-this.options.offset[i]-g[i]; e[i+"2"]=true;}}this.fireEvent("bound",e);this.tip.setStyles(h);},fill:function(b,c){if(typeof c=="string"){b.set("html",c);}else{b.adopt(c);}},show:function(b){if(!this.tip){document.id(this); }if(!this.tip.getParent()){this.tip.inject(document.body);}this.fireEvent("show",[this.tip,b]);},hide:function(b){if(!this.tip){document.id(this);}this.fireEvent("hide",[this.tip,b]); }});})();(function(){var a={json:JSON.decode};Locale.Set.defineParser=function(b,c){a[b]=c;};Locale.Set.from=function(d,c){if(instanceOf(d,Locale.Set)){return d; }if(!c&&typeOf(d)=="string"){c="json";}if(a[c]){d=a[c](d);}var b=new Locale.Set;b.sets=d.sets||{};if(d.inherits){b.inherits.locales=Array.from(d.inherits.locales); b.inherits.sets=d.inherits.sets||{};}return b;};})();Locale.define("ar","Date",{dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H:%M"}); Locale.define("ar","FormValidator",{required:"هذا الحقل مطلوب.",minLength:"رجاءً إدخال {minLength} أحرف على الأقل (تم إدخال {length} أحرف).",maxLength:"الرجاء عدم إدخال أكثر من {maxLength} أحرف (تم إدخال {length} أحرف).",integer:"الرجاء إدخال عدد صحيح في هذا الحقل. أي رقم ذو كسر عشري أو مئوي (مثال 1.25 ) غير مسموح.",numeric:'الرجاء إدخال قيم رقمية في هذا الحقل (مثال "1" أو "1.1" أو "-1" أو "-1.1").',digits:"الرجاء أستخدام قيم رقمية وعلامات ترقيمية فقط في هذا الحقل (مثال, رقم هاتف مع نقطة أو شحطة)",alpha:"الرجاء أستخدام أحرف فقط (ا-ي) في هذا الحقل. أي فراغات أو علامات غير مسموحة.",alphanum:"الرجاء أستخدام أحرف فقط (ا-ي) أو أرقام (0-9) فقط في هذا الحقل. أي فراغات أو علامات غير مسموحة.",dateSuchAs:"الرجاء إدخال تاريخ صحيح كالتالي {date}",dateInFormatMDY:"الرجاء إدخال تاريخ صحيح (مثال, 31-12-1999)",email:"الرجاء إدخال بريد إلكتروني صحيح.",url:"الرجاء إدخال عنوان إلكتروني صحيح مثل http://www.example.com",currencyDollar:"الرجاء إدخال قيمة $ صحيحة. مثال, 100.00$",oneRequired:"الرجاء إدخال قيمة في أحد هذه الحقول على الأقل.",errorPrefix:"خطأ: ",warningPrefix:"تحذير: "}); Locale.define("ca-CA","Date",{months:["Gener","Febrer","Març","Abril","Maig","Juny","Juli","Agost","Setembre","Octubre","Novembre","Desembre"],months_abbr:["gen.","febr.","març","abr.","maig","juny","jul.","ag.","set.","oct.","nov.","des."],days:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"],days_abbr:["dg","dl","dt","dc","dj","dv","ds"],dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:0,ordinal:"",lessThanMinuteAgo:"fa menys d`un minut",minuteAgo:"fa un minut",minutesAgo:"fa {delta} minuts",hourAgo:"fa un hora",hoursAgo:"fa unes {delta} hores",dayAgo:"fa un dia",daysAgo:"fa {delta} dies",lessThanMinuteUntil:"menys d`un minut des d`ara",minuteUntil:"un minut des d`ara",minutesUntil:"{delta} minuts des d`ara",hourUntil:"un hora des d`ara",hoursUntil:"unes {delta} hores des d`ara",dayUntil:"1 dia des d`ara",daysUntil:"{delta} dies des d`ara"}); Locale.define("ca-CA","FormValidator",{required:"Aquest camp es obligatori.",minLength:"Per favor introdueix al menys {minLength} caracters (has introduit {length} caracters).",maxLength:"Per favor introdueix no mes de {maxLength} caracters (has introduit {length} caracters).",integer:"Per favor introdueix un nombre enter en aquest camp. Nombres amb decimals (p.e. 1,25) no estan permesos.",numeric:'Per favor introdueix sols valors numerics en aquest camp (p.e. "1" o "1,1" o "-1" o "-1,1").',digits:"Per favor usa sols numeros i puntuacio en aquest camp (per exemple, un nombre de telefon amb guions i punts no esta permes).",alpha:"Per favor utilitza lletres nomes (a-z) en aquest camp. No s´admiteixen espais ni altres caracters.",alphanum:"Per favor, utilitza nomes lletres (a-z) o numeros (0-9) en aquest camp. No s´admiteixen espais ni altres caracters.",dateSuchAs:"Per favor introdueix una data valida com {date}",dateInFormatMDY:'Per favor introdueix una data valida com DD/MM/YYYY (p.e. "31/12/1999")',email:'Per favor, introdueix una adreça de correu electronic valida. Per exemple, "fred@domain.com".',url:"Per favor introdueix una URL valida com http://www.example.com.",currencyDollar:"Per favor introdueix una quantitat valida de €. Per exemple €100,00 .",oneRequired:"Per favor introdueix alguna cosa per al menys una d´aquestes entrades.",errorPrefix:"Error: ",warningPrefix:"Avis: ",noSpace:"No poden haver espais en aquesta entrada.",reqChkByNode:"No hi han elements seleccionats.",requiredChk:"Aquest camp es obligatori.",reqChkByName:"Per favor selecciona una {label}.",match:"Aquest camp necessita coincidir amb el camp {matchName}",startDate:"la data de inici",endDate:"la data de fi",currendDate:"la data actual",afterDate:"La data deu ser igual o posterior a {label}.",beforeDate:"La data deu ser igual o anterior a {label}.",startMonth:"Per favor selecciona un mes d´orige",sameMonth:"Aquestes dos dates deuen estar dins del mateix mes - deus canviar una o altra."}); (function(){var a=function(e,d,c,b){if(e==1){return d;}else{if(e==2||e==3||e==4){return c;}else{return b;}}};Locale.define("cs-CZ","Date",{months:["Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"],months_abbr:["ledna","února","března","dubna","května","června","července","srpna","září","října","listopadu","prosince"],days:["Neděle","Pondělí","Úterý","Středa","Čtvrtek","Pátek","Sobota"],days_abbr:["ne","po","út","st","čt","pá","so"],dateOrder:["date","month","year"],shortDate:"%d.%m.%Y",shortTime:"%H:%M",AM:"dop.",PM:"odp.",firstDayOfWeek:1,ordinal:".",lessThanMinuteAgo:"před chvílí",minuteAgo:"přibližně před minutou",minutesAgo:function(b){return"před {delta} "+a(b,"minutou","minutami","minutami"); },hourAgo:"přibližně před hodinou",hoursAgo:function(b){return"před {delta} "+a(b,"hodinou","hodinami","hodinami");},dayAgo:"před dnem",daysAgo:function(b){return"před {delta} "+a(b,"dnem","dny","dny"); },weekAgo:"před týdnem",weeksAgo:function(b){return"před {delta} "+a(b,"týdnem","týdny","týdny");},monthAgo:"před měsícem",monthsAgo:function(b){return"před {delta} "+a(b,"měsícem","měsíci","měsíci"); },yearAgo:"před rokem",yearsAgo:function(b){return"před {delta} "+a(b,"rokem","lety","lety");},lessThanMinuteUntil:"za chvíli",minuteUntil:"přibližně za minutu",minutesUntil:function(b){return"za {delta} "+a(b,"minutu","minuty","minut"); },hourUntil:"přibližně za hodinu",hoursUntil:function(b){return"za {delta} "+a(b,"hodinu","hodiny","hodin");},dayUntil:"za den",daysUntil:function(b){return"za {delta} "+a(b,"den","dny","dnů"); },weekUntil:"za týden",weeksUntil:function(b){return"za {delta} "+a(b,"týden","týdny","týdnů");},monthUntil:"za měsíc",monthsUntil:function(b){return"za {delta} "+a(b,"měsíc","měsíce","měsíců"); },yearUntil:"za rok",yearsUntil:function(b){return"za {delta} "+a(b,"rok","roky","let");}});})();Locale.define("cs-CZ","FormValidator",{required:"Tato položka je povinná.",minLength:"Zadejte prosím alespoň {minLength} znaků (napsáno {length} znaků).",maxLength:"Zadejte prosím méně než {maxLength} znaků (nápsáno {length} znaků).",integer:"Zadejte prosím celé číslo. Desetinná čísla (např. 1.25) nejsou povolena.",numeric:'Zadejte jen číselné hodnoty (tj. "1" nebo "1.1" nebo "-1" nebo "-1.1").',digits:"Zadejte prosím pouze čísla a interpunkční znaménka(například telefonní číslo s pomlčkami nebo tečkami je povoleno).",alpha:"Zadejte prosím pouze písmena (a-z). Mezery nebo jiné znaky nejsou povoleny.",alphanum:"Zadejte prosím pouze písmena (a-z) nebo číslice (0-9). Mezery nebo jiné znaky nejsou povoleny.",dateSuchAs:"Zadejte prosím platné datum jako {date}",dateInFormatMDY:'Zadejte prosím platné datum jako MM / DD / RRRR (tj. "12/31/1999")',email:'Zadejte prosím platnou e-mailovou adresu. Například "fred@domain.com".',url:"Zadejte prosím platnou URL adresu jako http://www.example.com.",currencyDollar:"Zadejte prosím platnou částku. Například $100.00.",oneRequired:"Zadejte prosím alespoň jednu hodnotu pro tyto položky.",errorPrefix:"Chyba: ",warningPrefix:"Upozornění: ",noSpace:"V této položce nejsou povoleny mezery",reqChkByNode:"Nejsou vybrány žádné položky.",requiredChk:"Tato položka je vyžadována.",reqChkByName:"Prosím vyberte {label}.",match:"Tato položka se musí shodovat s položkou {matchName}",startDate:"datum zahájení",endDate:"datum ukončení",currendDate:"aktuální datum",afterDate:"Datum by mělo být stejné nebo větší než {label}.",beforeDate:"Datum by mělo být stejné nebo menší než {label}.",startMonth:"Vyberte počáteční měsíc.",sameMonth:"Tyto dva datumy musí být ve stejném měsíci - změňte jeden z nich.",creditcard:"Zadané číslo kreditní karty je neplatné. Prosím opravte ho. Bylo zadáno {length} čísel."}); Locale.define("da-DK","Date",{months:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],months_abbr:["jan.","feb.","mar.","apr.","maj.","jun.","jul.","aug.","sep.","okt.","nov.","dec."],days:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],days_abbr:["søn","man","tir","ons","tor","fre","lør"],dateOrder:["date","month","year"],shortDate:"%d-%m-%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:".",lessThanMinuteAgo:"mindre end et minut siden",minuteAgo:"omkring et minut siden",minutesAgo:"{delta} minutter siden",hourAgo:"omkring en time siden",hoursAgo:"omkring {delta} timer siden",dayAgo:"1 dag siden",daysAgo:"{delta} dage siden",weekAgo:"1 uge siden",weeksAgo:"{delta} uger siden",monthAgo:"1 måned siden",monthsAgo:"{delta} måneder siden",yearAgo:"1 år siden",yearsAgo:"{delta} år siden",lessThanMinuteUntil:"mindre end et minut fra nu",minuteUntil:"omkring et minut fra nu",minutesUntil:"{delta} minutter fra nu",hourUntil:"omkring en time fra nu",hoursUntil:"omkring {delta} timer fra nu",dayUntil:"1 dag fra nu",daysUntil:"{delta} dage fra nu",weekUntil:"1 uge fra nu",weeksUntil:"{delta} uger fra nu",monthUntil:"1 måned fra nu",monthsUntil:"{delta} måneder fra nu",yearUntil:"1 år fra nu",yearsUntil:"{delta} år fra nu"}); Locale.define("da-DK","FormValidator",{required:"Feltet skal udfyldes.",minLength:"Skriv mindst {minLength} tegn (du skrev {length} tegn).",maxLength:"Skriv maksimalt {maxLength} tegn (du skrev {length} tegn).",integer:"Skriv et tal i dette felt. Decimal tal (f.eks. 1.25) er ikke tilladt.",numeric:'Skriv kun tal i dette felt (i.e. "1" eller "1.1" eller "-1" eller "-1.1").',digits:"Skriv kun tal og tegnsætning i dette felt (eksempel, et telefon nummer med bindestreg eller punktum er tilladt).",alpha:"Skriv kun bogstaver (a-z) i dette felt. Mellemrum og andre tegn er ikke tilladt.",alphanum:"Skriv kun bogstaver (a-z) eller tal (0-9) i dette felt. Mellemrum og andre tegn er ikke tilladt.",dateSuchAs:"Skriv en gyldig dato som {date}",dateInFormatMDY:'Skriv dato i formatet DD-MM-YYYY (f.eks. "31-12-1999")',email:'Skriv en gyldig e-mail adresse. F.eks "fred@domain.com".',url:'Skriv en gyldig URL adresse. F.eks "http://www.example.com".',currencyDollar:"Skriv et gldigt beløb. F.eks Kr.100.00 .",oneRequired:"Et eller flere af felterne i denne formular skal udfyldes.",errorPrefix:"Fejl: ",warningPrefix:"Advarsel: ",noSpace:"Der må ikke benyttes mellemrum i dette felt.",reqChkByNode:"Foretag et valg.",requiredChk:"Dette felt skal udfyldes.",reqChkByName:"Vælg en {label}.",match:"Dette felt skal matche {matchName} feltet",startDate:"start dato",endDate:"slut dato",currendDate:"dags dato",afterDate:"Datoen skal være større end eller lig med {label}.",beforeDate:"Datoen skal være mindre end eller lig med {label}.",startMonth:"Vælg en start måned",sameMonth:"De valgte datoer skal være i samme måned - skift en af dem."}); Locale.define("de-DE","Date",{months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],months_abbr:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],days:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],days_abbr:["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],dateOrder:["date","month","year"],shortDate:"%d.%m.%Y",shortTime:"%H:%M",AM:"vormittags",PM:"nachmittags",firstDayOfWeek:1,ordinal:".",lessThanMinuteAgo:"vor weniger als einer Minute",minuteAgo:"vor einer Minute",minutesAgo:"vor {delta} Minuten",hourAgo:"vor einer Stunde",hoursAgo:"vor {delta} Stunden",dayAgo:"vor einem Tag",daysAgo:"vor {delta} Tagen",weekAgo:"vor einer Woche",weeksAgo:"vor {delta} Wochen",monthAgo:"vor einem Monat",monthsAgo:"vor {delta} Monaten",yearAgo:"vor einem Jahr",yearsAgo:"vor {delta} Jahren",lessThanMinuteUntil:"in weniger als einer Minute",minuteUntil:"in einer Minute",minutesUntil:"in {delta} Minuten",hourUntil:"in ca. einer Stunde",hoursUntil:"in ca. {delta} Stunden",dayUntil:"in einem Tag",daysUntil:"in {delta} Tagen",weekUntil:"in einer Woche",weeksUntil:"in {delta} Wochen",monthUntil:"in einem Monat",monthsUntil:"in {delta} Monaten",yearUntil:"in einem Jahr",yearsUntil:"in {delta} Jahren"}); Locale.define("de-CH").inherit("de-DE","Date");Locale.define("de-CH","FormValidator",{required:"Dieses Feld ist obligatorisch.",minLength:"Geben Sie bitte mindestens {minLength} Zeichen ein (Sie haben {length} Zeichen eingegeben).",maxLength:"Bitte geben Sie nicht mehr als {maxLength} Zeichen ein (Sie haben {length} Zeichen eingegeben).",integer:"Geben Sie bitte eine ganze Zahl ein. Dezimalzahlen (z.B. 1.25) sind nicht erlaubt.",numeric:"Geben Sie bitte nur Zahlenwerte in dieses Eingabefeld ein (z.B. "1", "1.1", "-1" oder "-1.1").",digits:"Benutzen Sie bitte nur Zahlen und Satzzeichen in diesem Eingabefeld (erlaubt ist z.B. eine Telefonnummer mit Bindestrichen und Punkten).",alpha:"Benutzen Sie bitte nur Buchstaben (a-z) in diesem Feld. Leerzeichen und andere Zeichen sind nicht erlaubt.",alphanum:"Benutzen Sie bitte nur Buchstaben (a-z) und Zahlen (0-9) in diesem Eingabefeld. Leerzeichen und andere Zeichen sind nicht erlaubt.",dateSuchAs:"Geben Sie bitte ein gültiges Datum ein. Wie zum Beispiel {date}",dateInFormatMDY:"Geben Sie bitte ein gültiges Datum ein. Wie zum Beispiel TT.MM.JJJJ (z.B. "31.12.1999")",email:"Geben Sie bitte eine gültige E-Mail Adresse ein. Wie zum Beispiel "maria@bernasconi.ch".",url:"Geben Sie bitte eine gültige URL ein. Wie zum Beispiel http://www.example.com.",currencyDollar:"Geben Sie bitte einen gültigen Betrag in Schweizer Franken ein. Wie zum Beispiel 100.00 CHF .",oneRequired:"Machen Sie für mindestens eines der Eingabefelder einen Eintrag.",errorPrefix:"Fehler: ",warningPrefix:"Warnung: ",noSpace:"In diesem Eingabefeld darf kein Leerzeichen sein.",reqChkByNode:"Es wurden keine Elemente gewählt.",requiredChk:"Dieses Feld ist obligatorisch.",reqChkByName:"Bitte wählen Sie ein {label}.",match:"Dieses Eingabefeld muss mit dem Feld {matchName} übereinstimmen.",startDate:"Das Anfangsdatum",endDate:"Das Enddatum",currendDate:"Das aktuelle Datum",afterDate:"Das Datum sollte zur gleichen Zeit oder später sein {label}.",beforeDate:"Das Datum sollte zur gleichen Zeit oder früher sein {label}.",startMonth:"Wählen Sie bitte einen Anfangsmonat",sameMonth:"Diese zwei Datumsangaben müssen im selben Monat sein - Sie müssen eine von beiden verändern.",creditcard:"Die eingegebene Kreditkartennummer ist ungültig. Bitte überprüfen Sie diese und versuchen Sie es erneut. {length} Zahlen eingegeben."}); Locale.define("de-DE","FormValidator",{required:"Dieses Eingabefeld muss ausgefüllt werden.",minLength:"Geben Sie bitte mindestens {minLength} Zeichen ein (Sie haben nur {length} Zeichen eingegeben).",maxLength:"Geben Sie bitte nicht mehr als {maxLength} Zeichen ein (Sie haben {length} Zeichen eingegeben).",integer:'Geben Sie in diesem Eingabefeld bitte eine ganze Zahl ein. Dezimalzahlen (z.B. "1.25") sind nicht erlaubt.',numeric:'Geben Sie in diesem Eingabefeld bitte nur Zahlenwerte (z.B. "1", "1.1", "-1" oder "-1.1") ein.',digits:"Geben Sie in diesem Eingabefeld bitte nur Zahlen und Satzzeichen ein (z.B. eine Telefonnummer mit Bindestrichen und Punkten ist erlaubt).",alpha:"Geben Sie in diesem Eingabefeld bitte nur Buchstaben (a-z) ein. Leerzeichen und andere Zeichen sind nicht erlaubt.",alphanum:"Geben Sie in diesem Eingabefeld bitte nur Buchstaben (a-z) und Zahlen (0-9) ein. Leerzeichen oder andere Zeichen sind nicht erlaubt.",dateSuchAs:'Geben Sie bitte ein gültiges Datum ein (z.B. "{date}").',dateInFormatMDY:'Geben Sie bitte ein gültiges Datum im Format TT.MM.JJJJ ein (z.B. "31.12.1999").',email:'Geben Sie bitte eine gültige E-Mail-Adresse ein (z.B. "max@mustermann.de").',url:'Geben Sie bitte eine gültige URL ein (z.B. "http://www.example.com").',currencyDollar:"Geben Sie bitte einen gültigen Betrag in EURO ein (z.B. 100.00€).",oneRequired:"Bitte füllen Sie mindestens ein Eingabefeld aus.",errorPrefix:"Fehler: ",warningPrefix:"Warnung: ",noSpace:"Es darf kein Leerzeichen in diesem Eingabefeld sein.",reqChkByNode:"Es wurden keine Elemente gewählt.",requiredChk:"Dieses Feld muss ausgefüllt werden.",reqChkByName:"Bitte wählen Sie ein {label}.",match:"Dieses Eingabefeld muss mit dem {matchName} Eingabefeld übereinstimmen.",startDate:"Das Anfangsdatum",endDate:"Das Enddatum",currendDate:"Das aktuelle Datum",afterDate:"Das Datum sollte zur gleichen Zeit oder später sein als {label}.",beforeDate:"Das Datum sollte zur gleichen Zeit oder früher sein als {label}.",startMonth:"Wählen Sie bitte einen Anfangsmonat",sameMonth:"Diese zwei Datumsangaben müssen im selben Monat sein - Sie müssen eines von beiden verändern.",creditcard:"Die eingegebene Kreditkartennummer ist ungültig. Bitte überprüfen Sie diese und versuchen Sie es erneut. {length} Zahlen eingegeben."}); Locale.define("EU","Number",{decimal:",",group:".",currency:{prefix:"€ "}});Locale.define("de-DE").inherit("EU","Number");Locale.define("en-GB","Date",{dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H:%M"}).inherit("en-US","Date"); Locale.define("es-ES","Date",{months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],months_abbr:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],days:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"],days_abbr:["dom","lun","mar","mié","juv","vie","sáb"],dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:"",lessThanMinuteAgo:"hace menos de un minuto",minuteAgo:"hace un minuto",minutesAgo:"hace {delta} minutos",hourAgo:"hace una hora",hoursAgo:"hace unas {delta} horas",dayAgo:"hace un día",daysAgo:"hace {delta} días",weekAgo:"hace una semana",weeksAgo:"hace unas {delta} semanas",monthAgo:"hace un mes",monthsAgo:"hace {delta} meses",yearAgo:"hace un año",yearsAgo:"hace {delta} años",lessThanMinuteUntil:"menos de un minuto desde ahora",minuteUntil:"un minuto desde ahora",minutesUntil:"{delta} minutos desde ahora",hourUntil:"una hora desde ahora",hoursUntil:"unas {delta} horas desde ahora",dayUntil:"un día desde ahora",daysUntil:"{delta} días desde ahora",weekUntil:"una semana desde ahora",weeksUntil:"unas {delta} semanas desde ahora",monthUntil:"un mes desde ahora",monthsUntil:"{delta} meses desde ahora",yearUntil:"un año desde ahora",yearsUntil:"{delta} años desde ahora"}); Locale.define("es-AR").inherit("es-ES","Date");Locale.define("es-AR","FormValidator",{required:"Este campo es obligatorio.",minLength:"Por favor ingrese al menos {minLength} caracteres (ha ingresado {length} caracteres).",maxLength:"Por favor no ingrese más de {maxLength} caracteres (ha ingresado {length} caracteres).",integer:"Por favor ingrese un número entero en este campo. Números con decimales (p.e. 1,25) no se permiten.",numeric:'Por favor ingrese solo valores numéricos en este campo (p.e. "1" o "1,1" o "-1" o "-1,1").',digits:"Por favor use sólo números y puntuación en este campo (por ejemplo, un número de teléfono con guiones y/o puntos no está permitido).",alpha:"Por favor use sólo letras (a-z) en este campo. No se permiten espacios ni otros caracteres.",alphanum:"Por favor, usa sólo letras (a-z) o números (0-9) en este campo. No se permiten espacios u otros caracteres.",dateSuchAs:"Por favor ingrese una fecha válida como {date}",dateInFormatMDY:'Por favor ingrese una fecha válida, utulizando el formato DD/MM/YYYY (p.e. "31/12/1999")',email:'Por favor, ingrese una dirección de e-mail válida. Por ejemplo, "fred@dominio.com".',url:"Por favor ingrese una URL válida como http://www.example.com.",currencyDollar:"Por favor ingrese una cantidad válida de pesos. Por ejemplo $100,00 .",oneRequired:"Por favor ingrese algo para por lo menos una de estas entradas.",errorPrefix:"Error: ",warningPrefix:"Advertencia: ",noSpace:"No se permiten espacios en este campo.",reqChkByNode:"No hay elementos seleccionados.",requiredChk:"Este campo es obligatorio.",reqChkByName:"Por favor selecciona una {label}.",match:"Este campo necesita coincidir con el campo {matchName}",startDate:"la fecha de inicio",endDate:"la fecha de fin",currendDate:"la fecha actual",afterDate:"La fecha debe ser igual o posterior a {label}.",beforeDate:"La fecha debe ser igual o anterior a {label}.",startMonth:"Por favor selecciona un mes de origen",sameMonth:"Estas dos fechas deben estar en el mismo mes - debes cambiar una u otra."}); Locale.define("es-ES","FormValidator",{required:"Este campo es obligatorio.",minLength:"Por favor introduce al menos {minLength} caracteres (has introducido {length} caracteres).",maxLength:"Por favor introduce no más de {maxLength} caracteres (has introducido {length} caracteres).",integer:"Por favor introduce un número entero en este campo. Números con decimales (p.e. 1,25) no se permiten.",numeric:'Por favor introduce solo valores numéricos en este campo (p.e. "1" o "1,1" o "-1" o "-1,1").',digits:"Por favor usa solo números y puntuación en este campo (por ejemplo, un número de teléfono con guiones y puntos no esta permitido).",alpha:"Por favor usa letras solo (a-z) en este campo. No se admiten espacios ni otros caracteres.",alphanum:"Por favor, usa solo letras (a-z) o números (0-9) en este campo. No se admiten espacios ni otros caracteres.",dateSuchAs:"Por favor introduce una fecha válida como {date}",dateInFormatMDY:'Por favor introduce una fecha válida como DD/MM/YYYY (p.e. "31/12/1999")',email:'Por favor, introduce una dirección de email válida. Por ejemplo, "fred@domain.com".',url:"Por favor introduce una URL válida como http://www.example.com.",currencyDollar:"Por favor introduce una cantidad válida de €. Por ejemplo €100,00 .",oneRequired:"Por favor introduce algo para por lo menos una de estas entradas.",errorPrefix:"Error: ",warningPrefix:"Aviso: ",noSpace:"No pueden haber espacios en esta entrada.",reqChkByNode:"No hay elementos seleccionados.",requiredChk:"Este campo es obligatorio.",reqChkByName:"Por favor selecciona una {label}.",match:"Este campo necesita coincidir con el campo {matchName}",startDate:"la fecha de inicio",endDate:"la fecha de fin",currendDate:"la fecha actual",afterDate:"La fecha debe ser igual o posterior a {label}.",beforeDate:"La fecha debe ser igual o anterior a {label}.",startMonth:"Por favor selecciona un mes de origen",sameMonth:"Estas dos fechas deben estar en el mismo mes - debes cambiar una u otra."}); Locale.define("et-EE","Date",{months:["jaanuar","veebruar","märts","aprill","mai","juuni","juuli","august","september","oktoober","november","detsember"],months_abbr:["jaan","veebr","märts","apr","mai","juuni","juuli","aug","sept","okt","nov","dets"],days:["pühapäev","esmaspäev","teisipäev","kolmapäev","neljapäev","reede","laupäev"],days_abbr:["pühap","esmasp","teisip","kolmap","neljap","reede","laup"],dateOrder:["month","date","year"],shortDate:"%m.%d.%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:"",lessThanMinuteAgo:"vähem kui minut aega tagasi",minuteAgo:"umbes minut aega tagasi",minutesAgo:"{delta} minutit tagasi",hourAgo:"umbes tund aega tagasi",hoursAgo:"umbes {delta} tundi tagasi",dayAgo:"1 päev tagasi",daysAgo:"{delta} päeva tagasi",weekAgo:"1 nädal tagasi",weeksAgo:"{delta} nädalat tagasi",monthAgo:"1 kuu tagasi",monthsAgo:"{delta} kuud tagasi",yearAgo:"1 aasta tagasi",yearsAgo:"{delta} aastat tagasi",lessThanMinuteUntil:"vähem kui minuti aja pärast",minuteUntil:"umbes minuti aja pärast",minutesUntil:"{delta} minuti pärast",hourUntil:"umbes tunni aja pärast",hoursUntil:"umbes {delta} tunni pärast",dayUntil:"1 päeva pärast",daysUntil:"{delta} päeva pärast",weekUntil:"1 nädala pärast",weeksUntil:"{delta} nädala pärast",monthUntil:"1 kuu pärast",monthsUntil:"{delta} kuu pärast",yearUntil:"1 aasta pärast",yearsUntil:"{delta} aasta pärast"}); Locale.define("et-EE","FormValidator",{required:"Väli peab olema täidetud.",minLength:"Palun sisestage vähemalt {minLength} tähte (te sisestasite {length} tähte).",maxLength:"Palun ärge sisestage rohkem kui {maxLength} tähte (te sisestasite {length} tähte).",integer:"Palun sisestage väljale täisarv. Kümnendarvud (näiteks 1.25) ei ole lubatud.",numeric:'Palun sisestage ainult numbreid väljale (näiteks "1", "1.1", "-1" või "-1.1").',digits:"Palun kasutage ainult numbreid ja kirjavahemärke (telefoninumbri sisestamisel on lubatud kasutada kriipse ja punkte).",alpha:"Palun kasutage ainult tähti (a-z). Tühikud ja teised sümbolid on keelatud.",alphanum:"Palun kasutage ainult tähti (a-z) või numbreid (0-9). Tühikud ja teised sümbolid on keelatud.",dateSuchAs:"Palun sisestage kehtiv kuupäev kujul {date}",dateInFormatMDY:'Palun sisestage kehtiv kuupäev kujul MM.DD.YYYY (näiteks: "12.31.1999").',email:'Palun sisestage kehtiv e-maili aadress (näiteks: "fred@domain.com").',url:"Palun sisestage kehtiv URL (näiteks: http://www.example.com).",currencyDollar:"Palun sisestage kehtiv $ summa (näiteks: $100.00).",oneRequired:"Palun sisestage midagi vähemalt ühele antud väljadest.",errorPrefix:"Viga: ",warningPrefix:"Hoiatus: ",noSpace:"Väli ei tohi sisaldada tühikuid.",reqChkByNode:"Ükski väljadest pole valitud.",requiredChk:"Välja täitmine on vajalik.",reqChkByName:"Palun valige üks {label}.",match:"Väli peab sobima {matchName} väljaga",startDate:"algkuupäev",endDate:"lõppkuupäev",currendDate:"praegune kuupäev",afterDate:"Kuupäev peab olema võrdne või pärast {label}.",beforeDate:"Kuupäev peab olema võrdne või enne {label}.",startMonth:"Palun valige algkuupäev.",sameMonth:"Antud kaks kuupäeva peavad olema samas kuus - peate muutma ühte kuupäeva."}); Locale.define("fa","Date",{months:["ژانویه","فوریه","مارس","آپریل","مه","ژوئن","ژوئیه","آگوست","سپتامبر","اکتبر","نوامبر","دسامبر"],months_abbr:["1","2","3","4","5","6","7","8","9","10","11","12"],days:["یکشنبه","دوشنبه","سه شنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],days_abbr:["ي","د","س","چ","پ","ج","ش"],dateOrder:["month","date","year"],shortDate:"%m/%d/%Y",shortTime:"%I:%M%p",AM:"ق.ظ",PM:"ب.ظ",ordinal:"ام",lessThanMinuteAgo:"کمتر از یک دقیقه پیش",minuteAgo:"حدود یک دقیقه پیش",minutesAgo:"{delta} دقیقه پیش",hourAgo:"حدود یک ساعت پیش",hoursAgo:"حدود {delta} ساعت پیش",dayAgo:"1 روز پیش",daysAgo:"{delta} روز پیش",weekAgo:"1 هفته پیش",weeksAgo:"{delta} هفته پیش",monthAgo:"1 ماه پیش",monthsAgo:"{delta} ماه پیش",yearAgo:"1 سال پیش",yearsAgo:"{delta} سال پیش",lessThanMinuteUntil:"کمتر از یک دقیقه از حالا",minuteUntil:"حدود یک دقیقه از حالا",minutesUntil:"{delta} دقیقه از حالا",hourUntil:"حدود یک ساعت از حالا",hoursUntil:"حدود {delta} ساعت از حالا",dayUntil:"1 روز از حالا",daysUntil:"{delta} روز از حالا",weekUntil:"1 هفته از حالا",weeksUntil:"{delta} هفته از حالا",monthUntil:"1 ماه از حالا",monthsUntil:"{delta} ماه از حالا",yearUntil:"1 سال از حالا",yearsUntil:"{delta} سال از حالا"}); Locale.define("fa","FormValidator",{required:"این فیلد الزامی است.",minLength:"شما باید حداقل {minLength} حرف وارد کنید ({length} حرف وارد کرده اید).",maxLength:"لطفا حداکثر {maxLength} حرف وارد کنید (شما {length} حرف وارد کرده اید).",integer:"لطفا از عدد صحیح استفاده کنید. اعداد اعشاری (مانند 1.25) مجاز نیستند.",numeric:'لطفا فقط داده عددی وارد کنید (مانند "1" یا "1.1" یا "1-" یا "1.1-").',digits:"لطفا فقط از اعداد و علامتها در این فیلد استفاده کنید (برای مثال شماره تلفن با خط تیره و نقطه قابل قبول است).",alpha:"لطفا فقط از حروف الفباء برای این بخش استفاده کنید. کاراکترهای دیگر و فاصله مجاز نیستند.",alphanum:"لطفا فقط از حروف الفباء و اعداد در این بخش استفاده کنید. کاراکترهای دیگر و فاصله مجاز نیستند.",dateSuchAs:"لطفا یک تاریخ معتبر مانند {date} وارد کنید.",dateInFormatMDY:'لطفا یک تاریخ معتبر به شکل MM/DD/YYYY وارد کنید (مانند "12/31/1999").',email:'لطفا یک آدرس ایمیل معتبر وارد کنید. برای مثال "fred@domain.com".',url:"لطفا یک URL معتبر مانند http://www.example.com وارد کنید.",currencyDollar:"لطفا یک محدوده معتبر برای این بخش وارد کنید مانند 100.00$ .",oneRequired:"لطفا حداقل یکی از فیلدها را پر کنید.",errorPrefix:"خطا: ",warningPrefix:"هشدار: ",noSpace:"استفاده از فاصله در این بخش مجاز نیست.",reqChkByNode:"موردی انتخاب نشده است.",requiredChk:"این فیلد الزامی است.",reqChkByName:"لطفا یک {label} را انتخاب کنید.",match:"این فیلد باید با فیلد {matchName} مطابقت داشته باشد.",startDate:"تاریخ شروع",endDate:"تاریخ پایان",currendDate:"تاریخ کنونی",afterDate:"تاریخ میبایست برابر یا بعد از {label} باشد",beforeDate:"تاریخ میبایست برابر یا قبل از {label} باشد",startMonth:"لطفا ماه شروع را انتخاب کنید",sameMonth:"این دو تاریخ باید در یک ماه باشند - شما باید یکی یا هر دو را تغییر دهید.",creditcard:"شماره کارت اعتباری که وارد کرده اید معتبر نیست. لطفا شماره را بررسی کنید و مجددا تلاش کنید. {length} رقم وارد شده است."}); Locale.define("fi-FI","Date",{months:["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],months_abbr:["tammik.","helmik.","maalisk.","huhtik.","toukok.","kesäk.","heinäk.","elok.","syysk.","lokak.","marrask.","jouluk."],days:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],days_abbr:["su","ma","ti","ke","to","pe","la"],dateOrder:["date","month","year"],shortDate:"%d.%m.%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:".",lessThanMinuteAgo:"vajaa minuutti sitten",minuteAgo:"noin minuutti sitten",minutesAgo:"{delta} minuuttia sitten",hourAgo:"noin tunti sitten",hoursAgo:"noin {delta} tuntia sitten",dayAgo:"päivä sitten",daysAgo:"{delta} päivää sitten",weekAgo:"viikko sitten",weeksAgo:"{delta} viikkoa sitten",monthAgo:"kuukausi sitten",monthsAgo:"{delta} kuukautta sitten",yearAgo:"vuosi sitten",yearsAgo:"{delta} vuotta sitten",lessThanMinuteUntil:"vajaan minuutin kuluttua",minuteUntil:"noin minuutin kuluttua",minutesUntil:"{delta} minuutin kuluttua",hourUntil:"noin tunnin kuluttua",hoursUntil:"noin {delta} tunnin kuluttua",dayUntil:"päivän kuluttua",daysUntil:"{delta} päivän kuluttua",weekUntil:"viikon kuluttua",weeksUntil:"{delta} viikon kuluttua",monthUntil:"kuukauden kuluttua",monthsUntil:"{delta} kuukauden kuluttua",yearUntil:"vuoden kuluttua",yearsUntil:"{delta} vuoden kuluttua"}); Locale.define("fi-FI","FormValidator",{required:"Tämä kenttä on pakollinen.",minLength:"Ole hyvä ja anna vähintään {minLength} merkkiä (annoit {length} merkkiä).",maxLength:"Älä anna enempää kuin {maxLength} merkkiä (annoit {length} merkkiä).",integer:"Ole hyvä ja anna kokonaisluku. Luvut, joissa on desimaaleja (esim. 1.25) eivät ole sallittuja.",numeric:'Anna tähän kenttään lukuarvo (kuten "1" tai "1.1" tai "-1" tai "-1.1").',digits:"Käytä pelkästään numeroita ja välimerkkejä tässä kentässä (syötteet, kuten esim. puhelinnumero, jossa on väliviivoja, pilkkuja tai pisteitä, kelpaa).",alpha:"Anna tähän kenttään vain kirjaimia (a-z). Välilyönnit tai muut merkit eivät ole sallittuja.",alphanum:"Anna tähän kenttään vain kirjaimia (a-z) tai numeroita (0-9). Välilyönnit tai muut merkit eivät ole sallittuja.",dateSuchAs:"Ole hyvä ja anna kelvollinen päivmäärä, kuten esimerkiksi {date}",dateInFormatMDY:'Ole hyvä ja anna kelvollinen päivämäärä muodossa pp/kk/vvvv (kuten "12/31/1999")',email:'Ole hyvä ja anna kelvollinen sähköpostiosoite (kuten esimerkiksi "matti@meikalainen.com").',url:"Ole hyvä ja anna kelvollinen URL, kuten esimerkiksi http://www.example.com.",currencyDollar:"Ole hyvä ja anna kelvollinen eurosumma (kuten esimerkiksi 100,00 EUR) .",oneRequired:"Ole hyvä ja syötä jotakin ainakin johonkin näistä kentistä.",errorPrefix:"Virhe: ",warningPrefix:"Varoitus: ",noSpace:"Tässä syötteessä ei voi olla välilyöntejä",reqChkByNode:"Ei valintoja.",requiredChk:"Tämä kenttä on pakollinen.",reqChkByName:"Ole hyvä ja valitse {label}.",match:"Tämän kentän tulee vastata kenttää {matchName}",startDate:"alkupäivämäärä",endDate:"loppupäivämäärä",currendDate:"nykyinen päivämäärä",afterDate:"Päivämäärän tulisi olla sama tai myöhäisempi ajankohta kuin {label}.",beforeDate:"Päivämäärän tulisi olla sama tai aikaisempi ajankohta kuin {label}.",startMonth:"Ole hyvä ja valitse aloituskuukausi",sameMonth:"Näiden kahden päivämäärän tulee olla saman kuun sisällä -- sinun pitää muuttaa jompaa kumpaa.",creditcard:"Annettu luottokortin numero ei kelpaa. Ole hyvä ja tarkista numero sekä yritä uudelleen. {length} numeroa syötetty."}); Locale.define("fi-FI","Number",{group:" "}).inherit("EU","Number");Locale.define("fr-FR","Date",{months:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],months_abbr:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],days:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],days_abbr:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:function(a){return(a>1)?"":"er"; },lessThanMinuteAgo:"il y a moins d'une minute",minuteAgo:"il y a une minute",minutesAgo:"il y a {delta} minutes",hourAgo:"il y a une heure",hoursAgo:"il y a {delta} heures",dayAgo:"il y a un jour",daysAgo:"il y a {delta} jours",weekAgo:"il y a une semaine",weeksAgo:"il y a {delta} semaines",monthAgo:"il y a 1 mois",monthsAgo:"il y a {delta} mois",yearthAgo:"il y a 1 an",yearsAgo:"il y a {delta} ans",lessThanMinuteUntil:"dans moins d'une minute",minuteUntil:"dans une minute",minutesUntil:"dans {delta} minutes",hourUntil:"dans une heure",hoursUntil:"dans {delta} heures",dayUntil:"dans un jour",daysUntil:"dans {delta} jours",weekUntil:"dans 1 semaine",weeksUntil:"dans {delta} semaines",monthUntil:"dans 1 mois",monthsUntil:"dans {delta} mois",yearUntil:"dans 1 an",yearsUntil:"dans {delta} ans"}); Locale.define("fr-FR","FormValidator",{required:"Ce champ est obligatoire.",length:"Veuillez saisir {length} caractère(s) (vous avez saisi {elLength} caractère(s)",minLength:"Veuillez saisir un minimum de {minLength} caractère(s) (vous avez saisi {length} caractère(s)).",maxLength:"Veuillez saisir un maximum de {maxLength} caractère(s) (vous avez saisi {length} caractère(s)).",integer:'Veuillez saisir un nombre entier dans ce champ. Les nombres décimaux (ex : "1,25") ne sont pas autorisés.',numeric:'Veuillez saisir uniquement des chiffres dans ce champ (ex : "1" ou "1,1" ou "-1" ou "-1,1").',digits:"Veuillez saisir uniquement des chiffres et des signes de ponctuation dans ce champ (ex : un numéro de téléphone avec des traits d'union est autorisé).",alpha:"Veuillez saisir uniquement des lettres (a-z) dans ce champ. Les espaces ou autres caractères ne sont pas autorisés.",alphanum:"Veuillez saisir uniquement des lettres (a-z) ou des chiffres (0-9) dans ce champ. Les espaces ou autres caractères ne sont pas autorisés.",dateSuchAs:"Veuillez saisir une date correcte comme {date}",dateInFormatMDY:'Veuillez saisir une date correcte, au format JJ/MM/AAAA (ex : "31/11/1999").',email:'Veuillez saisir une adresse de courrier électronique. Par example "fred@domaine.com".',url:"Veuillez saisir une URL, comme http://www.example.com.",currencyDollar:"Veuillez saisir une quantité correcte. Par example 100,00€.",oneRequired:"Veuillez sélectionner au moins une de ces options.",errorPrefix:"Erreur : ",warningPrefix:"Attention : ",noSpace:"Ce champ n'accepte pas les espaces.",reqChkByNode:"Aucun élément n'est sélectionné.",requiredChk:"Ce champ est obligatoire.",reqChkByName:"Veuillez sélectionner un(e) {label}.",match:"Ce champ doit correspondre avec le champ {matchName}.",startDate:"date de début",endDate:"date de fin",currendDate:"date actuelle",afterDate:"La date doit être identique ou postérieure à {label}.",beforeDate:"La date doit être identique ou antérieure à {label}.",startMonth:"Veuillez sélectionner un mois de début.",sameMonth:"Ces deux dates doivent être dans le même mois - vous devez en modifier une.",creditcard:"Le numéro de carte de crédit est invalide. Merci de vérifier le numéro et de réessayer. Vous avez entré {length} chiffre(s)."}); Locale.define("fr-FR","Number",{group:" "}).inherit("EU","Number");Locale.define("he-IL","Date",{months:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],months_abbr:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],days:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],days_abbr:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:0,ordinal:"",lessThanMinuteAgo:"לפני פחות מדקה",minuteAgo:"לפני כדקה",minutesAgo:"לפני {delta} דקות",hourAgo:"לפני כשעה",hoursAgo:"לפני {delta} שעות",dayAgo:"לפני יום",daysAgo:"לפני {delta} ימים",weekAgo:"לפני שבוע",weeksAgo:"לפני {delta} שבועות",monthAgo:"לפני חודש",monthsAgo:"לפני {delta} חודשים",yearAgo:"לפני שנה",yearsAgo:"לפני {delta} שנים",lessThanMinuteUntil:"בעוד פחות מדקה",minuteUntil:"בעוד כדקה",minutesUntil:"בעוד {delta} דקות",hourUntil:"בעוד כשעה",hoursUntil:"בעוד {delta} שעות",dayUntil:"בעוד יום",daysUntil:"בעוד {delta} ימים",weekUntil:"בעוד שבוע",weeksUntil:"בעוד {delta} שבועות",monthUntil:"בעוד חודש",monthsUntil:"בעוד {delta} חודשים",yearUntil:"בעוד שנה",yearsUntil:"בעוד {delta} שנים"}); Locale.define("he-IL","FormValidator",{required:"נא למלא שדה זה.",minLength:"נא להזין לפחות {minLength} תווים (הזנת {length} תווים).",maxLength:"נא להזין עד {maxLength} תווים (הזנת {length} תווים).",integer:"נא להזין מספר שלם לשדה זה. מספרים עשרוניים (כמו 1.25) אינם חוקיים.",numeric:'נא להזין ערך מספרי בלבד בשדה זה (כמו "1", "1.1", "-1" או "-1.1").',digits:"נא להזין רק ספרות וסימני הפרדה בשדה זה (למשל, מספר טלפון עם מקפים או נקודות הוא חוקי).",alpha:"נא להזין רק אותיות באנגלית (a-z) בשדה זה. רווחים או תווים אחרים אינם חוקיים.",alphanum:"נא להזין רק אותריות באנגלית (a-z) או ספרות (0-9) בשדה זה. אווחרים או תווים אחרים אינם חוקיים.",dateSuchAs:"נא להזין תאריך חוקי, כמו {date}",dateInFormatMDY:'נא להזין תאריך חוקי בפורמט MM/DD/YYYY (כמו "12/31/1999")',email:'נא להזין כתובת אימייל חוקית. לדוגמה: "fred@domain.com".',url:"נא להזין כתובת אתר חוקית, כמו http://www.example.com.",currencyDollar:"נא להזין סכום דולרי חוקי. לדוגמה $100.00.",oneRequired:"נא לבחור לפחות בשדה אחד.",errorPrefix:"שגיאה: ",warningPrefix:"אזהרה: ",noSpace:"אין להזין רווחים בשדה זה.",reqChkByNode:"נא לבחור אחת מהאפשרויות.",requiredChk:"שדה זה נדרש.",reqChkByName:"נא לבחור {label}.",match:"שדה זה צריך להתאים לשדה {matchName}",startDate:"תאריך ההתחלה",endDate:"תאריך הסיום",currendDate:"התאריך הנוכחי",afterDate:"התאריך צריך להיות זהה או אחרי {label}.",beforeDate:"התאריך צריך להיות זהה או לפני {label}.",startMonth:"נא לבחור חודש התחלה",sameMonth:"שני תאריכים אלה צריכים להיות באותו חודש - נא לשנות אחד התאריכים.",creditcard:"מספר כרטיס האשראי שהוזן אינו חוקי. נא לבדוק שנית. הוזנו {length} ספרות."}); Locale.define("he-IL","Number",{decimal:".",group:",",currency:{suffix:" ₪"}});Locale.define("hu-HU","Date",{months:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],months_abbr:["jan.","febr.","márc.","ápr.","máj.","jún.","júl.","aug.","szept.","okt.","nov.","dec."],days:["Vasárnap","Hétfő","Kedd","Szerda","Csütörtök","Péntek","Szombat"],days_abbr:["V","H","K","Sze","Cs","P","Szo"],dateOrder:["year","month","date"],shortDate:"%Y.%m.%d.",shortTime:"%I:%M",AM:"de.",PM:"du.",firstDayOfWeek:1,ordinal:".",lessThanMinuteAgo:"alig egy perce",minuteAgo:"egy perce",minutesAgo:"{delta} perce",hourAgo:"egy órája",hoursAgo:"{delta} órája",dayAgo:"1 napja",daysAgo:"{delta} napja",weekAgo:"1 hete",weeksAgo:"{delta} hete",monthAgo:"1 hónapja",monthsAgo:"{delta} hónapja",yearAgo:"1 éve",yearsAgo:"{delta} éve",lessThanMinuteUntil:"alig egy perc múlva",minuteUntil:"egy perc múlva",minutesUntil:"{delta} perc múlva",hourUntil:"egy óra múlva",hoursUntil:"{delta} óra múlva",dayUntil:"1 nap múlva",daysUntil:"{delta} nap múlva",weekUntil:"1 hét múlva",weeksUntil:"{delta} hét múlva",monthUntil:"1 hónap múlva",monthsUntil:"{delta} hónap múlva",yearUntil:"1 év múlva",yearsUntil:"{delta} év múlva"}); Locale.define("hu-HU","FormValidator",{required:"A mező kitöltése kötelező.",minLength:"Legalább {minLength} karakter megadása szükséges (megadva {length} karakter).",maxLength:"Legfeljebb {maxLength} karakter megadása lehetséges (megadva {length} karakter).",integer:"Egész szám megadása szükséges. A tizedesjegyek (pl. 1.25) nem engedélyezettek.",numeric:'Szám megadása szükséges (pl. "1" vagy "1.1" vagy "-1" vagy "-1.1").',digits:"Csak számok és írásjelek megadása lehetséges (pl. telefonszám kötőjelek és/vagy perjelekkel).",alpha:"Csak betűk (a-z) megadása lehetséges. Szóköz és egyéb karakterek nem engedélyezettek.",alphanum:"Csak betűk (a-z) vagy számok (0-9) megadása lehetséges. Szóköz és egyéb karakterek nem engedélyezettek.",dateSuchAs:"Valós dátum megadása szükséges (pl. {date}).",dateInFormatMDY:'Valós dátum megadása szükséges ÉÉÉÉ.HH.NN. formában. (pl. "1999.12.31.")',email:'Valós e-mail cím megadása szükséges (pl. "fred@domain.hu").',url:"Valós URL megadása szükséges (pl. http://www.example.com).",currencyDollar:"Valós pénzösszeg megadása szükséges (pl. 100.00 Ft.).",oneRequired:"Az alábbi mezők legalább egyikének kitöltése kötelező.",errorPrefix:"Hiba: ",warningPrefix:"Figyelem: ",noSpace:"A mező nem tartalmazhat szóközöket.",reqChkByNode:"Nincs egyetlen kijelölt elem sem.",requiredChk:"A mező kitöltése kötelező.",reqChkByName:"Egy {label} kiválasztása szükséges.",match:"A mezőnek egyeznie kell a(z) {matchName} mezővel.",startDate:"a kezdet dátuma",endDate:"a vég dátuma",currendDate:"jelenlegi dátum",afterDate:"A dátum nem lehet kisebb, mint {label}.",beforeDate:"A dátum nem lehet nagyobb, mint {label}.",startMonth:"Kezdeti hónap megadása szükséges.",sameMonth:"A két dátumnak ugyanazon hónapban kell lennie.",creditcard:"A megadott bankkártyaszám nem valódi (megadva {length} számjegy)."}); Locale.define("it-IT","Date",{months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],months_abbr:["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],days_abbr:["dom","lun","mar","mer","gio","ven","sab"],dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H.%M",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:"º",lessThanMinuteAgo:"meno di un minuto fa",minuteAgo:"circa un minuto fa",minutesAgo:"circa {delta} minuti fa",hourAgo:"circa un'ora fa",hoursAgo:"circa {delta} ore fa",dayAgo:"circa 1 giorno fa",daysAgo:"circa {delta} giorni fa",weekAgo:"una settimana fa",weeksAgo:"{delta} settimane fa",monthAgo:"un mese fa",monthsAgo:"{delta} mesi fa",yearAgo:"un anno fa",yearsAgo:"{delta} anni fa",lessThanMinuteUntil:"tra meno di un minuto",minuteUntil:"tra circa un minuto",minutesUntil:"tra circa {delta} minuti",hourUntil:"tra circa un'ora",hoursUntil:"tra circa {delta} ore",dayUntil:"tra circa un giorno",daysUntil:"tra circa {delta} giorni",weekUntil:"tra una settimana",weeksUntil:"tra {delta} settimane",monthUntil:"tra un mese",monthsUntil:"tra {delta} mesi",yearUntil:"tra un anno",yearsUntil:"tra {delta} anni"}); Locale.define("it-IT","FormValidator",{required:"Il campo è obbligatorio.",minLength:"Inserire almeno {minLength} caratteri (ne sono stati inseriti {length}).",maxLength:"Inserire al massimo {maxLength} caratteri (ne sono stati inseriti {length}).",integer:"Inserire un numero intero. Non sono consentiti decimali (es.: 1.25).",numeric:'Inserire solo valori numerici (es.: "1" oppure "1.1" oppure "-1" oppure "-1.1").',digits:"Inserire solo numeri e caratteri di punteggiatura. Per esempio è consentito un numero telefonico con trattini o punti.",alpha:"Inserire solo lettere (a-z). Non sono consentiti spazi o altri caratteri.",alphanum:"Inserire solo lettere (a-z) o numeri (0-9). Non sono consentiti spazi o altri caratteri.",dateSuchAs:"Inserire una data valida del tipo {date}",dateInFormatMDY:'Inserire una data valida nel formato MM/GG/AAAA (es.: "12/31/1999")',email:'Inserire un indirizzo email valido. Per esempio "nome@dominio.com".',url:'Inserire un indirizzo valido. Per esempio "http://www.example.com".',currencyDollar:'Inserire un importo valido. Per esempio "$100.00".',oneRequired:"Completare almeno uno dei campi richiesti.",errorPrefix:"Errore: ",warningPrefix:"Attenzione: ",noSpace:"Non sono consentiti spazi.",reqChkByNode:"Nessuna voce selezionata.",requiredChk:"Il campo è obbligatorio.",reqChkByName:"Selezionare un(a) {label}.",match:"Il valore deve corrispondere al campo {matchName}",startDate:"data d'inizio",endDate:"data di fine",currendDate:"data attuale",afterDate:"La data deve corrispondere o essere successiva al {label}.",beforeDate:"La data deve corrispondere o essere precedente al {label}.",startMonth:"Selezionare un mese d'inizio",sameMonth:"Le due date devono essere dello stesso mese - occorre modificarne una."}); Locale.define("ja-JP","Date",{months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],months_abbr:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],days:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],days_abbr:["日","月","火","水","木","金","土"],dateOrder:["year","month","date"],shortDate:"%Y/%m/%d",shortTime:"%H:%M",AM:"午前",PM:"午後",firstDayOfWeek:0,ordinal:"",lessThanMinuteAgo:"1分以内前",minuteAgo:"約1分前",minutesAgo:"約{delta}分前",hourAgo:"約1時間前",hoursAgo:"約{delta}時間前",dayAgo:"1日前",daysAgo:"{delta}日前",weekAgo:"1週間前",weeksAgo:"{delta}週間前",monthAgo:"1ヶ月前",monthsAgo:"{delta}ヶ月前",yearAgo:"1年前",yearsAgo:"{delta}年前",lessThanMinuteUntil:"今から約1分以内",minuteUntil:"今から約1分",minutesUntil:"今から約{delta}分",hourUntil:"今から約1時間",hoursUntil:"今から約{delta}時間",dayUntil:"今から1日間",daysUntil:"今から{delta}日間",weekUntil:"今から1週間",weeksUntil:"今から{delta}週間",monthUntil:"今から1ヶ月",monthsUntil:"今から{delta}ヶ月",yearUntil:"今から1年",yearsUntil:"今から{delta}年"}); Locale.define("ja-JP","FormValidator",{required:"入力は必須です。",minLength:"入力文字数は{minLength}以上にしてください。({length}文字)",maxLength:"入力文字数は{maxLength}以下にしてください。({length}文字)",integer:"整数を入力してください。",numeric:'入力できるのは数値だけです。(例: "1", "1.1", "-1", "-1.1"....)',digits:"入力できるのは数値と句読記号です。 (例: -や+を含む電話番号など).",alpha:"入力できるのは半角英字だけです。それ以外の文字は入力できません。",alphanum:"入力できるのは半角英数字だけです。それ以外の文字は入力できません。",dateSuchAs:"有効な日付を入力してください。{date}",dateInFormatMDY:'日付の書式に誤りがあります。YYYY/MM/DD (i.e. "1999/12/31")',email:"メールアドレスに誤りがあります。",url:"URLアドレスに誤りがあります。",currencyDollar:"金額に誤りがあります。",oneRequired:"ひとつ以上入力してください。",errorPrefix:"エラー: ",warningPrefix:"警告: ",noSpace:"スペースは入力できません。",reqChkByNode:"選択されていません。",requiredChk:"この項目は必須です。",reqChkByName:"{label}を選択してください。",match:"{matchName}が入力されている場合必須です。",startDate:"開始日",endDate:"終了日",currendDate:"今日",afterDate:"{label}以降の日付にしてください。",beforeDate:"{label}以前の日付にしてください。",startMonth:"開始月を選択してください。",sameMonth:"日付が同一です。どちらかを変更してください。"}); Locale.define("ja-JP","Number",{decimal:".",group:",",currency:{decimals:0,prefix:"\\"}});Locale.define("nl-NL","Date",{months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],months_abbr:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],days_abbr:["zo","ma","di","wo","do","vr","za"],dateOrder:["date","month","year"],shortDate:"%d-%m-%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:"e",lessThanMinuteAgo:"minder dan een minuut geleden",minuteAgo:"ongeveer een minuut geleden",minutesAgo:"{delta} minuten geleden",hourAgo:"ongeveer een uur geleden",hoursAgo:"ongeveer {delta} uur geleden",dayAgo:"een dag geleden",daysAgo:"{delta} dagen geleden",weekAgo:"een week geleden",weeksAgo:"{delta} weken geleden",monthAgo:"een maand geleden",monthsAgo:"{delta} maanden geleden",yearAgo:"een jaar geleden",yearsAgo:"{delta} jaar geleden",lessThanMinuteUntil:"over minder dan een minuut",minuteUntil:"over ongeveer een minuut",minutesUntil:"over {delta} minuten",hourUntil:"over ongeveer een uur",hoursUntil:"over {delta} uur",dayUntil:"over ongeveer een dag",daysUntil:"over {delta} dagen",weekUntil:"over een week",weeksUntil:"over {delta} weken",monthUntil:"over een maand",monthsUntil:"over {delta} maanden",yearUntil:"over een jaar",yearsUntil:"over {delta} jaar"}); Locale.define("nl-NL","FormValidator",{required:"Dit veld is verplicht.",length:"Vul precies {length} karakters in (je hebt {elLength} karakters ingevoerd).",minLength:"Vul minimaal {minLength} karakters in (je hebt {length} karakters ingevoerd).",maxLength:"Vul niet meer dan {maxLength} karakters in (je hebt {length} karakters ingevoerd).",integer:"Vul een getal in. Getallen met decimalen (bijvoorbeeld 1.25) zijn niet toegestaan.",numeric:'Vul alleen numerieke waarden in (bijvoorbeeld "1" of "1.1" of "-1" of "-1.1").',digits:"Vul alleen nummers en leestekens in (bijvoorbeeld een telefoonnummer met streepjes is toegestaan).",alpha:"Vul alleen letters in (a-z). Spaties en andere karakters zijn niet toegestaan.",alphanum:"Vul alleen letters (a-z) of nummers (0-9) in. Spaties en andere karakters zijn niet toegestaan.",dateSuchAs:"Vul een geldige datum in, zoals {date}",dateInFormatMDY:'Vul een geldige datum, in het formaat MM/DD/YYYY (bijvoorbeeld "12/31/1999")',email:'Vul een geldig e-mailadres in. Bijvoorbeeld "fred@domein.nl".',url:"Vul een geldige URL in, zoals http://www.example.com.",currencyDollar:"Vul een geldig $ bedrag in. Bijvoorbeeld $100.00 .",oneRequired:"Vul iets in bij in ieder geval een van deze velden.",warningPrefix:"Waarschuwing: ",errorPrefix:"Fout: ",noSpace:"Spaties zijn niet toegestaan in dit veld.",reqChkByNode:"Er zijn geen items geselecteerd.",requiredChk:"Dit veld is verplicht.",reqChkByName:"Selecteer een {label}.",match:"Dit veld moet overeen komen met het {matchName} veld",startDate:"de begin datum",endDate:"de eind datum",currendDate:"de huidige datum",afterDate:"De datum moet hetzelfde of na {label} zijn.",beforeDate:"De datum moet hetzelfde of voor {label} zijn.",startMonth:"Selecteer een begin maand",sameMonth:"Deze twee data moeten in dezelfde maand zijn - u moet een van beide aanpassen.",creditcard:"Het ingevulde creditcardnummer is niet geldig. Controleer het nummer en probeer opnieuw. {length} getallen ingevuld."}); Locale.define("nl-NL").inherit("EU","Number");Locale.define("no-NO","Date",{dateOrder:["date","month","year"],shortDate:"%d.%m.%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:1,lessThanMinuteAgo:"kortere enn et minutt siden",minuteAgo:"omtrent et minutt siden",minutesAgo:"{delta} minutter siden",hourAgo:"omtrent en time siden",hoursAgo:"omtrent {delta} timer siden",dayAgo:"{delta} dag siden",daysAgo:"{delta} dager siden"}); Locale.define("no-NO","FormValidator",{required:"Dette feltet er pÃ¥krevd.",minLength:"Vennligst skriv inn minst {minLength} tegn (du skrev {length} tegn).",maxLength:"Vennligst skriv inn maksimalt {maxLength} tegn (du skrev {length} tegn).",integer:"Vennligst skriv inn et tall i dette feltet. Tall med desimaler (for eksempel 1,25) er ikke tillat.",numeric:'Vennligst skriv inn kun numeriske verdier i dette feltet (for eksempel "1", "1.1", "-1" eller "-1.1").',digits:"Vennligst bruk kun nummer og skilletegn i dette feltet.",alpha:"Vennligst bruk kun bokstaver (a-z) i dette feltet. Ingen mellomrom eller andre tegn er tillat.",alphanum:"Vennligst bruk kun bokstaver (a-z) eller nummer (0-9) i dette feltet. Ingen mellomrom eller andre tegn er tillat.",dateSuchAs:"Vennligst skriv inn en gyldig dato, som {date}",dateInFormatMDY:'Vennligst skriv inn en gyldig dato, i formatet MM/DD/YYYY (for eksempel "12/31/1999")',email:'Vennligst skriv inn en gyldig epost-adresse. For eksempel "espen@domene.no".',url:"Vennligst skriv inn en gyldig URL, for eksempel http://www.example.com.",currencyDollar:"Vennligst fyll ut et gyldig $ beløp. For eksempel $100.00 .",oneRequired:"Vennligst fyll ut noe i minst ett av disse feltene.",errorPrefix:"Feil: ",warningPrefix:"Advarsel: "}); Locale.define("pl-PL","Date",{months:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],months_abbr:["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],days:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],days_abbr:["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],dateOrder:["year","month","date"],shortDate:"%Y-%m-%d",shortTime:"%H:%M",AM:"nad ranem",PM:"po południu",firstDayOfWeek:1,ordinal:function(a){return(a>3&&a<21)?"ty":["ty","szy","gi","ci","ty"][Math.min(a%10,4)]; },lessThanMinuteAgo:"mniej niż minute temu",minuteAgo:"około minutę temu",minutesAgo:"{delta} minut temu",hourAgo:"około godzinę temu",hoursAgo:"około {delta} godzin temu",dayAgo:"Wczoraj",daysAgo:"{delta} dni temu",lessThanMinuteUntil:"za niecałą minutę",minuteUntil:"za około minutę",minutesUntil:"za {delta} minut",hourUntil:"za około godzinę",hoursUntil:"za około {delta} godzin",dayUntil:"za 1 dzień",daysUntil:"za {delta} dni"}); Locale.define("pl-PL","FormValidator",{required:"To pole jest wymagane.",minLength:"Wymagane jest przynajmniej {minLength} znaków (wpisanych zostało tylko {length}).",maxLength:"Dozwolone jest nie więcej niż {maxLength} znaków (wpisanych zostało {length})",integer:"To pole wymaga liczb całych. Liczby dziesiętne (np. 1.25) są niedozwolone.",numeric:'Prosimy używać tylko numerycznych wartości w tym polu (np. "1", "1.1", "-1" lub "-1.1").',digits:"Prosimy używać liczb oraz zankow punktuacyjnych w typ polu (dla przykładu, przy numerze telefonu myślniki i kropki są dozwolone).",alpha:"Prosimy używać tylko liter (a-z) w tym polu. Spacje oraz inne znaki są niedozwolone.",alphanum:"Prosimy używać tylko liter (a-z) lub liczb (0-9) w tym polu. Spacje oraz inne znaki są niedozwolone.",dateSuchAs:"Prosimy podać prawidłową datę w formacie: {date}",dateInFormatMDY:'Prosimy podać poprawną date w formacie DD.MM.RRRR (i.e. "12.01.2009")',email:'Prosimy podać prawidłowy adres e-mail, np. "jan@domena.pl".',url:"Prosimy podać prawidłowy adres URL, np. http://www.example.com.",currencyDollar:"Prosimy podać prawidłową sumę w PLN. Dla przykładu: 100.00 PLN.",oneRequired:"Prosimy wypełnić chociaż jedno z pól.",errorPrefix:"Błąd: ",warningPrefix:"Uwaga: ",noSpace:"W tym polu nie mogą znajdować się spacje.",reqChkByNode:"Brak zaznaczonych elementów.",requiredChk:"To pole jest wymagane.",reqChkByName:"Prosimy wybrać z {label}.",match:"To pole musi być takie samo jak {matchName}",startDate:"data początkowa",endDate:"data końcowa",currendDate:"aktualna data",afterDate:"Podana data poinna być taka sama lub po {label}.",beforeDate:"Podana data poinna być taka sama lub przed {label}.",startMonth:"Prosimy wybrać początkowy miesiąc.",sameMonth:"Te dwie daty muszą być w zakresie tego samego miesiąca - wymagana jest zmiana któregoś z pól."}); Locale.define("pt-PT","Date",{months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],months_abbr:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],days:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],days_abbr:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dateOrder:["date","month","year"],shortDate:"%d-%m-%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:"º",lessThanMinuteAgo:"há menos de um minuto",minuteAgo:"há cerca de um minuto",minutesAgo:"há {delta} minutos",hourAgo:"há cerca de uma hora",hoursAgo:"há cerca de {delta} horas",dayAgo:"há um dia",daysAgo:"há {delta} dias",weekAgo:"há uma semana",weeksAgo:"há {delta} semanas",monthAgo:"há um mês",monthsAgo:"há {delta} meses",yearAgo:"há um ano",yearsAgo:"há {delta} anos",lessThanMinuteUntil:"em menos de um minuto",minuteUntil:"em um minuto",minutesUntil:"em {delta} minutos",hourUntil:"em uma hora",hoursUntil:"em {delta} horas",dayUntil:"em um dia",daysUntil:"em {delta} dias",weekUntil:"em uma semana",weeksUntil:"em {delta} semanas",monthUntil:"em um mês",monthsUntil:"em {delta} meses",yearUntil:"em um ano",yearsUntil:"em {delta} anos"}); Locale.define("pt-BR","Date",{shortDate:"%d/%m/%Y"}).inherit("pt-PT","Date");Locale.define("pt-BR","FormValidator",{required:"Este campo é obrigatório.",minLength:"Digite pelo menos {minLength} caracteres (tamanho atual: {length}).",maxLength:"Não digite mais de {maxLength} caracteres (tamanho atual: {length}).",integer:"Por favor digite apenas um número inteiro neste campo. Não são permitidos números decimais (por exemplo, 1,25).",numeric:'Por favor digite apenas valores numéricos neste campo (por exemplo, "1" ou "1.1" ou "-1" ou "-1,1").',digits:"Por favor use apenas números e pontuação neste campo (por exemplo, um número de telefone com traços ou pontos é permitido).",alpha:"Por favor use somente letras (a-z). Espaço e outros caracteres não são permitidos.",alphanum:"Use somente letras (a-z) ou números (0-9) neste campo. Espaço e outros caracteres não são permitidos.",dateSuchAs:"Digite uma data válida, como {date}",dateInFormatMDY:'Digite uma data válida, como DD/MM/YYYY (por exemplo, "31/12/1999")',email:'Digite um endereço de email válido. Por exemplo "nome@dominio.com".',url:"Digite uma URL válida. Exemplo: http://www.example.com.",currencyDollar:"Digite um valor em dinheiro válido. Exemplo: R$100,00 .",oneRequired:"Digite algo para pelo menos um desses campos.",errorPrefix:"Erro: ",warningPrefix:"Aviso: ",noSpace:"Não é possível digitar espaços neste campo.",reqChkByNode:"Não foi selecionado nenhum item.",requiredChk:"Este campo é obrigatório.",reqChkByName:"Por favor digite um {label}.",match:"Este campo deve ser igual ao campo {matchName}.",startDate:"a data inicial",endDate:"a data final",currendDate:"a data atual",afterDate:"A data deve ser igual ou posterior a {label}.",beforeDate:"A data deve ser igual ou anterior a {label}.",startMonth:"Por favor selecione uma data inicial.",sameMonth:"Estas duas datas devem ter o mesmo mês - você deve modificar uma das duas.",creditcard:"O número do cartão de crédito informado é inválido. Por favor verifique o valor e tente novamente. {length} números informados."}); Locale.define("pt-PT","FormValidator",{required:"Este campo é necessário.",minLength:"Digite pelo menos{minLength} caracteres (comprimento {length} caracteres).",maxLength:"Não insira mais de {maxLength} caracteres (comprimento {length} caracteres).",integer:"Digite um número inteiro neste domínio. Com números decimais (por exemplo, 1,25), não são permitidas.",numeric:'Digite apenas valores numéricos neste domínio (p.ex., "1" ou "1.1" ou "-1" ou "-1,1").',digits:"Por favor, use números e pontuação apenas neste campo (p.ex., um número de telefone com traços ou pontos é permitida).",alpha:"Por favor use somente letras (a-z), com nesta área. Não utilize espaços nem outros caracteres são permitidos.",alphanum:"Use somente letras (a-z) ou números (0-9) neste campo. Não utilize espaços nem outros caracteres são permitidos.",dateSuchAs:"Digite uma data válida, como {date}",dateInFormatMDY:'Digite uma data válida, como DD/MM/YYYY (p.ex. "31/12/1999")',email:'Digite um endereço de email válido. Por exemplo "fred@domain.com".',url:"Digite uma URL válida, como http://www.example.com.",currencyDollar:"Digite um valor válido $. Por exemplo $ 100,00. ",oneRequired:"Digite algo para pelo menos um desses insumos.",errorPrefix:"Erro: ",warningPrefix:"Aviso: "}); (function(){var a=function(h,e,d,g,b){var c=h%10,f=h%100;if(c==1&&f!=11){return e;}else{if((c==2||c==3||c==4)&&!(f==12||f==13||f==14)){return d;}else{if(c==0||(c==5||c==6||c==7||c==8||c==9)||(f==11||f==12||f==13||f==14)){return g; }else{return b;}}}};Locale.define("ru-RU","Date",{months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],months_abbr:["янв","февр","март","апр","май","июнь","июль","авг","сент","окт","нояб","дек"],days:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],days_abbr:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],dateOrder:["date","month","year"],shortDate:"%d.%m.%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:"",lessThanMinuteAgo:"меньше минуты назад",minuteAgo:"минуту назад",minutesAgo:function(b){return"{delta} "+a(b,"минуту","минуты","минут")+" назад"; },hourAgo:"час назад",hoursAgo:function(b){return"{delta} "+a(b,"час","часа","часов")+" назад";},dayAgo:"вчера",daysAgo:function(b){return"{delta} "+a(b,"день","дня","дней")+" назад"; },weekAgo:"неделю назад",weeksAgo:function(b){return"{delta} "+a(b,"неделя","недели","недель")+" назад";},monthAgo:"месяц назад",monthsAgo:function(b){return"{delta} "+a(b,"месяц","месяца","месецев")+" назад"; },yearAgo:"год назад",yearsAgo:function(b){return"{delta} "+a(b,"год","года","лет")+" назад";},lessThanMinuteUntil:"меньше чем через минуту",minuteUntil:"через минуту",minutesUntil:function(b){return"через {delta} "+a(b,"час","часа","часов")+""; },hourUntil:"через час",hoursUntil:function(b){return"через {delta} "+a(b,"час","часа","часов")+"";},dayUntil:"завтра",daysUntil:function(b){return"через {delta} "+a(b,"день","дня","дней")+""; },weekUntil:"через неделю",weeksUntil:function(b){return"через {delta} "+a(b,"неделю","недели","недель")+"";},monthUntil:"через месяц",monthsUntil:function(b){return"через {delta} "+a(b,"месяц","месяца","месецев")+""; },yearUntil:"через",yearsUntil:function(b){return"через {delta} "+a(b,"год","года","лет")+"";}});})();Locale.define("ru-RU","FormValidator",{required:"Это поле обязательно к заполнению.",minLength:"Пожалуйста, введите хотя бы {minLength} символов (Вы ввели {length}).",maxLength:"Пожалуйста, введите не больше {maxLength} символов (Вы ввели {length}).",integer:"Пожалуйста, введите в это поле число. Дробные числа (например 1.25) тут не разрешены.",numeric:'Пожалуйста, введите в это поле число (например "1" или "1.1", или "-1", или "-1.1").',digits:"В этом поле Вы можете использовать только цифры и знаки пунктуации (например, телефонный номер со знаками дефиса или с точками).",alpha:"В этом поле можно использовать только латинские буквы (a-z). Пробелы и другие символы запрещены.",alphanum:"В этом поле можно использовать только латинские буквы (a-z) и цифры (0-9). Пробелы и другие символы запрещены.",dateSuchAs:"Пожалуйста, введите корректную дату {date}",dateInFormatMDY:'Пожалуйста, введите дату в формате ММ/ДД/ГГГГ (например "12/31/1999")',email:'Пожалуйста, введите корректный емейл-адрес. Для примера "fred@domain.com".',url:"Пожалуйста, введите правильную ссылку вида http://www.example.com.",currencyDollar:"Пожалуйста, введите сумму в долларах. Например: $100.00 .",oneRequired:"Пожалуйста, выберите хоть что-нибудь в одном из этих полей.",errorPrefix:"Ошибка: ",warningPrefix:"Внимание: "}); (function(){var a=function(f,d,c,e,b){return(f>=1&&f<=3)?arguments[f]:b;};Locale.define("si-SI","Date",{months:["januar","februar","marec","april","maj","junij","julij","avgust","september","oktober","november","december"],months_abbr:["jan","feb","mar","apr","maj","jun","jul","avg","sep","okt","nov","dec"],days:["nedelja","ponedeljek","torek","sreda","četrtek","petek","sobota"],days_abbr:["ned","pon","tor","sre","čet","pet","sob"],dateOrder:["date","month","year"],shortDate:"%d.%m.%Y",shortTime:"%H.%M",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:".",lessThanMinuteAgo:"manj kot minuto nazaj",minuteAgo:"minuto nazaj",minutesAgo:function(b){return"{delta} "+a(b,"minuto","minuti","minute","minut")+" nazaj"; },hourAgo:"uro nazaj",hoursAgo:function(b){return"{delta} "+a(b,"uro","uri","ure","ur")+" nazaj";},dayAgo:"dan nazaj",daysAgo:function(b){return"{delta} "+a(b,"dan","dneva","dni","dni")+" nazaj"; },weekAgo:"teden nazaj",weeksAgo:function(b){return"{delta} "+a(b,"teden","tedna","tedne","tednov")+" nazaj";},monthAgo:"mesec nazaj",monthsAgo:function(b){return"{delta} "+a(b,"mesec","meseca","mesece","mesecov")+" nazaj"; },yearthAgo:"leto nazaj",yearsAgo:function(b){return"{delta} "+a(b,"leto","leti","leta","let")+" nazaj";},lessThanMinuteUntil:"še manj kot minuto",minuteUntil:"še minuta",minutesUntil:function(b){return"še {delta} "+a(b,"minuta","minuti","minute","minut"); },hourUntil:"še ura",hoursUntil:function(b){return"še {delta} "+a(b,"ura","uri","ure","ur");},dayUntil:"še dan",daysUntil:function(b){return"še {delta} "+a(b,"dan","dneva","dnevi","dni"); },weekUntil:"še tedn",weeksUntil:function(b){return"še {delta} "+a(b,"teden","tedna","tedni","tednov");},monthUntil:"še mesec",monthsUntil:function(b){return"še {delta} "+a(b,"mesec","meseca","meseci","mesecov"); },yearUntil:"še leto",yearsUntil:function(b){return"še {delta} "+a(b,"leto","leti","leta","let");}});})();Locale.define("si-SI","FormValidator",{required:"To polje je obvezno",minLength:"Prosim, vnesite vsaj {minLength} znakov (vnesli ste {length} znakov).",maxLength:"Prosim, ne vnesite več kot {maxLength} znakov (vnesli ste {length} znakov).",integer:"Prosim, vnesite celo število. Decimalna števila (kot 1,25) niso dovoljena.",numeric:'Prosim, vnesite samo numerične vrednosti (kot "1" ali "1.1" ali "-1" ali "-1.1").',digits:"Prosim, uporabite številke in ločila le na tem polju (na primer, dovoljena je telefonska številka z pomišlaji ali pikami).",alpha:"Prosim, uporabite le črke v tem plju. Presledki in drugi znaki niso dovoljeni.",alphanum:"Prosim, uporabite samo črke ali številke v tem polju. Presledki in drugi znaki niso dovoljeni.",dateSuchAs:"Prosim, vnesite pravilen datum kot {date}",dateInFormatMDY:'Prosim, vnesite pravilen datum kot MM.DD.YYYY (primer "12.31.1999")',email:'Prosim, vnesite pravilen email naslov. Na primer "fred@domain.com".',url:"Prosim, vnesite pravilen URL kot http://www.example.com.",currencyDollar:"Prosim, vnesit epravilno vrednost €. Primer 100,00€ .",oneRequired:"Prosimo, vnesite nekaj za vsaj eno izmed teh polj.",errorPrefix:"Napaka: ",warningPrefix:"Opozorilo: ",noSpace:"To vnosno polje ne dopušča presledkov.",reqChkByNode:"Nič niste izbrali.",requiredChk:"To polje je obvezno",reqChkByName:"Prosim, izberite {label}.",match:"To polje se mora ujemati z poljem {matchName}",startDate:"datum začetka",endDate:"datum konca",currendDate:"trenuten datum",afterDate:"Datum bi moral biti isti ali po {label}.",beforeDate:"Datum bi moral biti isti ali pred {label}.",startMonth:"Prosim, vnesite začetni datum",sameMonth:"Ta dva datuma morata biti v istem mesecu - premeniti morate eno ali drugo.",creditcard:"Številka kreditne kartice ni pravilna. Preverite številko ali poskusite še enkrat. Vnešenih {length} znakov."}); Locale.define("sv-SE","Date",{months:["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],months_abbr:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],days:["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],days_abbr:["sön","mån","tis","ons","tor","fre","lör"],dateOrder:["year","month","date"],shortDate:"%Y-%m-%d",shortTime:"%H:%M",AM:"",PM:"",firstDayOfWeek:1,ordinal:"",lessThanMinuteAgo:"mindre än en minut sedan",minuteAgo:"ungefär en minut sedan",minutesAgo:"{delta} minuter sedan",hourAgo:"ungefär en timme sedan",hoursAgo:"ungefär {delta} timmar sedan",dayAgo:"1 dag sedan",daysAgo:"{delta} dagar sedan",lessThanMinuteUntil:"mindre än en minut sedan",minuteUntil:"ungefär en minut sedan",minutesUntil:"{delta} minuter sedan",hourUntil:"ungefär en timme sedan",hoursUntil:"ungefär {delta} timmar sedan",dayUntil:"1 dag sedan",daysUntil:"{delta} dagar sedan"}); Locale.define("sv-SE","FormValidator",{required:"Fältet är obligatoriskt.",minLength:"Ange minst {minLength} tecken (du angav {length} tecken).",maxLength:"Ange högst {maxLength} tecken (du angav {length} tecken). ",integer:"Ange ett heltal i fältet. Tal med decimaler (t.ex. 1,25) är inte tillåtna.",numeric:'Ange endast numeriska värden i detta fält (t.ex. "1" eller "1.1" eller "-1" eller "-1,1").',digits:"Använd endast siffror och skiljetecken i detta fält (till exempel ett telefonnummer med bindestreck tillåtet).",alpha:"Använd endast bokstäver (a-ö) i detta fält. Inga mellanslag eller andra tecken är tillåtna.",alphanum:"Använd endast bokstäver (a-ö) och siffror (0-9) i detta fält. Inga mellanslag eller andra tecken är tillåtna.",dateSuchAs:"Ange ett giltigt datum som t.ex. {date}",dateInFormatMDY:'Ange ett giltigt datum som t.ex. YYYY-MM-DD (i.e. "1999-12-31")',email:'Ange en giltig e-postadress. Till exempel "erik@domain.com".',url:"Ange en giltig webbadress som http://www.example.com.",currencyDollar:"Ange en giltig belopp. Exempelvis 100,00.",oneRequired:"Vänligen ange minst ett av dessa alternativ.",errorPrefix:"Fel: ",warningPrefix:"Varning: ",noSpace:"Det får inte finnas några mellanslag i detta fält.",reqChkByNode:"Inga objekt är valda.",requiredChk:"Detta är ett obligatoriskt fält.",reqChkByName:"Välj en {label}.",match:"Detta fält måste matcha {matchName}",startDate:"startdatumet",endDate:"slutdatum",currendDate:"dagens datum",afterDate:"Datumet bör vara samma eller senare än {label}.",beforeDate:"Datumet bör vara samma eller tidigare än {label}.",startMonth:"Välj en start månad",sameMonth:"Dessa två datum måste vara i samma månad - du måste ändra det ena eller det andra."}); (function(){var a=function(j,e,c,i,b){var h=(j/10).toInt(),g=j%10,f=(j/100).toInt();if(h==1&&j>10){return i;}if(g==1){return e;}if(g>0&&g<5){return c;}return i; };Locale.define("uk-UA","Date",{months:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],months_abbr:["Січ","Лют","Бер","Квіт","Трав","Черв","Лип","Серп","Вер","Жовт","Лист","Груд"],days:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота"],days_abbr:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H:%M",AM:"до полудня",PM:"по полудню",firstDayOfWeek:1,ordinal:"",lessThanMinuteAgo:"меньше хвилини тому",minuteAgo:"хвилину тому",minutesAgo:function(b){return"{delta} "+a(b,"хвилину","хвилини","хвилин")+" тому"; },hourAgo:"годину тому",hoursAgo:function(b){return"{delta} "+a(b,"годину","години","годин")+" тому";},dayAgo:"вчора",daysAgo:function(b){return"{delta} "+a(b,"день","дня","днів")+" тому"; },weekAgo:"тиждень тому",weeksAgo:function(b){return"{delta} "+a(b,"тиждень","тижні","тижнів")+" тому";},monthAgo:"місяць тому",monthsAgo:function(b){return"{delta} "+a(b,"місяць","місяці","місяців")+" тому"; },yearAgo:"рік тому",yearsAgo:function(b){return"{delta} "+a(b,"рік","роки","років")+" тому";},lessThanMinuteUntil:"за мить",minuteUntil:"через хвилину",minutesUntil:function(b){return"через {delta} "+a(b,"хвилину","хвилини","хвилин"); },hourUntil:"через годину",hoursUntil:function(b){return"через {delta} "+a(b,"годину","години","годин");},dayUntil:"завтра",daysUntil:function(b){return"через {delta} "+a(b,"день","дня","днів"); },weekUntil:"через тиждень",weeksUntil:function(b){return"через {delta} "+a(b,"тиждень","тижні","тижнів");},monthUntil:"через місяць",monthesUntil:function(b){return"через {delta} "+a(b,"місяць","місяці","місяців"); },yearUntil:"через рік",yearsUntil:function(b){return"через {delta} "+a(b,"рік","роки","років");}});})();Locale.define("uk-UA","FormValidator",{required:"Це поле повинне бути заповненим.",minLength:"Введіть хоча б {minLength} символів (Ви ввели {length}).",maxLength:"Кількість символів не може бути більше {maxLength} (Ви ввели {length}).",integer:"Введіть в це поле число. Дробові числа (наприклад 1.25) не дозволені.",numeric:'Введіть в це поле число (наприклад "1" або "1.1", або "-1", або "-1.1").',digits:"В цьому полі ви можете використовувати лише цифри і знаки пунктіації (наприклад, телефонний номер з знаками дефізу або з крапками).",alpha:"В цьому полі можна використовувати лише латинські літери (a-z). Пробіли і інші символи заборонені.",alphanum:"В цьому полі можна використовувати лише латинські літери (a-z) і цифри (0-9). Пробіли і інші символи заборонені.",dateSuchAs:"Введіть коректну дату {date}.",dateInFormatMDY:'Введіть дату в форматі ММ/ДД/РРРР (наприклад "12/31/2009").',email:'Введіть коректну адресу електронної пошти (наприклад "name@domain.com").',url:"Введіть коректне інтернет-посилання (наприклад http://www.example.com).",currencyDollar:'Введіть суму в доларах (наприклад "$100.00").',oneRequired:"Заповніть одне з полів.",errorPrefix:"Помилка: ",warningPrefix:"Увага: ",noSpace:"Пробіли заборонені.",reqChkByNode:"Не відмічено жодного варіанту.",requiredChk:"Це поле повинне бути віміченим.",reqChkByName:"Будь ласка, відмітьте {label}.",match:"Це поле повинно відповідати {matchName}",startDate:"початкова дата",endDate:"кінцева дата",currendDate:"сьогоднішня дата",afterDate:"Ця дата повинна бути такою ж, або пізнішою за {label}.",beforeDate:"Ця дата повинна бути такою ж, або ранішою за {label}.",startMonth:"Будь ласка, виберіть початковий місяць",sameMonth:"Ці дати повинні відноситись одного і того ж місяця. Будь ласка, змініть одну з них.",creditcard:"Номер кредитної карти введений неправильно. Будь ласка, перевірте його. Введено {length} символів."}); Locale.define("zh-CHS","Date",{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],months_abbr:["一","二","三","四","五","六","七","八","九","十","十一","十二"],days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],days_abbr:["日","一","二","三","四","五","六"],dateOrder:["year","month","date"],shortDate:"%Y-%m-%d",shortTime:"%I:%M%p",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:"",lessThanMinuteAgo:"不到1分钟前",minuteAgo:"大约1分钟前",minutesAgo:"{delta}分钟之前",hourAgo:"大约1小时前",hoursAgo:"大约{delta}小时前",dayAgo:"1天前",daysAgo:"{delta}天前",weekAgo:"1星期前",weeksAgo:"{delta}星期前",monthAgo:"1个月前",monthsAgo:"{delta}个月前",yearAgo:"1年前",yearsAgo:"{delta}年前",lessThanMinuteUntil:"从现在开始不到1分钟",minuteUntil:"从现在开始約1分钟",minutesUntil:"从现在开始约{delta}分钟",hourUntil:"从现在开始1小时",hoursUntil:"从现在开始约{delta}小时",dayUntil:"从现在开始1天",daysUntil:"从现在开始{delta}天",weekUntil:"从现在开始1星期",weeksUntil:"从现在开始{delta}星期",monthUntil:"从现在开始一个月",monthsUntil:"从现在开始{delta}个月",yearUntil:"从现在开始1年",yearsUntil:"从现在开始{delta}年"}); Locale.define("zh-CHT","Date",{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],months_abbr:["一","二","三","四","五","六","七","八","九","十","十一","十二"],days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],days_abbr:["日","一","二","三","四","五","六"],dateOrder:["year","month","date"],shortDate:"%Y-%m-%d",shortTime:"%I:%M%p",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:"",lessThanMinuteAgo:"不到1分鐘前",minuteAgo:"大約1分鐘前",minutesAgo:"{delta}分鐘之前",hourAgo:"大約1小時前",hoursAgo:"大約{delta}小時前",dayAgo:"1天前",daysAgo:"{delta}天前",weekAgo:"1星期前",weeksAgo:"{delta}星期前",monthAgo:"1个月前",monthsAgo:"{delta}个月前",yearAgo:"1年前",yearsAgo:"{delta}年前",lessThanMinuteUntil:"從現在開始不到1分鐘",minuteUntil:"從現在開始約1分鐘",minutesUntil:"從現在開始約{delta}分鐘",hourUntil:"從現在開始1小時",hoursUntil:"從現在開始約{delta}小時",dayUntil:"從現在開始1天",daysUntil:"從現在開始{delta}天",weekUntil:"從現在開始1星期",weeksUntil:"從現在開始{delta}星期",monthUntil:"從現在開始一個月",monthsUntil:"從現在開始{delta}個月",yearUntil:"從現在開始1年",yearsUntil:"從現在開始{delta}年"}); Locale.define("zh-CHS","FormValidator",{required:"此项必填。",minLength:"请至少输入 {minLength} 个字符 (已输入 {length} 个)。",maxLength:"最多只能输入 {maxLength} 个字符 (已输入 {length} 个)。",integer:'请输入一个整数,不能包含小数点。例如:"1", "200"。',numeric:'请输入一个数字,例如:"1", "1.1", "-1", "-1.1"。',digits:"请输入由数字和标点符号组成的内容。例如电话号码。",alpha:"请输入 A-Z 的 26 个字母,不能包含空格或任何其他字符。",alphanum:"请输入 A-Z 的 26 个字母或 0-9 的 10 个数字,不能包含空格或任何其他字符。",dateSuchAs:"请输入合法的日期格式,如:{date}。",dateInFormatMDY:'请输入合法的日期格式,例如:YYYY-MM-DD ("2010-12-31")。',email:'请输入合法的电子信箱地址,例如:"fred@domain.com"。',url:"请输入合法的 Url 地址,例如:http://www.example.com。",currencyDollar:"请输入合法的货币符号,例如:¥100.0",oneRequired:"请至少选择一项。",errorPrefix:"错误:",warningPrefix:"警告:",noSpace:"不能包含空格。",reqChkByNode:"未选择任何内容。",requiredChk:"此项必填。",reqChkByName:"请选择 {label}.",match:"必须与{matchName}相匹配",startDate:"起始日期",endDate:"结束日期",currendDate:"当前日期",afterDate:"日期必须等于或晚于 {label}.",beforeDate:"日期必须早于或等于 {label}.",startMonth:"请选择起始月份",sameMonth:"您必须修改两个日期中的一个,以确保它们在同一月份。",creditcard:"您输入的信用卡号码不正确。当前已输入{length}个字符。"}); Locale.define("zh-CHT","FormValidator",{required:"此項必填。 ",minLength:"請至少輸入{minLength} 個字符(已輸入{length} 個)。 ",maxLength:"最多只能輸入{maxLength} 個字符(已輸入{length} 個)。 ",integer:'請輸入一個整數,不能包含小數點。例如:"1", "200"。 ',numeric:'請輸入一個數字,例如:"1", "1.1", "-1", "-1.1"。 ',digits:"請輸入由數字和標點符號組成的內容。例如電話號碼。 ",alpha:"請輸入AZ 的26 個字母,不能包含空格或任何其他字符。 ",alphanum:"請輸入AZ 的26 個字母或0-9 的10 個數字,不能包含空格或任何其他字符。 ",dateSuchAs:"請輸入合法的日期格式,如:{date}。 ",dateInFormatMDY:'請輸入合法的日期格式,例如:YYYY-MM-DD ("2010-12-31")。 ',email:'請輸入合法的電子信箱地址,例如:"fred@domain.com"。 ',url:"請輸入合法的Url 地址,例如:http://www.example.com。 ",currencyDollar:"請輸入合法的貨幣符號,例如:¥100.0",oneRequired:"請至少選擇一項。 ",errorPrefix:"錯誤:",warningPrefix:"警告:",noSpace:"不能包含空格。 ",reqChkByNode:"未選擇任何內容。 ",requiredChk:"此項必填。 ",reqChkByName:"請選擇 {label}.",match:"必須與{matchName}相匹配",startDate:"起始日期",endDate:"結束日期",currendDate:"當前日期",afterDate:"日期必須等於或晚於{label}.",beforeDate:"日期必須早於或等於{label}.",startMonth:"請選擇起始月份",sameMonth:"您必須修改兩個日期中的一個,以確保它們在同一月份。 ",creditcard:"您輸入的信用卡號碼不正確。當前已輸入{length}個字符。 "}); Form.Validator.add("validate-currency-yuan",{errorMsg:function(){return Form.Validator.getMsg("currencyYuan");},test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^¥?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/).test(a.get("value")); }});melange-0.5.2/data/common/core/mootools.js000066400000000000000000002741521217205050200204750ustar00rootroot00000000000000/* --- MooTools: the javascript framework web build: - http://mootools.net/core/76bf47062d6c1983d66ce47ad66aa0e0 packager build: - packager build Core/Core Core/Array Core/String Core/Number Core/Function Core/Object Core/Event Core/Browser Core/Class Core/Class.Extras Core/Slick.Parser Core/Slick.Finder Core/Element Core/Element.Style Core/Element.Event Core/Element.Delegation Core/Element.Dimensions Core/Fx Core/Fx.CSS Core/Fx.Tween Core/Fx.Morph Core/Fx.Transitions Core/Request Core/Request.HTML Core/Request.JSON Core/Cookie Core/JSON Core/DOMReady Core/Swiff copyrights: - [MooTools](http://mootools.net) licenses: - [MIT License](http://mootools.net/license.txt) ... */ (function(){this.MooTools={version:"1.4.5",build:"ab8ea8824dc3b24b6666867a2c4ed58ebb762cf0"};var e=this.typeOf=function(i){if(i==null){return"null";}if(i.$family!=null){return i.$family(); }if(i.nodeName){if(i.nodeType==1){return"element";}if(i.nodeType==3){return(/\S/).test(i.nodeValue)?"textnode":"whitespace";}}else{if(typeof i.length=="number"){if(i.callee){return"arguments"; }if("item" in i){return"collection";}}}return typeof i;};var u=this.instanceOf=function(w,i){if(w==null){return false;}var v=w.$constructor||w.constructor; while(v){if(v===i){return true;}v=v.parent;}if(!w.hasOwnProperty){return false;}return w instanceof i;};var f=this.Function;var r=true;for(var q in {toString:1}){r=null; }if(r){r=["hasOwnProperty","valueOf","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","constructor"];}f.prototype.overloadSetter=function(v){var i=this; return function(x,w){if(x==null){return this;}if(v||typeof x!="string"){for(var y in x){i.call(this,y,x[y]);}if(r){for(var z=r.length;z--;){y=r[z];if(x.hasOwnProperty(y)){i.call(this,y,x[y]); }}}}else{i.call(this,x,w);}return this;};};f.prototype.overloadGetter=function(v){var i=this;return function(x){var y,w;if(typeof x!="string"){y=x;}else{if(arguments.length>1){y=arguments; }else{if(v){y=[x];}}}if(y){w={};for(var z=0;z>>0; b>>0;b>>0;for(var a=(d<0)?Math.max(0,b+d):d||0;a>>0,b=Array(d);for(var a=0;a>>0; b-1:String(this).indexOf(a)>-1;},trim:function(){return String(this).replace(/^\s+|\s+$/g,""); },clean:function(){return String(this).replace(/\s+/g," ").trim();},camelCase:function(){return String(this).replace(/-\D/g,function(a){return a.charAt(1).toUpperCase(); });},hyphenate:function(){return String(this).replace(/[A-Z]/g,function(a){return("-"+a.charAt(0).toLowerCase());});},capitalize:function(){return String(this).replace(/\b[a-z]/g,function(a){return a.toUpperCase(); });},escapeRegExp:function(){return String(this).replace(/([-.*+?^${}()|[\]\/\\])/g,"\\$1");},toInt:function(a){return parseInt(this,a||10);},toFloat:function(){return parseFloat(this); },hexToRgb:function(b){var a=String(this).match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/);return(a)?a.slice(1).hexToRgb(b):null;},rgbToHex:function(b){var a=String(this).match(/\d{1,3}/g); return(a)?a.rgbToHex(b):null;},substitute:function(a,b){return String(this).replace(b||(/\\?\{([^{}]+)\}/g),function(d,c){if(d.charAt(0)=="\\"){return d.slice(1); }return(a[c]!=null)?a[c]:"";});}});Number.implement({limit:function(b,a){return Math.min(a,Math.max(b,this));},round:function(a){a=Math.pow(10,a||0).toFixed(a<0?-a:0); return Math.round(this*a)/a;},times:function(b,c){for(var a=0;a1?Array.slice(arguments,1):null,d=function(){};var c=function(){var g=e,h=arguments.length;if(this instanceof c){d.prototype=a.prototype; g=new d;}var f=(!b&&!h)?a.call(g):a.apply(g,b&&h?b.concat(Array.slice(arguments)):b||arguments);return g==e?f:g;};return c;},pass:function(b,c){var a=this; if(b!=null){b=Array.from(b);}return function(){return a.apply(c,b||arguments);};},delay:function(b,c,a){return setTimeout(this.pass((a==null?[]:a),c),b); },periodical:function(c,b,a){return setInterval(this.pass((a==null?[]:a),b),c);}});delete Function.prototype.bind;Function.implement({create:function(b){var a=this; b=b||{};return function(d){var c=b.arguments;c=(c!=null)?Array.from(c):Array.slice(arguments,(b.event)?1:0);if(b.event){c=[d||window.event].extend(c);}var e=function(){return a.apply(b.bind||null,c); };if(b.delay){return setTimeout(e,b.delay);}if(b.periodical){return setInterval(e,b.periodical);}if(b.attempt){return Function.attempt(e);}return e();}; },bind:function(c,b){var a=this;if(b!=null){b=Array.from(b);}return function(){return a.apply(c,b||arguments);};},bindWithEvent:function(c,b){var a=this; if(b!=null){b=Array.from(b);}return function(d){return a.apply(c,(b==null)?arguments:[d].concat(b));};},run:function(a,b){return this.apply(b,Array.from(a)); }});if(Object.create==Function.prototype.create){Object.create=null;}var $try=Function.attempt;(function(){var a=Object.prototype.hasOwnProperty;Object.extend({subset:function(d,g){var f={}; for(var e=0,b=g.length;e]*>([\s\S]*?)<\/script>/gi,function(r,s){e+=s+"\n"; return"";});if(p===true){o.exec(e);}else{if(typeOf(p)=="function"){p(e,q);}}return q;});o.extend({Document:this.Document,Window:this.Window,Element:this.Element,Event:this.Event}); this.Window=this.$constructor=new Type("Window",function(){});this.$family=Function.from("window").hide();Window.mirror(function(e,p){h[e]=p;});this.Document=k.$constructor=new Type("Document",function(){}); k.$family=Function.from("document").hide();Document.mirror(function(e,p){k[e]=p;});k.html=k.documentElement;if(!k.head){k.head=k.getElementsByTagName("head")[0]; }if(k.execCommand){try{k.execCommand("BackgroundImageCache",false,true);}catch(g){}}if(this.attachEvent&&!this.addEventListener){var c=function(){this.detachEvent("onunload",c); k.head=k.html=k.window=null;};this.attachEvent("onunload",c);}var m=Array.from;try{m(k.html.childNodes);}catch(g){Array.from=function(p){if(typeof p!="string"&&Type.isEnumerable(p)&&typeOf(p)!="array"){var e=p.length,q=new Array(e); while(e--){q[e]=p[e];}return q;}return m(p);};var l=Array.prototype,n=l.slice;["pop","push","reverse","shift","sort","splice","unshift","concat","join","slice"].each(function(e){var p=l[e]; Array[e]=function(q){return p.apply(Array.from(q),n.call(arguments,1));};});}if(o.Platform.ios){o.Platform.ipod=true;}o.Engine={};var d=function(p,e){o.Engine.name=p; o.Engine[p+e]=true;o.Engine.version=e;};if(o.ie){o.Engine.trident=true;switch(o.version){case 6:d("trident",4);break;case 7:d("trident",5);break;case 8:d("trident",6); }}if(o.firefox){o.Engine.gecko=true;if(o.version>=3){d("gecko",19);}else{d("gecko",18);}}if(o.safari||o.chrome){o.Engine.webkit=true;switch(o.version){case 2:d("webkit",419); break;case 3:d("webkit",420);break;case 4:d("webkit",525);}}if(o.opera){o.Engine.presto=true;if(o.version>=9.6){d("presto",960);}else{if(o.version>=9.5){d("presto",950); }else{d("presto",925);}}}if(o.name=="unknown"){switch((a.match(/(?:webkit|khtml|gecko)/)||[])[0]){case"webkit":case"khtml":o.Engine.webkit=true;break;case"gecko":o.Engine.gecko=true; }}this.$exec=o.exec;})();(function(){var b={};var a=this.DOMEvent=new Type("DOMEvent",function(c,g){if(!g){g=window;}c=c||g.event;if(c.$extended){return c; }this.event=c;this.$extended=true;this.shift=c.shiftKey;this.control=c.ctrlKey;this.alt=c.altKey;this.meta=c.metaKey;var i=this.type=c.type;var h=c.target||c.srcElement; while(h&&h.nodeType==3){h=h.parentNode;}this.target=document.id(h);if(i.indexOf("key")==0){var d=this.code=(c.which||c.keyCode);this.key=b[d]||Object.keyOf(Event.Keys,d); if(i=="keydown"){if(d>111&&d<124){this.key="f"+(d-111);}else{if(d>95&&d<106){this.key=d-96;}}}if(this.key==null){this.key=String.fromCharCode(d).toLowerCase(); }}else{if(i=="click"||i=="dblclick"||i=="contextmenu"||i=="DOMMouseScroll"||i.indexOf("mouse")==0){var j=g.document;j=(!j.compatMode||j.compatMode=="CSS1Compat")?j.html:j.body; this.page={x:(c.pageX!=null)?c.pageX:c.clientX+j.scrollLeft,y:(c.pageY!=null)?c.pageY:c.clientY+j.scrollTop};this.client={x:(c.pageX!=null)?c.pageX-g.pageXOffset:c.clientX,y:(c.pageY!=null)?c.pageY-g.pageYOffset:c.clientY}; if(i=="DOMMouseScroll"||i=="mousewheel"){this.wheel=(c.wheelDelta)?c.wheelDelta/120:-(c.detail||0)/3;}this.rightClick=(c.which==3||c.button==2);if(i=="mouseover"||i=="mouseout"){var k=c.relatedTarget||c[(i=="mouseover"?"from":"to")+"Element"]; while(k&&k.nodeType==3){k=k.parentNode;}this.relatedTarget=document.id(k);}}else{if(i.indexOf("touch")==0||i.indexOf("gesture")==0){this.rotation=c.rotation; this.scale=c.scale;this.targetTouches=c.targetTouches;this.changedTouches=c.changedTouches;var f=this.touches=c.touches;if(f&&f[0]){var e=f[0];this.page={x:e.pageX,y:e.pageY}; this.client={x:e.clientX,y:e.clientY};}}}}if(!this.client){this.client={};}if(!this.page){this.page={};}});a.implement({stop:function(){return this.preventDefault().stopPropagation(); },stopPropagation:function(){if(this.event.stopPropagation){this.event.stopPropagation();}else{this.event.cancelBubble=true;}return this;},preventDefault:function(){if(this.event.preventDefault){this.event.preventDefault(); }else{this.event.returnValue=false;}return this;}});a.defineKey=function(d,c){b[d]=c;return this;};a.defineKeys=a.defineKey.overloadSetter(true);a.defineKeys({"38":"up","40":"down","37":"left","39":"right","27":"esc","32":"space","8":"backspace","9":"tab","46":"delete","13":"enter"}); })();var Event=DOMEvent;Event.Keys={};Event.Keys=new Hash(Event.Keys);(function(){var a=this.Class=new Type("Class",function(h){if(instanceOf(h,Function)){h={initialize:h}; }var g=function(){e(this);if(g.$prototyping){return this;}this.$caller=null;var i=(this.initialize)?this.initialize.apply(this,arguments):this;this.$caller=this.caller=null; return i;}.extend(this).implement(h);g.$constructor=a;g.prototype.$constructor=g;g.prototype.parent=c;return g;});var c=function(){if(!this.$caller){throw new Error('The method "parent" cannot be called.'); }var g=this.$caller.$name,h=this.$caller.$owner.parent,i=(h)?h.prototype[g]:null;if(!i){throw new Error('The method "'+g+'" has no parent.');}return i.apply(this,arguments); };var e=function(g){for(var h in g){var j=g[h];switch(typeOf(j)){case"object":var i=function(){};i.prototype=j;g[h]=e(new i);break;case"array":g[h]=j.clone(); break;}}return g;};var b=function(g,h,j){if(j.$origin){j=j.$origin;}var i=function(){if(j.$protected&&this.$caller==null){throw new Error('The method "'+h+'" cannot be called.'); }var l=this.caller,m=this.$caller;this.caller=m;this.$caller=i;var k=j.apply(this,arguments);this.$caller=m;this.caller=l;return k;}.extend({$owner:g,$origin:j,$name:h}); return i;};var f=function(h,i,g){if(a.Mutators.hasOwnProperty(h)){i=a.Mutators[h].call(this,i);if(i==null){return this;}}if(typeOf(i)=="function"){if(i.$hidden){return this; }this.prototype[h]=(g)?i:b(this,h,i);}else{Object.merge(this.prototype,h,i);}return this;};var d=function(g){g.$prototyping=true;var h=new g;delete g.$prototyping; return h;};a.implement("implement",f.overloadSetter());a.Mutators={Extends:function(g){this.parent=g;this.prototype=d(g);},Implements:function(g){Array.from(g).each(function(j){var h=new j; for(var i in h){f.call(this,i,h[i],true);}},this);}};})();(function(){this.Chain=new Class({$chain:[],chain:function(){this.$chain.append(Array.flatten(arguments)); return this;},callChain:function(){return(this.$chain.length)?this.$chain.shift().apply(this,arguments):false;},clearChain:function(){this.$chain.empty(); return this;}});var a=function(b){return b.replace(/^on([A-Z])/,function(c,d){return d.toLowerCase();});};this.Events=new Class({$events:{},addEvent:function(d,c,b){d=a(d); if(c==$empty){return this;}this.$events[d]=(this.$events[d]||[]).include(c);if(b){c.internal=true;}return this;},addEvents:function(b){for(var c in b){this.addEvent(c,b[c]); }return this;},fireEvent:function(e,c,b){e=a(e);var d=this.$events[e];if(!d){return this;}c=Array.from(c);d.each(function(f){if(b){f.delay(b,this,c);}else{f.apply(this,c); }},this);return this;},removeEvent:function(e,d){e=a(e);var c=this.$events[e];if(c&&!d.internal){var b=c.indexOf(d);if(b!=-1){delete c[b];}}return this; },removeEvents:function(d){var e;if(typeOf(d)=="object"){for(e in d){this.removeEvent(e,d[e]);}return this;}if(d){d=a(d);}for(e in this.$events){if(d&&d!=e){continue; }var c=this.$events[e];for(var b=c.length;b--;){if(b in c){this.removeEvent(e,c[b]);}}}return this;}});this.Options=new Class({setOptions:function(){var b=this.options=Object.merge.apply(null,[{},this.options].append(arguments)); if(this.addEvent){for(var c in b){if(typeOf(b[c])!="function"||!(/^on[A-Z]/).test(c)){continue;}this.addEvent(c,b[c]);delete b[c];}}return this;}});})(); (function(){var k,n,l,g,a={},c={},m=/\\/g;var e=function(q,p){if(q==null){return null;}if(q.Slick===true){return q;}q=(""+q).replace(/^\s+|\s+$/g,"");g=!!p; var o=(g)?c:a;if(o[q]){return o[q];}k={Slick:true,expressions:[],raw:q,reverse:function(){return e(this.raw,true);}};n=-1;while(q!=(q=q.replace(j,b))){}k.length=k.expressions.length; return o[k.raw]=(g)?h(k):k;};var i=function(o){if(o==="!"){return" ";}else{if(o===" "){return"!";}else{if((/^!/).test(o)){return o.replace(/^!/,"");}else{return"!"+o; }}}};var h=function(u){var r=u.expressions;for(var p=0;p+)\\s*|(\\s+)|(+|\\*)|\\#(+)|\\.(+)|\\[\\s*(+)(?:\\s*([*^$!~|]?=)(?:\\s*(?:([\"']?)(.*?)\\9)))?\\s*\\](?!\\])|(:+)(+)(?:\\((?:(?:([\"'])([^\\13]*)\\13)|((?:\\([^)]+\\)|[^()]*)+))\\))?)".replace(//,"["+f(">+~`!@$%^&={}\\;/g,"(?:[\\w\\u00a1-\\uFFFF-]|\\\\[^\\s0-9a-f])").replace(//g,"(?:[:\\w\\u00a1-\\uFFFF-]|\\\\[^\\s0-9a-f])")); function b(x,s,D,z,r,C,q,B,A,y,u,F,G,v,p,w){if(s||n===-1){k.expressions[++n]=[];l=-1;if(s){return"";}}if(D||z||l===-1){D=D||" ";var t=k.expressions[n]; if(g&&t[l]){t[l].reverseCombinator=i(D);}t[++l]={combinator:D,tag:"*"};}var o=k.expressions[n][l];if(r){o.tag=r.replace(m,"");}else{if(C){o.id=C.replace(m,""); }else{if(q){q=q.replace(m,"");if(!o.classList){o.classList=[];}if(!o.classes){o.classes=[];}o.classList.push(q);o.classes.push({value:q,regexp:new RegExp("(^|\\s)"+f(q)+"(\\s|$)")}); }else{if(G){w=w||p;w=w?w.replace(m,""):null;if(!o.pseudos){o.pseudos=[];}o.pseudos.push({key:G.replace(m,""),value:w,type:F.length==1?"class":"element"}); }else{if(B){B=B.replace(m,"");u=(u||"").replace(m,"");var E,H;switch(A){case"^=":H=new RegExp("^"+f(u));break;case"$=":H=new RegExp(f(u)+"$");break;case"~=":H=new RegExp("(^|\\s)"+f(u)+"(\\s|$)"); break;case"|=":H=new RegExp("^"+f(u)+"(-|$)");break;case"=":E=function(I){return u==I;};break;case"*=":E=function(I){return I&&I.indexOf(u)>-1;};break; case"!=":E=function(I){return u!=I;};break;default:E=function(I){return !!I;};}if(u==""&&(/^[*$^]=$/).test(A)){E=function(){return false;};}if(!E){E=function(I){return I&&H.test(I); };}if(!o.attributes){o.attributes=[];}o.attributes.push({key:B,operator:A,value:u,test:E});}}}}}return"";}var d=(this.Slick||{});d.parse=function(o){return e(o); };d.escapeRegExp=f;if(!this.Slick){this.Slick=d;}}).apply((typeof exports!="undefined")?exports:this);(function(){var k={},m={},d=Object.prototype.toString; k.isNativeCode=function(c){return(/\{\s*\[native code\]\s*\}/).test(""+c);};k.isXML=function(c){return(!!c.xmlVersion)||(!!c.xml)||(d.call(c)=="[object XMLDocument]")||(c.nodeType==9&&c.documentElement.nodeName!="HTML"); };k.setDocument=function(w){var p=w.nodeType;if(p==9){}else{if(p){w=w.ownerDocument;}else{if(w.navigator){w=w.document;}else{return;}}}if(this.document===w){return; }this.document=w;var A=w.documentElement,o=this.getUIDXML(A),s=m[o],r;if(s){for(r in s){this[r]=s[r];}return;}s=m[o]={};s.root=A;s.isXMLDocument=this.isXML(w); s.brokenStarGEBTN=s.starSelectsClosedQSA=s.idGetsName=s.brokenMixedCaseQSA=s.brokenGEBCN=s.brokenCheckedQSA=s.brokenEmptyAttributeQSA=s.isHTMLDocument=s.nativeMatchesSelector=false; var q,u,y,z,t;var x,v="slick_uniqueid";var c=w.createElement("div");var n=w.body||w.getElementsByTagName("body")[0]||A;n.appendChild(c);try{c.innerHTML=''; s.isHTMLDocument=!!w.getElementById(v);}catch(C){}if(s.isHTMLDocument){c.style.display="none";c.appendChild(w.createComment(""));u=(c.getElementsByTagName("*").length>1); try{c.innerHTML="foo";x=c.getElementsByTagName("*");q=(x&&!!x.length&&x[0].nodeName.charAt(0)=="/");}catch(C){}s.brokenStarGEBTN=u||q;try{c.innerHTML=''; s.idGetsName=w.getElementById(v)===c.firstChild;}catch(C){}if(c.getElementsByClassName){try{c.innerHTML='';c.getElementsByClassName("b").length; c.firstChild.className="b";z=(c.getElementsByClassName("b").length!=2);}catch(C){}try{c.innerHTML='';y=(c.getElementsByClassName("a").length!=2); }catch(C){}s.brokenGEBCN=z||y;}if(c.querySelectorAll){try{c.innerHTML="foo";x=c.querySelectorAll("*");s.starSelectsClosedQSA=(x&&!!x.length&&x[0].nodeName.charAt(0)=="/"); }catch(C){}try{c.innerHTML='';s.brokenMixedCaseQSA=!c.querySelectorAll(".MiX").length;}catch(C){}try{c.innerHTML=''; s.brokenCheckedQSA=(c.querySelectorAll(":checked").length==0);}catch(C){}try{c.innerHTML='';s.brokenEmptyAttributeQSA=(c.querySelectorAll('[class*=""]').length!=0); }catch(C){}}try{c.innerHTML='
';t=(c.firstChild.getAttribute("action")!="s");}catch(C){}s.nativeMatchesSelector=A.matchesSelector||A.mozMatchesSelector||A.webkitMatchesSelector; if(s.nativeMatchesSelector){try{s.nativeMatchesSelector.call(A,":slick");s.nativeMatchesSelector=null;}catch(C){}}}try{A.slick_expando=1;delete A.slick_expando; s.getUID=this.getUIDHTML;}catch(C){s.getUID=this.getUIDXML;}n.removeChild(c);c=x=n=null;s.getAttribute=(s.isHTMLDocument&&t)?function(G,E){var H=this.attributeGetters[E]; if(H){return H.call(G);}var F=G.getAttributeNode(E);return(F)?F.nodeValue:null;}:function(F,E){var G=this.attributeGetters[E];return(G)?G.call(F):F.getAttribute(E); };s.hasAttribute=(A&&this.isNativeCode(A.hasAttribute))?function(F,E){return F.hasAttribute(E);}:function(F,E){F=F.getAttributeNode(E);return !!(F&&(F.specified||F.nodeValue)); };var D=A&&this.isNativeCode(A.contains),B=w&&this.isNativeCode(w.contains);s.contains=(D&&B)?function(E,F){return E.contains(F);}:(D&&!B)?function(E,F){return E===F||((E===w)?w.documentElement:E).contains(F); }:(A&&A.compareDocumentPosition)?function(E,F){return E===F||!!(E.compareDocumentPosition(F)&16);}:function(E,F){if(F){do{if(F===E){return true;}}while((F=F.parentNode)); }return false;};s.documentSorter=(A.compareDocumentPosition)?function(F,E){if(!F.compareDocumentPosition||!E.compareDocumentPosition){return 0;}return F.compareDocumentPosition(E)&4?-1:F===E?0:1; }:("sourceIndex" in A)?function(F,E){if(!F.sourceIndex||!E.sourceIndex){return 0;}return F.sourceIndex-E.sourceIndex;}:(w.createRange)?function(H,F){if(!H.ownerDocument||!F.ownerDocument){return 0; }var G=H.ownerDocument.createRange(),E=F.ownerDocument.createRange();G.setStart(H,0);G.setEnd(H,0);E.setStart(F,0);E.setEnd(F,0);return G.compareBoundaryPoints(Range.START_TO_END,E); }:null;A=null;for(r in s){this[r]=s[r];}};var f=/^([#.]?)((?:[\w-]+|\*))$/,h=/\[.+[*$^]=(?:""|'')?\]/,g={};k.search=function(U,z,H,s){var p=this.found=(s)?null:(H||[]); if(!U){return p;}else{if(U.navigator){U=U.document;}else{if(!U.nodeType){return p;}}}var F,O,V=this.uniques={},I=!!(H&&H.length),y=(U.nodeType==9);if(this.document!==(y?U:U.ownerDocument)){this.setDocument(U); }if(I){for(O=p.length;O--;){V[this.getUID(p[O])]=true;}}if(typeof z=="string"){var r=z.match(f);simpleSelectors:if(r){var u=r[1],v=r[2],A,E;if(!u){if(v=="*"&&this.brokenStarGEBTN){break simpleSelectors; }E=U.getElementsByTagName(v);if(s){return E[0]||null;}for(O=0;A=E[O++];){if(!(I&&V[this.getUID(A)])){p.push(A);}}}else{if(u=="#"){if(!this.isHTMLDocument||!y){break simpleSelectors; }A=U.getElementById(v);if(!A){return p;}if(this.idGetsName&&A.getAttributeNode("id").nodeValue!=v){break simpleSelectors;}if(s){return A||null;}if(!(I&&V[this.getUID(A)])){p.push(A); }}else{if(u=="."){if(!this.isHTMLDocument||((!U.getElementsByClassName||this.brokenGEBCN)&&U.querySelectorAll)){break simpleSelectors;}if(U.getElementsByClassName&&!this.brokenGEBCN){E=U.getElementsByClassName(v); if(s){return E[0]||null;}for(O=0;A=E[O++];){if(!(I&&V[this.getUID(A)])){p.push(A);}}}else{var T=new RegExp("(^|\\s)"+e.escapeRegExp(v)+"(\\s|$)");E=U.getElementsByTagName("*"); for(O=0;A=E[O++];){className=A.className;if(!(className&&T.test(className))){continue;}if(s){return A;}if(!(I&&V[this.getUID(A)])){p.push(A);}}}}}}if(I){this.sort(p); }return(s)?null:p;}querySelector:if(U.querySelectorAll){if(!this.isHTMLDocument||g[z]||this.brokenMixedCaseQSA||(this.brokenCheckedQSA&&z.indexOf(":checked")>-1)||(this.brokenEmptyAttributeQSA&&h.test(z))||(!y&&z.indexOf(",")>-1)||e.disableQSA){break querySelector; }var S=z,x=U;if(!y){var C=x.getAttribute("id"),t="slickid__";x.setAttribute("id",t);S="#"+t+" "+S;U=x.parentNode;}try{if(s){return U.querySelector(S)||null; }else{E=U.querySelectorAll(S);}}catch(Q){g[z]=1;break querySelector;}finally{if(!y){if(C){x.setAttribute("id",C);}else{x.removeAttribute("id");}U=x;}}if(this.starSelectsClosedQSA){for(O=0; A=E[O++];){if(A.nodeName>"@"&&!(I&&V[this.getUID(A)])){p.push(A);}}}else{for(O=0;A=E[O++];){if(!(I&&V[this.getUID(A)])){p.push(A);}}}if(I){this.sort(p); }return p;}F=this.Slick.parse(z);if(!F.length){return p;}}else{if(z==null){return p;}else{if(z.Slick){F=z;}else{if(this.contains(U.documentElement||U,z)){(p)?p.push(z):p=z; return p;}else{return p;}}}}this.posNTH={};this.posNTHLast={};this.posNTHType={};this.posNTHTypeLast={};this.push=(!I&&(s||(F.length==1&&F.expressions[0].length==1)))?this.pushArray:this.pushUID; if(p==null){p=[];}var M,L,K;var B,J,D,c,q,G,W;var N,P,o,w,R=F.expressions;search:for(O=0;(P=R[O]);O++){for(M=0;(o=P[M]);M++){B="combinator:"+o.combinator; if(!this[B]){continue search;}J=(this.isXMLDocument)?o.tag:o.tag.toUpperCase();D=o.id;c=o.classList;q=o.classes;G=o.attributes;W=o.pseudos;w=(M===(P.length-1)); this.bitUniques={};if(w){this.uniques=V;this.found=p;}else{this.uniques={};this.found=[];}if(M===0){this[B](U,J,D,q,G,W,c);if(s&&w&&p.length){break search; }}else{if(s&&w){for(L=0,K=N.length;L1)){this.sort(p);}return(s)?(p[0]||null):p;};k.uidx=1;k.uidk="slick-uniqueid";k.getUIDXML=function(n){var c=n.getAttribute(this.uidk); if(!c){c=this.uidx++;n.setAttribute(this.uidk,c);}return c;};k.getUIDHTML=function(c){return c.uniqueNumber||(c.uniqueNumber=this.uidx++);};k.sort=function(c){if(!this.documentSorter){return c; }c.sort(this.documentSorter);return c;};k.cacheNTH={};k.matchNTH=/^([+-]?\d*)?([a-z]+)?([+-]\d+)?$/;k.parseNTHArgument=function(q){var o=q.match(this.matchNTH); if(!o){return false;}var p=o[2]||false;var n=o[1]||1;if(n=="-"){n=-1;}var c=+o[3]||0;o=(p=="n")?{a:n,b:c}:(p=="odd")?{a:2,b:1}:(p=="even")?{a:2,b:0}:{a:0,b:n}; return(this.cacheNTH[q]=o);};k.createNTHPseudo=function(p,n,c,o){return function(s,q){var u=this.getUID(s);if(!this[c][u]){var A=s.parentNode;if(!A){return false; }var r=A[p],t=1;if(o){var z=s.nodeName;do{if(r.nodeName!=z){continue;}this[c][this.getUID(r)]=t++;}while((r=r[n]));}else{do{if(r.nodeType!=1){continue; }this[c][this.getUID(r)]=t++;}while((r=r[n]));}}q=q||"n";var v=this.cacheNTH[q]||this.parseNTHArgument(q);if(!v){return false;}var y=v.a,x=v.b,w=this[c][u]; if(y==0){return x==w;}if(y>0){if(w":function(p,c,r,o,n,q){if((p=p.firstChild)){do{if(p.nodeType==1){this.push(p,c,r,o,n,q); }}while((p=p.nextSibling));}},"+":function(p,c,r,o,n,q){while((p=p.nextSibling)){if(p.nodeType==1){this.push(p,c,r,o,n,q);break;}}},"^":function(p,c,r,o,n,q){p=p.firstChild; if(p){if(p.nodeType==1){this.push(p,c,r,o,n,q);}else{this["combinator:+"](p,c,r,o,n,q);}}},"~":function(q,c,s,p,n,r){while((q=q.nextSibling)){if(q.nodeType!=1){continue; }var o=this.getUID(q);if(this.bitUniques[o]){break;}this.bitUniques[o]=true;this.push(q,c,s,p,n,r);}},"++":function(p,c,r,o,n,q){this["combinator:+"](p,c,r,o,n,q); this["combinator:!+"](p,c,r,o,n,q);},"~~":function(p,c,r,o,n,q){this["combinator:~"](p,c,r,o,n,q);this["combinator:!~"](p,c,r,o,n,q);},"!":function(p,c,r,o,n,q){while((p=p.parentNode)){if(p!==this.document){this.push(p,c,r,o,n,q); }}},"!>":function(p,c,r,o,n,q){p=p.parentNode;if(p!==this.document){this.push(p,c,r,o,n,q);}},"!+":function(p,c,r,o,n,q){while((p=p.previousSibling)){if(p.nodeType==1){this.push(p,c,r,o,n,q); break;}}},"!^":function(p,c,r,o,n,q){p=p.lastChild;if(p){if(p.nodeType==1){this.push(p,c,r,o,n,q);}else{this["combinator:!+"](p,c,r,o,n,q);}}},"!~":function(q,c,s,p,n,r){while((q=q.previousSibling)){if(q.nodeType!=1){continue; }var o=this.getUID(q);if(this.bitUniques[o]){break;}this.bitUniques[o]=true;this.push(q,c,s,p,n,r);}}};for(var i in j){k["combinator:"+i]=j[i];}var l={empty:function(c){var n=c.firstChild; return !(n&&n.nodeType==1)&&!(c.innerText||c.textContent||"").length;},not:function(c,n){return !this.matchNode(c,n);},contains:function(c,n){return(c.innerText||c.textContent||"").indexOf(n)>-1; },"first-child":function(c){while((c=c.previousSibling)){if(c.nodeType==1){return false;}}return true;},"last-child":function(c){while((c=c.nextSibling)){if(c.nodeType==1){return false; }}return true;},"only-child":function(o){var n=o;while((n=n.previousSibling)){if(n.nodeType==1){return false;}}var c=o;while((c=c.nextSibling)){if(c.nodeType==1){return false; }}return true;},"nth-child":k.createNTHPseudo("firstChild","nextSibling","posNTH"),"nth-last-child":k.createNTHPseudo("lastChild","previousSibling","posNTHLast"),"nth-of-type":k.createNTHPseudo("firstChild","nextSibling","posNTHType",true),"nth-last-of-type":k.createNTHPseudo("lastChild","previousSibling","posNTHTypeLast",true),index:function(n,c){return this["pseudo:nth-child"](n,""+(c+1)); },even:function(c){return this["pseudo:nth-child"](c,"2n");},odd:function(c){return this["pseudo:nth-child"](c,"2n+1");},"first-of-type":function(c){var n=c.nodeName; while((c=c.previousSibling)){if(c.nodeName==n){return false;}}return true;},"last-of-type":function(c){var n=c.nodeName;while((c=c.nextSibling)){if(c.nodeName==n){return false; }}return true;},"only-of-type":function(o){var n=o,p=o.nodeName;while((n=n.previousSibling)){if(n.nodeName==p){return false;}}var c=o;while((c=c.nextSibling)){if(c.nodeName==p){return false; }}return true;},enabled:function(c){return !c.disabled;},disabled:function(c){return c.disabled;},checked:function(c){return c.checked||c.selected;},focus:function(c){return this.isHTMLDocument&&this.document.activeElement===c&&(c.href||c.type||this.hasAttribute(c,"tabindex")); },root:function(c){return(c===this.root);},selected:function(c){return c.selected;}};for(var b in l){k["pseudo:"+b]=l[b];}var a=k.attributeGetters={"for":function(){return("htmlFor" in this)?this.htmlFor:this.getAttribute("for"); },href:function(){return("href" in this)?this.getAttribute("href",2):this.getAttribute("href");},style:function(){return(this.style)?this.style.cssText:this.getAttribute("style"); },tabindex:function(){var c=this.getAttributeNode("tabindex");return(c&&c.specified)?c.nodeValue:null;},type:function(){return this.getAttribute("type"); },maxlength:function(){var c=this.getAttributeNode("maxLength");return(c&&c.specified)?c.nodeValue:null;}};a.MAXLENGTH=a.maxLength=a.maxlength;var e=k.Slick=(this.Slick||{}); e.version="1.1.7";e.search=function(n,o,c){return k.search(n,o,c);};e.find=function(c,n){return k.search(c,n,null,true);};e.contains=function(c,n){k.setDocument(c); return k.contains(c,n);};e.getAttribute=function(n,c){k.setDocument(n);return k.getAttribute(n,c);};e.hasAttribute=function(n,c){k.setDocument(n);return k.hasAttribute(n,c); };e.match=function(n,c){if(!(n&&c)){return false;}if(!c||c===n){return true;}k.setDocument(n);return k.matchNode(n,c);};e.defineAttributeGetter=function(c,n){k.attributeGetters[c]=n; return this;};e.lookupAttributeGetter=function(c){return k.attributeGetters[c];};e.definePseudo=function(c,n){k["pseudo:"+c]=function(p,o){return n.call(p,o); };return this;};e.lookupPseudo=function(c){var n=k["pseudo:"+c];if(n){return function(o){return n.call(this,o);};}return null;};e.override=function(n,c){k.override(n,c); return this;};e.isXML=k.isXML;e.uidOf=function(c){return k.getUIDHTML(c);};if(!this.Slick){this.Slick=e;}}).apply((typeof exports!="undefined")?exports:this); var Element=function(b,g){var h=Element.Constructors[b];if(h){return h(g);}if(typeof b!="string"){return document.id(b).set(g);}if(!g){g={};}if(!(/^[\w-]+$/).test(b)){var e=Slick.parse(b).expressions[0][0]; b=(e.tag=="*")?"div":e.tag;if(e.id&&g.id==null){g.id=e.id;}var d=e.attributes;if(d){for(var a,f=0,c=d.length;f=this.length){delete this[g--];}return e;}.protect());}Array.forEachMethod(function(g,e){Elements.implement(e,g);});Array.mirror(Elements);var d; try{d=(document.createElement("").name=="x");}catch(b){}var c=function(e){return(""+e).replace(/&/g,"&").replace(/"/g,""");};Document.implement({newElement:function(e,g){if(g&&g.checked!=null){g.defaultChecked=g.checked; }if(d&&g){e="<"+e;if(g.name){e+=' name="'+c(g.name)+'"';}if(g.type){e+=' type="'+c(g.type)+'"';}e+=">";delete g.name;delete g.type;}return this.id(this.createElement(e)).set(g); }});})();(function(){Slick.uidOf(window);Slick.uidOf(document);Document.implement({newTextNode:function(e){return this.createTextNode(e);},getDocument:function(){return this; },getWindow:function(){return this.window;},id:(function(){var e={string:function(E,D,l){E=Slick.find(l,"#"+E.replace(/(\W)/g,"\\$1"));return(E)?e.element(E,D):null; },element:function(D,E){Slick.uidOf(D);if(!E&&!D.$family&&!(/^(?:object|embed)$/i).test(D.tagName)){var l=D.fireEvent;D._fireEvent=function(F,G){return l(F,G); };Object.append(D,Element.Prototype);}return D;},object:function(D,E,l){if(D.toElement){return e.element(D.toElement(l),E);}return null;}};e.textnode=e.whitespace=e.window=e.document=function(l){return l; };return function(D,F,E){if(D&&D.$family&&D.uniqueNumber){return D;}var l=typeOf(D);return(e[l])?e[l](D,F,E||document):null;};})()});if(window.$==null){Window.implement("$",function(e,l){return document.id(e,l,this.document); });}Window.implement({getDocument:function(){return this.document;},getWindow:function(){return this;}});[Document,Element].invoke("implement",{getElements:function(e){return Slick.search(this,e,new Elements); },getElement:function(e){return document.id(Slick.find(this,e));}});var m={contains:function(e){return Slick.contains(this,e);}};if(!document.contains){Document.implement(m); }if(!document.createElement("div").contains){Element.implement(m);}Element.implement("hasChild",function(e){return this!==e&&this.contains(e);});(function(l,E,e){this.Selectors={}; var F=this.Selectors.Pseudo=new Hash();var D=function(){for(var G in F){if(F.hasOwnProperty(G)){Slick.definePseudo(G,F[G]);delete F[G];}}};Slick.search=function(H,I,G){D(); return l.call(this,H,I,G);};Slick.find=function(G,H){D();return E.call(this,G,H);};Slick.match=function(H,G){D();return e.call(this,H,G);};})(Slick.search,Slick.find,Slick.match); var r=function(E,D){if(!E){return D;}E=Object.clone(Slick.parse(E));var l=E.expressions;for(var e=l.length;e--;){l[e][0].combinator=D;}return E;};Object.forEach({getNext:"~",getPrevious:"!~",getParent:"!"},function(e,l){Element.implement(l,function(D){return this.getElement(r(D,e)); });});Object.forEach({getAllNext:"~",getAllPrevious:"!~",getSiblings:"~~",getChildren:">",getParents:"!"},function(e,l){Element.implement(l,function(D){return this.getElements(r(D,e)); });});Element.implement({getFirst:function(e){return document.id(Slick.search(this,r(e,">"))[0]);},getLast:function(e){return document.id(Slick.search(this,r(e,">")).getLast()); },getWindow:function(){return this.ownerDocument.window;},getDocument:function(){return this.ownerDocument;},getElementById:function(e){return document.id(Slick.find(this,"#"+(""+e).replace(/(\W)/g,"\\$1"))); },match:function(e){return !e||Slick.match(this,e);}});if(window.$$==null){Window.implement("$$",function(e){var H=new Elements;if(arguments.length==1&&typeof e=="string"){return Slick.search(this.document,e,H); }var E=Array.flatten(arguments);for(var F=0,D=E.length;F(?![^<]*<['"])/)).indexOf(F)<0){return null;}E[F]=true;}}var e=Slick.getAttribute(this,F); return(!e&&!Slick.hasAttribute(this,F))?null:e;},getProperties:function(){var e=Array.from(arguments);return e.map(this.getProperty,this).associate(e); },removeProperty:function(e){return this.setProperty(e,null);},removeProperties:function(){Array.each(arguments,this.removeProperty,this);return this;},set:function(D,l){var e=Element.Properties[D]; (e&&e.set)?e.set.call(this,l):this.setProperty(D,l);}.overloadSetter(),get:function(l){var e=Element.Properties[l];return(e&&e.get)?e.get.apply(this):this.getProperty(l); }.overloadGetter(),erase:function(l){var e=Element.Properties[l];(e&&e.erase)?e.erase.apply(this):this.removeProperty(l);return this;},hasClass:function(e){return this.className.clean().contains(e," "); },addClass:function(e){if(!this.hasClass(e)){this.className=(this.className+" "+e).clean();}return this;},removeClass:function(e){this.className=this.className.replace(new RegExp("(^|\\s)"+e+"(?:\\s|$)"),"$1"); return this;},toggleClass:function(e,l){if(l==null){l=!this.hasClass(e);}return(l)?this.addClass(e):this.removeClass(e);},adopt:function(){var E=this,e,G=Array.flatten(arguments),F=G.length; if(F>1){E=e=document.createDocumentFragment();}for(var D=0;D";var a=(t.childNodes.length==1);if(!a){var s="abbr article aside audio canvas datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video".split(" "),b=document.createDocumentFragment(),u=s.length; while(u--){b.createElement(s[u]);}}t=null;var g=Function.attempt(function(){var e=document.createElement("table");e.innerHTML="";return true; });var c=document.createElement("tr"),o="";c.innerHTML=o;var y=(c.innerHTML==o);c=null;if(!g||!y||!a){Element.Properties.html.set=(function(l){var e={table:[1,"","
"],select:[1,""],tbody:[2,"","
"],tr:[3,"","
"]}; e.thead=e.tfoot=e.tbody;return function(D){var E=e[this.get("tag")];if(!E&&!a){E=[0,"",""];}if(!E){return l.call(this,D);}var H=E[0],G=document.createElement("div"),F=G; if(!a){b.appendChild(G);}G.innerHTML=[E[1],D,E[2]].flatten().join("");while(H--){F=F.firstChild;}this.empty().adopt(F.childNodes);if(!a){b.removeChild(G); }G=null;};})(Element.Properties.html.set);}var n=document.createElement("form");n.innerHTML="";if(n.firstChild.value!="s"){Element.Properties.value={set:function(G){var l=this.get("tag"); if(l!="select"){return this.setProperty("value",G);}var D=this.getElements("option");for(var E=0;E0||k==null?"visible":"hidden";};var f=(h?function(l,k){l.style.opacity=k;}:(e?function(l,k){var n=l.style; if(!l.currentStyle||!l.currentStyle.hasLayout){n.zoom=1;}if(k==null||k==1){k="";}else{k="alpha(opacity="+(k*100).limit(0,100).round()+")";}var m=n.filter||l.getComputedStyle("filter")||""; n.filter=j.test(m)?m.replace(j,k):m+k;if(!n.filter){n.removeAttribute("filter");}}:a));var g=(h?function(l){var k=l.style.opacity||l.getComputedStyle("opacity"); return(k=="")?1:k.toFloat();}:(e?function(l){var m=(l.style.filter||l.getComputedStyle("filter")),k;if(m){k=m.match(j);}return(k==null||m==null)?1:(k[1]/100); }:function(l){var k=l.retrieve("$opacity");if(k==null){k=(l.style.visibility=="hidden"?0:1);}return k;}));var b=(i.style.cssFloat==null)?"styleFloat":"cssFloat"; Element.implement({getComputedStyle:function(m){if(this.currentStyle){return this.currentStyle[m.camelCase()];}var l=Element.getDocument(this).defaultView,k=l?l.getComputedStyle(this,null):null; return(k)?k.getPropertyValue((m==b)?"float":m.hyphenate()):null;},setStyle:function(l,k){if(l=="opacity"){if(k!=null){k=parseFloat(k);}f(this,k);return this; }l=(l=="float"?b:l).camelCase();if(typeOf(k)!="string"){var m=(Element.Styles[l]||"@").split(" ");k=Array.from(k).map(function(o,n){if(!m[n]){return""; }return(typeOf(o)=="number")?m[n].replace("@",Math.round(o)):o;}).join(" ");}else{if(k==String(Number(k))){k=Math.round(k);}}this.style[l]=k;if((k==""||k==null)&&c&&this.style.removeAttribute){this.style.removeAttribute(l); }return this;},getStyle:function(q){if(q=="opacity"){return g(this);}q=(q=="float"?b:q).camelCase();var k=this.style[q];if(!k||q=="zIndex"){k=[];for(var p in Element.ShortStyles){if(q!=p){continue; }for(var o in Element.ShortStyles[p]){k.push(this.getStyle(o));}return k.join(" ");}k=this.getComputedStyle(q);}if(k){k=String(k);var m=k.match(/rgba?\([\d\s,]+\)/); if(m){k=k.replace(m[0],m[0].rgbToHex());}}if(Browser.opera||Browser.ie){if((/^(height|width)$/).test(q)&&!(/px$/.test(k))){var l=(q=="width")?["left","right"]:["top","bottom"],n=0; l.each(function(r){n+=this.getStyle("border-"+r+"-width").toInt()+this.getStyle("padding-"+r).toInt();},this);return this["offset"+q.capitalize()]-n+"px"; }if(Browser.ie&&(/^border(.+)Width|margin|padding/).test(q)&&isNaN(parseFloat(k))){return"0px";}}return k;},setStyles:function(l){for(var k in l){this.setStyle(k,l[k]); }return this;},getStyles:function(){var k={};Array.flatten(arguments).each(function(l){k[l]=this.getStyle(l);},this);return k;}});Element.Styles={left:"@px",top:"@px",bottom:"@px",right:"@px",width:"@px",height:"@px",maxWidth:"@px",maxHeight:"@px",minWidth:"@px",minHeight:"@px",backgroundColor:"rgb(@, @, @)",backgroundPosition:"@px @px",color:"rgb(@, @, @)",fontSize:"@px",letterSpacing:"@px",lineHeight:"@px",clip:"rect(@px @px @px @px)",margin:"@px @px @px @px",padding:"@px @px @px @px",border:"@px @ rgb(@, @, @) @px @ rgb(@, @, @) @px @ rgb(@, @, @)",borderWidth:"@px @px @px @px",borderStyle:"@ @ @ @",borderColor:"rgb(@, @, @) rgb(@, @, @) rgb(@, @, @) rgb(@, @, @)",zIndex:"@",zoom:"@",fontWeight:"@",textIndent:"@px",opacity:"@"}; Element.implement({setOpacity:function(k){f(this,k);return this;},getOpacity:function(){return g(this);}});Element.Properties.opacity={set:function(k){f(this,k); a(this,k);},get:function(){return g(this);}};Element.Styles=new Hash(Element.Styles);Element.ShortStyles={margin:{},padding:{},border:{},borderWidth:{},borderStyle:{},borderColor:{}}; ["Top","Right","Bottom","Left"].each(function(q){var p=Element.ShortStyles;var l=Element.Styles;["margin","padding"].each(function(r){var s=r+q;p[r][s]=l[s]="@px"; });var o="border"+q;p.border[o]=l[o]="@px @ rgb(@, @, @)";var n=o+"Width",k=o+"Style",m=o+"Color";p[o]={};p.borderWidth[n]=p[o][n]=l[n]="@px";p.borderStyle[k]=p[o][k]=l[k]="@"; p.borderColor[m]=p[o][m]=l[m]="rgb(@, @, @)";});})();(function(){Element.Properties.events={set:function(b){this.addEvents(b);}};[Element,Window,Document].invoke("implement",{addEvent:function(f,h){var i=this.retrieve("events",{}); if(!i[f]){i[f]={keys:[],values:[]};}if(i[f].keys.contains(h)){return this;}i[f].keys.push(h);var g=f,b=Element.Events[f],d=h,j=this;if(b){if(b.onAdd){b.onAdd.call(this,h,f); }if(b.condition){d=function(k){if(b.condition.call(this,k,f)){return h.call(this,k);}return true;};}if(b.base){g=Function.from(b.base).call(this,f);}}var e=function(){return h.call(j); };var c=Element.NativeEvents[g];if(c){if(c==2){e=function(k){k=new DOMEvent(k,j.getWindow());if(d.call(j,k)===false){k.stop();}};}this.addListener(g,e,arguments[2]); }i[f].values.push(e);return this;},removeEvent:function(e,d){var c=this.retrieve("events");if(!c||!c[e]){return this;}var h=c[e];var b=h.keys.indexOf(d); if(b==-1){return this;}var g=h.values[b];delete h.keys[b];delete h.values[b];var f=Element.Events[e];if(f){if(f.onRemove){f.onRemove.call(this,d,e);}if(f.base){e=Function.from(f.base).call(this,e); }}return(Element.NativeEvents[e])?this.removeListener(e,g,arguments[2]):this;},addEvents:function(b){for(var c in b){this.addEvent(c,b[c]);}return this; },removeEvents:function(b){var d;if(typeOf(b)=="object"){for(d in b){this.removeEvent(d,b[d]);}return this;}var c=this.retrieve("events");if(!c){return this; }if(!b){for(d in c){this.removeEvents(d);}this.eliminate("events");}else{if(c[b]){c[b].keys.each(function(e){this.removeEvent(b,e);},this);delete c[b]; }}return this;},fireEvent:function(e,c,b){var d=this.retrieve("events");if(!d||!d[e]){return this;}c=Array.from(c);d[e].keys.each(function(f){if(b){f.delay(b,this,c); }else{f.apply(this,c);}},this);return this;},cloneEvents:function(e,d){e=document.id(e);var c=e.retrieve("events");if(!c){return this;}if(!d){for(var b in c){this.cloneEvents(e,b); }}else{if(c[d]){c[d].keys.each(function(f){this.addEvent(d,f);},this);}}return this;}});Element.NativeEvents={click:2,dblclick:2,mouseup:2,mousedown:2,contextmenu:2,mousewheel:2,DOMMouseScroll:2,mouseover:2,mouseout:2,mousemove:2,selectstart:2,selectend:2,keydown:2,keypress:2,keyup:2,orientationchange:2,touchstart:2,touchmove:2,touchend:2,touchcancel:2,gesturestart:2,gesturechange:2,gestureend:2,focus:2,blur:2,change:2,reset:2,select:2,submit:2,paste:2,input:2,load:2,unload:1,beforeunload:2,resize:1,move:1,DOMContentLoaded:1,readystatechange:1,error:1,abort:1,scroll:1}; Element.Events={mousewheel:{base:(Browser.firefox)?"DOMMouseScroll":"mousewheel"}};if("onmouseenter" in document.documentElement){Element.NativeEvents.mouseenter=Element.NativeEvents.mouseleave=2; }else{var a=function(b){var c=b.relatedTarget;if(c==null){return true;}if(!c){return false;}return(c!=this&&c.prefix!="xul"&&typeOf(this)!="document"&&!this.contains(c)); };Element.Events.mouseenter={base:"mouseover",condition:a};Element.Events.mouseleave={base:"mouseout",condition:a};}if(!window.addEventListener){Element.NativeEvents.propertychange=2; Element.Events.change={base:function(){var b=this.type;return(this.get("tag")=="input"&&(b=="radio"||b=="checkbox"))?"propertychange":"change";},condition:function(b){return this.type!="radio"||(b.event.propertyName=="checked"&&this.checked); }};}Element.Events=new Hash(Element.Events);})();(function(){var c=!!window.addEventListener;Element.NativeEvents.focusin=Element.NativeEvents.focusout=2; var k=function(l,m,n,o,p){while(p&&p!=l){if(m(p,o)){return n.call(p,o,p);}p=document.id(p.parentNode);}};var a={mouseenter:{base:"mouseover"},mouseleave:{base:"mouseout"},focus:{base:"focus"+(c?"":"in"),capture:true},blur:{base:c?"blur":"focusout",capture:true}}; var b="$delegation:";var i=function(l){return{base:"focusin",remove:function(m,o){var p=m.retrieve(b+l+"listeners",{})[o];if(p&&p.forms){for(var n=p.forms.length; n--;){p.forms[n].removeEvent(l,p.fns[n]);}}},listen:function(x,r,v,n,t,s){var o=(t.get("tag")=="form")?t:n.target.getParent("form");if(!o){return;}var u=x.retrieve(b+l+"listeners",{}),p=u[s]||{forms:[],fns:[]},m=p.forms,w=p.fns; if(m.indexOf(o)!=-1){return;}m.push(o);var q=function(y){k(x,r,v,y,t);};o.addEvent(l,q);w.push(q);u[s]=p;x.store(b+l+"listeners",u);}};};var d=function(l){return{base:"focusin",listen:function(m,n,p,q,r){var o={blur:function(){this.removeEvents(o); }};o[l]=function(s){k(m,n,p,s,r);};q.target.addEvents(o);}};};if(!c){Object.append(a,{submit:i("submit"),reset:i("reset"),change:d("change"),select:d("select")}); }var h=Element.prototype,f=h.addEvent,j=h.removeEvent;var e=function(l,m){return function(r,q,n){if(r.indexOf(":relay")==-1){return l.call(this,r,q,n); }var o=Slick.parse(r).expressions[0][0];if(o.pseudos[0].key!="relay"){return l.call(this,r,q,n);}var p=o.tag;o.pseudos.slice(1).each(function(s){p+=":"+s.key+(s.value?"("+s.value+")":""); });l.call(this,r,q);return m.call(this,p,o.pseudos[0].value,q);};};var g={addEvent:function(v,q,x){var t=this.retrieve("$delegates",{}),r=t[v];if(r){for(var y in r){if(r[y].fn==x&&r[y].match==q){return this; }}}var p=v,u=q,o=x,n=a[v]||{};v=n.base||p;q=function(B){return Slick.match(B,u);};var w=Element.Events[p];if(w&&w.condition){var l=q,m=w.condition;q=function(C,B){return l(C,B)&&m.call(C,B,v); };}var z=this,s=String.uniqueID();var A=n.listen?function(B,C){if(!C&&B&&B.target){C=B.target;}if(C){n.listen(z,q,x,B,C,s);}}:function(B,C){if(!C&&B&&B.target){C=B.target; }if(C){k(z,q,x,B,C);}};if(!r){r={};}r[s]={match:u,fn:o,delegator:A};t[p]=r;return f.call(this,v,A,n.capture);},removeEvent:function(r,n,t,u){var q=this.retrieve("$delegates",{}),p=q[r]; if(!p){return this;}if(u){var m=r,w=p[u].delegator,l=a[r]||{};r=l.base||m;if(l.remove){l.remove(this,u);}delete p[u];q[m]=p;return j.call(this,r,w);}var o,v; if(t){for(o in p){v=p[o];if(v.match==n&&v.fn==t){return g.removeEvent.call(this,r,n,t,o);}}}else{for(o in p){v=p[o];if(v.match==n){g.removeEvent.call(this,r,n,v.fn,o); }}}return this;}};[Element,Window,Document].invoke("implement",{addEvent:e(f,g.addEvent),removeEvent:e(j,g.removeEvent)});})();(function(){var h=document.createElement("div"),e=document.createElement("div"); h.style.height="0";h.appendChild(e);var d=(e.offsetParent===h);h=e=null;var l=function(m){return k(m,"position")!="static"||a(m);};var i=function(m){return l(m)||(/^(?:table|td|th)$/i).test(m.tagName); };Element.implement({scrollTo:function(m,n){if(a(this)){this.getWindow().scrollTo(m,n);}else{this.scrollLeft=m;this.scrollTop=n;}return this;},getSize:function(){if(a(this)){return this.getWindow().getSize(); }return{x:this.offsetWidth,y:this.offsetHeight};},getScrollSize:function(){if(a(this)){return this.getWindow().getScrollSize();}return{x:this.scrollWidth,y:this.scrollHeight}; },getScroll:function(){if(a(this)){return this.getWindow().getScroll();}return{x:this.scrollLeft,y:this.scrollTop};},getScrolls:function(){var n=this.parentNode,m={x:0,y:0}; while(n&&!a(n)){m.x+=n.scrollLeft;m.y+=n.scrollTop;n=n.parentNode;}return m;},getOffsetParent:d?function(){var m=this;if(a(m)||k(m,"position")=="fixed"){return null; }var n=(k(m,"position")=="static")?i:l;while((m=m.parentNode)){if(n(m)){return m;}}return null;}:function(){var m=this;if(a(m)||k(m,"position")=="fixed"){return null; }try{return m.offsetParent;}catch(n){}return null;},getOffsets:function(){if(this.getBoundingClientRect&&!Browser.Platform.ios){var r=this.getBoundingClientRect(),o=document.id(this.getDocument().documentElement),q=o.getScroll(),t=this.getScrolls(),s=(k(this,"position")=="fixed"); return{x:r.left.toInt()+t.x+((s)?0:q.x)-o.clientLeft,y:r.top.toInt()+t.y+((s)?0:q.y)-o.clientTop};}var n=this,m={x:0,y:0};if(a(this)){return m;}while(n&&!a(n)){m.x+=n.offsetLeft; m.y+=n.offsetTop;if(Browser.firefox){if(!c(n)){m.x+=b(n);m.y+=g(n);}var p=n.parentNode;if(p&&k(p,"overflow")!="visible"){m.x+=b(p);m.y+=g(p);}}else{if(n!=this&&Browser.safari){m.x+=b(n); m.y+=g(n);}}n=n.offsetParent;}if(Browser.firefox&&!c(this)){m.x-=b(this);m.y-=g(this);}return m;},getPosition:function(p){var q=this.getOffsets(),n=this.getScrolls(); var m={x:q.x-n.x,y:q.y-n.y};if(p&&(p=document.id(p))){var o=p.getPosition();return{x:m.x-o.x-b(p),y:m.y-o.y-g(p)};}return m;},getCoordinates:function(o){if(a(this)){return this.getWindow().getCoordinates(); }var m=this.getPosition(o),n=this.getSize();var p={left:m.x,top:m.y,width:n.x,height:n.y};p.right=p.left+p.width;p.bottom=p.top+p.height;return p;},computePosition:function(m){return{left:m.x-j(this,"margin-left"),top:m.y-j(this,"margin-top")}; },setPosition:function(m){return this.setStyles(this.computePosition(m));}});[Document,Window].invoke("implement",{getSize:function(){var m=f(this);return{x:m.clientWidth,y:m.clientHeight}; },getScroll:function(){var n=this.getWindow(),m=f(this);return{x:n.pageXOffset||m.scrollLeft,y:n.pageYOffset||m.scrollTop};},getScrollSize:function(){var o=f(this),n=this.getSize(),m=this.getDocument().body; return{x:Math.max(o.scrollWidth,m.scrollWidth,n.x),y:Math.max(o.scrollHeight,m.scrollHeight,n.y)};},getPosition:function(){return{x:0,y:0};},getCoordinates:function(){var m=this.getSize(); return{top:0,left:0,bottom:m.y,right:m.x,height:m.y,width:m.x};}});var k=Element.getComputedStyle;function j(m,n){return k(m,n).toInt()||0;}function c(m){return k(m,"-moz-box-sizing")=="border-box"; }function g(m){return j(m,"border-top-width");}function b(m){return j(m,"border-left-width");}function a(m){return(/^(?:body|html)$/i).test(m.tagName); }function f(m){var n=m.getDocument();return(!n.compatMode||n.compatMode=="CSS1Compat")?n.html:n.body;}})();Element.alias({position:"setPosition"});[Window,Document,Element].invoke("implement",{getHeight:function(){return this.getSize().y; },getWidth:function(){return this.getSize().x;},getScrollTop:function(){return this.getScroll().y;},getScrollLeft:function(){return this.getScroll().x; },getScrollHeight:function(){return this.getScrollSize().y;},getScrollWidth:function(){return this.getScrollSize().x;},getTop:function(){return this.getPosition().y; },getLeft:function(){return this.getPosition().x;}});(function(){var f=this.Fx=new Class({Implements:[Chain,Events,Options],options:{fps:60,unit:false,duration:500,frames:null,frameSkip:true,link:"ignore"},initialize:function(g){this.subject=this.subject||this; this.setOptions(g);},getTransition:function(){return function(g){return -(Math.cos(Math.PI*g)-1)/2;};},step:function(g){if(this.options.frameSkip){var h=(this.time!=null)?(g-this.time):0,i=h/this.frameInterval; this.time=g;this.frame+=i;}else{this.frame++;}if(this.frame=(7-4*d)/11){e=c*c-Math.pow((11-6*d-11*f)/4,2);break;}}return e;},Elastic:function(b,a){return Math.pow(2,10*--b)*Math.cos(20*b*Math.PI*(a&&a[0]||1)/3); }});["Quad","Cubic","Quart","Quint"].each(function(b,a){Fx.Transitions[b]=new Fx.Transition(function(c){return Math.pow(c,a+2);});});(function(){var d=function(){},a=("onprogress" in new Browser.Request); var c=this.Request=new Class({Implements:[Chain,Events,Options],options:{url:"",data:"",headers:{"X-Requested-With":"XMLHttpRequest",Accept:"text/javascript, text/html, application/xml, text/xml, */*"},async:true,format:false,method:"post",link:"ignore",isSuccess:null,emulation:true,urlEncoded:true,encoding:"utf-8",evalScripts:false,evalResponse:false,timeout:0,noCache:false},initialize:function(e){this.xhr=new Browser.Request(); this.setOptions(e);this.headers=this.options.headers;},onStateChange:function(){var e=this.xhr;if(e.readyState!=4||!this.running){return;}this.running=false; this.status=0;Function.attempt(function(){var f=e.status;this.status=(f==1223)?204:f;}.bind(this));e.onreadystatechange=d;if(a){e.onprogress=e.onloadstart=d; }clearTimeout(this.timer);this.response={text:this.xhr.responseText||"",xml:this.xhr.responseXML};if(this.options.isSuccess.call(this,this.status)){this.success(this.response.text,this.response.xml); }else{this.failure();}},isSuccess:function(){var e=this.status;return(e>=200&&e<300);},isRunning:function(){return !!this.running;},processScripts:function(e){if(this.options.evalResponse||(/(ecma|java)script/).test(this.getHeader("Content-type"))){return Browser.exec(e); }return e.stripScripts(this.options.evalScripts);},success:function(f,e){this.onSuccess(this.processScripts(f),e);},onSuccess:function(){this.fireEvent("complete",arguments).fireEvent("success",arguments).callChain(); },failure:function(){this.onFailure();},onFailure:function(){this.fireEvent("complete").fireEvent("failure",this.xhr);},loadstart:function(e){this.fireEvent("loadstart",[e,this.xhr]); },progress:function(e){this.fireEvent("progress",[e,this.xhr]);},timeout:function(){this.fireEvent("timeout",this.xhr);},setHeader:function(e,f){this.headers[e]=f; return this;},getHeader:function(e){return Function.attempt(function(){return this.xhr.getResponseHeader(e);}.bind(this));},check:function(){if(!this.running){return true; }switch(this.options.link){case"cancel":this.cancel();return true;case"chain":this.chain(this.caller.pass(arguments,this));return false;}return false;},send:function(o){if(!this.check(o)){return this; }this.options.isSuccess=this.options.isSuccess||this.isSuccess;this.running=true;var l=typeOf(o);if(l=="string"||l=="element"){o={data:o};}var h=this.options; o=Object.append({data:h.data,url:h.url,method:h.method},o);var j=o.data,f=String(o.url),e=o.method.toLowerCase();switch(typeOf(j)){case"element":j=document.id(j).toQueryString(); break;case"object":case"hash":j=Object.toQueryString(j);}if(this.options.format){var m="format="+this.options.format;j=(j)?m+"&"+j:m;}if(this.options.emulation&&!["get","post"].contains(e)){var k="_method="+e; j=(j)?k+"&"+j:k;e="post";}if(this.options.urlEncoded&&["post","put"].contains(e)){var g=(this.options.encoding)?"; charset="+this.options.encoding:"";this.headers["Content-type"]="application/x-www-form-urlencoded"+g; }if(!f){f=document.location.pathname;}var i=f.lastIndexOf("/");if(i>-1&&(i=f.indexOf("#"))>-1){f=f.substr(0,i);}if(this.options.noCache){f+=(f.contains("?")?"&":"?")+String.uniqueID(); }if(j&&e=="get"){f+=(f.contains("?")?"&":"?")+j;j=null;}var n=this.xhr;if(a){n.onloadstart=this.loadstart.bind(this);n.onprogress=this.progress.bind(this); }n.open(e.toUpperCase(),f,this.options.async,this.options.user,this.options.password);if(this.options.user&&"withCredentials" in n){n.withCredentials=true; }n.onreadystatechange=this.onStateChange.bind(this);Object.each(this.headers,function(q,p){try{n.setRequestHeader(p,q);}catch(r){this.fireEvent("exception",[p,q]); }},this);this.fireEvent("request");n.send(j);if(!this.options.async){this.onStateChange();}else{if(this.options.timeout){this.timer=this.timeout.delay(this.options.timeout,this); }}return this;},cancel:function(){if(!this.running){return this;}this.running=false;var e=this.xhr;e.abort();clearTimeout(this.timer);e.onreadystatechange=d; if(a){e.onprogress=e.onloadstart=d;}this.xhr=new Browser.Request();this.fireEvent("cancel");return this;}});var b={};["get","post","put","delete","GET","POST","PUT","DELETE"].each(function(e){b[e]=function(g){var f={method:e}; if(g!=null){f.data=g;}return this.send(f);};});c.implement(b);Element.Properties.send={set:function(e){var f=this.get("send").cancel();f.setOptions(e); return this;},get:function(){var e=this.retrieve("send");if(!e){e=new c({data:this,link:"cancel",method:this.get("method")||"post",url:this.get("action")}); this.store("send",e);}return e;}};Element.implement({send:function(e){var f=this.get("send");f.send({data:this,url:e||f.options.url});return this;}});})(); Request.HTML=new Class({Extends:Request,options:{update:false,append:false,evalScripts:true,filter:false,headers:{Accept:"text/html, application/xml, text/xml, */*"}},success:function(f){var e=this.options,c=this.response; c.html=f.stripScripts(function(h){c.javascript=h;});var d=c.html.match(/]*>([\s\S]*?)<\/body>/i);if(d){c.html=d[1];}var b=new Element("div").set("html",c.html); c.tree=b.childNodes;c.elements=b.getElements(e.filter||"*");if(e.filter){c.tree=c.elements;}if(e.update){var g=document.id(e.update).empty();if(e.filter){g.adopt(c.elements); }else{g.set("html",c.html);}}else{if(e.append){var a=document.id(e.append);if(e.filter){c.elements.reverse().inject(a);}else{a.adopt(b.getChildren());}}}if(e.evalScripts){Browser.exec(c.javascript); }this.onSuccess(c.tree,c.elements,c.html,c.javascript);}});Element.Properties.load={set:function(a){var b=this.get("load").cancel();b.setOptions(a);return this; },get:function(){var a=this.retrieve("load");if(!a){a=new Request.HTML({data:this,link:"cancel",update:this,method:"get"});this.store("load",a);}return a; }};Element.implement({load:function(){this.get("load").send(Array.link(arguments,{data:Type.isObject,url:Type.isString}));return this;}});if(typeof JSON=="undefined"){this.JSON={}; }JSON=new Hash({stringify:JSON.stringify,parse:JSON.parse});(function(){var special={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"}; var escape=function(chr){return special[chr]||"\\u"+("0000"+chr.charCodeAt(0).toString(16)).slice(-4);};JSON.validate=function(string){string=string.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""); return(/^[\],:{}\s]*$/).test(string);};JSON.encode=JSON.stringify?function(obj){return JSON.stringify(obj);}:function(obj){if(obj&&obj.toJSON){obj=obj.toJSON(); }switch(typeOf(obj)){case"string":return'"'+obj.replace(/[\x00-\x1f\\"]/g,escape)+'"';case"array":return"["+obj.map(JSON.encode).clean()+"]";case"object":case"hash":var string=[]; Object.each(obj,function(value,key){var json=JSON.encode(value);if(json){string.push(JSON.encode(key)+":"+json);}});return"{"+string+"}";case"number":case"boolean":return""+obj; case"null":return"null";}return null;};JSON.decode=function(string,secure){if(!string||typeOf(string)!="string"){return null;}if(secure||JSON.secure){if(JSON.parse){return JSON.parse(string); }if(!JSON.validate(string)){throw new Error("JSON could not decode the input; security is enabled and the value is not secure.");}}return eval("("+string+")"); };})();Request.JSON=new Class({Extends:Request,options:{secure:true},initialize:function(a){this.parent(a);Object.append(this.headers,{Accept:"application/json","X-Request":"JSON"}); },success:function(c){var b;try{b=this.response.json=JSON.decode(c,this.options.secure);}catch(a){this.fireEvent("error",[c,a]);return;}if(b==null){this.onFailure(); }else{this.onSuccess(b,c);}}});var Cookie=new Class({Implements:Options,options:{path:"/",domain:false,duration:false,secure:false,document:document,encode:true},initialize:function(b,a){this.key=b; this.setOptions(a);},write:function(b){if(this.options.encode){b=encodeURIComponent(b);}if(this.options.domain){b+="; domain="+this.options.domain;}if(this.options.path){b+="; path="+this.options.path; }if(this.options.duration){var a=new Date();a.setTime(a.getTime()+this.options.duration*24*60*60*1000);b+="; expires="+a.toGMTString();}if(this.options.secure){b+="; secure"; }this.options.document.cookie=this.key+"="+b;return this;},read:function(){var a=this.options.document.cookie.match("(?:^|;)\\s*"+this.key.escapeRegExp()+"=([^;]*)"); return(a)?decodeURIComponent(a[1]):null;},dispose:function(){new Cookie(this.key,Object.merge({},this.options,{duration:-1})).write("");return this;}}); Cookie.write=function(b,c,a){return new Cookie(b,a).write(c);};Cookie.read=function(a){return new Cookie(a).read();};Cookie.dispose=function(b,a){return new Cookie(b,a).dispose(); };(function(i,k){var l,f,e=[],c,b,d=k.createElement("div");var g=function(){clearTimeout(b);if(l){return;}Browser.loaded=l=true;k.removeListener("DOMContentLoaded",g).removeListener("readystatechange",a); k.fireEvent("domready");i.fireEvent("domready");};var a=function(){for(var m=e.length;m--;){if(e[m]()){g();return true;}}return false;};var j=function(){clearTimeout(b); if(!a()){b=setTimeout(j,10);}};k.addListener("DOMContentLoaded",g);var h=function(){try{d.doScroll();return true;}catch(m){}return false;};if(d.doScroll&&!h()){e.push(h); c=true;}if(k.readyState){e.push(function(){var m=k.readyState;return(m=="loaded"||m=="complete");});}if("onreadystatechange" in k){k.addListener("readystatechange",a); }else{c=true;}if(c){j();}Element.Events.domready={onAdd:function(m){if(l){m.call(this);}}};Element.Events.load={base:"load",onAdd:function(m){if(f&&this==i){m.call(this); }},condition:function(){if(this==i){g();delete Element.Events.load;}return true;}};i.addEvent("load",function(){f=true;});})(window,document);(function(){var Swiff=this.Swiff=new Class({Implements:Options,options:{id:null,height:1,width:1,container:null,properties:{},params:{quality:"high",allowScriptAccess:"always",wMode:"window",swLiveConnect:true},callBacks:{},vars:{}},toElement:function(){return this.object; },initialize:function(path,options){this.instance="Swiff_"+String.uniqueID();this.setOptions(options);options=this.options;var id=this.id=options.id||this.instance; var container=document.id(options.container);Swiff.CallBacks[this.instance]={};var params=options.params,vars=options.vars,callBacks=options.callBacks; var properties=Object.append({height:options.height,width:options.width},options.properties);var self=this;for(var callBack in callBacks){Swiff.CallBacks[this.instance][callBack]=(function(option){return function(){return option.apply(self.object,arguments); };})(callBacks[callBack]);vars[callBack]="Swiff.CallBacks."+this.instance+"."+callBack;}params.flashVars=Object.toQueryString(vars);if(Browser.ie){properties.classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"; params.movie=path;}else{properties.type="application/x-shockwave-flash";}properties.data=path;var build='';}}build+="";this.object=((container)?container.empty():new Element("div")).set("html",build).firstChild; },replaces:function(element){element=document.id(element,true);element.parentNode.replaceChild(this.toElement(),element);return this;},inject:function(element){document.id(element,true).appendChild(this.toElement()); return this;},remote:function(){return Swiff.remote.apply(Swiff,[this.toElement()].append(arguments));}});Swiff.CallBacks={};Swiff.remote=function(obj,fn){var rs=obj.CallFunction(''+__flash__argumentsToXML(arguments,2)+""); return eval(rs);};})();melange-0.5.2/data/configuration/000077500000000000000000000000001217205050200167005ustar00rootroot00000000000000melange-0.5.2/data/configuration/scheme.xml000066400000000000000000000005701217205050200206700ustar00rootroot00000000000000 F12 melange-0.5.2/data/images/000077500000000000000000000000001217205050200152765ustar00rootroot00000000000000melange-0.5.2/data/images/melange.png000066400000000000000000002273341217205050200174270ustar00rootroot00000000000000PNG  IHDR^^+wsBIT|d pHYs%%,%tEXtSoftwarewww.inkscape.org< IDATxy%U=Uw}zZKlIͲ-;#`?ƳxD`؁` D"f"`3a+Ų[2Nfe{_-l]Zr9}ɥ]8knn^hn޹ Z;:w}|>❻;Gs]wzsw!sw܌p|yTw;Wn޹۶g;9nn޹&vLiI׼{xGv5[xsst7\h'3v/z< x\βٵk׌NvG-451?Zkv N:vo⹫9xn;Z X9fYFx\ٹs'TJo߾t8&^Oiv:$I4MlYejjv?O?m1}sرR4M駟$I@jh5&͘sD7 Нhc=yN;w$`0P}k;7|seee,Z:UJiTJ$Z너CJ)cTmy(2ef6y2cL<Fǎ[$ iO裫w7ѣ!Ic C} NM74رcBYvV@D]$13 jyK1.8l0Ε""Pex5@&"6ưR15}7FW//lH;v<#~9x.Ds;>x sN\wu;={\XXؑiCIBQYR(P)gK? !k af(Jܞ1gl,R'|߿y1uĉ?_3_ pI9/a7%f0%H&eڳgOwpG^ffEDV(^j<{Xje5V]]3T۱#?~رc4E<裥͚"q7ݾ_,//Zwpff 5Ɣ5RQeg^J"hIRh (!kɡ̵pmq$7~ӽĂ//jb1eJ1 JMU|ĉ}+_y7~7N5hs_nmtС=E/JdI)Ev[@bm)[l?sNJf  $o+ǵQCLg!fF m{W|z6Э_b#[_-"+Dl,N};~8qbKwaaAz뭭wメZk7Vc 3+KUP~ fÕp0J^A95B<uhÇfCӮoDƙIw0Fa`"kGƘ\)2Efzꩧoxss3ws^`'K(f'h4R;w׽7]v]j%Iʒb.-,.hu37qi+hƳ:z _x)RjTU9Ec#|0TvYM0cm[EVFOTHvXP^@Y-Rf$3R#;(Xa?'>|cuu՜L[n'y%UB10jVo"b9Uș2W|%U!B;q{ZgiN=a]ތ̈́ 2 b[.Eye"D9X?<ާ&-;3bcX[0 SDvر_Cph9xϣk0+nJ=3[AHyM[O_GGx$X'\+DN*z±<%w )JڀJU L JBei [ g<(Ժ:6r?f 6J9Pʖ-a| .c-~[vJژs7Oӏ}SzwwϬgy45EsG7ypS\u5e]F _t{hASyx+16lXStb\ `T^,l,}4Q0`H[*{,K J'Rm(T hC4Y\j~ݟّեm s,3i›wh6 Y`tr{4/+liGư`;"_[[{ӟ[u*p߹{Z:~{3;_}jt)3<ܦ'n_` ʷ}5,n mig.jUچJPi\RxneA\s#i[% K" lF`3lMN ij@xlq7Ez繳J|uuO~LQxs=Gn[ܴ믿>W_]gϞ+hrw &c/ѱ; y[*/Y֊A/R VU mFC%=bRE!A ?.%|Wr^f|ʻUyK p>. m984I[ܽo ci0G}77Usĉ9xbVhgVս޻믿.I*cL!"F6!0 VmL* V,tU҆nt)@W…ޑPܴS ը)Ø G<bk`7W\т-7M^,H1H)i;&c,[׾__SN9xkwAH$ xZ` 9!f-a[%T t[,lL` kTη^2.)Z]$Gfqy?ɶll1Z6<q<" `S)̙y>~>ߟm#,`̵gݦ0xV~p7|WQ#c:aZ}M|P4܊YҦ[F*؁bvAtvKP:A] K n MTrrxc@\>03xmy \@ؕ b`tf,o*6amW/|~闎:uj&ssn5@Wfmoniii/Mk4g<;l2~WYi4t>)mȪ@@%-$E$!tA2V[iM #;%SJ'zq-vWiUo9W#cp m0ijZvgFs,7C3nZ ?yO~Cm9|gws"s9N]ZZR7p>pվ}h2+oq"7)ֿ ޒ^_"krPΙ%BwH;C7Bsst'L{*\d٨ג9,ƦQa !KQ?s~J 3L>g`YL]ltf& <?|[_Wn> n)ɴl@/,,җHY5+a%t7]g!r9:Cku$s.>Vn )Aiik 贕!lڤQ{229+gtɶ,좎p@^o!g[Éu3h?`3I f9766NsG?g7jww@ԋ_bKKWVV+[⫔f!]_m&Z _42k- Nw J[lmV:Uv|IݿW8|&ߎSAx]M.äAi*@P ѐ&Aw9B؃M3^g-QOҀp &Y3&}ҙ1#~?S?>SL禇9x#niA˅?C?{[rsi[Kb.3w̙o}=:0 l ҦXځ3Ei`:J +Ŭ9l~C~ɯd y̘,vd 7$EU5A"\8nzaODD1Gt'? bnz؆7pL r|^ݬ91m(:o0֊1L<xoiLa%B҅VSuqQPufJ*=jM$gHg; <"1M27цgpUͱ6ٚ5A]_30& ?Eú{Q->|7 ަG&:ІRji,'x?>LxkDw;yS[qZ.Ve]|kuې -(۲n0[sԗ `:=XAE@q XӵH|u?xp6 50Tb'TMq 6f8#4C8s #?{O~䋟`j$1hzQ-;մiz)Ϙ{x7| TݰuIAXYv^܍VwGHMkn\S5ۚL#17x`_; n޳gϋU@1txͱib%oZ=m D)tZ9^Nb]C)ÿVFV3Wgl㗓PMgkz5`wX@Ռ7a3vߑI_5K5nȌ1c=_WWW͙3gr1 xUhz4`j};w^L \|~=3ZݕG;d+)ڮ3+텪Y fJ%h-Fwi?9X-]fpg\9`X"ȰN6:&>Oi6WdF༚,gcu3f ңvmJѣG[2Y0߷ x#3\{ȑcM`[J1kg!?&Tjī\9WH:vNYAeiT,g㭽&Z$ALS IDATsj,Cir~F#\ݗ2t˹%ϑYmg6Zo^xi~ߐclnú(֔RƘrSw}_z~̙xv{t'ywٟ[ ZBDv_|8RۖlP”NthVl]ivӊ)"o>Ix:PY~BQp8JPF_m5`T6Aly0=|aM)FDDi5lmm__}7 {F̅Wo[֐O\6v\Yj ŒT d$JZXAwxJnQXcj6B!ڿD3s0Bgw,`)hAoH$a͌z _Dj։h[6_~v3M7{y &躕hoy[w}wƘ.3M>Z?=0a*Fi$N ޲m4+4V%5RrDu8mtsN'io[:w٤S8!#v6=ӹpaj6?ɐNkLO6OњRj.omm??` |mo}}/OӴ E1s̽|s߽f< jy`kؐ\6%vRq-wEyy]-̽ss0 JmfIjWY$̷OcYY!Lg3; Ň|toXwo>|q>(=FDJu3ƣhO/$>;ia`0НNGʫ_[$iyj[NͶN?߃<TZ4+lbҢYnרSt j|`yݶgc ό{kitaz3ܘJ N6 `n"^7ь7`B}Η~|(˲lS~~xeY <ݞW]7QNB]?vp| b6*k582ۦkiB]v^7t*I֨uۿf&6d73(|q -4Fm)|`nGmȏNKқ'^]yo[r>ˎO;3|Ryg<|?yyi #:+#Is;V]W?<~oef]jc{ƨ\MRXu$L (CY|i@YgwAiIGʝ#KA Tֲ#Coۊ; ,!>l)u<h0U|0M 37hU)ygY?_~̙3]5;3/ytf v3(h@&^kA*E,U-Q+3E-;N6mjpukAm e(r&wN {y׉6xVe6Ȏ/UO [jךلzkET{.t D 3ZWN6nf<:v|rw~‚ zssS:ruɻ ?ٳZ(\QotN=:9VIn\CtM9(DH.vBڙ`Z`^[Ahb N2+4Һ{:WSXϾ{o5uٚK9U?mNw *u`ֈi1K~6ng m_nq:f#?{N}]ol/] ݏWJ*y_|ul&e5c`lcִ[ҁVs#D[+3%س/#.*=w׈*? ?ak*f,|3d)Nsez _fN2i6̛G_a\?p&۠Nvr,$4- \}u0*mn~9\e} 8 +u千B,1zyuOWc< Q?f1L-]U+(c1¸iV1gS %K}:f"R糒+~{|5gdݭ-tkori~G\fY{^6fT.]X9e{r!tp6ݢP6ȊB,קRhDヌ? 2ޛ29 \"܋b@`Ǟ&\*f{xkQRTP5RMPHw}'#}<$I#GnɟɕN㱃3%^$eW\+_[(uͲ_o++I9hf m06e.y ڃ(>] naBԈ"Yj@Iשׁ"q4FZ]85EӘB x2D&9P 4'=MH=!B+Ͳ˲ %aDǨ@%hT(칮mA%|?afH'_g9Qzw'~'W]u^rm蠻w ^|ֺEv,̣U ˦`m "*u:z;l ֞K.yXuM:h4Z:,pC`W) 8fw-|#tDƳ܄XDU؜,6)fY΍#?obk @>|;z|[V_e۾4_}݃%/۴w)Sm8b7o|n^ ƔDstbi$%//)Hk5*$5 %֯}UM]yP^'u1/b @{0!hi8q_&W,EV/tj¦ r5M7+I?˔@AIt ՛mafczD6jkMv}G?CNG})nk*@={\CDI$)1<ԻMP>@04˱0@Pheö6Lؠ:p[$ct:],ZE$X2LMbXCtU%]h&9&b$OaDLGYpxkb=tHg _EX\'&XCd޽/ݝNGommip1MvEw-VQ;ohmCB68 ^W`@3!ȉjQVl1zibZcWkoAXܔv<S\ }n6,R&e`I=wHd>$xPmtn`XVJ:-DaeQx;]yڦb/m-..Ms:15A AA4ӋAF\ 5v~qG4SԔҐM57/@7#eiW!ZpSĭ+/4dTү-+ Ou(u~C k7] _vʯʋ݀|Sh{с:7R]رJ"J3SqӘ[84K fm,N<.z4c7h57|M̵{e2G#ʳޖurŒ^ִsD9@oNXhFjW{\pL9k[-/3Kot3"dΝ~1f6]T =xF+Px;_MZkX2-k;.V1\쿐:X:pH'(p$4}ą(w$pI+SZ܀<;{ Jm@#5, ?zyG.0~~beptAh#㢱:H6ВWA!ϵbE0J|h?F"w(+i uGXRzELKB lאu_kQ@Su@~f[T_fP҃N{JMs|pA|3w펃y׻u;bvQin][ǿyd`(fخ?t[=HM׵k/d3)!9qմ}U Cˎ*~eW6H?PЎB&OԃWf Df_xH^H^Q0up 33""E5ŏ=u ^x,3݃Jz(4jQo[Gڴq@-h^(knC]cL7:~5r6\QbF"Ig> taÉ?٫{.T%%YWogrQ Ê =עQ5>rTkt=p 26 pձ7u\N @gsz%pZuY סL lx||}*Se+$6HwAI۳iZaGN~1eYg[V~s7yN}TJifN1lG^Z7Q A03[L@gq]+/5v;+S9{WG+|j :vK"Q5 IDATs  e;')_,x~,>&.&x4iGkհ=ڒ ,4榼JqGA|.2/ZQ6jm-$~{߻v1C}sJ&= ݻ]wuR*svScL;' nI0n O2vt}ׁ9 +Jhȁ!pn y`q c'd7-Ҋu2?(de(/DXTa|l\/b*yB{dzN4J ey6&w5G]ۭT݀TJRU=~czYu)3'Z;<~%ڞSod@MyNv^bH1fl<[hmFTN+WaagwW ýGʳ*ҊW.,5i'm'uu@'51 ^weg_&ʏ8*áeQmZDY$^jJ-01)E94$urBv?H|aZnI6 /@ W1rj+"&z*?ivth"dYֱ&KW>t:Zl.xh8#Gkh"J1mfr>ZxK`>S6tS5Rk/6`ؙ3+D֕W*?|-C6 ҩݐN@Rjez<zףפ2 _ #$a\E$g,>/5zV$hr79|PEhry,Wdfth{vED }5\wȑt8{J59\hSCm@פiZkfnt|o^ƤUV-N0 `^d714!P?-[eUq+4xՈ 'ͯS/{CJ@(յFU˓jH)\buJ\y#58'zy GfK<*;SqޫJt:nHnZ{~,Sr Ij_˥={TJ);6tǫOyZTDib(+ PiKTfr4^{Akat.{1{]BL}jqxW}qc\!dbY?P NE((dyUaDyMmPR`=j)$M*Jh29RS.?&.>q8Q۷Ow^+;xcjn?zlYuM>;aµj`jzò!XWmV ?QМ| qBk4a}ZHao,S|~r:'yw k()˕C]`P>S4*?ڤD}P,lM/rG@NϜheҝb~6LVy9KDI}399h;mw^Z^^n}СY Fe$kѢy 'VI ;I޷01˅FbZ: ]jC ;GcZk15ªZ*y( %H' FzcaOe|MZo! v͟_xmRcTd-?MY39tidCF-}vmemt ajj K]"rN?Ww1"Wmu"ý8BG[px&5xkz~ <5ܡIp)/L? >OfNt8h- pk@BJHɺcc:QAo^9~6˓/tDL,`ө3%bt{};vϗ4M;??N@D缁wҀڽ޻k׮)~꓇͔`lXٚZ֠/{!@BCXHBhP"\D:mLn75,;/R@<("pMe +?whzu~GS{qU^T*'&S dZyU~G!3'5bx&lcc6,u#ڽNPJa%"7v޻\ oȁ`0~_Uf$63wN=o:fec%e#56.7k! m4 j`%m/$q;X)6O<@ ^9XI+juud{QTFE˫< O3fz%օ<\ԢZ=oL78 aWi<11{.,1Pb!V@O;ƘN-fNRUzu~_ }!Wƴh CU+L9`0 V#[\w>X9v )S6˩W3Zb9K%.[+A$vWu@Z' { bLS%Uf?wPQ/!2./wfq)5W[ri_21='/ڗӓ5VMw {,rɁQ v.f@[A_m0>s< /{>5^oۖo<̚S;γqo_2&X&5pAlZ;/׈k%uCm5/hAc 0V̓ -kD%QN4StD")Gx5f9< u">BMɵ0H$a([|m 9Vϵ ey O%_{s6v/svjńP**?./_=rׄl*2H[-EUbv8 v )|d_g0`r@%Pi9R5kկ~`@yyyzxf2,..{gM̝ǿx8'mEȆ˽P f1JsXTw)p5uHo Sx]\h $:6ZB-OuRG 5-K i^Go*tI6jjF)Z~Ҕ C:жjK+^ F/Djg#(MGgͷS^L/#5֛$I՛ǡEDRJ ýyzϵSJm5yagbh>~ÑG۹MpKʷ oU{1HX__ީuH =SZ(m_⺫R{ȸĹ>UXzxye+#2p&s!TZ&^޾?)8hd[ @()(+WU~_O-e9p쮈V"-gJrljX'Mtܵz5W_ !nW;'s6mrw^BafhcګO|:cF]bܶWQehEC,QuVn+;p"z7BJRh-vLyB-K5Q\ ad"xA|2_Uܛ5ۑgG9 p "XFlQ۴Ql͘ d2L5zSͦ͘IڤR\jC=[C{GP ;aX=<>,cVvymNЌS4TN=/b*ۻS7֌1P=Жe` vf8b싂O+++~E~&]v7uEyr_|[maT 3cN\>Lr j=hIhNfW4܋ 0{e^[Iy(Ǣf{if?S&w23Besrmlh2s} Pi%aϏ{]SAy_>%]h+.'=Mm/.}={mcmooT#n_\䅇dƍJ&Cq `2?7./'5_oncc`n;QࠃI~`Zl,m&Uz%jZlEs]0 1-lvג/^@~U4`A3E29Úg,-ɍV:.W!Z 1i亜/!<գYNxqUb CC߉u4Dn/+TZDLv }j dv+FBhSpA[qBq{mZ]a20#%nܸgY4 ?x ǧxxFfn'p̪j Y6=NǶG;9PW[ڞ7ܻ50ڻm^Κj,zkugz<Ԗ͵73C񼮩rֆ?7Y.oK3]:cMioO637UdZ9iK0nm7觱yg:&zW60bUYexbP4Mlݪn$`~m ]\S͌J>@P+:i 4CYM2IwCp\dhU^riio!YCFR54qX7#t\*g?ܾ F  4g_I^͛猙yk_ڝqj<ܢ׿vu88>"PzPev.bv̛'Bր *> *<\|]#'K_-̤R7X׶^_Ywx$j-`r=~ 䀪N]x}ƕ臹rahkȯi/=(XaxdgHߩ,?L׺_T !RV䇴 8 4M[1q6oly/}*]f1ݖE5fC2bhW@#&-Sܫs-@0XoB`@z[)u8u`9RKLe`:d^tSoI1ٰ7U{㪆ގW-Z u_oZ-+GSJV/?~vVi2`PYX}l ^Vkx0Vwޝc#ofqڍ}=*I{(ƲqV_EWݯvQpb&Fpm{jqD|^{0hxn}^Vk̭4`?;їC5)ҿO?fZ=Jz41:jyr+)F&2f{ң2'lZtݘZf:F`c޿&T$@^fhb$66Fk{١3yx͛~~k{ccw71mXA@ }*W(ZVlY5vȩzWcۧ|gUV|{Ca'3rM IDATeJm  MImi}ݞW$T.ޝC5΅N~z" %VpmQ-r'ŴW|-'qjǒ>@rbn0UB\fR >Ҷ oݼys 7|b୞T#co}뎀nd1㟼:4#GܻeROHU)LIvaF?7qm´L`HCJ^&PcNzfriAPW#0Tޗ)5=9Å"ox,]=dXZc\CcXO}_{2eeg mYKҧ2 Uo-Gps1kUZ`ehZ+XoX( ,2Or&-f a(cY}g{{;{i %W:ass3ܹsG4lv&@n@줌˛:-T^ t3\Lc if &Tz\fu(j\WO6dr{duaz 'bXh0U+Tdk?[HF\E[ Bsݩ%/}maן`:,w)SOaa`쀢܎G2#3ϼ@9Lk,Ր_+ ۼKռZg2lW˛en3ssΝ'O' zeOjPy&FN4Nde,yg2F-&;lE/ogUM?CRoe{O? =.Q~O?WZy>\(zLzr=fxUo3b6&Vp"'=>0#mmmwCZ0N#ʤd06^щ*O8#*m/sBONA!pb6 r{Y{Y<=0(eRȩdVQ3UQyªO _7Dv\Wa qi¦h'@_\d +H!fVqCePoC2:wG?E ?FeR˘AFY)cl(y'[o١*|pgxqc zsttt@h&t]71/KX}tjכ߄W VO-LҢH{YF .ځLZ wJޛf L8Fq 7 <`:rܯ6ǐ\*C-o%3Mz+ʸf[+}/r-::wޫu*'6k~o-)O}b;`; Y =p%SUTV Vr%d\,9 K1quB͵k^sN1ӛ;ǧ^Ehww7ͦiD8忍ht{X&dM3.=7GSfjRM2fL.(EFMgۨi0Y)r[#;檿ade)ej'=w/`jPbUȄ.ޕt'ߖ_b=>p;KmGՇ,*X)H,.g־|>;0VJdeB~Uv#@h*<_z(wnitk\H0ฅ>曟Kxa?/>"G'L"OkRAJF '*d.2=h৥z Btkli7@t6 _Rm2/2BC_CAF9BD0?6Zi@8vKP؍m~`yu7S 4MxoOuT fsu0C.?4rWrԆ\f YtQC \QN=gC6j:p$M#Lܩo:Gs՗O#,ɋsjY5֬/rr9ZY.syv\1eyzOD)BEfM.  ^^3Δ_)Ǹ@okǟs$=L}-ܹs}gge]3'x]'1ưCי9dhz$/1T$Ў0>((VQAT/Ld-|NSzn}XVۖ+IopzX6 '~j~7os׃2r\z=5<@ԫd4Z=~k5gZSc,dbWv o&l`[QYCſX.W.:l3O鼑LTd6Mv'F櫘@\goC4-1{=ƨO^q^j |8留C[h+SFC}c4£$Xy܌b p4* ÑrT/P*0+g Nޔ7J b#Nƥi x K z1Yee_C=o^DJy#+ ^nk-piUZ cU;;;tƍ#n^kn5n/BHhvM{2>(OFgmI!`ˈji3' sVKx.Uůb `LQ W;TF+ɞO+pߏwf(M9ZfѠ禮1kSƇ jEnQrקS=A;,2. PY/Y_ udZLU.3=1q<D9uL[fcb\t*caG4s xs<!1ƖSݸqhggK=9~~Vpw|Mrz̬ 1U.hC0~<#'S SЩ 7d܂cdon1Zlڳfz4cxh׶2ClAґfⶌ}vﭓBC5eT mcc)͆O;-^m9ʉ @Zm=rjl IaIU ; 'ԀB-B;sCCdH9 +f8MꔽxsϧYRcv""} ^G!vwwЃ29>d ooIB@z °,;$NXw* `EOߩYIg|]b?Z/h(R ґҪavY@r^%Z*w]H3d-v"A{XvTڃmcV;#ȞS4_4EPLoBGAElЂ %w51-j-}H{p$vҧu^|PGI!s+UZX7^[FnV5 :yZ$9&^DaܦTI{mZWɫh=Q?6ͰHj)havcmW SCTR+c ec̢r`}=ʓ_uw kqn0όd Bu] ;t82kڵkawwy<:,%P*7 :%'wJWcE E<V*5dIJ=z^{\^!.4{h7v)[#JtT).uLU4wba4A\` 52B۝}y?aNaww^ ufn޼w~wQU}TZrF"6/אG~ߧT%H`u+OM?\/}tҟdҽkI[ѷYt+RN7\ۿuusZ mҦSd][`ے0T{&a(UӸbM1mB!4#0wX^=X\@{B$r_\>C#q]d{1֦Uk]Rwr()iΉC2V3Qt=%E>⹔VQ|.B{f|1ުʨ/J&6{ݟ㰕ܚxksnG??LC*:eIGmϚKTzL`HrՅVez> ?0rXjR2kHۤmnRrr@}rZ"FW~ZW22f=$6Do^T9,vc:ӄxF$z뭷3Ӂw M,=zC@J|͛;5[lW#t$%^xc;) k WCK7(P8շ|lvo+[WahrL>UZ@rho}/l=WV۲ t.:I_`e硖Օ ׇ ܘ_/s^nr0SYQ@hﳜ>O-( :)%WtQtH9X:l1x0ޯ sTZJ(㌾n=[Ͱ8 {&Q^E25sy yaRVcC#qj6r8ژLFޔЪ͛73[[#szuVu(9ݯWlylxf{Ն]eaV.ƫ( s~5Բmwˀ9Ml*uVʐׇƳ=^E`ܯb;5ss0+ek+@ 4UN4 !`0Ph0WX-.Rl{ȨWnZ`r]T%\ug*ܵC2gkān~nqvF[W+ ) tȈ!obrbnYEsV1Cm"..UI'CDhW'_Y8[lb^~tu};9h۶sr"acsO=@-;Rd%t)[p'߾# ΦOMpx-e\}TQޫ~o[ڣ"0s:aÖ0l`V2zCpcl~T=;)N d~ZR8%ZڀRxbrv%['AGd7<W+t;nuXV-q9[blMZll؜ZF-Eh8m ^t?xFmF:. 1޻b5H:cKOΐKuHQR.924A@^x#|k7E|;ϽT>W[w/ bhquv-gPʊy=) k&:^L%B=_ p}BHSu9g=.jSrGOfEl/1jaophCKN!'ȜR'c{ f[dK~AcJW^B+Uh f4])Ϋ{6t]Go3?y{|'vvv`'H!h`q5lGW"C3QkmҜɷugdS1fA-HRw./d<$w^%w-`cbs{#eD#=P[Խr0*p|[KR[ IDATo gx 9XgŁGԏ)! PUmo5덩jf%K4^ztv 9[**3ioWP%Bn1b~K|dǧN.#XveǸ={{uGlmh($#H[0޾3p䴗J>=.M;"^'YKO4cu ̝.^\0a&4m3^0CQp{yNԊhA]7?&"@=)yLf)WBR9ErRnj<mCq3m'nͳZ<8۶͹g=΋$tH-^~ ٸ S 1%x@3|K' 9}T /9wZcnZ F4 Q VK,I\Ebe&,3\^^Izɟ퓒3?|xy~awxiFNK#KRA@!}7Fs^x30ƪiӎ˫3,grٵ,PޮQWSr 9yxЮF5K;>)n?s7nmL$#!>F;70޾q97O.GdM oֱ\j?ozjЌ.1':2(#xcm7oݺӧ]w|og7JR*oJW2MжN jᵠ 2ʥwUc?37-@_֞k,cO76`v=(-W ]~lxT[t(4Z*zTP09 `4uLDt2đ;,ӹ( l*WbdxU)@^g339K>}KkXCm}|1^=|h4 %yD2o*E ۈtbjb~t F3 +F2 fvqvm`Q>:̌bz-6~sljLw뚦i@]dDy. ی64n*yyto6]UP^ [n 3W(Tu^і]o֊cbr`Nެ)k;^,51"ih觰I!ж] ț ˃>GX+o!uh4Lj,*T:)`4:G{s\̼D C@<`jx{Ic~{!n{C3̟.04H z'72wO3DT _fjQeC>ÉbXk; %~jţ#y Mv.6( x!!n:f/PI])gfB{l4;KZ-"?,!;ve`D^U.tb ų9rFN~,43.Ot1#!# |gpׁm!0Xnlm~ם-t?~nWnh5v>P5oa~6_-'cJc DQ\ AxRb#"4cn,rc7nl] ΠxM3vwwk!k(O ^fd&y Ʊr{hUlv૕Hk_R|@`ߚ.rTetQ=s9ݺ#Էl0ڀKJmǗ}Eib4: \biӆ q/ A)N+1 (1a\m r#J>>ktG3T.|%>W$ 8M i;:uuuxj o{_ _ж&z [N1&#^)rd`zPdj  ZdV 1ƣq۬Bh9 S# ; Ts1ٰ/`www+0131sX\m pA!˻%F;#Xz7KuY Zs߶M6O`ۀz(قuF+MIX-· )TO( t( V%PqOkr`l Y|R"4cS,Lj9'W c$$,S<|djD7e7tm[L&lll`kk pm 23B Aw]+LSLS\]]aX圽.w_͟} [&PЙ8],1]#׉QBIq_ʠr]d\$УؔkB vD{B`fޮaeB u]ݥxc6ӏ~zAcWbM TjZD2dTDgv&f*#D;~,F%;kr~k.P6\m1y/%&^xAp$%kTNW`Y,@1xqJ)-/hry (1SW=R";}Ҍjg?r؃ߵw ,]acc x G⍍ lnnb 8;;rt[,h?wpZ\y s#L`qaX!(}k2#31e62UO_[2ڢ d~7~c@ަA_N𚿭W~ 돴F&~,@$F5r1.r։ʦl |3eOA:xe< Q>OlyY9kLz<WQb-`ʔx5ʜv)uOlM6Qg*Cad֘KY3rfl7W3Ύvt,|B 23w/6P 2;;;Bf< CCaZJpWrzz_3kMk\/c5;B+X\>з 2Ga |YR-ьwZoAvyiRf5a0WW'ǫgϞz^?^zw7|sH{Q QLM!6ɕzP;:ڣ jyM=[v/"g1᪳PSZKIeQ@ cNKk3aHh m{/pR|cDi(1,73U ZVhPUZ蝗M.RPb1;e/L -HXͯg;̖^n w;k׮!+<}v/;qqq {>ՠkyS||} 8Kyݺx)o`q-S(9;1LvF7QuHŎ1:;ZOx5?BX/~;^wTtFW'@ӑUqvv O.'\!vww5|0\{ җd {zzs_2NNN#,K5yO\!4߾EM0/Ǡ`siw7f 1Wn5Dqg;mCd9䀻wnw]^/Ehq(Qcq9,8-nPqR!:` 2(zp5 /@ [g?S}y%U,ԃeO(Yl2֯fGc!r>LB0jۍ;)E+oUgd= \f*kYLV([d 52Dj)PNZN85WƋT"CCYKcBVZ4#loo>tk[Zwy (F8<jލZVHm,(M&\~{{{Nxky[Vx1vvv>LUOD_m×޸@ee 8cs#c%DyZK؉\1|S)F;"@7wvvh: 1گlJِ;8jd4FWbԧ^DC;0 nRz`3 Ptނr)n[)]rbe-]'W-8vKEќn%302uP]~͓Gdւt,}{zb*kM ={N^M.t32Pt ̯ݟ\ཧMiMXap%ڵk888|>Ǐ+r0_M 7n{^a|As' | ϟ}_A3C7?ЄT׆9D4Y Wsћ2' .69e2t]hu=xa44MO>ͦv{S=0J|vL;Ty{E:bͬ9YyۖU~d Uz + kœQ&Pg>X Wzы:H*9yH_E-N])y@ZH9O<.o0?!B'[ ZK V8~ MFHm\~ O>jZٮ} I=µk/~.˥ ; toΝrׯ18vko3tYgDa1WiM10zŵvJ!MNߞ|a/ C i  .Z+TbF4 HقA0! S&\,LDCT=Rμ-K^%ZObATAVM_Z+*h @X!Z@%^+8 mcoez2/a8KuRdc661[7kj9ZӦ5 vC"~)~E58Հ 8::=P{BXuԱ owb|m.>l n%-D%1޽ٳ` Ȼ|e|䜘T10j4y_1-g;x_3PަǏ[<^jqm<S%"64-vmHf>㥀 _B z_]l[PH0h\lS ]3`YbHt^z ZӡL{u[茂0dڷ)J8…{Ȁ 01Y0/Ѱ0zNۧ w(u@Ǖez-W/ɌMc0V%>| *PGpܦi4{qq'On"4^g<rowue(@DXv_~aã 9ՌQR}l[XMOHH) qb@5t?u r٭ۜrxCvHAD͛'? e^TonI|&kqޘ`6+ % ^cOǹb$ \s\ۧ1Bl3ǦO-͆sk;,_ƼɦIhtZ>;WԗwjD,- FNN“ic,F@"b扣m'Չ1(]hF[`bzY,@" >a= -D yw6l,Y>v_Cm6|8??t:Ž{P(fKO}61@1"v:~#6mK|ң,:dsitٸZÜj Kݻw><<;" rhoRxGJĠР5(ڋ\'KWyvk֛u ] CޢH6_#@ۇ5&›C[a-"m"fCV6hW1/+-*M&ҖZ4M?`PH-&&.)}l5勼^m"f3cL"<מ/3޽{xSߓKwk_v_j:_u)9{)sJc~bMp"̎Eڰv헊"xc߬V+jۖ2bCyEz:qݯ!ML3"I\% 5䒙5jG!EJYCioM?J1Xq+Ŵ`+*A MC(6us~ ?=%G`\wBg(fa~g:PN$g4")9#ZD { )i=OF4qXgЃ\t:޽{bڨ "ˇKrCy5 f+Gh<$Sb!H"w B7t`聻 *BV ,=-FU2e~leaeFa1/n9z!KleV5{R& IDAT/eht̖\\\P_ڗo0C|F3FE}Vvj!@ԉlof{}ҶVCeep1mvLGXͧ*혂ޮo$==;߿Ǚb`^=88P/w>Sl_t YVu[M_;vL|A?3{݃ԞE>E3=l]:JZp,HUҏT%RV !`gg{GGG`fL&x3ѻte'㣉;ln0P=B| 2WYTLA-#~eXYO$[K{<,9=KLZ5ހ=tL@/>9\ U#bLwSK 4ۈ9NWSNCdHEn9:nllƍ J)b6Gܗi{(6[uڵkxWq^]tC|F[U_XΞb:8fB֫ЀR!Te#qB1d2i~Ex)t(cحZ}#Yȡ@K.X&Ҷ 3ᱢX?7N 2WH ^Ћ*ȩ[:]V#eX _~,h 3/?y2Hˋ |'{zߛ>1N5t2"gmEޯ6=9nܸXnxxϼ%4Df$>ovc @Hrv"AiWT\C"n\% L&xǮQ%|LN:-x؉YڕF j̊l ު?_^7㞳kƣuϓzTrExBc 3 O6 C oZ"|YQ.S^ռׄԳ-T.,G3#b1=Kʪy;&$ hcux||}b} Luޡ[:> X4ẟ!ӧOqtt+]|@?qmH8`K1?_jqym@섙1EP &05DDl$"L& xdDž mƣܩZ'૿ (d+Uv8un/Cy+6I.vS`3\7ie\QnOMz #2NFN鯡)p'DĜiV+\n9Es@# nN'_hk@Wm[aoo纩M} nv]E<^!R`X`:ݻhQԎ3rAɢbl'ay x cTʥ4-SB$dӦ!el!dm۶ lIQ+ܪ_ D0שxJz^ om/ ;Qq///A-|=x}{X 7:[b\bqqyc,ʑN@S`zz!6-m6CAK ut]GژX00-*!d bD"8wp mZrkhf[ʳk)4_ڇD -vQ$]Ȳ(P q͠Sj}0a\C<x^""hO@r6Y~hips{!T,I'=O7ݸ( =\]]mxW2[̌3\v 7nǏKo~8ه<`1$Na{.V51ItzyR,/vxxUȌxYQ%OHz(V ʄe=*sW>ax2 'SdKj/W"/ &BaBaMaK1I Iޢ{ i8Ȕ!YV_en+,@h&{'"kldQbfsO7s_}/^h4µk0qyyyCOu+"ZϞ=õk0Nu;c #@ #L^E7*Fhr֋R]]Ր+z+,V 0ֲI/LXc[F5s#J[IXQ dC\3gbrfWDryCwtH:`Ӊ?jA݇(Z*mB,"2vnve"w(;"$Sdb4IAO?HW+H <ٖxg>x`MhAܭ-ܺu D)U@1|ޱOs259gMr\)uA!Zbx :j䉈7*UpO0ieCZPz4ǰ,qqYx+$o ـj]f҉⢒]Ď6ROE\ߗ(rP\)&3OPB[bF{X-0{!&w1>lpqR -lmm6:I}?y^up-7?­olxl;vg={[׿s64Ż;)/clOrufBgggX.]*1"bQDN-.\aP(PPi̊jml,Kƶ$KHhӷ뾪*=2̬Z{fzW ԳnUYofU>oIA̝a/Bg8Mͥ˘;Xd|=ɸ`z i h4/]@!І,+d]waaJR_a7OOF#`yyNg&O7o#IBdj@:܂^:j{ C/# 8햟;i\@!e!MӬY'35^X)2˥p+c̶;+~~>խ ݹ]yCAtWڃV.ߡX` b ng. sw :2PtKA_t1޴kLq͚+d\s ٸ/k}t#] 34ӸJz!-.Qa8NeṳңOz6Gu`v+v~tpZKq0\t`:W>cHFA،*5vdi'bƫ*j=ά8wB$`%"2B 4E`W \y}3>o:S̓c$Ax&u_8;klB l.`2oAFew-|/P'|[7cǑ 3#ͫ'$̳aJc Bo-dnv]60p ^vtWJ(6s۪NKy6~e4uT| -޵+܉F]jSi' ~=T^A!\$IB-]`Ar~FDZ_\Io]L)dI ZU =8 ב?ʞ+8~+lPHX`wPu(}I./2pn=W_[~_'kx<r2|ɰFdr/X5WsdBep7\7KN9x QiXa76L֫uFxN#Uu7KZqTn$Ve>HͲI0X4<v~7:3ȶP2m35Kvp ڋ+ޫl'Mn޼ʒ݄?^@2|ّ#tuYPzPל/{!w^·f z6^fyNA&^m-̗?dőCI(Ws92Tw\Y Sd_Yg2ڡm^):WNo똳u!7cRCXĸQ熙/7?xJ!nm­6Fjw(GNe*r#̧옇 |Gϛ;\kkk%}_"K~ =xD$Le!Kgs$ dd|scC7gd2Ʉ4+/ ײRK|5o(Ɍ:= ~nm 2|U>\?$PtUܲs U77ۙAH%|| M'KhgzJ˟ RQ75 6a2V0*i8#ed%b+DZ*jnw( $Aa|ÎO$I ıc=so"qm?@ЮUT:DT5ϧNa3vyvIx)dXY3%5z=e LuF!S ݹ;c/Sk`hŻ+Q= rT>n-!&X z]z0d_~ +w>fX@z()3?vo 8,(b]ggZZ"BmaY6xJ}euۭ tn_ʤ9F%dY_ݓoe^倽òohb+++.4mgOP_hD. lIg1߁>a{ rBD:"RJ9MҾ4۷ogZ$"FyT cmϱ,?{g}#7մWBeT$,maHsu``0璋?q(<Mܰ|ּBvw{ܹsm> Aסi_w)wbՀ-:V *6&$;/ݍ%/vڠn-"˹,eLjj!IR0= {P^(NDHqƮ9O"B.ďm gȵ5¸sK HVfȷs{!Or,6O $p;ܸq@/vvvYfcHe|(wCd48a {fxx[DyPd :W<(z oѷ֝:*"` pUGb+l.0tsش5"5ya6_{CqRǰsldPd1ҸpwlOW"nV4vV*)#:)A1h40fWoF-V Ye`@ =Eig~z>zΔ/vQ92"."hr,E pA323, [a  Bjqqo` h Jww2\.#ǔ fvF#||Z|_vJGX$bO&;v,zˎOčp1>&h&ݛMO|Bȱ,IPYK@dᐿ l6,8& fME$ o@8LVe J  mp 5gs!? |MEwpO‹z=9Px-\&\{;|>g>Fi%\G {oZl6/z2b}ó۪G $Ƶ-*;T7",..R(Vyþ^ zW>&Im,,,`8+>/]W8wzڰR}C٤&U@K)RRkX{}4MFDfH-T$" d2d7<,AW9BHj`w W^:>q&p=&(~=*b?P Fwa1> ꢤ` 753Wf}Bv=e'K]qY7@gyW l;f83 IDATYWXV"ȁnp3 t\هD)I䀗cM^z`f/7ʁEP$C"Ϯ26:4S'=7- `퍰DHZ.mPsD&-$uY]˙p#glw\CBk9X?eIv / oCN|jܹypl? \98{lD2!8зԗ,5esqݹ6؎G12hގWCuw6^]fc/hXm ly ^XBTcy Q-@&ȼK¥I$Tlf$:A+K>ɾaò~YTkTt1o @IiqE!2pGUnwJ/n41 a&(wB-PtsqmXyP"R6=@tPAȑ/{q*J AUr9Y\ZΥ o=˟<-u`I@1楸ܩb2^>`|#]DPSRVPkB)zWQ sF$NBC=UR`eeZme]L >GX]{i{6  3,)㈀@ !B۷BԠ='`ƕѥK?s?HJH8[/mgVz"4iJ<[5c/:KE !W)w!wܸMw>=- 8f+l+_Ǖry; ɝ&SprJ#2Y[@ĸq.x,x=ϺWv1.iv2 Ya뼥G%4.h N[d҃Kz/@ VХKXp.G e|eFCQ)X?{k63(0h8, 烝5V?L1dpǐ#ȯ6`o(mY%\a.w;r6cހWu o7\ :Za溄 H?̐I]2]@y qކLHn'ť oS+.˓hE\dK{y3~|g]' Q)mԹ?~9Z4M0Į*ne7d~-T=s1Gu19iɨ}w;l~8[vvlͱ|(\T /,a2aн hٯB#HATTa/AΝ/"mq<OD+{/fzǮ^'Ъ*j[VQ;)V׸TB` % 9Zgq+X)% rxLTR6 8-?2kz<R`mY:x˺͹6c5WMLy|.:fN <jbo2{5`.+Ό_oFcY f˴{yz0i_v^PoGBw7A*t}sA0xĦx$AwdK ˨T*ea4Mn^dž'ـhH6U {}nHD0^ED Nh(s%g۷{O>$EQDne _9uL'=CoeP*V7#qh=^N* B0YLfI=a2 X9遜0-G<&/pM: ] |BYu {{Du`H+@̦9.NI (6Y~_Md8F{,0SϞyxFQf: nlVynJ'~DD=q 8 _򗷭Yov4X7rS&`kcǙ9fc  Sdfe8B*1:|pf "emt ֛i͡4MɄ\\C\m`gZ,h00IRTp mI4!Dyel ,9/Fyf,p#'NRJ/ۖ13wrP=\2 `BRITkM(֘37MT+5HC Y#W= s0P"&~sJ86lD±)V` ٞAE/JpzIƢXlaBDVZ t *nb+0ߢϣvOgrSJjc/<>18 Z`&,EDRAk4u{hp9[j8Wqf}ڒ|1( qX 3IjT@Jsl\պDpsZ0!;+7z :72U :y}rȂE s2bu :W%>O9`괅m( Jil]yTޓ>Z V+wLpifl(y xd,V*4 ĪEwI E}CħQTx}}}+У!Td7 RRk%9"Rd.OBv,fvʞ,5ɶ5V_QFDJ 诽ֽNBMxHK)3!Dvc 5QYy{#jDX/Ռ0瘹N%o#o2y ;3 (7A硝l]bjܡP\Ror71I!|J.jdeAR= O~Ms+6%^/ׂ畁xu"E`j׬k"BVs͋)|nn - #olj3BdRʌqO)/n 3ƍtO/`tW^y%F;fs0 HITkOSg+!lBY:*F;6`4i{ʄ88 3b1Xaq#$PcϸÃu8=q?F|~$M֏4ӲJ [H=WNN^2h[1%A'6G5LjM?pjpUq6Cޱk(3a9wS4A\BBwNjR&0Wih4+Y']` ]HqΝ`L=ؒof~-(B|CwB| }>kʰwf ҃t:^M =p;[BΟٸap;D8 %3e, nq41mce$sĒIv0i Ә/"*e!C8 aD,--lrʹaN¨9Ϋ]δߕIk8cm'X v;wl, <d$tҥ $Ϋzg^ ^ A#KM\p 8F,7v % Tb`; zpL6"(r1{M#[lA^`>hŶUV d[2ukPk.ti`c#"d ~4Iq[NݠʤkZm@:nt\Ŧ>`q: vM=I)s[)|{`\X>wҥK 2L"50:ss\WWE<&N:sC I  zȒ1DaGBn3I! 7}K޲0L~%+@L4?\ABܸ=Rk\&ؾ{ *2y8w6b1sC~*!]YJf+^d1c#c~~_ÉW CB40j/wsO㷅O]}sw{F}}5O0:Bq}quv sxCxc&IJa+Ci!&e*l6 x'GFc56a83A ?g-C8 AL{E_Ԯ:(#RZmL] 0.i!]L=IN8"rXfc-L;77cVGGkVzPHjJ₤ȁ0[zI;-e 3YХ~m1]`R,w}}}OR @r-no) -TY R4A~:yA~%:I|J8AN%Z8i6`e%ޱd ΗWwa5c^YMQTZYCQo 7/c2dm*B@@hgv"Rkl !w !PK .~e02;/CyϫW:(Gݏpcbɨ,5νԠ1^pƬ˛O>$G.c7??߻[ +' 4A\Y hξ; SA@(`S9ljnO !+!/yk$8 aoL@ZG)%M]dpUFau(Cǀiw,pA7(!-`]eiހcOW]z/ ->17(EpBkM/p8.50:"}>I)k'oC 4Xe1x U bX0£;΄sVb_0+nM/=fu;m% 1q ]z78˜a7 edw"\:milJF' ;Iz o 0~9Fnx~`@w^AjVWˮ2m7PTF켱\J]\ZBl箈Hi}v(,7az}}]JrJkRhKm x,MAuX@ En?/obh*`ʀˠAN$k -_sroN $\QGc0Aw a>w"Y*n! cIqv)ZntOJVZϮHH IDATi绲+Hykep%e/lO{:n`k}}]K)K _~^DA޽|R؍/ ˫do|Coe)"o)`P@7d~p^S_\ nE̼c {a 膇ڳkwI)Q]hhHc8\n@6Z l뚝 l@F)N/[Ȱ8 Q4ݯgot ?-c׃%EQoWnpOPJH)Swoݺ5 [/MΝ7wimJ|o0N=;$ *AesfiJrp°ݰCkɗ*T:b22kl9ڍw Jj9k  ۼd; !sR =J1a$C![ Edm- ߕ.krZLo(ޱѧ"z7cϜ UJeZkpzEz{{.R>oou19R&Zڙwx{gh176&@st09,XHauab:&ekrc_X/q/@˰< BDނ:wI(nhR80HkSz0/~n4h6bZӮ(Ҽɼ5+ͻӞC~>;&6֚?2qͽyߌ]~eT*:R&?3kBAkv@A1 Ha=4nWl@q-,^`'4B˅XY.q\C@B0l" {9d pp-) qQsX4s\|8Fvr0=;0vJjs]ejesʲl<̙3K)^fo)a ){pa6@PM{)"J(Y][W2# 提 @![ "Dg P&v^ +X«c#?8lKxI+CL`o]?–ױ\Sh,@gナuG&PrKBZx( Ǵ>$S:,h'!kKl Z-8- _WQϺaż5+ͫjW]T]^אַ bY&PJ)|V ܃ < KKKo~sv7VVVNiW<|]>ȸz+Nj*ME1 i2xQC1ҙq+Ԭ lDb":|@/,QT눫u,C:cFA '0gV!T@7!>ĝ+e9kYxyYi^m~U鵜ط 7;;;ǽ^ݮ} /i)F_? W_"[Hp}D_444T"M&2Q Yb md WQ 8Ht t7*v 'yh ]%O*Uı0Z: l@e~"{#\Ho@PK%@) SZx '9BCAʋr22oW@ya4!Iž)yйs^] #"e]th4z 72N[??/RJ`4N6Nw4z_D3N}%@ KƐQ ŨVfMf ,@ó\=ܐ?ЌaQTARAT@F4EM0 n߅RӕM@97aދ; TaJPYZpBv=E,{WÚG0+ͫص;zeoZw:Rʉ:TD|#(Ld._677o:uq2RD!&Og~^j'Fm(M G1DAF%*UĢg`̘Aj"'4zf3NW@+j4^sJ͒$*1 b3I3}$i3QBeòbzx]Wfy/Y!\T?ӿ_8A#础(/dydǸ9= z,rN)ò5l~.@o +|41;P {kMO2d}1tIaڄYqLip(i^횕yLr(ȜL&HdOӯEQ4R&Jnܸqc<k{.po[b8~7fEfc Owp 2oG$|\]g6;Rc©QY(-[hۻtݚMeJhQi^ )O->LJexĉD]@/z3.+8߳n`!˓{D&\~"L$YTtJ\0C;~Y/^l6&Ӽ0~VWծYiH/$x<}WVcǎ]Y"Z`ww`R-#3.5Jd{7n=ǔRڂoBDgϾ|Ν "\: h0YG:Ԥj,MGK!6oYeI !rc6؃^E˚A?J#p< 4~U4]A UnY&Fn-_^"4o w4vJnsQ-~3 LgϞ} 0^oLc[j8"|+Tnev{}yyZ9SO/~/v)T$U]{<'$82kF"/=8J v! |~߈̬|@i0UgQ=h?hx ƒeȻ0 KΦ@B(J j+++X^^v9ݴwya90uWgSJ9YlwyyvEш͠doq{l88K]^^?]YY9-DJ9<u:eCUz琥c w60n#uAzX D8`0_""̓D@ֲߜʴY1PYDf8wYnWTl6;eyL6ykVz;ڼW)zBmqQߵZs}HJ9&tԧ>8/3ve$Z^^J)^_cQ"kkkWz`WƳ݇4Pv̬E Z|( W*4 j]̖ߗQ<<ڴt~T6S}-cVvjݤqj{{@8=52?pG , !FgϞ\85 l>sQhx͏.͓O]!Μ9=)e_ofj2 ?яFA tr j}}]kWH+RgϾl6=a/j[vELe`-a*6Q( ̏z/u>F~}v杳gϾ"p.K.|(~0&8Y?kI-睈BŋCq fP~-!VU?~f3G`%/x(5vNG isY*.&:ϟbo7I]+yP*&"u쥗^z}{Q))e;T,--Z[[{e}}']E5 8v ״80 hgֹѴ(\lh{5b-{[k]E/׮]l]0d2^ *p?xm0tHX'xJ2|p n KKKh49`Z*ir½Y2jQyZb{&F rǖj:|'B apM ~㱲CTЀLT@ݼyS?֊za*eqܹsur=hnQ:e_ݏGm^X16 ־{qak,??|֭,}$lxx^ Jz]ͦ?{dv!*O~ucc=~̃0k1DQ!Z`*Bh%wi;6?ڻNCݾyWbYy[fiIXӮRJuoI)Rʡzb1F%I2>vi2(T}o!h J)m}FVΉ'~ .vAvǔi=6{y$8677K[Lkkk/;D4m~_}饗& .𐥆BrrDF˿GvG$5E.㉶[n߿lTd8(޹s}6 !l6KYqxl}xtTvy^ޯ{M~OcIL p^LgϞ}6rD&,AJ& .L=R <:S|yoovnܸqTeν'Nxn_3) PVw[zJ+Ajọ̈oll"Eelwqqɓ'_#Ԉ(Zk׮]`0( x gzd[p/smRJ=Lԇ?'ɈgY؊\x?(Y?>Fc?>&<~݃wJmؽe푿 +浵P"&qg.\&rJRZM&G>gM=* N6_{Io}tmo:w ft"R?z`@D4M괷zG?;3$Ce!J Č""'>v} Z("!\YYyqt~ w(J}riPS7Md\B #;dY\FJ áK ]j(h8V([__O?O)%gaa^BV5 +KQ.Q}ZzedZ1 tNj6Ο?[z10?3/loog(Xa|vҡ/P[ƆH߽{W}K_[zI)4U!zO>W{F]=;z騗(^Ns q_+ŋ& !v2]׾ix]DZ(C1mKvL!HJeaa!V__ٳg/DQT*XR6hikk=/_'+bG)%(‰'Jc ;9䐜]Y+{k_ͽV8׾E"HЪ[E((Mjq_Euڤږ9N,Y"zV!99\r4/ Cr|~^/~ii=IyMEvA{}fjjMJ骔Vv9o}q`94;~Gzksǰ_j>*DnhUU …C1ՇA!}מy{aaA؁ 󟟿p+hvoolym s- p# `rqf$bRBw-: _eYwBH҄NIgϾ qMx'a 0 ) ƘlZu]|z Ō!dOZ/QVWW{N}iTeI0G4+!;o3*t è۷J*TUIzu]ja莥Xe5Dd9o߮Y?˲J3B1۶gz뭏 Mq~zeR.;Tw;OeI>$4X+6,!PUF6D#N0&l^=|_~8u/--qXZ Jc{m=\_+8"|]Dtfi^,Ԯ4^|C2)(mkp9Rai777L6MBxRJ~ _^~m|ݰ0s$1|'"9cY(|ߦG-uayyyMTLHrqEhFkna7B[ny$asnw)ovX ƨ0^ (ρW*X\\W*W~~^J)}4M#Rݻ .o)%UI`}VVV`jj; Bi0_&:&tg!1 fmIݻw?[.O@1֒R:{ !z??7@{XIG:{i<㏯ǫA{RJbkV:s RJ}t15|5.(J#ލ(~nt-|8J smv1 ؈hsν.W=1TE617hNL)TUA'/~ SSSO]8qɠ/+DlQJ볳GJ"_5Brϯ#W79Ѡet_a~~~H\.>;;{RZfy/;g?ً ʴ`D )yӟ[gϞ=>;$W,O$aJ)Z=}ȇ)-j T]k ^na~~yt]V*N}R'4ED3g:|۞C4Ww" 0ydF T*iei۶m񟞞ei c d1ŋ/޷?ֶLJ%f=~o'zהa~ jYJRm۶pvvE]DmoֱẮ44NLC&.UJ|UCe(XtW}affE$4jh4z%)¼6Kit84C-k,--Y833 ZI)??8j|) 0X_3|ϝ;?OlVyB64)ߥ8?x JI_m=l5+!46Z˰fI% y]ryW/]1TK'l5@}۶m=ŇBPl1fB,DI) ZmK>(EqL* 0ƺ۫iX]kM*) ܸRJX\\`DvRz20v*\D4)_}=n5GWۻwBpR2FDs.Ÿɟ7hovl"$×sL٣K_{ǎ(Tf(NqgϞ HҎK>d\b?< |7K ^zk^F_;f27-˺ MyV#/--/^ Aw҆Ѧ/`n߾=cwr-sv4-"f !v=}ܹ~zYa@\^c=int3B6sMFÀf\4ͥ[n0;U&Ν;O|Ғ*> g:5溮:těoDNBi.ٳ,˺3@[r >aEG֯we3Dfޫa2epQĨе,޽{4DlPJ5Ǐo[  m]ڶ-jСSG}M !*4mi߾}O~0Th4zRl}iFI+یx}M7.|>tلwq|}=[ ޴I9iK/ڃ>xZr1Ϙm:A)DvV.eYi;xwf z0 9D,^tjz-Z\>*AӴI^FiAxM4)amLZc&AR۵kNaD }w/| W\8" 1H/\.\.2;;>ܓd Ƙ)t|_nv8FRH)Ja%Yj]x:6#65Fx,)k!< h֞yT*Tbj,nFkjĢ8;$s~0hQJS#KiۭSO=ՈnOE.RLojBc?;hYV1(:x0C CX Fp֣amevGry,˯̼DMƘm_+wZBӴhMS6 x[T\f7?,JeBFу|_RjI)_]]maa!9jk&J~jt-hT7i~s z=u\sgff+'I6_RWWW<3Ҷoo4RA ʌPnrbB BX"F5(DI9ka\-kZPVaV9jY>:.%RtlǎZ !vcBp)%BxG9Cͻ+C~n0bˤ Җ/@boϠ[6ea_Ƙ3D,"l޵p 6o2. [eAP]GSˣRq9QRsZQ噙f!-ip}#"oZO<ď_c-DRx)(JLJɢ!NF)BL) 9)evuuj3s+.u,~χV{&7✇ŢIM:zOH¯ĜR:nzd-ض-kAB|QĖ\)3frYRR54MuB 6}FS|Hl& d2p>^ZO}Al^C^)e9$7XB;vj] })%s_|`۶X ;@)xczNM9>V_w"v C)5D,d[n OÊ⋤no4XJ}.=RJh4h43¯2\t|\'D^מ|kV% MP z(Te=vm#/kFQuc̔RZ}fyb4`Z@P4{ [FZx:꾇hP5Fq;vu 9@|!fY׾O>YX q)pP !4z`j-i}wܖd J)CD1-,6͹z7%L À\.e%i"|~]}quQ% EZ-y^9-Kq!ɬl߾|>"J+lK)\J)#DZj-S)xTAp??mzzzuƘN'C~&ȮZ.)9*:5O)˲ ͂aC`3FC~Դ0)%4Mh4=F8J[*~455*!fRJڈz,Dqҥ=؛J[RJeZj-C)xGTBE8 !X.as?swdkAxFcBV^90pQ0k֍FGZ8Z-pg(hpcvX<^*^d2 X !m\J)m^}ۿ[լ\F4]Dk.躮+A4-HASg&B|Z^9p Àl6 eL=G0ǶXl\ׅVm; ך5Jr1քNK)m#b}\ёĉ|s;welZVHN ~)pޯa}oСC?5==!D U "dSJ[]]V9/%EQ'teA.릤%/ Q}+_ʹ'Op)2d+gQ)x T*1D$*޻w޼o߾a@IQJU)dBdBV@Ј=.z\A3t- OEt1=nw:4 c!˝*!MJ0kBpK) BH !~hn^y ?h:A]FF8] Y$`؂il6vPxCUX:rι@DX n['Nx.^rŏn4.@ kIYr=R}򓟼ʂ`X'T)b!8MfVqQ@ 0\䩬()@)BYJ B.\= $.,L>eY1=Ji[JQJl V@uk˿ZƇnp:DagY̽޻7 !iF8!.TH)flh۳FpuGQ,@CM ! DN˅j\35 z<a|>*Ͽ x1GD9( !e٬K{u8ҶmAc7HNMMCMw}{ BiDQJi04DԡXGDCJi!F6۶)8hʠhvb`%d5)*/BJ)cs WWWGyooHJ ?oS`*4Mя~ݻwd2򁥔)2J:"jsnH)κ;nwQux\l&*d Zt]q4͋i^ښNtB8tɸRB$t C_׿>O7]ו*7qM;J;&)ĠHsQ6įOw}7MMMdR a)BRMv{g08q־FϣZyh5Me2˲.YuR"R?@)-!DD BJByyy^'Vj"z,()`5fA"3D$* ,ٳG_ՙ;sWT@rTЁjApV1`nuo@D(}]zꩧV+!j#A ܉P QB!beE!\*~4-O)%R 3E&>j5W88& `̂47 eB"((\Ji1Pd2f2*!RDS"PE0);]h%!DpQJ) !RR!)%rΛ +oWj&X VBZ0aJ;aIr4M>M۷o\.o3MR|a RJ 9#a0 S)e7RsKa xD!׬K)UZ3UF@0R1Bmm2$ !6H;iJ;k<];"xV1M|̽ڵk[\2:ώ1Wx^Y-A42i#" MD$<NH |Pp!:@B TRJ}`` @ !02ݷ핕K.-?s+ַluu]IVA8 vwhhG@&aK" /=ܹs[ROJVք,@U%!x笶 I:$jyOj[Fy bN;B04B.FD5X{%T*@JU˗9R׾ֈVEz] EAL)x7"~kY$ я~xʶm |>gfN4:5 qgAy᪺ʄ{glie2ffꚦn !\pιu]s۶Ef):_ZZ⋋|qqQRJm! !l6AE `G1)݊JaA|ρU ؞$mЉ<:/@Պ]l6!^ D AJG#xt89FTx-[s׵Zna8:]MV T}5eII)3ƼoX[ )hSFV/IB7:K!jTM!c@4i8 á 6)ok!O}!6յV TcuW)DSRJ*uITRHCca:IIENDB`melange-0.5.2/data/manifest.xml000066400000000000000000000014531217205050200163640ustar00rootroot00000000000000 melange-0.5.2/data/melange.desktop000066400000000000000000000003701217205050200170340ustar00rootroot00000000000000[Desktop Entry] Version=1.0 Name=Melange Icon=/usr/share/cream/org.cream.Melange/data/melange.png Comment=Widgets for your desktop Exec=/usr/bin/melange Terminal=false NoDisplay=true StartupNotify=true Type=Application Categories=Utility;GNOME;GTK melange-0.5.2/data/themes/000077500000000000000000000000001217205050200153165ustar00rootroot00000000000000melange-0.5.2/data/themes/default/000077500000000000000000000000001217205050200167425ustar00rootroot00000000000000melange-0.5.2/data/themes/default/manifest.xml000066400000000000000000000007021217205050200212710ustar00rootroot00000000000000 Default theme of Melange. melange-0.5.2/data/themes/default/ui/000077500000000000000000000000001217205050200173575ustar00rootroot00000000000000melange-0.5.2/data/themes/default/ui/chooser/000077500000000000000000000000001217205050200210215ustar00rootroot00000000000000melange-0.5.2/data/themes/default/ui/chooser/chooser.js000066400000000000000000000060661217205050200230310ustar00rootroot00000000000000var $chk = function(obj){ return !!(obj || obj === 0); } window.addEvent('domready', function() { $$('.chooser').each(function(chooser) { // load all available options assigned to this chooser chooser.options = chooser.getElements('.option'); // the first option should be the active one chooser.active = chooser.options[0]; // Apply some properties to the options chooser.options.each(function(option) { // set the assigned chooser option.chooser = chooser; // on click this option should be set as active option.onclick = function() { if (option != option.chooser.active) { option.chooser.set_active(option); } } }) // Check if there is a tabs container assigned to this chooser tabs_container_id_wouldbe = chooser.id + '-tabs'; chooser.has_tabs = $chk($(tabs_container_id_wouldbe)); // if this chooser has tabs, do some initialization stuff if (chooser.has_tabs) { // Load all available tabs in the tabs container assigned to this chooser chooser.tabs = $(tabs_container_id_wouldbe).getElements('.tab'); // apply some properties to the available tabs chooser.tabs.each(function(tab) { // assign the option that belongs to this tab // (which has almost the same ID as this tab, // but it ends without the '-tab', so we'll remove it) tab.option = $(tab.id.replace('-tab', '')); tab.fade(0); }); } chooser.set_active = function(option) { // first give all options the same class name this.options.each(function(option) { option.className = 'option'; }); // now add the class "active" to the option that shall be active option.chooser.active = option; option.className = 'option active'; // if the chooser element of this option has tabs available, // set the tab which belongs to the option that shall be active, active too if (option.chooser.has_tabs) { this.tabs.each(function(tab){ // if the current tab is active, deactivate it if (tab.className == 'tab active') { tab.fade(0); tab.className = 'tab'; } // if the option of the current tab is the same as the one that shall be active, // activate this tab if (tab.option.id == option.id) { tab.fade(1); tab.className = 'tab active'; } }); } // ha! the active option has changed, so we have to emit a signal (which is an event in JS's case) option.chooser.fireEvent('value_changed', option); }; chooser.set_active(chooser.active); }); }); melange-0.5.2/data/themes/default/ui/dialog/000077500000000000000000000000001217205050200206165ustar00rootroot00000000000000melange-0.5.2/data/themes/default/ui/dialog/dialog.js000066400000000000000000000133651217205050200224230ustar00rootroot00000000000000var number_of_dialogs = 0; var simple_dialog_overlay_id = 'simple-dialog-overlay' function get_dialog_overlay() { if ($chk($(simple_dialog_overlay_id)) == false) { dialog_overlay = new Element('div', { 'class': 'overlay', 'id': simple_dialog_overlay_id }); $$('.widget').grab(dialog_overlay, 'top'); } else { dialog_overlay = $(simple_dialog_overlay_id); } return dialog_overlay; } function hide_all_dialogs() { $$('.simple-dialog').setStyle('display', 'none'); } function chained_dialog_fadeout() { $(simple_dialog_overlay_id).fade('out'); hide_all_dialogs(); } var SimpleDialog = new Class({ Implements: Options, options: { 'alt_id': false, 'ok_button_text': 'Ok', 'cancel_button_text': 'Cancel', 'ok_callback': function(){}, 'cancel_callback': function(){}, 'ok_callback_params_default': {}, 'cancel_callback_params_default': {} }, initialize: function(options) { this.setOptions(options); number_of_dialogs++; this.dialog_id = this.options.alt_id ? this.options.alt_id : number_of_dialogs; // check if the dialog overlay already exists. otherwise create and inject it. this.dialog_overlay = get_dialog_overlay(); // overlay should be hidden by default. always. this.dialog_overlay.fade('hide'); this.dialog_overlay.setStyle('display', 'block'); // wrapper for the dialog this.dialog_wrapper = new Element('div', { 'class': 'simple-dialog', 'id': 'dialog-' + this.dialog_id }); // title/text for the dialog this.dialog_text_element = new Element('div', { 'class': 'simple-dialog-text', 'id': 'dialog-text-' + this.dialog_id }); // button wrapper for the dialog this.dialog_button_wrapper = new Element('div', { 'class': 'simple-dialog-buttons', 'id': 'dialog-buttons-' + this.dialog_id }); // "ok"-button for the dialog this.dialog_button_ok = new Element('div', { 'class': 'button green', 'id': 'dialog-ok-button-' + this.dialog_id, 'text': this.options.ok_button_text }); // "cancel"-button for the dialog this.dialog_button_cancel = new Element('div', { 'class': 'button red', 'id': 'dialog-cancel-button-' + this.dialog_id, 'text': this.options.cancel_button_text }); // dialog should be hidden by default this.dialog_wrapper.setStyle('display', 'none'); // setting callback functions for the buttons this.dialog_button_ok.dialog_callback = this.options.ok_callback; this.dialog_button_cancel.dialog_callback = this.options.cancel_callback; // put buttons into wrapper this.dialog_button_wrapper.grab(this.dialog_button_ok); this.dialog_button_wrapper.grab(this.dialog_button_cancel); this.dialog_wrapper.grab(this.dialog_text_element); this.dialog_wrapper.grab(this.dialog_button_wrapper); // put dialog into the dialog overlay this.dialog_overlay.grab(this.dialog_wrapper); this.extra_buttons = new Array(); // default callback params this.dialog_button_ok.dialog_callback_params = this.options.ok_callback_params_default; this.dialog_button_cancel.dialog_callback_params = this.options.cancel_callback_params_default; // OK click event this.dialog_button_ok.addEvent('click', function() { chained_dialog_fadeout(); // call the callback of this button this.dialog_callback(this.dialog_callback_params); }); // CANCEL click event this.dialog_button_cancel.addEvent('click', function() { chained_dialog_fadeout(); // call the callback of this button this.dialog_callback(this.dialog_callback_params); }); }, show: function(text, callback_params_ok, callback_params_cancel, callback_params_extra_buttons) { this.dialog_text_element.set('text', text); // assign parameters for the button's callback functions this.dialog_button_ok.dialog_callback_params = callback_params_ok; this.dialog_button_cancel.dialog_callback_params = callback_params_cancel; if (this.extra_buttons.length > 0) { for (i=0; iz}2 rTӴiϞxb泦ibGD@.z$ ÀQ#j=y84$Iffu ~?]>7B!dja1`A c0 L] xKRw<χTU8t:xxxm8rRN$!8ǷcGQV .DQc`&rd2z˲`Y:$2~`:>guE!EQHu:4NeYѿF4MpiËLD]T*]0v}"yq~ ,$sIENDB`melange-0.5.2/data/themes/default/ui/images/down.png000066400000000000000000000007411217205050200223030ustar00rootroot00000000000000PNG  IHDR Vu\sBIT|d pHYsVV{ftEXtSoftwarewww.inkscape.org<^IDAT(1kPcW5R,͛\1#cfqWEP$cL 1DpI soá"xB,YVw@DW]ם&IrB$9;W;A싢 qr<ϣ((=CD@Z.RJmLӼ[۶IJIsΔzo#cj[\80MUU1V4E&f.69(iX]_@eFRb2p8j݌1Mӓa0 !2-0 iz(l6eAuna]aYZ=\ߥ;ƒIENDB`melange-0.5.2/data/themes/default/ui/images/left.png000066400000000000000000000010351217205050200222630ustar00rootroot00000000000000PNG  IHDR Vu\sBIT|d pHYsVV{ftEXtSoftwarewww.inkscape.org<IDAT(kp_bbY .d ܐ!Y2tB@\lA `~;)˽}ޓ û>]rY^!f37 x,˯,<Ų w$y%"=c8"&"Nvhk0خbXx<V=(d2YUU58en}4 dY8t~*˪>躮i hZNf8N4M뺪iZCƍjABEi&p8}sui(Sq%IzK80 l.0 `DTaYjkuK( 0m!{^WWE4ADBX|*//IENDB`melange-0.5.2/data/themes/default/ui/images/right.png000066400000000000000000000010651217205050200224510ustar00rootroot00000000000000PNG  IHDR Vu\sBIT|d pHYsVV{ftEXtSoftwarewww.inkscape.org<IDAT(epyFiQB!K8Kk@{dߠNqf-Sn 8xQ v(ږ~>DNMV{+B$9gYc^_%"AU*c̎%˲,^(zaك="Bnu:>bXdYGQ?;<2<0 41iFa91^~EQϮ" C<|UUau](2.J f.b9@, ij (Aʅ78CXz/+CgYz 6q$9x?m6C$ $Aux<;<9sr,"˲q<{VUJD[.vE_RƘ}+o{7cFQ8ZNDt_ %C 'IENDB`melange-0.5.2/data/themes/default/ui/images/up.png000066400000000000000000000010421217205050200217530ustar00rootroot00000000000000PNG  IHDR Vu\sBIT|d pHYsVV{ftEXtSoftwarewww.inkscape.org<IDAT(1şrRz"73D8%Yl-s>|q 7dm#JC郷{ ,L(5l? 뺏IdEQPQ$I,7GDM0|.˒<#۶ɶm<ʲ0 5M#"@U+q"˲U˲*rIU+EQ8Ff1|߇(_9{`y럣(mf3LSt:@EEj1& =9I\y{պ^VFvp,0 [,0/A|3M$`Ȳ $4MAat]V]O; 5a‘cί>^Kl6?Y͗eqd~(:IENDB`melange-0.5.2/data/themes/default/ui/images/widget_pin.png000066400000000000000000000013101217205050200234560ustar00rootroot00000000000000PNG  IHDRasRGBbKGDC pHYs  tIME3c ziTXtCommentCreated with GIMPd.eIDAT8˕=kP:ښ8 DɒIcbxH:k:jʒ )R< J?@"u… s#R6V|H3*3T !ԓ)v_fi0$RJB?-4fybY֡i8}:~*VVV!GFvy?.`6p{{%wø7Bfyr||;==2`nnn]^^z xL~?mY֑H)  z)%bYa?`0dLLyGTUjZjJxi鸹 xEѣI"Xܟ`F(ڶt:QT8??\.c6RʉiS@ |~rwww8S* (J躎8$q}}x>ƥAjZ'{{{Gi M}߿Ak<' HzL2dss3u}dT\<Gy2$2?-xnu2IENDB`melange-0.5.2/data/themes/default/ui/melange.css000066400000000000000000000215071217205050200215060ustar00rootroot00000000000000@import "/theme/ui/scroll/scroll.css"; /* GENERAL */ body { margin: 0px; padding: 0px; font-size: 9pt; cursor: default; -webkit-user-select: none; font-family: "Sans"; font-style: normal; text-shadow: 0px -1px 1px rgba(0, 0, 0, .9); } a { color: #cfb07f; text-decoration: none; } /* WIDGET */ div.widget { padding: 5px; } div.background { padding: 10px; color: #efefef; border-radius: 10px; outline-right: 5px solid red; background: -webkit-gradient(linear, left top, left bottom, from(rgba(40, 40, 40, .55)), to(rgba(0, 0, 0, .65))); -webkit-box-shadow: 0px 0px 5px rgba(1, 1, 1, .55); } .section, .bright_section, .scrolled, .chooser, .scroll { -webkit-box-shadow: 0px 0px 3px 0px rgba(0, 0, 0, .25); } .section { margin-top: 5px; margin-bottom: 5px; padding: 4px; border-radius: 3px; background: rgba(0, 0, 0, .2); border: 1px solid rgba(256, 256, 256, .2); } .bright_section { margin: 5px; padding: 4px; border-radius: 3px; color: #0a0a0a; background: rgba(256, 256, 256, .5); border: 1px solid rgba(256, 256, 256, .8); } /* BUTTONS */ input[type=button], input[type=submit], input[type=reset], button, .button { margin: 0px; padding: 5px; padding-left: 8px; padding-right: 8px; font-family: "Sans"; font-size: 8pt; float: left; } .button { margin: 5px; color: #efefef; cursor: default; /* border: 1px solid #545454;*/ border-radius: 4px; -webkit-box-shadow: 0px 0px 1px 1px rgba(0, 0, 0, .2)/*0px 0px 4px 0px rgba(0, 0, 0, .4)*/, inset 0px 1px 1px -1px rgba(256, 256, 256, .68), inset 0px -1px 1px 0px rgba(200, 200, 200, .05), inset 0px -1px 1px -1px rgba(256, 256, 256, .15), inset 1px 0px 1px -1px rgba(256, 256, 256, .15), inset -1px 0px 1px -1px rgba(256, 256, 256, .15); /* text-shadow: 0px 0px 4px #000000;*/ text-shadow: 0px -1px 1px rgba(0, 0, 0, .9); background: -webkit-gradient(linear, left -10%, left 70%, to(rgba(35, 35, 35, .7)), from(rgba(80, 80, 80, .7))); } .button:hover { background: -webkit-gradient(linear, left -10%, left 70%, to(rgba(40, 40, 40, .72)), from(rgba(95, 95, 95, .72))); -webkit-box-shadow: 0px 0px 1px 1px rgba(0, 0, 0, .1)/*0px 0px 4px 0px rgba(0, 0, 0, .4)*/, inset 0px 1px 1px -1px rgba(256, 256, 256, .68), inset 0px -1px 1px 0px rgba(200, 200, 200, .05), inset 0px -1px 1px -1px rgba(256, 256, 256, .15), inset 1px 0px 1px -1px rgba(256, 256, 256, .15), inset -1px 0px 1px -1px rgba(256, 256, 256, .15), 0px 0px 3px 0px rgba(207, 176, 127, .18); } .button:active { background: -webkit-gradient(linear, left 0%, left 80%, to(rgba(90, 90, 90, .7)), from(rgba(40, 40, 40, .7))); -webkit-box-shadow: 0px 0px 1px 1px rgba(0, 0, 0, .1)/*0px 0px 4px 0px rgba(0, 0, 0, .4)*/, inset 0px 1px 1px -1px rgba(256, 256, 256, .68), inset 0px -1px 1px 0px rgba(200, 200, 200, .05), inset 0px -1px 1px -1px rgba(256, 256, 256, .15), inset 1px 0px 1px -1px rgba(256, 256, 256, .15), inset -1px 0px 1px -1px rgba(256, 256, 256, .15), inset 0px 0px 5px 0px rgba(0, 0, 0, .2), 0px 0px 3px 0px rgba(207, 176, 127, .18); } /* TEXT INPUTS */ input[type=text], input[type=password], textarea { padding: 4px; padding-left: 5px; padding-right: 5px; border-radius: 5px; font-family: "Sans"; } input.dark_input { color: #f2f2f2; border: 1px solid #545454; background: #343434; -webkit-box-shadow: 0px 0px 6px 0px #252525, inset 0px -13px 15px -5px #515151; text-shadow: 0px 0px 4px #000000; } input.dark_input:focus { background: #303030; -webkit-box-shadow: 0px 0px 6px 0px #252525, inset 0px -13px 15px -5px #4a4a4a; outline: 0px; } input.bright_input { color: #121212; border: 1px solid #a7a7a7; background: #f3f3f3; -webkit-box-shadow: 0px 0px 6px 0px #252525, inset 0px 9px 13px #bababa; text-shadow: 0px 0px 4px #aaaaaa; } input.bright_input:focus { background: #ffffff; -webkit-box-shadow: 0px 0px 6px 0px #343434, inset 0px 9px 13px #c8c8c8; outline: 0px; } /* SCROLLED */ .scrolled { border-radius: 5px; border-width: 1px; border-style: solid; border-color: rgba(256, 256, 256, .1); } .scrolled .container { background-color: rgba(256, 256, 256, .075); padding-left: 2px; padding-right: 2px; } .scrolled .control_up { height: 13px; padding: 1px; text-align: center; background-color: rgba(256, 256, 256, .075); border-top-right-radius: 5px; border-top-left-radius: 5px; cursor: pointer; } .scrolled .control_down { height: 13px; padding: 1px; text-align: center; background-color: rgba(256, 256, 256, .075); border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; cursor: pointer; } /* CHOOSER */ .chooser { margin-bottom: 5px; border-width: 1px; border-style: solid; border-color: rgba(256, 256, 256, .1); background-color: rgba(256, 256, 256, .075); border-radius: 4px; display: table; width: 100%; padding: 2px; -webkit-box-shadow: 0px 0px 3px 0px rgba(0, 0, 0, .25), inset 0px 0px 3px rgba(0, 0, 0, .36); } .chooser .option { display: table-cell; text-align: center; padding: 3px; /*border-left: 1px solid rgba(256, 256, 256, .1);*/ opacity: .75; cursor: pointer; text-shadow: 0px -1px 1px rgba(0, 0, 0, .9); border-radius: 4px; } .chooser .option:hover { /* background: rgba(256, 256, 256, .04);*/ text-shadow: 0px -1px 1px rgba(0, 0, 0, .9), 0px 0px 5px rgba(256, 256, 256, .7); opacity: 1; } .chooser .option:first-child { border-left: none; /* border-top-left-radius: 4px; border-bottom-left-radius: 4px;*/ } .chooser .option:last-child { /* border-top-right-radius: 4px; border-bottom-right-radius: 4px;*/ } .chooser .option.active { /*border-left-color: rgba(256, 256, 256, 0);*/ background: -webkit-gradient(linear, left -18%, left 90%, from(rgba(256, 256, 256, .19)), to(rgba(256, 256, 256, .015))); /*background: -webkit-gradient(linear, left -18%, left 90%, from(rgba(10, 10, 10, .1)), to(rgba(0, 0, 0, .6)));*/ /*background: -webkit-gradient(linear, left -18%, left 90%, from(rgba(256, 256, 256, .25)), to(rgba(256, 256, 256, .09)));*/ opacity: 1; text-shadow: 0px -1px 1px rgba(0, 0, 0, .9), 0px 0px 5px rgba(256, 256, 256, .49); -webkit-box-shadow: 0px 0px 1px 0px rgba(0, 0, 0, .46), inset 0px 1px 0px 0px rgba(256, 256, 256, .11), inset 0px -1px 0px 0px rgba(256, 256, 256, .06); } .chooser .option.active:active { background: -webkit-gradient(linear, left -18%, left 90%, from(rgba(256, 256, 256, .08)), to(rgba(256, 256, 256, .28))); opacity: 1; } .chooser .option.active:hover { text-shadow: 0px -1px 1px rgba(0, 0, 0, .9), 0px 0px 5px rgba(256, 256, 256, .9); background: -webkit-gradient(linear, left -18%, left 90%, from(rgba(256, 256, 256, .22)), to(rgba(256, 256, 256, .03))); /*background: -webkit-gradient(linear, left -18%, left 90%, from(rgba(30, 30, 30, .05)), to(rgba(10, 10, 10, .6)));*/ /*background: -webkit-gradient(linear, left -18%, left 90%, from(rgba(256, 256, 256, .34)), to(rgba(256, 256, 256, .12)));*/ opacity: 1; } .chooser-tabs .tab { display: none; } .chooser-tabs .tab.active { display: block; } /* MISC */ .green, .green:hover, .green:active { border-color: darkgreen; background-color: green; } .red, .red:hover, .red:active { border-color: darkred; background-color: red; } .blue, .blue:hover, .blue:active { border-color: darkblue; background-color: #001ca2; } .dialog { display: none; z-index: 1000; position: absolute; top: 0px; left: 0px; margin: 15px; padding: 10px; border-radius: 5px; background-color: rgba(40, 40, 40, .95); -webkit-box-shadow: 0px 0px 5px rgba(256, 256, 256, .5); } .overlay { display: none; z-index: 999; background-color: rgba(40, 40, 40, .8); position: absolute; top: 5px; left: 5px; right: 5px; bottom: 5px; border-radius: 10px; } /* SIMPLE DIALOG */ .simple-dialog { text-align: center; width: 100%; margin: auto; border-radius: 5px; padding-top: 20px; } .simple-dialog-text { color: #ffffff; text-shadow: 0px -1px 0px #000; } .simple-dialog-buttons { text-align: center; padding-top: 20px; } .simple-dialog-buttons .button { float: none; display: inline; } melange-0.5.2/data/themes/default/ui/scroll/000077500000000000000000000000001217205050200206555ustar00rootroot00000000000000melange-0.5.2/data/themes/default/ui/scroll/scroll.css000066400000000000000000000021001217205050200226560ustar00rootroot00000000000000.scroll { position: relative; display: block; overflow: scroll; border-radius: 3px; padding: 6px; background: rgba(256, 256, 256, .075); border: 1px solid rgba(256, 256, 256, .1); } .scroll .container { } .scrollControlsY { display: block; position: absolute; top: 0; right: 0; height: 100%; width: 10px; } .scrollBar { display: block; position: absolute; top: 0px; right: 0; bottom: 0px; width: 8px; border-radius: 10px; } .scrollHandle { display: block; position: absolute; top: 0px; right: 0; width: 10px; padding-bottom: 7px; cursor: default; } .scrollHandleBG { display: block; position: relative; height: 100%; width: 4px; margin: 2px; background: #000; border-radius: 10px; } .scrollHandleBG:hover { background: #0a0a0a; } melange-0.5.2/data/themes/default/ui/scroll/scroll.js000066400000000000000000000506321217205050200225170ustar00rootroot00000000000000var MooScroll = new Class({ Implements: Options, options: { selector: '.scroll', increment:30, upBtnClass:'upBtn', downBtnClass:'downBtn', scrollBarClass:'scrollBar', scrollHandleClass:'scrollHandle', scrollHandleBGClass:'scrollHandleBG', scrollHandleTopClass:'scrollHandleTop', scrollHandleMiddleClass:'scrollHandleMiddle', scrollHandleBottomClass:'scrollHandleBottom', scrollControlsYClass: 'scrollControlsY', handleOpacity:1, handleActiveOpacity:0.85, disabledOpacity:0.5, fullWindowMode:false, smoothMooScroll:{ toAnchor:true, toMooScrollArea:true }, restrictedBrowsers:[Browser.Engine.presto925,Browser.Platform.ipod,Browser.Engine.webkit419]//Opera 9.25 or lower, Safari 2 or lower, iPhone/iPod Touch }, initialize: function(options){ //don't run in restricted browsers if(this.options.restrictedBrowsers.contains(true)){return;} this.setOptions(options); this.mooScrollAreas = []; this.windowFxScroll = new Fx.Scroll(document.window,{wait: false}); $(document.body).getElements(this.options.selector).each(function(item,index){ var scrollArea = new MooScrollArea(this.options, item,this.windowFxScroll); this.mooScrollAreas.include(scrollArea); if(this.options.smoothMooScroll.toAnchor || this.options.smoothMooScroll.toMooScrollArea){ this.smoothMooScroll = new SmoothMooScroll({toAnchor:this.options.smoothMooScroll.toAnchor,toMooScrollArea:this.options.smoothMooScroll.toMooScrollArea},scrollArea.contentEl,this.windowFxScroll); } }.bind(this)); }, loadContent:function(content){ this.mooScrollAreas.each(function(item,index){ item.loadContent(content); }); }, refresh:function(){ this.mooScrollAreas.each(function(item,index){ item.refresh(); }); }, setSlider:function(v){ this.mooScrollAreas.each(function(item,index){ item.setSlider(v); }); } }); var MooScrollArea = new Class({ Implements: Options, initialize: function(options, parentEl, windowFxScroll){ this.windowFxScroll = windowFxScroll; this.setOptions(options); this.parentEl = parentEl.setProperty('rel', 'MooScrollArea'); aaa = this; this.parentEl.refresh = function(){aaa.refresh()}; this.viewPort = {x:$(window).getSize().x,y:$(window).getSize().y}; this.parentElPadding = this.parentEl.getStyles('padding-top','padding-right','padding-bottom','padding-left'); this.paddingHeight = parseFloat(this.parentEl.getStyle('padding-top'))+parseFloat(this.parentEl.getStyle('padding-bottom')); this.paddingWidth = parseFloat(this.parentEl.getStyle('padding-left'))+parseFloat(this.parentEl.getStyle('padding-right')); this.contentEl = new Element('div',{'class':'contentEl'}).adopt(this.parentEl.getChildren()).inject(this.parentEl,'top'); this.parentEl.setStyle('overflow', 'hidden').setStyles({ 'padding':0, width:parseFloat(this.parentEl.getStyle('width')) + this.paddingWidth, height:parseFloat(this.parentEl.getStyle('height')) + this.paddingHeight }); this.borderHeight = parseFloat(this.parentEl.getStyle('border-top-width'))+parseFloat(this.parentEl.getStyle('border-bottom-width')); this.contentEl.setStyles({'height':this.parentEl.getSize().y-this.borderHeight, overflow:'hidden','padding':0}); this.paddingEl = new Element('div',{'class':'paddingEl'}).adopt(this.contentEl.getChildren()).inject(this.contentEl,'top').setStyles(this.parentElPadding); if(this.options.fullWindowMode){ //turn off overflow for html element here so non-javascript users can still scroll $(document).getElement('html').setStyle('overflow','hidden'); this.parentEl.setStyles({ 'height':'100%', 'width':'100%', 'position':'absolute' }); this.contentEl.setStyles({ 'height':'100%', 'width':'100%', 'position':'absolute'}); } //Add Control Elements this.scrollControlsYWrapper = new Element('div', { 'class': this.options.scrollControlsYClass }).inject(this.parentEl,'bottom'); this.upBtn = new Element('div', { 'class': this.options.upBtnClass }).inject(this.scrollControlsYWrapper,'bottom'); this.downBtn = new Element('div', { 'class': this.options.downBtnClass }).inject(this.scrollControlsYWrapper,'bottom'); this.scrollBar = new Element('div', { 'class': this.options.scrollBarClass }).inject(this.scrollControlsYWrapper,'bottom'); this.scrollHandle = new Element('div', { 'class': this.options.scrollHandleClass }).inject(this.scrollBar,'inside'); this.scrollHandle.fade('hide'); this.scrollHandleTop = new Element('div', { 'class': this.options.scrollHandleTopClass }).inject(this.scrollHandle,'inside'); this.scrollHandleBG = new Element('div', { 'class': this.options.scrollHandleBGClass }).inject(this.scrollHandle,'inside'); this.scrollHandleMiddle = new Element('div', { 'class': this.options.scrollHandleMiddleClass }).inject(this.scrollHandle,'inside'); this.scrollHandleBottom = new Element('div', { 'class': this.options.scrollHandleBottomClass }).inject(this.scrollHandle,'inside'); this.coverUp = new Element('div').inject(this.scrollControlsYWrapper,'bottom'); this.overHang = this.paddingEl.getSize().y - this.parentEl.getSize().y ; // var that will hold the ID of the timeout to fade the slider out this.fadeout_timeout = 0; this.scroll_handle_visible = false; this.scroll_handle_fade_lock = false; this.setHandleHeight(); if(this.overHang <=0){this.greyOut();} this.initSlider(); this.parentEl.addEvents({ 'mousewheel': function(e){ // fade the scroll handle in if it is not visible if (this.scroll_handle_visible == false) { fade_in_scroll_handle(this); } else { window.clearTimeout(this.fadeout_timeout); this.fadeout_timeout = window.setTimeout(fade_out_scroll_handle, 5000, this); } e = new Event(e).stop(); // Mousewheel UP if (e.wheel > 0) { this.scrollUp(true); } // Mousewheel DOWN else if (e.wheel < 0) { this.scrollDown(true); } }.bind(this), 'keydown': function(e){ // fade the scroll handle in if it is not visible if (this.scroll_handle_visible == false) { fade_in_scroll_handle(this); } else { window.clearTimeout(this.fadeout_timeout); this.fadeout_timeout = window.setTimeout(fade_out_scroll_handle, 2000, this); } if (e.key === 'up') { e = new Event(e).stop(); this.scrollUp(true); } else if (e.key === 'down' || e.key === 'space') { e = new Event(e).stop(); this.scrollDown(true); } }.bind(this), 'click':function(e){ this.hasFocus = true; this.hasFocusTimeout = (function(){ clearTimeout(this.hasFocusTimeout); this.hasFocus = true; }.bind(this)).delay(50); }.bind(this), 'mouseover': function(e) { this.refresh(); this.scrollHandle.fade(1); }.bind(this), 'mousemove': function(e) { window.clearTimeout(this.fadeout_timeout); if (this.scroll_handle_visible && this.scroll_handle_fade_lock == false) { this.fadeout_timeout = window.setTimeout(fade_out_scroll_handle, 2000, this); } else { fade_in_scroll_handle(this); } }.bind(this), 'mousedown': function(e) { window.clearTimeout(this.fadeout_timeout); // on mouse down it should be always visible, so fade it in, if it's not if (this.scroll_handle_visible == false) { fade_in_scroll_handle(this); } // lock the fade in/out timeouts this.scroll_handle_fade_lock = true; }.bind(this), 'mouseup': function(e) { // unlock the fade in/out timeouts this.scroll_handle_fade_lock = false; window.clearTimeout(this.fadeout_timeout); this.fadeout_timeout = window.setTimeout(fade_out_scroll_handle, 2000, this); }.bind(this), 'mouseout': function(e) { //this.scrollHandle.fade(0); }.bind(this) }); // if mouse is up outside the widget, it should restart timeout etc. window.addEvents({ 'mouseup': function(e){ this.scroll_handle_fade_lock = false; window.clearTimeout(this.fadeout_timeout); if (this.scroll_handle_visible) { this.fadeout_timeout = window.setTimeout(fade_out_scroll_handle, 2000, this); } else { fade_in_scroll_handle(this); } }.bind(this) }); this.contentEl.addEvents({ 'scroll': function(e){ this.slider.set(this.contentEl.getScroll().y); }.bind(this) }); this.scrollHandle.addEvents({ 'mousedown': function(e){ this.scrollHandle.addClass(this.options.scrollHandleClass +'-Active').setStyle('opacity',this.options.handleActiveOpacity); }.bind(this) }); document.addEvents({ 'mouseup': function(e){ this.scrollHandle.removeClass(this.options.scrollHandleClass +'-Active').setStyle('opacity',this.options.handleOpacity); this.upBtn.removeClass(this.options.upBtnClass +'-Active'); this.downBtn.removeClass(this.options.downBtnClass +'-Active'); }.bind(this), 'keydown':function(e){ if( (this.hasFocus ||this.options.fullWindowMode) && (e.key === 'down' || e.key === 'space' ||e.key === 'up') ){ this.parentEl.fireEvent('keydown',e); } }.bind(this), 'click':function(e){ this.hasFocus = false; }.bind(this) }); window.addEvent('resize', function() { clearTimeout(this.refreshTimeout); if (this.options.fullWindowMode) { this.refreshTimeout = (function(){ clearTimeout(this.refreshTimeout); if (this.viewPort.x != $(window).getSize().x || this.viewPort.y != $(window).getSize().y) { this.refresh(); this.viewPort.x = $(window).getSize().x; this.viewPort.y = $(window).getSize().y; } }.bind(this)).delay(250); } }.bind(this)); this.upBtn.addEvents({ 'mousedown': function(e){ clearTimeout(this.upInterval); clearTimeout(this.downInterval); this.upInterval = this.scrollUp.periodical(10,this); this.upBtn.addClass(this.options.upBtnClass +'-Active'); }.bind(this), 'mouseup': function(e){ clearTimeout(this.upInterval); clearTimeout(this.downInterval); }.bind(this), 'mouseout': function(e){ clearTimeout(this.upInterval); clearTimeout(this.downInterval); }.bind(this) }); this.downBtn.addEvents({ 'mousedown': function(e){ clearTimeout(this.upInterval); clearTimeout(this.downInterval); this.downInterval = this.scrollDown.periodical(10,this); this.downBtn.addClass(this.options.downBtnClass +'-Active'); }.bind(this), 'mouseup': function(e){ clearTimeout(this.upInterval); clearTimeout(this.downInterval); }.bind(this), 'mouseout': function(e){ clearTimeout(this.upInterval); clearTimeout(this.downInterval); }.bind(this) }); }, initSlider:function(){ this.slider = new Slider(this.scrollBar, this.scrollHandle, { range:[0, Math.round(this.overHang )], mode: 'vertical', onChange: function(step,e){ this.contentEl.scrollTo(0, step); }.bind(this) }); }, scrollUp:function(scrollPageWhenDone){ var target = this.contentEl.getScroll().y - 30;// this.options.increment; this.slider.set(target); if(this.contentEl.getScroll().y <= 0 && scrollPageWhenDone){ document.window.scrollTo(0 ,document.window.getScroll().y - this.options.increment ); } }, scrollDown:function(scrollPageWhenDone){ var target = this.contentEl.getScroll().y + this.options.increment; this.slider.set(target); var onePercent = (1*this.paddingEl.getSize().y)/100; var atBottom = (this.paddingEl.getSize().y - this.parentEl.getSize().y)<= (this.contentEl.getScroll().y + onePercent); if(atBottom && scrollPageWhenDone){ document.window.scrollTo(0 ,document.window.getScroll().y + this.options.increment ); } }, setHandleHeight:function(){ var handleHeightPercent = (100 - ((this.overHang*100)/this.paddingEl.getSize().y)); this.handleHeight = ((handleHeightPercent*this.parentEl.getSize().y)/100) - (this.scrollHandleTop.getSize().y + this.scrollHandleBottom.getSize().y ); if((this.handleHeight + this.scrollHandleTop.getSize().y + this.scrollHandleBottom.getSize().y ) >= this.scrollBar.getSize().y){ this.handleHeight-=( this.scrollHandleTop.getSize().y + this.scrollHandleBottom.getSize().y )*2; } if(this.scrollHandle.getStyle('min-height') && this.handleHeight < parseFloat(this.scrollHandle.getStyle('min-height'))){ this.handleHeight = parseFloat(this.scrollHandle.getStyle('min-height')) + this.scrollHandleBottom.getSize().y + this.scrollHandleTop.getSize().y; } this.scrollHandle.setStyles({'height':this.handleHeight}); }, greyOut:function(){ this.scrollHandle.setStyles({'display':'none'}); this.upBtn.setStyles({'opacity':this.options.disabledOpacity}); this.scrollControlsYWrapper.setStyles({opacity:this.options.disabledOpacity}); this.downBtn.setStyles({'opacity':this.options.disabledOpacity}); this.scrollBar.setStyles({'opacity':this.options.disabledOpacity}); this.coverUp.setStyles({'display':'block','position':'absolute','background':'white','opacity':0.01,'right':'0','top':'0','width':'100%','height':this.scrollControlsYWrapper.getSize().y}); }, unGrey:function(){ this.scrollHandle.setStyles({'display':'block','height':'auto'}); this.scrollControlsYWrapper.setStyles({opacity:1}); this.upBtn.setStyles({'opacity':1}); this.downBtn.setStyles({'opacity':1}); this.scrollBar.setStyles({'opacity':1}); this.coverUp.setStyles({'display':'none','width':0, 'height':0 }); this.setHandleHeight(); }, loadContent:function(content){ this.slider.set(0); this.paddingEl.empty().set('html',content); this.refresh(); }, refresh:function(){ var scrollPercent = Math.round(((100* this.step)/this.overHang)); if(this.options.fullWindowMode){ var windowSize = $(window).getSize(); this.parentEl.setStyles({ width:'100%',height:'100%'}); } this.overHang = this.paddingEl.getSize().y - this.parentEl.getSize().y ; this.setHandleHeight(); if(this.overHang <= 0){ this.greyOut(); return; }else{ this.unGrey(); } this.scrollHandle.removeEvents(); var newStep = Math.round((scrollPercent*this.overHang)/100); this.initSlider(); this.slider.set(this.contentEl.getScroll().y); //this.slider.set(newStep); /* if(this.options.smoothMooScroll.toAnchor || this.options.smoothMooScroll.toMooScrollArea){ this.smoothMooScroll = new SmoothMooScroll({toAnchor:this.options.smoothMooScroll.toAnchor,toMooScrollArea:this.options.smoothMooScroll.toMooScrollArea},this.contentEl,this.windowFxScroll); }*/ }, setSlider:function(v){ if(v =='top'){ this.slider.set(0); }else if(v=='bottom'){ this.slider.set('100%'); }else{ this.slider.set(v); } } }); var SmoothMooScroll = new Class({ Extends: Fx.Scroll, initialize: function(options, context, windowFxScroll){ this.setOptions(options); this.windowFxScroll = windowFxScroll; this.context = context; context = context || document; this.context = context; var doc = context.getDocument(), win = context.getWindow(); this.parent(context, options); this.links = (this.options.links) ? $$(this.options.links) : $$(doc.links); var location = win.location.href.match(/^[^#]*/)[0] + '#'; this.links.each(function(link){ if (link.href.indexOf(location) != 0) { return; } var anchor = link.href.substr(location.length); if (anchor && $(anchor) && $(anchor).getParents().contains($(this.context))) { this.useLink(link,anchor, true); }else if(anchor && $(anchor) && !this.inMooScrollArea($(anchor))){ this.useLink(link,anchor, false); } }, this); if (!Browser.Engine.webkit419) this.addEvent('complete', function(){ win.location.hash = this.anchor; }, true); }, inMooScrollArea:function(el){ return el.getParents().filter(function(item, index){return item.match('[rel=MooScrollArea]');}).length > 0; }, putAnchorInAddressBar:function(anchor){ window.location.href = "#" + anchor; }, useLink: function(link, anchor, inThisMooScrollArea){ link.removeEvents('click'); link.addEvent('click', function(event){ if(!anchor || !$(anchor)){return;} this.anchor = anchor; if (inThisMooScrollArea) { if(this.options.toMooScrollArea && this.options.toAnchor){ this.windowFxScroll.toElement(this.context.getParent()).chain(function(item, index){ this.toElement(anchor).chain(function(){ this.putAnchorInAddressBar(anchor); }.bind(this)); }.bind(this)); }else if(this.options.toMooScrollArea){ this.windowFxScroll.toElement(this.context.getParent()).chain(function(){ this.putAnchorInAddressBar(anchor); }.bind(this)); }else if(this.options.toAnchor){ this.toElement(anchor).chain(function(){ this.putAnchorInAddressBar(anchor); }.bind(this)); } }else{ this.windowFxScroll.toElement(anchor).chain(function(){ this.putAnchorInAddressBar(anchor); }.bind(this)); } event.stop(); }.bind(this)); } }); function fade_in_scroll_handle(scroll_area_obj) { scroll_area_obj.scrollHandle.fade(1); scroll_area_obj.scroll_handle_visible = true; } function fade_out_scroll_handle(scroll_area_obj) { scroll_area_obj.scrollHandle.fade(0); scroll_area_obj.scroll_handle_visible = false; } window.addEvent('domready', function() { $$('.scroll').each(function(obj) { var container = document.createElement("div"); container.style.overflow = 'hidden'; container.style.marginRight = '12px'; container.className = 'container'; container.innerHTML = obj.innerHTML; obj.innerHTML = ''; obj.appendChild(container); }); var scroll_elements = new MooScroll(); }); melange-0.5.2/data/themes/default/ui/scrolled/000077500000000000000000000000001217205050200211665ustar00rootroot00000000000000melange-0.5.2/data/themes/default/ui/scrolled/images/000077500000000000000000000000001217205050200224335ustar00rootroot00000000000000melange-0.5.2/data/themes/default/ui/scrolled/images/down.png000066400000000000000000000011751217205050200241140ustar00rootroot00000000000000PNG  IHDR Vu\sRGBbKGD pHYs  tIME  /IDAT(M1haF,ޝ)BC.)tGq*N28Ru0n qA%&ߡH@UU) |8N_E7^zFV-a0Ƙ3j*uARqff, ,ϛՊ=<<,ONN F㵢( L򚦁8{{{(4m4Ls(<r̋dY!~ggg#syGՂ(T*!\alyt:2M^c <==!H. ljD)%4Mh4))(HR|d8~V~?bPQJh40 `& FlT*Ǻ3UUY:fLufzs Nv ~Ȳ,<l6Y>D"WWW]IB4MS%I \qIIENDB`melange-0.5.2/data/themes/default/ui/scrolled/images/up.png000066400000000000000000000011701217205050200235640ustar00rootroot00000000000000PNG  IHDR Vu\sRGBbKGD pHYs  tIME ^BIDAT(Mѿka)6VrUd)NN$т'"n%C)R. ;};I̟`,KD"y,{0pt^b,G@.L4N3JBd2Snf J)...G?V%y% qdYfriul6D"q: x$I ǜi'}6 ^D"eB!'; control_up.id = 'control_up'; control_up.className = 'control_up'; var control_down = document.createElement("div"); control_down.innerHTML = ''; control_down.id = 'control_down'; control_down.className = 'control_down'; obj.appendChild(container); obj.insertBefore(control_up, container); obj.appendChild(control_down); obj.up = false; obj.down = false; obj.fast = false; control_up.onmousedown = function(){ obj.up = true; obj.interval = setInterval(obj.scroll, 20); }; control_up.onmouseup = function(){ obj.up = false; clearInterval(obj.interval); }; control_down.onmousedown = function(){ obj.down = true; obj.interval = setInterval(obj.scroll, 20); }; control_down.onmouseup = function(){ obj.down = false; clearInterval(obj.interval); }; obj.scroll = function(){ var h = content.offsetHeight; var t = content.offsetTop - container.offsetTop; if(obj.down & (t > -(h-container.offsetHeight))){ content.style.top = t - speed + "px"; }; if(obj.up & (t < 0)){ newTop = (t < 0) ? t+speed : t; content.style.top = newTop + "px"; }; }; }); }); melange-0.5.2/data/themes/default/ui/spinner/000077500000000000000000000000001217205050200210355ustar00rootroot00000000000000melange-0.5.2/data/themes/default/ui/spinner/spinner.js000066400000000000000000000027611217205050200230570ustar00rootroot00000000000000var Spinner = new Class({ initialize: function(elm, size) { this.spokes = 9; if(size) this.size = size else this.size = 30 this.interval_id = null; elm.innerHTML = ''; this.canvas = new Element('canvas', { 'width': this.size, 'height': this.size, 'style': 'display: inline;' }); this.container = new Element('div', { }) this.container.grab(this.canvas, 'top') elm.grab(this.container, 'top'); this.ctx = this.canvas.getContext('2d'); this.ctx.translate(this.size/2, this.size/2); // Center the origin this.ctx.lineWidth = this.size/10; this.ctx.lineCap = "round"; }, start: function() { this.interval_id = this.draw.periodical(100, this); }, stop: function() { this.interval_id = clearTimeout(this.interval_id); }, draw: function() { this.ctx.clearRect(-this.size/2, -this.size/2, this.size, this.size); // Clear the image this.ctx.rotate(Math.PI*2/this.spokes); // Rotate the origin for (var i=0; i Light theme for Melange. melange-0.5.2/data/themes/light/ui/000077500000000000000000000000001217205050200170425ustar00rootroot00000000000000melange-0.5.2/data/themes/light/ui/chooser/000077500000000000000000000000001217205050200205045ustar00rootroot00000000000000melange-0.5.2/data/themes/light/ui/chooser/chooser.js000066400000000000000000000060661217205050200225140ustar00rootroot00000000000000var $chk = function(obj){ return !!(obj || obj === 0); } window.addEvent('domready', function() { $$('.chooser').each(function(chooser) { // load all available options assigned to this chooser chooser.options = chooser.getElements('.option'); // the first option should be the active one chooser.active = chooser.options[0]; // Apply some properties to the options chooser.options.each(function(option) { // set the assigned chooser option.chooser = chooser; // on click this option should be set as active option.onclick = function() { if (option != option.chooser.active) { option.chooser.set_active(option); } } }) // Check if there is a tabs container assigned to this chooser tabs_container_id_wouldbe = chooser.id + '-tabs'; chooser.has_tabs = $chk($(tabs_container_id_wouldbe)); // if this chooser has tabs, do some initialization stuff if (chooser.has_tabs) { // Load all available tabs in the tabs container assigned to this chooser chooser.tabs = $(tabs_container_id_wouldbe).getElements('.tab'); // apply some properties to the available tabs chooser.tabs.each(function(tab) { // assign the option that belongs to this tab // (which has almost the same ID as this tab, // but it ends without the '-tab', so we'll remove it) tab.option = $(tab.id.replace('-tab', '')); tab.fade(0); }); } chooser.set_active = function(option) { // first give all options the same class name this.options.each(function(option) { option.className = 'option'; }); // now add the class "active" to the option that shall be active option.chooser.active = option; option.className = 'option active'; // if the chooser element of this option has tabs available, // set the tab which belongs to the option that shall be active, active too if (option.chooser.has_tabs) { this.tabs.each(function(tab){ // if the current tab is active, deactivate it if (tab.className == 'tab active') { tab.fade(0); tab.className = 'tab'; } // if the option of the current tab is the same as the one that shall be active, // activate this tab if (tab.option.id == option.id) { tab.fade(1); tab.className = 'tab active'; } }); } // ha! the active option has changed, so we have to emit a signal (which is an event in JS's case) option.chooser.fireEvent('value_changed', option); }; chooser.set_active(chooser.active); }); }); melange-0.5.2/data/themes/light/ui/dialog/000077500000000000000000000000001217205050200203015ustar00rootroot00000000000000melange-0.5.2/data/themes/light/ui/dialog/dialog.js000066400000000000000000000133651217205050200221060ustar00rootroot00000000000000var number_of_dialogs = 0; var simple_dialog_overlay_id = 'simple-dialog-overlay' function get_dialog_overlay() { if ($chk($(simple_dialog_overlay_id)) == false) { dialog_overlay = new Element('div', { 'class': 'overlay', 'id': simple_dialog_overlay_id }); $$('.widget').grab(dialog_overlay, 'top'); } else { dialog_overlay = $(simple_dialog_overlay_id); } return dialog_overlay; } function hide_all_dialogs() { $$('.simple-dialog').setStyle('display', 'none'); } function chained_dialog_fadeout() { $(simple_dialog_overlay_id).fade('out'); hide_all_dialogs(); } var SimpleDialog = new Class({ Implements: Options, options: { 'alt_id': false, 'ok_button_text': 'Ok', 'cancel_button_text': 'Cancel', 'ok_callback': function(){}, 'cancel_callback': function(){}, 'ok_callback_params_default': {}, 'cancel_callback_params_default': {} }, initialize: function(options) { this.setOptions(options); number_of_dialogs++; this.dialog_id = this.options.alt_id ? this.options.alt_id : number_of_dialogs; // check if the dialog overlay already exists. otherwise create and inject it. this.dialog_overlay = get_dialog_overlay(); // overlay should be hidden by default. always. this.dialog_overlay.fade('hide'); this.dialog_overlay.setStyle('display', 'block'); // wrapper for the dialog this.dialog_wrapper = new Element('div', { 'class': 'simple-dialog', 'id': 'dialog-' + this.dialog_id }); // title/text for the dialog this.dialog_text_element = new Element('div', { 'class': 'simple-dialog-text', 'id': 'dialog-text-' + this.dialog_id }); // button wrapper for the dialog this.dialog_button_wrapper = new Element('div', { 'class': 'simple-dialog-buttons', 'id': 'dialog-buttons-' + this.dialog_id }); // "ok"-button for the dialog this.dialog_button_ok = new Element('div', { 'class': 'button green', 'id': 'dialog-ok-button-' + this.dialog_id, 'text': this.options.ok_button_text }); // "cancel"-button for the dialog this.dialog_button_cancel = new Element('div', { 'class': 'button red', 'id': 'dialog-cancel-button-' + this.dialog_id, 'text': this.options.cancel_button_text }); // dialog should be hidden by default this.dialog_wrapper.setStyle('display', 'none'); // setting callback functions for the buttons this.dialog_button_ok.dialog_callback = this.options.ok_callback; this.dialog_button_cancel.dialog_callback = this.options.cancel_callback; // put buttons into wrapper this.dialog_button_wrapper.grab(this.dialog_button_ok); this.dialog_button_wrapper.grab(this.dialog_button_cancel); this.dialog_wrapper.grab(this.dialog_text_element); this.dialog_wrapper.grab(this.dialog_button_wrapper); // put dialog into the dialog overlay this.dialog_overlay.grab(this.dialog_wrapper); this.extra_buttons = new Array(); // default callback params this.dialog_button_ok.dialog_callback_params = this.options.ok_callback_params_default; this.dialog_button_cancel.dialog_callback_params = this.options.cancel_callback_params_default; // OK click event this.dialog_button_ok.addEvent('click', function() { chained_dialog_fadeout(); // call the callback of this button this.dialog_callback(this.dialog_callback_params); }); // CANCEL click event this.dialog_button_cancel.addEvent('click', function() { chained_dialog_fadeout(); // call the callback of this button this.dialog_callback(this.dialog_callback_params); }); }, show: function(text, callback_params_ok, callback_params_cancel, callback_params_extra_buttons) { this.dialog_text_element.set('text', text); // assign parameters for the button's callback functions this.dialog_button_ok.dialog_callback_params = callback_params_ok; this.dialog_button_cancel.dialog_callback_params = callback_params_cancel; if (this.extra_buttons.length > 0) { for (i=0; iz}2 rTӴiϞxb泦ibGD@.z$ ÀQ#j=y84$Iffu ~?]>7B!dja1`A c0 L] xKRw<χTU8t:xxxm8rRN$!8ǷcGQV .DQc`&rd2z˲`Y:$2~`:>guE!EQHu:4NeYѿF4MpiËLD]T*]0v}"yq~ ,$sIENDB`melange-0.5.2/data/themes/light/ui/images/down.png000066400000000000000000000007411217205050200217660ustar00rootroot00000000000000PNG  IHDR Vu\sBIT|d pHYsVV{ftEXtSoftwarewww.inkscape.org<^IDAT(1kPcW5R,͛\1#cfqWEP$cL 1DpI soá"xB,YVw@DW]ם&IrB$9;W;A싢 qr<ϣ((=CD@Z.RJmLӼ[۶IJIsΔzo#cj[\80MUU1V4E&f.69(iX]_@eFRb2p8j݌1Mӓa0 !2-0 iz(l6eAuna]aYZ=\ߥ;ƒIENDB`melange-0.5.2/data/themes/light/ui/images/left.png000066400000000000000000000010351217205050200217460ustar00rootroot00000000000000PNG  IHDR Vu\sBIT|d pHYsVV{ftEXtSoftwarewww.inkscape.org<IDAT(kp_bbY .d ܐ!Y2tB@\lA `~;)˽}ޓ û>]rY^!f37 x,˯,<Ų w$y%"=c8"&"Nvhk0خbXx<V=(d2YUU58en}4 dY8t~*˪>躮i hZNf8N4M뺪iZCƍjABEi&p8}sui(Sq%IzK80 l.0 `DTaYjkuK( 0m!{^WWE4ADBX|*//IENDB`melange-0.5.2/data/themes/light/ui/images/right.png000066400000000000000000000010651217205050200221340ustar00rootroot00000000000000PNG  IHDR Vu\sBIT|d pHYsVV{ftEXtSoftwarewww.inkscape.org<IDAT(epyFiQB!K8Kk@{dߠNqf-Sn 8xQ v(ږ~>DNMV{+B$9gYc^_%"AU*c̎%˲,^(zaك="Bnu:>bXdYGQ?;<2<0 41iFa91^~EQϮ" C<|UUau](2.J f.b9@, ij (Aʅ78CXz/+CgYz 6q$9x?m6C$ $Aux<;<9sr,"˲q<{VUJD[.vE_RƘ}+o{7cFQ8ZNDt_ %C 'IENDB`melange-0.5.2/data/themes/light/ui/images/up.png000066400000000000000000000010421217205050200214360ustar00rootroot00000000000000PNG  IHDR Vu\sBIT|d pHYsVV{ftEXtSoftwarewww.inkscape.org<IDAT(1şrRz"73D8%Yl-s>|q 7dm#JC郷{ ,L(5l? 뺏IdEQPQ$I,7GDM0|.˒<#۶ɶm<ʲ0 5M#"@U+q"˲U˲*rIU+EQ8Ff1|߇(_9{`y럣(mf3LSt:@EEj1& =9I\y{պ^VFvp,0 [,0/A|3M$`Ȳ $4MAat]V]O; 5a‘cί>^Kl6?Y͗eqd~(:IENDB`melange-0.5.2/data/themes/light/ui/images/widget_pin.png000066400000000000000000000013101217205050200231410ustar00rootroot00000000000000PNG  IHDRasRGBbKGDC pHYs  tIME3c ziTXtCommentCreated with GIMPd.eIDAT8˕=kP:ښ8 DɒIcbxH:k:jʒ )R< J?@"u… s#R6V|H3*3T !ԓ)v_fi0$RJB?-4fybY֡i8}:~*VVV!GFvy?.`6p{{%wø7Bfyr||;==2`nnn]^^z xL~?mY֑H)  z)%bYa?`0dLLyGTUjZjJxi鸹 xEѣI"Xܟ`F(ڶt:QT8??\.c6RʉiS@ |~rwww8S* (J躎8$q}}x>ƥAjZ'{{{Gi M}߿Ak<' HzL2dss3u}dT\<Gy2$2?-xnu2IENDB`melange-0.5.2/data/themes/light/ui/melange.css000066400000000000000000000222611217205050200211670ustar00rootroot00000000000000@import "/theme/ui/scroll/scroll.css"; /* GENERAL */ body { margin: 0px; padding: 0px; font-size: 9pt; cursor: default; -webkit-user-select: none; font-family: "Sans"; font-style: normal; text-shadow: 0px 1px 0px rgba(256, 256, 256, .24); } a { color: #20375D; text-decoration: none; } /* WIDGET */ div.widget { padding: 3px; } div.background { padding: 10px; color: #0a0a0a; border-radius: 10px; outline-right: 5px solid red; /* background: -webkit-gradient(linear, left -18%, left 20%, from(rgba(250, 250, 250, .7)), to(rgba(230, 230, 230, .48)));*/ background: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, .55)), to(rgba(255,255,255,.35))); -webkit-box-shadow: 0px 0px 5px rgba(1, 1, 1, .55); } .section, .bright_section, .scrolled, .chooser, .scroll { -webkit-box-shadow: 0px 0px 3px 0px rgba(0, 0, 0, .15); } .section { margin-top: 5px; margin-bottom: 5px; padding: 4px; border-radius: 3px; background: rgba(256, 256, 256, .2); border: 1px solid rgba(256, 256, 256, .25); } .bright_section { margin-top: 5px; margin-bottom: 5px; padding: 4px; border-radius: 3px; color: #0a0a0a; background: rgba(256, 256, 256, .55); border: 1px solid rgba(256, 256, 256, .8); } /* BUTTONS */ input[type=button], input[type=submit], input[type=reset], button, .button { margin: 0px; padding: 5px; padding-left: 8px; padding-right: 8px; font-family: "Sans"; font-size: 8pt; float: left; } .button { margin: 5px; color: #0a0a0a; cursor: default; /* border: 1px solid #545454;*/ border-radius: 4px; -webkit-box-shadow: 0px 0px 3px 0px rgba(0, 0, 0, .2)/*0px 0px 4px 0px rgba(0, 0, 0, .4)*/, inset 0px 1px 1px -1px rgba(256, 256, 256, 1), inset 0px -1px 0px 0px rgba(0, 0, 0, .05), inset 1px 0px 1px -1px rgba(256, 256, 256, .15), inset -1px 0px 1px -1px rgba(256, 256, 256, .15); /* text-shadow: 0px 0px 4px #000000;*/ text-shadow: 0px 1px 0px rgba(256, 256, 256, .24); background: -webkit-gradient(linear, left -10%, left 70%, to(rgba(180, 180, 180, .45)), from(rgba(245, 245, 245, .5))); background-color: rgba(255, 255, 255, .3); } .button:hover { background: -webkit-gradient(linear, left -10%, left 70%, to(rgba(160, 160, 160, .45)), from(rgba(230, 230, 230, .5))); background-color: rgba(255, 255, 255, .32); -webkit-box-shadow: 0px 0px 1px 1px rgba(0, 0, 0, .1)/*0px 0px 4px 0px rgba(0, 0, 0, .4)*/, inset 0px 1px 1px -1px rgba(256, 256, 256, .68), inset 0px -1px 1px 0px rgba(200, 200, 200, .05), inset 0px -1px 1px -1px rgba(256, 256, 256, .15), inset 1px 0px 1px -1px rgba(256, 256, 256, .15), inset -1px 0px 1px -1px rgba(256, 256, 256, .15), 0px 0px 3px 0px rgba(207, 176, 127, .18); } .button:active { background: -webkit-gradient(linear, left 0%, left 80%, to(rgba(240, 240, 240, .6)), from(rgba(170, 170, 170, .55))); background-color: rgba(255, 255, 255, .34); -webkit-box-shadow: 0px 0px 1px 1px rgba(0, 0, 0, .1)/*0px 0px 4px 0px rgba(0, 0, 0, .4)*/, inset 0px 1px 1px -1px rgba(256, 256, 256, .68), inset 0px -1px 1px 0px rgba(200, 200, 200, .05), inset 0px -1px 1px -1px rgba(256, 256, 256, .15), inset 1px 0px 1px -1px rgba(256, 256, 256, .15), inset -1px 0px 1px -1px rgba(256, 256, 256, .15), inset 0px 0px 5px 0px rgba(0, 0, 0, .2), 0px 0px 3px 0px rgba(207, 176, 127, .18); } /* TEXT INPUTS */ input[type=text], input[type=password], textarea { padding: 4px; padding-left: 5px; padding-right: 5px; border-radius: 5px; font-family: "Sans"; } input.dark_input { color: #f2f2f2; border: 1px solid #545454; background: #343434; -webkit-box-shadow: 0px 0px 6px 0px #252525, inset 0px -13px 15px -5px #515151; text-shadow: 0px 0px 4px #000000; } input.dark_input:focus { background: #303030; -webkit-box-shadow: 0px 0px 6px 0px #252525, inset 0px -13px 15px -5px #4a4a4a; outline: 0px; } input.bright_input { color: #121212; border: 1px solid #a7a7a7; background: #f3f3f3; -webkit-box-shadow: 0px 0px 6px 0px #252525, inset 0px 9px 13px #bababa; text-shadow: 0px 0px 4px #aaaaaa; } input.bright_input:focus { background: #ffffff; -webkit-box-shadow: 0px 0px 6px 0px #343434, inset 0px 9px 13px #c8c8c8; outline: 0px; } /* SCROLLED */ .scrolled { border-radius: 5px; border-width: 1px; border-style: solid; border-color: rgba(256, 256, 256, .1); } .scrolled .container { background-color: rgba(256, 256, 256, .1); padding-left: 2px; padding-right: 2px; } .scrolled .control_up { height: 13px; padding: 1px; text-align: center; background-color: rgba(256, 256, 256, .1); border-top-right-radius: 5px; border-top-left-radius: 5px; cursor: pointer; } .scrolled .control_down { height: 13px; padding: 1px; text-align: center; background-color: rgba(256, 256, 256, .1); border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; cursor: pointer; } /* CHOOSER */ .chooser { margin-bottom: 5px; border-width: 1px; border-style: solid; border-color: rgba(256, 256, 256, .25); background-color: rgba(80, 80, 80, .07); border-radius: 7px; display: table; width: 100%; padding: 2px; -webkit-box-shadow: 0px 0px 1px 0px rgba(256, 256, 256, .1), inset 0px 0px 1px rgba(0, 0, 0, .16), 0px 0px 3px 0px rgba(0, 0, 0, .15); } .chooser .option { display: table-cell; text-align: center; padding: 3px; /*border-left: 1px solid rgba(256, 256, 256, .1);*/ opacity: .75; cursor: pointer; text-shadow: 0px 1px 0px rgba(256, 256, 256, .24); border-radius: 4px; } .chooser .option:hover { /* background: rgba(256, 256, 256, .04);*/ text-shadow: 0px 1px 0px rgba(256, 256, 256, .24), 0px 0px 5px rgba(256, 256, 256, .7); opacity: 1; } .chooser .option:first-child { border-left: none; /* border-top-left-radius: 4px; border-bottom-left-radius: 4px;*/ } .chooser .option:last-child { /* border-top-right-radius: 4px; border-bottom-right-radius: 4px;*/ } .chooser .option.active { /*border-left-color: rgba(256, 256, 256, 0);*/ background: -webkit-gradient(linear, left -18%, left 90%, from(rgba(256, 256, 256, .35)), to(rgba(256, 256, 256, .08))); /*background: -webkit-gradient(linear, left -18%, left 90%, from(rgba(10, 10, 10, .1)), to(rgba(0, 0, 0, .6)));*/ /*background: -webkit-gradient(linear, left -18%, left 90%, from(rgba(256, 256, 256, .25)), to(rgba(256, 256, 256, .09)));*/ opacity: 1; text-shadow: 0px 1px 0px rgba(256, 256, 256, .24), 0px 0px 5px rgba(256, 256, 256, .49); -webkit-box-shadow: 0px 0px 1px 0px rgba(0, 0, 0, .46), inset 0px 1px 0px 0px rgba(256, 256, 256, .11), inset 0px -1px 0px 0px rgba(256, 256, 256, .06); } .chooser .option.active:active { background: -webkit-gradient(linear, left -18%, left 90%, from(rgba(256, 256, 256, .08)), to(rgba(256, 256, 256, .28))); opacity: 1; } .chooser .option.active:hover { text-shadow: 0px 1px 0px rgba(256, 256, 256, .24), 0px 0px 5px rgba(256, 256, 256, .9); background: -webkit-gradient(linear, left -18%, left 90%, from(rgba(256, 256, 256, .45)), to(rgba(256, 256, 256, .15))); /*background: -webkit-gradient(linear, left -18%, left 90%, from(rgba(30, 30, 30, .05)), to(rgba(10, 10, 10, .6)));*/ /*background: -webkit-gradient(linear, left -18%, left 90%, from(rgba(256, 256, 256, .34)), to(rgba(256, 256, 256, .12)));*/ opacity: 1; } .chooser-tabs .tab { display: none; } .chooser-tabs .tab.active { display: block; } /* MISC */ .green, .green:hover, .green:active { border-color: darkgreen; background-color: #008811; } .red, .red:hover, .red:active { border-color: darkred; background-color: #ca2000; } .blue, .blue:hover, .blue:active { border-color: darkblue; background-color: #00247f; } .dialog { display: none; z-index: 1000; position: absolute; top: 0px; left: 0px; margin: 15px; padding: 10px; border-radius: 5px; background-color: rgba(40, 40, 40, .95); -webkit-box-shadow: 0px 0px 5px rgba(256, 256, 256, .5); } .overlay { display: none; z-index: 999; background-color: rgba(40, 40, 40, .8); position: absolute; top: 5px; left: 5px; right: 5px; bottom: 5px; border-radius: 10px; } /* SIMPLE DIALOG */ .simple-dialog { text-align: center; width: 100%; margin: auto; border-radius: 5px; padding-top: 20px; } .simple-dialog-text { color: #ffffff; text-shadow: 0px -1px 0px #000; } .simple-dialog-buttons { text-align: center; padding-top: 20px; } .simple-dialog-buttons .button { float: none; display: inline; } melange-0.5.2/data/themes/light/ui/scroll/000077500000000000000000000000001217205050200203405ustar00rootroot00000000000000melange-0.5.2/data/themes/light/ui/scroll/scroll.css000066400000000000000000000021021217205050200223430ustar00rootroot00000000000000.scroll { position: relative; display: block; overflow: scroll; border-radius: 3px; padding: 6px; background: rgba(256, 256, 256, .2); border: 1px solid rgba(256, 256, 256, .25); } .scroll .container { } .scrollControlsY { display: block; position: absolute; top: 0; right: 0; height: 100%; width: 10px; } .scrollBar { display: block; position: absolute; top: 0px; right: 0; bottom: 0px; width: 8px; border-radius: 10px; } .scrollHandle { display: block; position: absolute; top: 0px; right: 0; width: 10px; padding-bottom: 7px; cursor: default; } .scrollHandleBG { display: block; position: relative; height: 100%; width: 4px; margin: 2px; background: #444444; border-radius: 10px; } .scrollHandleBG:hover { background: #0a0a0a; } melange-0.5.2/data/themes/light/ui/scroll/scroll.js000066400000000000000000000506321217205050200222020ustar00rootroot00000000000000var MooScroll = new Class({ Implements: Options, options: { selector: '.scroll', increment:30, upBtnClass:'upBtn', downBtnClass:'downBtn', scrollBarClass:'scrollBar', scrollHandleClass:'scrollHandle', scrollHandleBGClass:'scrollHandleBG', scrollHandleTopClass:'scrollHandleTop', scrollHandleMiddleClass:'scrollHandleMiddle', scrollHandleBottomClass:'scrollHandleBottom', scrollControlsYClass: 'scrollControlsY', handleOpacity:1, handleActiveOpacity:0.85, disabledOpacity:0.5, fullWindowMode:false, smoothMooScroll:{ toAnchor:true, toMooScrollArea:true }, restrictedBrowsers:[Browser.Engine.presto925,Browser.Platform.ipod,Browser.Engine.webkit419]//Opera 9.25 or lower, Safari 2 or lower, iPhone/iPod Touch }, initialize: function(options){ //don't run in restricted browsers if(this.options.restrictedBrowsers.contains(true)){return;} this.setOptions(options); this.mooScrollAreas = []; this.windowFxScroll = new Fx.Scroll(document.window,{wait: false}); $(document.body).getElements(this.options.selector).each(function(item,index){ var scrollArea = new MooScrollArea(this.options, item,this.windowFxScroll); this.mooScrollAreas.include(scrollArea); if(this.options.smoothMooScroll.toAnchor || this.options.smoothMooScroll.toMooScrollArea){ this.smoothMooScroll = new SmoothMooScroll({toAnchor:this.options.smoothMooScroll.toAnchor,toMooScrollArea:this.options.smoothMooScroll.toMooScrollArea},scrollArea.contentEl,this.windowFxScroll); } }.bind(this)); }, loadContent:function(content){ this.mooScrollAreas.each(function(item,index){ item.loadContent(content); }); }, refresh:function(){ this.mooScrollAreas.each(function(item,index){ item.refresh(); }); }, setSlider:function(v){ this.mooScrollAreas.each(function(item,index){ item.setSlider(v); }); } }); var MooScrollArea = new Class({ Implements: Options, initialize: function(options, parentEl, windowFxScroll){ this.windowFxScroll = windowFxScroll; this.setOptions(options); this.parentEl = parentEl.setProperty('rel', 'MooScrollArea'); aaa = this; this.parentEl.refresh = function(){aaa.refresh()}; this.viewPort = {x:$(window).getSize().x,y:$(window).getSize().y}; this.parentElPadding = this.parentEl.getStyles('padding-top','padding-right','padding-bottom','padding-left'); this.paddingHeight = parseFloat(this.parentEl.getStyle('padding-top'))+parseFloat(this.parentEl.getStyle('padding-bottom')); this.paddingWidth = parseFloat(this.parentEl.getStyle('padding-left'))+parseFloat(this.parentEl.getStyle('padding-right')); this.contentEl = new Element('div',{'class':'contentEl'}).adopt(this.parentEl.getChildren()).inject(this.parentEl,'top'); this.parentEl.setStyle('overflow', 'hidden').setStyles({ 'padding':0, width:parseFloat(this.parentEl.getStyle('width')) + this.paddingWidth, height:parseFloat(this.parentEl.getStyle('height')) + this.paddingHeight }); this.borderHeight = parseFloat(this.parentEl.getStyle('border-top-width'))+parseFloat(this.parentEl.getStyle('border-bottom-width')); this.contentEl.setStyles({'height':this.parentEl.getSize().y-this.borderHeight, overflow:'hidden','padding':0}); this.paddingEl = new Element('div',{'class':'paddingEl'}).adopt(this.contentEl.getChildren()).inject(this.contentEl,'top').setStyles(this.parentElPadding); if(this.options.fullWindowMode){ //turn off overflow for html element here so non-javascript users can still scroll $(document).getElement('html').setStyle('overflow','hidden'); this.parentEl.setStyles({ 'height':'100%', 'width':'100%', 'position':'absolute' }); this.contentEl.setStyles({ 'height':'100%', 'width':'100%', 'position':'absolute'}); } //Add Control Elements this.scrollControlsYWrapper = new Element('div', { 'class': this.options.scrollControlsYClass }).inject(this.parentEl,'bottom'); this.upBtn = new Element('div', { 'class': this.options.upBtnClass }).inject(this.scrollControlsYWrapper,'bottom'); this.downBtn = new Element('div', { 'class': this.options.downBtnClass }).inject(this.scrollControlsYWrapper,'bottom'); this.scrollBar = new Element('div', { 'class': this.options.scrollBarClass }).inject(this.scrollControlsYWrapper,'bottom'); this.scrollHandle = new Element('div', { 'class': this.options.scrollHandleClass }).inject(this.scrollBar,'inside'); this.scrollHandle.fade('hide'); this.scrollHandleTop = new Element('div', { 'class': this.options.scrollHandleTopClass }).inject(this.scrollHandle,'inside'); this.scrollHandleBG = new Element('div', { 'class': this.options.scrollHandleBGClass }).inject(this.scrollHandle,'inside'); this.scrollHandleMiddle = new Element('div', { 'class': this.options.scrollHandleMiddleClass }).inject(this.scrollHandle,'inside'); this.scrollHandleBottom = new Element('div', { 'class': this.options.scrollHandleBottomClass }).inject(this.scrollHandle,'inside'); this.coverUp = new Element('div').inject(this.scrollControlsYWrapper,'bottom'); this.overHang = this.paddingEl.getSize().y - this.parentEl.getSize().y ; // var that will hold the ID of the timeout to fade the slider out this.fadeout_timeout = 0; this.scroll_handle_visible = false; this.scroll_handle_fade_lock = false; this.setHandleHeight(); if(this.overHang <=0){this.greyOut();} this.initSlider(); this.parentEl.addEvents({ 'mousewheel': function(e){ // fade the scroll handle in if it is not visible if (this.scroll_handle_visible == false) { fade_in_scroll_handle(this); } else { window.clearTimeout(this.fadeout_timeout); this.fadeout_timeout = window.setTimeout(fade_out_scroll_handle, 5000, this); } e = new Event(e).stop(); // Mousewheel UP if (e.wheel > 0) { this.scrollUp(true); } // Mousewheel DOWN else if (e.wheel < 0) { this.scrollDown(true); } }.bind(this), 'keydown': function(e){ // fade the scroll handle in if it is not visible if (this.scroll_handle_visible == false) { fade_in_scroll_handle(this); } else { window.clearTimeout(this.fadeout_timeout); this.fadeout_timeout = window.setTimeout(fade_out_scroll_handle, 2000, this); } if (e.key === 'up') { e = new Event(e).stop(); this.scrollUp(true); } else if (e.key === 'down' || e.key === 'space') { e = new Event(e).stop(); this.scrollDown(true); } }.bind(this), 'click':function(e){ this.hasFocus = true; this.hasFocusTimeout = (function(){ clearTimeout(this.hasFocusTimeout); this.hasFocus = true; }.bind(this)).delay(50); }.bind(this), 'mouseover': function(e) { this.refresh(); this.scrollHandle.fade(1); }.bind(this), 'mousemove': function(e) { window.clearTimeout(this.fadeout_timeout); if (this.scroll_handle_visible && this.scroll_handle_fade_lock == false) { this.fadeout_timeout = window.setTimeout(fade_out_scroll_handle, 2000, this); } else { fade_in_scroll_handle(this); } }.bind(this), 'mousedown': function(e) { window.clearTimeout(this.fadeout_timeout); // on mouse down it should be always visible, so fade it in, if it's not if (this.scroll_handle_visible == false) { fade_in_scroll_handle(this); } // lock the fade in/out timeouts this.scroll_handle_fade_lock = true; }.bind(this), 'mouseup': function(e) { // unlock the fade in/out timeouts this.scroll_handle_fade_lock = false; window.clearTimeout(this.fadeout_timeout); this.fadeout_timeout = window.setTimeout(fade_out_scroll_handle, 2000, this); }.bind(this), 'mouseout': function(e) { //this.scrollHandle.fade(0); }.bind(this) }); // if mouse is up outside the widget, it should restart timeout etc. window.addEvents({ 'mouseup': function(e){ this.scroll_handle_fade_lock = false; window.clearTimeout(this.fadeout_timeout); if (this.scroll_handle_visible) { this.fadeout_timeout = window.setTimeout(fade_out_scroll_handle, 2000, this); } else { fade_in_scroll_handle(this); } }.bind(this) }); this.contentEl.addEvents({ 'scroll': function(e){ this.slider.set(this.contentEl.getScroll().y); }.bind(this) }); this.scrollHandle.addEvents({ 'mousedown': function(e){ this.scrollHandle.addClass(this.options.scrollHandleClass +'-Active').setStyle('opacity',this.options.handleActiveOpacity); }.bind(this) }); document.addEvents({ 'mouseup': function(e){ this.scrollHandle.removeClass(this.options.scrollHandleClass +'-Active').setStyle('opacity',this.options.handleOpacity); this.upBtn.removeClass(this.options.upBtnClass +'-Active'); this.downBtn.removeClass(this.options.downBtnClass +'-Active'); }.bind(this), 'keydown':function(e){ if( (this.hasFocus ||this.options.fullWindowMode) && (e.key === 'down' || e.key === 'space' ||e.key === 'up') ){ this.parentEl.fireEvent('keydown',e); } }.bind(this), 'click':function(e){ this.hasFocus = false; }.bind(this) }); window.addEvent('resize', function() { clearTimeout(this.refreshTimeout); if (this.options.fullWindowMode) { this.refreshTimeout = (function(){ clearTimeout(this.refreshTimeout); if (this.viewPort.x != $(window).getSize().x || this.viewPort.y != $(window).getSize().y) { this.refresh(); this.viewPort.x = $(window).getSize().x; this.viewPort.y = $(window).getSize().y; } }.bind(this)).delay(250); } }.bind(this)); this.upBtn.addEvents({ 'mousedown': function(e){ clearTimeout(this.upInterval); clearTimeout(this.downInterval); this.upInterval = this.scrollUp.periodical(10,this); this.upBtn.addClass(this.options.upBtnClass +'-Active'); }.bind(this), 'mouseup': function(e){ clearTimeout(this.upInterval); clearTimeout(this.downInterval); }.bind(this), 'mouseout': function(e){ clearTimeout(this.upInterval); clearTimeout(this.downInterval); }.bind(this) }); this.downBtn.addEvents({ 'mousedown': function(e){ clearTimeout(this.upInterval); clearTimeout(this.downInterval); this.downInterval = this.scrollDown.periodical(10,this); this.downBtn.addClass(this.options.downBtnClass +'-Active'); }.bind(this), 'mouseup': function(e){ clearTimeout(this.upInterval); clearTimeout(this.downInterval); }.bind(this), 'mouseout': function(e){ clearTimeout(this.upInterval); clearTimeout(this.downInterval); }.bind(this) }); }, initSlider:function(){ this.slider = new Slider(this.scrollBar, this.scrollHandle, { range:[0, Math.round(this.overHang )], mode: 'vertical', onChange: function(step,e){ this.contentEl.scrollTo(0, step); }.bind(this) }); }, scrollUp:function(scrollPageWhenDone){ var target = this.contentEl.getScroll().y - 30;// this.options.increment; this.slider.set(target); if(this.contentEl.getScroll().y <= 0 && scrollPageWhenDone){ document.window.scrollTo(0 ,document.window.getScroll().y - this.options.increment ); } }, scrollDown:function(scrollPageWhenDone){ var target = this.contentEl.getScroll().y + this.options.increment; this.slider.set(target); var onePercent = (1*this.paddingEl.getSize().y)/100; var atBottom = (this.paddingEl.getSize().y - this.parentEl.getSize().y)<= (this.contentEl.getScroll().y + onePercent); if(atBottom && scrollPageWhenDone){ document.window.scrollTo(0 ,document.window.getScroll().y + this.options.increment ); } }, setHandleHeight:function(){ var handleHeightPercent = (100 - ((this.overHang*100)/this.paddingEl.getSize().y)); this.handleHeight = ((handleHeightPercent*this.parentEl.getSize().y)/100) - (this.scrollHandleTop.getSize().y + this.scrollHandleBottom.getSize().y ); if((this.handleHeight + this.scrollHandleTop.getSize().y + this.scrollHandleBottom.getSize().y ) >= this.scrollBar.getSize().y){ this.handleHeight-=( this.scrollHandleTop.getSize().y + this.scrollHandleBottom.getSize().y )*2; } if(this.scrollHandle.getStyle('min-height') && this.handleHeight < parseFloat(this.scrollHandle.getStyle('min-height'))){ this.handleHeight = parseFloat(this.scrollHandle.getStyle('min-height')) + this.scrollHandleBottom.getSize().y + this.scrollHandleTop.getSize().y; } this.scrollHandle.setStyles({'height':this.handleHeight}); }, greyOut:function(){ this.scrollHandle.setStyles({'display':'none'}); this.upBtn.setStyles({'opacity':this.options.disabledOpacity}); this.scrollControlsYWrapper.setStyles({opacity:this.options.disabledOpacity}); this.downBtn.setStyles({'opacity':this.options.disabledOpacity}); this.scrollBar.setStyles({'opacity':this.options.disabledOpacity}); this.coverUp.setStyles({'display':'block','position':'absolute','background':'white','opacity':0.01,'right':'0','top':'0','width':'100%','height':this.scrollControlsYWrapper.getSize().y}); }, unGrey:function(){ this.scrollHandle.setStyles({'display':'block','height':'auto'}); this.scrollControlsYWrapper.setStyles({opacity:1}); this.upBtn.setStyles({'opacity':1}); this.downBtn.setStyles({'opacity':1}); this.scrollBar.setStyles({'opacity':1}); this.coverUp.setStyles({'display':'none','width':0, 'height':0 }); this.setHandleHeight(); }, loadContent:function(content){ this.slider.set(0); this.paddingEl.empty().set('html',content); this.refresh(); }, refresh:function(){ var scrollPercent = Math.round(((100* this.step)/this.overHang)); if(this.options.fullWindowMode){ var windowSize = $(window).getSize(); this.parentEl.setStyles({ width:'100%',height:'100%'}); } this.overHang = this.paddingEl.getSize().y - this.parentEl.getSize().y ; this.setHandleHeight(); if(this.overHang <= 0){ this.greyOut(); return; }else{ this.unGrey(); } this.scrollHandle.removeEvents(); var newStep = Math.round((scrollPercent*this.overHang)/100); this.initSlider(); this.slider.set(this.contentEl.getScroll().y); //this.slider.set(newStep); /* if(this.options.smoothMooScroll.toAnchor || this.options.smoothMooScroll.toMooScrollArea){ this.smoothMooScroll = new SmoothMooScroll({toAnchor:this.options.smoothMooScroll.toAnchor,toMooScrollArea:this.options.smoothMooScroll.toMooScrollArea},this.contentEl,this.windowFxScroll); }*/ }, setSlider:function(v){ if(v =='top'){ this.slider.set(0); }else if(v=='bottom'){ this.slider.set('100%'); }else{ this.slider.set(v); } } }); var SmoothMooScroll = new Class({ Extends: Fx.Scroll, initialize: function(options, context, windowFxScroll){ this.setOptions(options); this.windowFxScroll = windowFxScroll; this.context = context; context = context || document; this.context = context; var doc = context.getDocument(), win = context.getWindow(); this.parent(context, options); this.links = (this.options.links) ? $$(this.options.links) : $$(doc.links); var location = win.location.href.match(/^[^#]*/)[0] + '#'; this.links.each(function(link){ if (link.href.indexOf(location) != 0) { return; } var anchor = link.href.substr(location.length); if (anchor && $(anchor) && $(anchor).getParents().contains($(this.context))) { this.useLink(link,anchor, true); }else if(anchor && $(anchor) && !this.inMooScrollArea($(anchor))){ this.useLink(link,anchor, false); } }, this); if (!Browser.Engine.webkit419) this.addEvent('complete', function(){ win.location.hash = this.anchor; }, true); }, inMooScrollArea:function(el){ return el.getParents().filter(function(item, index){return item.match('[rel=MooScrollArea]');}).length > 0; }, putAnchorInAddressBar:function(anchor){ window.location.href = "#" + anchor; }, useLink: function(link, anchor, inThisMooScrollArea){ link.removeEvents('click'); link.addEvent('click', function(event){ if(!anchor || !$(anchor)){return;} this.anchor = anchor; if (inThisMooScrollArea) { if(this.options.toMooScrollArea && this.options.toAnchor){ this.windowFxScroll.toElement(this.context.getParent()).chain(function(item, index){ this.toElement(anchor).chain(function(){ this.putAnchorInAddressBar(anchor); }.bind(this)); }.bind(this)); }else if(this.options.toMooScrollArea){ this.windowFxScroll.toElement(this.context.getParent()).chain(function(){ this.putAnchorInAddressBar(anchor); }.bind(this)); }else if(this.options.toAnchor){ this.toElement(anchor).chain(function(){ this.putAnchorInAddressBar(anchor); }.bind(this)); } }else{ this.windowFxScroll.toElement(anchor).chain(function(){ this.putAnchorInAddressBar(anchor); }.bind(this)); } event.stop(); }.bind(this)); } }); function fade_in_scroll_handle(scroll_area_obj) { scroll_area_obj.scrollHandle.fade(1); scroll_area_obj.scroll_handle_visible = true; } function fade_out_scroll_handle(scroll_area_obj) { scroll_area_obj.scrollHandle.fade(0); scroll_area_obj.scroll_handle_visible = false; } window.addEvent('domready', function() { $$('.scroll').each(function(obj) { var container = document.createElement("div"); container.style.overflow = 'hidden'; container.style.marginRight = '12px'; container.className = 'container'; container.innerHTML = obj.innerHTML; obj.innerHTML = ''; obj.appendChild(container); }); var scroll_elements = new MooScroll(); }); melange-0.5.2/data/themes/light/ui/scrolled/000077500000000000000000000000001217205050200206515ustar00rootroot00000000000000melange-0.5.2/data/themes/light/ui/scrolled/images/000077500000000000000000000000001217205050200221165ustar00rootroot00000000000000melange-0.5.2/data/themes/light/ui/scrolled/images/down.png000066400000000000000000000011751217205050200235770ustar00rootroot00000000000000PNG  IHDR Vu\sRGBbKGD pHYs  tIME  /IDAT(M1haF,ޝ)BC.)tGq*N28Ru0n qA%&ߡH@UU) |8N_E7^zFV-a0Ƙ3j*uARqff, ,ϛՊ=<<,ONN F㵢( L򚦁8{{{(4m4Ls(<r̋dY!~ggg#syGՂ(T*!\alyt:2M^c <==!H. ljD)%4Mh4))(HR|d8~V~?bPQJh40 `& FlT*Ǻ3UUY:fLufzs Nv ~Ȳ,<l6Y>D"WWW]IB4MS%I \qIIENDB`melange-0.5.2/data/themes/light/ui/scrolled/images/up.png000066400000000000000000000011701217205050200232470ustar00rootroot00000000000000PNG  IHDR Vu\sRGBbKGD pHYs  tIME ^BIDAT(Mѿka)6VrUd)NN$т'"n%C)R. ;};I̟`,KD"y,{0pt^b,G@.L4N3JBd2Snf J)...G?V%y% qdYfriul6D"q: x$I ǜi'}6 ^D"eB!'; control_up.id = 'control_up'; control_up.className = 'control_up'; var control_down = document.createElement("div"); control_down.innerHTML = ''; control_down.id = 'control_down'; control_down.className = 'control_down'; obj.appendChild(container); obj.insertBefore(control_up, container); obj.appendChild(control_down); obj.up = false; obj.down = false; obj.fast = false; control_up.onmousedown = function(){ obj.up = true; obj.interval = setInterval(obj.scroll, 20); }; control_up.onmouseup = function(){ obj.up = false; clearInterval(obj.interval); }; control_down.onmousedown = function(){ obj.down = true; obj.interval = setInterval(obj.scroll, 20); }; control_down.onmouseup = function(){ obj.down = false; clearInterval(obj.interval); }; obj.scroll = function(){ var h = content.offsetHeight; var t = content.offsetTop - container.offsetTop; if(obj.down & (t > -(h-container.offsetHeight))){ content.style.top = t - speed + "px"; }; if(obj.up & (t < 0)){ newTop = (t < 0) ? t+speed : t; content.style.top = newTop + "px"; }; }; }); }); melange-0.5.2/data/themes/light/ui/spinner/000077500000000000000000000000001217205050200205205ustar00rootroot00000000000000melange-0.5.2/data/themes/light/ui/spinner/spinner.js000066400000000000000000000027611217205050200225420ustar00rootroot00000000000000var Spinner = new Class({ initialize: function(elm, size) { this.spokes = 9; if(size) this.size = size else this.size = 30 this.interval_id = null; elm.innerHTML = ''; this.canvas = new Element('canvas', { 'width': this.size, 'height': this.size, 'style': 'display: inline;' }); this.container = new Element('div', { }) this.container.grab(this.canvas, 'top') elm.grab(this.container, 'top'); this.ctx = this.canvas.getContext('2d'); this.ctx.translate(this.size/2, this.size/2); // Center the origin this.ctx.lineWidth = this.size/10; this.ctx.lineCap = "round"; }, start: function() { this.interval_id = this.draw.periodical(100, this); }, stop: function() { this.interval_id = clearTimeout(this.interval_id); }, draw: function() { this.ctx.clearRect(-this.size/2, -this.size/2, this.size, this.size); // Clear the image this.ctx.rotate(Math.PI*2/this.spokes); // Rotate the origin for (var i=0; i # 2010-2013, Kristoffer Kleine # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. import os import cairo from gi.repository import Gtk as gtk, Gdk as gdk, GObject as gobject import cream import cream.ipc from gpyconf.fields import MultiOptionField from cream.melange.widget import Widget from cream.melange.dialogs import AddWidgetDialog from cream.melange.common import MOUSE_BUTTON_LEFT, MOUSE_BUTTON_RIGHT class TransparentWindow(gtk.Window): def __init__(self): gtk.Window.__init__(self) screen = self.get_display().get_default_screen() self.set_default_size(screen.get_width(), screen.get_height()) self.set_events(gdk.EventMask.BUTTON_RELEASE_MASK) self.set_type_hint(gdk.WindowTypeHint.DESKTOP) self.set_app_paintable(True) self.set_visual(self.get_screen().get_rgba_visual()) self.connect('draw', self.draw_cb) def draw_cb(self, window, ctx): ctx.set_operator(cairo.OPERATOR_SOURCE) ctx.set_source_rgba(0, 0, 0, 0) ctx.paint() class WidgetWindow(gtk.Window, gobject.GObject): __gsignals__ = { 'remove-request': (gobject.SignalFlags.RUN_LAST, None, ()) } def __init__(self): gtk.Window.__init__(self) gobject.GObject.__init__(self) self.ctrl_pressed = False self.set_events(gdk.EventMask.BUTTON_RELEASE_MASK) self.set_type_hint(gdk.WindowTypeHint.DESKTOP) self.set_app_paintable(True) self.set_visual(self.get_screen().get_rgba_visual()) self.connect('draw', self.draw_cb) self.connect('key-press-event', self.key_press_cb) self.connect('key-release-event', self.key_release_cb) self.connect('button-press-event', self.button_press_cb) self.connect('button-release-event', self.button_release_cb) screen = gdk.Screen.get_default() self.screen_width = screen.get_width() self.screen_height = screen.get_height() def load_widget(self, widget): self._widget = widget self.handlers = [ widget.view.connect('show-request', self.show_request_cb), widget.view.connect('move-request', self.move_request_cb), widget.view.connect('begin-move', self.fade_out), widget.view.connect('end-move', self.fade_in), widget.view.connect('remove-request', self.remove_request_cb), widget.view.connect('reload-request', self.reload_request_cb) ] self.add(widget.view) def reload(self): for id in self.handlers: self._widget.view.disconnect(id) self.remove(self._widget.view) self._widget.destroy() self._widget.load() self.load_widget(self._widget) def fade_in(self, view): self.set_opacity(1) def fade_out(self, view): self.set_opacity(0.8) def show_request_cb(self, view): self.show_all() self.move(*self._widget.get_position()) def move_request_cb(self, view, x, y): old_x, old_y = self._widget.get_position() allocation = view.get_allocation() new_x = max(0, min(old_x + x, self.screen_width - allocation.width)) new_y = max(0, min(old_y + y, self.screen_height - allocation.height)) self.move(new_x, new_y) self._widget.set_position(new_x, new_y) def remove_request_cb(self, view): for id in self.handlers: self._widget.view.disconnect(id) self.remove(view) self._widget.destroy() self.emit('remove-request') def reload_request_cb(self, view): self.reload() def key_press_cb(self, window, event): if event.keyval in (gdk.KEY_Control_L, gdk.KEY_Control_R): self.ctrl_pressed = True def key_release_cb(self, window, event): if event.keyval in (gdk.KEY_Control_L, gdk.KEY_Control_R): self.ctrl_pressed = False self._widget.view.end_move() def button_press_cb(self, window, event): if self.ctrl_pressed and event.button == MOUSE_BUTTON_LEFT: self._widget.view.begin_move() def button_release_cb(self, window, event): if self.ctrl_pressed and event.button == MOUSE_BUTTON_LEFT: self._widget.view.end_move() def draw_cb(self, window, ctx): ctx.set_operator(cairo.OPERATOR_SOURCE) ctx.set_source_rgba(0, 0, 0, 0) ctx.paint() class Themes(gobject.GObject): __gsignals__ = { 'changed': (gobject.SignalFlags.RUN_LAST, None, (str,)) } def __init__(self, theme_dirs): gobject.GObject.__init__(self) self._themes = cream.manifest.ManifestDB(theme_dirs, type='org.cream.melange.Theme' ) self.selected_theme_id = None def change_theme(self, theme_id): self.selected_theme_id = theme_id self.emit('changed', theme_id) def get_theme(self, theme_id): return self._themes.get(id=theme_id) def get_all_themes(self): return self._themes.get_all() class Melange(cream.Module, cream.ipc.Object): def __init__(self): cream.Module.__init__(self, 'org.cream.Melange', 'cream-melange') cream.ipc.Object.__init__(self, 'org.cream.Melange', '/org/cream/Melange' ) self.common_path = os.path.join(self.context.get_path(), 'common') theme_dirs = [ os.path.join(self.context.get_path(), 'themes'), os.path.join(self.context.get_system_path(), 'themes'), os.path.join(self.context.get_user_path(), 'themes') ] if self.context.in_virtualenv: theme_dirs.append(os.path.join( self.context.get_virtualenv_path(), 'themes' )) self.themes = Themes(theme_dirs) widget_dirs = [ os.path.join(self.context.get_system_path(), 'widgets'), os.path.join(self.context.get_user_path(), 'widgets') ] if self.context.in_virtualenv: widget_dirs.append(os.path.join( self.context.get_virtualenv_path(), 'widgets' )) self.available_widgets = cream.manifest.ManifestDB(widget_dirs, type='org.cream.melange.Widget' ) self.config._add_field( 'theme', MultiOptionField('Theme', options=((t['id'], t['name']) for t in self.themes.get_all_themes()) ) ) self.config.read() self.config.connect('field-value-changed', self.configuration_value_changed_cb) self.themes.change_theme(self.config.theme) self.event_layer = TransparentWindow() self.event_layer.connect('button-release-event', self.button_release_cb) self.event_layer.show_all() self.windows = [] gobject.timeout_add(20, self.load_widgets_from_config) @cream.util.cached_property def add_widget_dialog(self): widgets = sorted( self.available_widgets.get_all(), key=lambda w: w['name'] ) return AddWidgetDialog(widgets, self.context.get_path()) @cream.util.cached_property def menu(self): item_add = gtk.ImageMenuItem(gtk.STOCK_ADD) item_add.get_children()[0].set_label('Add widgets') item_add.connect('activate', lambda *x: self.add_widget()) item_settings = gtk.ImageMenuItem(gtk.STOCK_PREFERENCES) item_settings.get_children()[0].set_label('Settings') item_settings.connect('activate', lambda *x: self.config.show_dialog()) menu = gtk.Menu() menu.append(item_add) menu.append(item_settings) menu.show_all() return menu @property def selected_theme(self): return self.themes.get_theme(self.config.theme) def add_widget(self): widget_id = self.add_widget_dialog.run() if widget_id is not None: self.load_widget(widget_id) def button_release_cb(self, layer, event): if event.button == MOUSE_BUTTON_RIGHT: self.menu.popup(None, None, None, None, event.button, event.get_time()) # Raise all widgets to be on top of the event_layer again for window in self.windows: window.present() def configuration_value_changed_cb(self, source, key, value): if key == 'theme': self.themes.change_theme(value) def remove_request_cb(self, window): self.windows.remove(window) window.destroy() def load_widgets_from_config(self): for widget in self.config.widgets: self.load_widget(**widget) @cream.ipc.method('svv', '') def load_widget(self, id, x=None, y=None): self.messages.debug("Loading widget '%s'..." % id) try: path = self.available_widgets.get(id=id)._path except (AttributeError, KeyError): return widget = Widget(id, path, self.themes, self.common_path) if x and y: x, y = int(x), int(y) widget.set_position(x, y) else: x, y = widget.get_position() window = WidgetWindow() window.connect('remove-request', self.remove_request_cb) window.load_widget(widget) self.windows.append(window) def quit(self): widgets = [] for window in self.windows: widget = window._widget widgets.append({ 'id': widget.id, 'x': widget.get_position()[0], 'y': widget.get_position()[1] }) self.config.widgets = widgets cream.Module.quit(self) if __name__ == '__main__': melange = Melange() melange.main() melange-0.5.2/src/melange/000077500000000000000000000000001217205050200153175ustar00rootroot00000000000000melange-0.5.2/src/melange/__init__.py000066400000000000000000000000001217205050200174160ustar00rootroot00000000000000melange-0.5.2/src/melange/api.py000066400000000000000000000071061217205050200164460ustar00rootroot00000000000000# Copyright: 2007-2013, Sebastian Billaudelle # 2010-2013, Kristoffer Kleine # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301, USA. import os import sys import imp import threading from gi.repository import GObject as gobject APIS = {} def import_api_file(path, widget_id): api_file = os.path.join(path, '__init__.py') if os.path.isfile(api_file): sys.path.insert(0, path) with open(api_file) as file_handle: imp.load_module( 'widget_api', file_handle, api_file, ('.py', 'r', imp.PY_SOURCE) ) else: APIS[widget_id] = API def expose(func): func._exposed = True return func def register(widget_id): def wrapper(api_cls): APIS[widget_id] = api_cls return api_cls return wrapper def in_main_thread(func): """ Decorator for functions that have to be called in the main thread. """ def wrapper(*args, **kwargs): f = FunctionInMainThread(func) return f(*args, **kwargs) return wrapper class API(object): @expose def log(self, msg): self.messages.info(msg) def get_exposed_methods(self): methods = [] for attr in dir(self): if hasattr(getattr(self, attr), '_exposed'): methods.append(attr) return methods class Thread(threading.Thread, gobject.GObject): """An advanced threading class emitting a GObject signal after running.""" __gtype_name__ = 'MelangeThread' __gsignals__ = { 'finished': (gobject.SignalFlags.RUN_LAST, None, (str, object)) } def __init__(self, func, callback_id, args=None): self.func = func self.callback_id = callback_id self.args = args if args is not None else [] threading.Thread.__init__(self) gobject.GObject.__init__(self) def run(self): ret = self.func(*self.args) gobject.timeout_add(0, self._emit, ret) def _emit(self, ret): self.emit('finished', self.callback_id, ret) class FunctionInMainThread(object): """ A wrapper for functions that have to be called in the main thread. """ def __init__(self, func): self.func = func self.lock = threading.Event() self.ret = None def __call__(self, *args, **kwargs): self.lock.clear() gobject.timeout_add(0, self._func_wrapper, args, kwargs) self.lock.wait() return self.ret def _func_wrapper(self, args, kwargs): try: self.ret = self.func(*args, **kwargs) except Exception: import traceback traceback.print_exc() self.lock.set() melange-0.5.2/src/melange/categories.py000066400000000000000000000034221217205050200200170ustar00rootroot00000000000000# Copyright: 2007-2013, Sebastian Billaudelle # 2010-2013, Kristoffer Kleine # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # note: this is just a workaround until manifests are extended categories = { 'org.cream.melange.CategoryInternet': { 'name': 'Internet', 'icon': 'applications-internet', 'description': 'Interact with the web!' }, 'org.cream.melange.CategoryMultimedia': { 'name': 'Multimedia', 'icon': 'applications-multimedia', 'description': 'Adds multimedia features to your desktop.' }, 'org.cream.melange.CategoryTools': { 'name': 'Tools', 'icon': 'applications-accessories', 'description': 'Helping you to make your life easier.' }, 'org.cream.melange.CategoryGames': { 'name': 'Games', 'icon': 'applications-games', 'description': 'Gaming for in between? Here you go!' }, 'org.cream.melange.CategoryMiscellaneous': { 'name': 'Miscellaneous', 'icon': 'applications-other', 'description': 'Various widgets.' } } melange-0.5.2/src/melange/common.py000066400000000000000000000027731217205050200171720ustar00rootroot00000000000000# Copyright: 2007-2013, Sebastian Billaudelle # 2010-2013, Kristoffer Kleine # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301, USA. # Timestep for moving actions: MOVE_TIMESTEP = 30 # Orientation of containers: ORIENTATION_HORIZONTAL = 0 ORIENTATION_VERTICAL = 1 # Mouse buttons (compatible to GTK+): MOUSE_BUTTON_LEFT = 1 MOUSE_BUTTON_MIDDLE = 2 MOUSE_BUTTON_RIGHT = 3 # General mode of Melange: MODE_NORMAL = 0 MODE_EDIT = 1 # States a widget or container be in: STATE_NONE = 0 STATE_VISIBLE = 1 STATE_HIDDEN = 2 STATE_MOVE = 3 STATE_MOVING = 4 OVERLAY_FADE_DURATION = 350 OPACITY_MOVE = 0.7 melange-0.5.2/src/melange/dialogs.py000066400000000000000000000154461217205050200173250ustar00rootroot00000000000000# Copyright: 2007-2013, Sebastian Billaudelle # 2010-2013, Kristoffer Kleine # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. import os from gi.repository import Gtk as gtk, GdkPixbuf as gdkpixbuf from cream.melange.categories import categories ICON_SIZE_SMALL = 24 ICON_SIZE_MEDIUM = 35 ICON_SIZE_LARGE = 48 AUTHOR = u'{0} <{1}>' class AddWidgetDialog(object): def __init__(self, widgets, data_path): self.melange_icon_path = os.path.join(data_path, 'images/melange.png') self.widgets = {} interface = gtk.Builder() interface.add_from_file(os.path.join(data_path, 'add_dialog.glade')) self.dialog = interface.get_object('dialog') self.category_liststore = interface.get_object('categories') self.category_view = interface.get_object('category_view') self.widget_liststore = interface.get_object('widgets') self.widget_view = interface.get_object('widget_view') self.category_image = interface.get_object('category_image') self.category_description = interface.get_object('category_description') # connect signals self.dialog.connect('delete_event', lambda *x: self.dialog.hide()) self.category_view.connect('cursor-changed', lambda *x: self.on_category_change() ) # add the categories to the liststore alphabetically categories_ = sorted(categories.iteritems(), key=lambda c: c[1]['name']) for id, category in categories_: icon = self.get_icon_by_name_at_size(category['icon'], ICON_SIZE_SMALL) self.category_liststore.append((category['name'], id, icon)) # group widgets into categories for widget in widgets: if not widget.get('categories'): category = 'org.cream.melange.CategoryMiscellaneous' self._add_to_category(category, widget) for category in widget['categories']: self._add_to_category(category['id'], widget) self.category_view.set_cursor(0) def _add_to_category(self, category, widget): if category in self.widgets: self.widgets[category].append(widget) else: self.widgets[category] = [widget] def update_info_bar(self): """ Update the description of a category which is displayed above the widget listview """ category = categories[self.selected_category] icon = self.get_icon_by_name_at_size(category['icon'], ICON_SIZE_LARGE) self.category_image.set_from_pixbuf(icon) description = split_string(category['description']) self.category_description.set_text(description) def on_category_change(self): """ Whenever a new category is selected, clear the liststore and add the widgets corresponding to the category to it """ self.widget_liststore.clear() self.update_info_bar() category = self.selected_category if not category in self.widgets: return for widget in self.widgets[category]: if 'icon' in widget: icon = gdkpixbuf.Pixbuf.new_from_file_at_size(widget['icon'], 35, 35) else: icon = self.get_melange_icon_at_size(ICON_SIZE_MEDIUM) label = u'{0}\n{1}'.format( widget['name'], split_string(widget['description']) ) self.widget_liststore.append((icon, label, widget['id'])) @property def selected_widget(self): selection = self.widget_view.get_selection() model, iter = selection.get_selected() if iter: return model.get_value(iter, 2) @property def selected_category(self): selection = self.category_view.get_selection() model, iter = selection.get_selected() return model.get_value(iter, 1) def run(self): self.dialog.show_all() widget = None if self.dialog.run() == 1: widget = self.selected_widget self.dialog.hide() return widget def get_melange_icon_at_size(self, size): return gdkpixbuf.Pixbuf.new_from_file_at_size( self.melange_icon_path, size, size ) def get_icon_by_name_at_size(self, name, size): theme = gtk.IconTheme.get_default() if theme.has_icon(name): return theme.load_icon( name, size, gtk.IconLookupFlags.USE_BUILTIN ) else: if size <= ICON_SIZE_SMALL: return self.get_melange_icon_at_size(ICON_SIZE_SMALL) elif size <= ICON_SIZE_MEDIUM: return self.get_melange_icon_at_size(ICON_SIZE_MEDIUM) else: return self.get_melange_icon_at_size(ICON_SIZE_LARGE) class AboutDialog(gtk.AboutDialog): def __init__(self, manifest): gtk.AboutDialog.__init__(self) self.connect('response', lambda *x: self.hide()) self.connect('delete-event', lambda *x: True) self.set_program_name(manifest['name']) developers, designers = [], [] for author in manifest['authors']: author_info = AUTHOR.format(author.get('name'), author.get('mail')) if author.get('type') == 'developer': developers.append(author_info) elif author.get('type') == 'designer': designers.append(author_info) self.set_authors(developers) self.set_artists(designers) if manifest.get('icon', None): icon = gdkpixbuf.Pixbuf.new_from_file_at_size( manifest['icon'], ICON_SIZE_LARGE, ICON_SIZE_LARGE ) self.set_logo(icon) self.set_comments(manifest['description']) def split_string(description): """split a long string into multiple lines""" lst = [] chars = 0 for word in description.split(): if chars > 30: lst.append(u'\n') chars = 0 lst.append(word) chars += len(word) return u' '.join(lst) melange-0.5.2/src/melange/widget.py000066400000000000000000000362141217205050200171620ustar00rootroot00000000000000# Copyright: 2007-2013, Sebastian Billaudelle # 2010-2013, Kristoffer Kleine # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. import os import json import shutil import urlparse import webbrowser from gi.repository import Gtk as gtk, Gdk as gdk, GObject as gobject, WebKit as webkit import cream import cream.log import cream.util import cream.config import cream.manifest from gpyconf.fields import MultiOptionField from cream.melange.api import import_api_file, Thread, APIS from cream.melange.dialogs import AboutDialog from cream.melange.common import (STATE_NONE, STATE_MOVING, MOUSE_BUTTON_MIDDLE, MOUSE_BUTTON_RIGHT, MOVE_TIMESTEP) USE_GLOBAL_SETTINGS = 'use.the.fucking.global.settings' def register_scheme(scheme): for method in filter(lambda s: s.startswith('uses_'), dir(urlparse)): getattr(urlparse, method).append(scheme) register_scheme('melange') register_scheme('config') class WidgetConfiguration(cream.config.Configuration): def __init__(self, scheme_path, path, skins, themes): cream.config.Configuration.__init__(self, scheme_path, path, read=False) self._add_field( 'skin', MultiOptionField('Skin', section='Appearance', options=((s['id'], s['name']) for s in skins.get_all()) ) ) options = [(USE_GLOBAL_SETTINGS, 'Use global settings')] options += [(t['id'], t['name']) for t in themes.get_all_themes()] self._add_field( 'theme', MultiOptionField('Theme', section='Appearance', options=options ) ) self.read() class WidgetView(webkit.WebView, gobject.GObject): __gsignals__ = { 'show-request': (gobject.SignalFlags.RUN_LAST, None, ()), 'move-request': (gobject.SignalFlags.RUN_LAST, None, (int, int)), 'begin-move': (gobject.SignalFlags.RUN_LAST, None, ()), 'end-move': (gobject.SignalFlags.RUN_LAST, None, ()), 'show-config-dialog-request': (gobject.SignalFlags.RUN_LAST, None, ()), 'reload-request': (gobject.SignalFlags.RUN_LAST, None, ()), 'remove-request': (gobject.SignalFlags.RUN_LAST, None, ()), 'show-about-dialog-request': (gobject.SignalFlags.RUN_LAST, None, ()) } def __init__(self, widget): self.widget_ref = widget # XXX Circular reference self.state = STATE_NONE self.api = None webkit.WebView.__init__(self) gobject.GObject.__init__(self) self.set_transparent(True) settings = self.get_settings() settings.set_property('enable-plugins', False) self.set_settings(settings) self.connect('button-press-event', self.button_press_cb) self.connect('button-release-event', self.button_release_cb) # Initialize drag and drop... self.drag_dest_set(0, [], 0) self.connect('drag_motion', self.drag_motion_cb) self.connect('drag_drop', self.drag_drop_cb) self.connect('drag_data_received', self.drag_data_cb) skin_url = self.widget_ref.current_skin_path self.skin_url = os.path.join(skin_url, 'index.html') self.load_uri('file://' + self.skin_url) self.connect('resource-request-starting', self.dispatch_resource) self.connect('navigation-policy-decision-requested', self.navigation_request_cb) self.connect('document-load-finished', self.document_load_finished_cb) def dispatch_resource(self, view, frame, resource, request, response): scheme, _, path, _, query, _ = urlparse.urlparse(request.get_uri()) if path.startswith('/theme'): path = path[7:] # remove /theme/ path = os.path.join(self.widget_ref.current_theme_path, path) elif path.startswith('/common'): path = path[8:] # remove /common/ path = os.path.join(self.widget_ref.common_path, path) elif path.startswith('/data'): path = path[6:] # remove /data/ path = os.path.join(self.widget_ref.get_data_path(), path) elif scheme == 'file' and not os.path.exists(path): request.set_uri('about:blank') return else: return request.set_uri('file://' + path) def navigation_request_cb(self, view, frame, request, action, decision): scheme, action, path, _, query, _ = urlparse.urlparse(request.get_uri()) query = dict(urlparse.parse_qsl(query, keep_blank_values=True)) if scheme == 'melange': if action == 'init': self.init_api() elif action == 'call': method = path[1:] callback_id = query.pop('callback_id', None) arguments = [] for key in sorted(query.keys()): if key.startswith('argument_'): arguments.append(query[key]) self.handle_api_call(method, callback_id, arguments) decision.ignore() elif scheme == 'config': if action == 'get': callback_id, option = query['callback_id'], query['option'] value = getattr(self.widget_ref.config, option) script = 'widget.config.invokeCallback({}, "{}");'.format(callback_id, value) self.execute_script(script) elif action == 'set': option, value = query['option'], query['value'] setattr(self.widget_ref.config, option, value) decision.ignore() else: webbrowser.open(request.get_uri()) return True def init_api(self): if not self.widget_ref.id in APIS: path = self.widget_ref.context.working_directory import_api_file(path, self.widget_ref.id) api_klass = APIS[self.widget_ref.id] api_klass.config = self.widget_ref.config api_klass.context = self.widget_ref.context api_klass.data_path = self.widget_ref.get_data_path() api_klass.messages = self.widget_ref.messages api_klass.emit = self._emit_api_signal self.api = api_klass() for method in self.api.get_exposed_methods(): self.execute_script('widget.registerMethod("{}");'.format(method)) self.execute_script('widget.main();') def handle_api_call(self, method_name, callback_id, arguments): def invoke_callback(thread, callback_id, result): result = json.dumps(result) script = 'widget.invokeCallback({}, {});'.format(callback_id, result) self.execute_script(script) method = getattr(self.api, method_name, None) if method is None: self.widget_ref.messages.error('API Method "{}" not found'.format(method_name)) thread = Thread(method, callback_id, arguments) if callback_id is not None: thread.connect('finished', invoke_callback) thread.start() def _emit_api_signal(self, signal, data=''): script = 'widget.emitSignal("{}", {});'.format(signal, json.dumps(data)) self.execute_script(script) def document_load_finished_cb(self, view, frame): self.workaround_theme_caching() self.emit('show-request') def configuration_value_changed_cb(self, key, value): event = 'field-value-changed' script = 'widget.config.onConfigEvent("{}", "{}", "{}");'.format(event, key, value) self.execute_script(script) def begin_move(self): self.state = STATE_MOVING self.emit('begin-move') def end_move(self): self.state = STATE_NONE self.emit('end-move') def button_press_cb(self, view, event): if event.button == MOUSE_BUTTON_MIDDLE: self.begin_move() return True elif event.button == MOUSE_BUTTON_RIGHT: self.menu.popup(None, None, None, None, event.button, event.get_time()) return True def button_release_cb(self, view, event): if event.button == MOUSE_BUTTON_MIDDLE: self.end_move() return True def drag_motion_cb(self, view, context, x, y, time): gdk.drag_status(context, gdk.DragAction.MOVE, time) return True def drag_drop_cb(self, view, context, x, y, time): for target in context.list_targets(): if 'text/uri-list' in target.name(): view.drag_get_data(context, target, time) return True def drag_data_cb(self, view, context, x, y, data, info, time): uris = json.dumps(data.get_uris()) script = "widget.fireDrop({}, {}, '{}');".format(x, y, uris) self.execute_script(script) gdk.drop_finish(context, True, time) def move(self): display = gdk.Display.get_default() def move_cb(old_x, old_y): new_x, new_y = display.get_pointer()[1:3] move_x = new_x - old_x move_y = new_y - old_y if self.state == STATE_MOVING: self.emit('move-request', move_x, move_y) gobject.timeout_add(MOVE_TIMESTEP, move_cb, new_x, new_y) move_cb(*display.get_pointer()[1:3]) @cream.util.cached_property def menu(self): item_configure = gtk.ImageMenuItem(gtk.STOCK_PREFERENCES) item_configure.get_children()[0].set_label("Configure") item_configure.connect('activate', lambda *x: self.emit('show-config-dialog-request')) item_reload = gtk.ImageMenuItem(gtk.STOCK_REFRESH) item_reload.get_children()[0].set_label("Reload") item_reload.connect('activate', lambda *x: self.emit('reload-request')) item_remove = gtk.ImageMenuItem(gtk.STOCK_REMOVE) item_remove.get_children()[0].set_label("Remove") item_remove.connect('activate', lambda *x: self.emit('remove-request')) item_about = gtk.ImageMenuItem(gtk.STOCK_ABOUT) item_about.get_children()[0].set_label("About") item_about.connect('activate', lambda *x: self.emit('show-about-dialog-request')) menu = gtk.Menu() menu.append(item_configure) menu.append(item_reload) menu.append(item_remove) menu.append(item_about) menu.show_all() return menu def workaround_theme_caching(self): """ When we request our theme files via the /theme/ui url webkit caches the first file, but if we change theme, then this url points to a different location on disk and webkit instead loads the version from the cache. Solve this issue by appending a random querystring onto every link and script element that points to /themes/ui """ self.execute_script(''' var links = document.getElementsByTagName('link'); for(i = 0; i < links.length; i++) { if(links[i].href.indexOf('/theme/ui') != -1) links[i].href += '?random=' + (new Date()).getTime(); } var scripts = document.getElementsByTagName('script'); for(i = 0; i < scripts.length; i++) { if(scripts[i].src.indexOf('/theme/ui') != -1) scripts[i].src += '?random=' + (new Date()).getTime(); } ''') class Widget(gobject.GObject, cream.Component): def __init__(self, widget_id, path, themes, common_path): gobject.GObject.__init__(self) cream.Component.__init__(self, path=path, user_path_prefix='cream-melange/widget_data', use_id_in_path=True ) self.id = widget_id self.common_path = common_path self.position = (0, 0) self.messages = cream.log.Messages() self.themes = themes self.themes.connect('changed', self.theme_change_cb) skin_dir = os.path.join(self.context.working_directory, 'data', 'skins') self.skins = cream.manifest.ManifestDB(skin_dir, type='org.cream.melange.Skin' ) scheme_path = os.path.join(self.context.get_path(), 'configuration/scheme.xml' ) path = os.path.join(self.context.get_user_path(), 'configuration/') self.config = WidgetConfiguration(scheme_path, path, self.skins, self.themes) self.config.connect('field-value-changed', self.configuration_value_changed_cb) self.skin_id = self.config.skin self.theme_id = self.config.theme self.load() def load(self): self.view = WidgetView(self) self.view.connect('begin-move', lambda *x: self.view.move()) self.view.connect('show-config-dialog-request', lambda *x: self.config.show_dialog() ) self.view.connect('show-about-dialog-request', lambda *x: self.about_dialog.show() ) def get_position(self): return self.position def set_position(self, x, y): self.position = (x, y) def get_data_path(self): data_path = os.path.join(self.context.get_user_path(), 'data/shared') if not os.path.isdir(data_path): orig_data_path = os.path.join(self.context.get_path(), 'data/shared') if os.path.isdir(orig_data_path): shutil.copytree(orig_data_path, data_path) else: os.makedirs(data_path) return data_path @property def current_theme_path(self): theme_id = self.theme_id if theme_id == USE_GLOBAL_SETTINGS: theme_id = self.themes.selected_theme_id return os.path.dirname(self.themes.get_theme(theme_id)._path) @property def current_skin_path(self): return os.path.join( self.context.working_directory, 'skins', os.path.dirname(self.skins.get(id=self.skin_id)._path) ) def destroy(self): if self.view.api is not None: self.view.api.config = None self.view.api = None self.view.widget_ref = None self.view.destroy() def configuration_value_changed_cb(self, source, key, value): if key == 'skin': self.skin_id = value self.view.emit('reload-request') elif key == 'theme': self.theme_id = value self.view.emit('reload-request') else: self.view.configuration_value_changed_cb(key, value) def theme_change_cb(self, themes, theme_id): if self.config.theme == USE_GLOBAL_SETTINGS: self.view.emit('reload-request') @cream.util.cached_property def about_dialog(self): return AboutDialog(self.context.manifest)