right-rails 1.0.3 → 1.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +8 -2
- data/Rakefile +28 -28
- data/lib/right_rails/java_script_generator.rb +59 -51
- data/public/images/{colorpicker.png → rightjs-ui/colorpicker.png} +0 -0
- data/public/images/{resizable.png → rightjs-ui/resizable.png} +0 -0
- data/public/javascripts/right-olds-src.js +47 -46
- data/public/javascripts/right-safe-src.js +103 -102
- data/public/javascripts/right-safe.js +1 -1
- data/public/javascripts/right-src.js +611 -541
- data/public/javascripts/right.js +86 -85
- data/public/javascripts/right/autocompleter-src.js +81 -77
- data/public/javascripts/right/autocompleter.js +1 -1
- data/public/javascripts/right/calendar-src.js +209 -197
- data/public/javascripts/right/calendar.js +6 -6
- data/public/javascripts/right/colorpicker-src.js +127 -117
- data/public/javascripts/right/colorpicker.js +6 -6
- data/public/javascripts/right/dnd-src.js +63 -63
- data/public/javascripts/right/dnd.js +2 -2
- data/public/javascripts/right/in-edit-src.js +53 -48
- data/public/javascripts/right/in-edit.js +2 -2
- data/public/javascripts/right/lightbox-src.js +107 -99
- data/public/javascripts/right/lightbox.js +2 -2
- data/public/javascripts/right/rater-src.js +48 -46
- data/public/javascripts/right/rater.js +3 -3
- data/public/javascripts/right/resizable-src.js +53 -61
- data/public/javascripts/right/resizable.js +4 -4
- data/public/javascripts/right/selectable-src.js +97 -95
- data/public/javascripts/right/selectable.js +2 -2
- data/public/javascripts/right/slider-src.js +47 -45
- data/public/javascripts/right/slider.js +8 -8
- data/public/javascripts/right/sortable-src.js +54 -52
- data/public/javascripts/right/tabs-src.js +181 -171
- data/public/javascripts/right/tooltip-src.js +39 -37
- data/public/javascripts/right/uploader-src.js +21 -19
- data/spec/lib/right_rails/java_script_generator_spec.rb +61 -56
- metadata +9 -7
@@ -5,4 +5,4 @@
|
|
5
5
|
* Copyright (C) 2008-2010 Nikolay Nemshilov
|
6
6
|
*/
|
7
7
|
var RightJS=function(g,e){e=e.replace(",document,",",parent.document,")+"RightJS.$N=function(v){return new Number(v)};RightJS.$S=function(v){return new String(v)}";var c=g.document;if("attachEvent"in g)c.write('<iframe name="__rightjs_condom" style="display:none"></iframe>');else{var b=c.createElement("iframe");b.name="__rightjs_condom";b.style.display="none";c.documentElement.appendChild(b)}b=g.frames.__rightjs_condom;if("execScript"in b)b.execScript(e);else{var f=b.document;f.open();f.write("<html></html>");
|
8
|
-
f.close();c=c.createElement("script");c.text=e;f.body.appendChild(c)}var a=b.RightJS;a.context=b;a.safe=true;return a.$ext(function(d){switch(typeof d){case "number":return a.$N(d);case "string":return a.$S(d);case "function":return a.$ext(d,a.Function.Methods);case "object":if(a.isArray(d))return a.$A(d)}return d},a)}(window,'var RightJS=function(Q,q,u,E,O,W,na,w){function R(a){return X(a)?a:[a]}function Ca(a,b){var c=a[0],d=Da.call(a,1),e=b,f;if(L(c)){f=c;c=b.length&&aa(b[0][f])?function(i){return i[f].apply(i,d)}:function(i){return i[f]}}else e=d[0];return[c,e]}function S(a,b,c){var d;try{d=a.apply(b,Ca(c,b))}catch(e){if(!(e instanceof j.Break))throw e;}return d}function Ea(a){return!!a}function Fa(a,b){return a>b?1:a<b?-1:0}function Ga(a,b){["extend","include"].each(function(c){var d=b[c];if(y(d)||X(d)){a[c].apply(a, R(d));delete b[c]}})}function oa(a,b){var c=b.toUpperCase(),d=b.capitalize(),e=a.constructor;return(e=[a,e].concat("ancestors"in e?e.ancestors:[]).first(function(f){return f&&(c in f||d in f)}))?e[c]||e[d]:null}function pa(a,b,c){a=a._;for(var d=[];a=a[b];)if(a.tagName&&(!c||n(a).match(c)))d.push(n(a));return d}function eb(a){if(typeof a==="string"){var b=this.tagName,c=fb,d=Ha[b]||["","",1],e=d[2];for(c.innerHTML=d[0]+"<"+b+">"+a+"</"+b+">"+d[1];e-- >0;)c=c.firstChild;a=c.childNodes}b=0;for(c=a.length;b< c;b++){d=a[a.length===c?b:0];Ia.appendChild(d instanceof r?d._:d)}return Ia}function Ja(a,b){var c,d=b.camelize();switch(d){case "opacity":c=!F.IE?a[d].replace(",","."):(/opacity=(\\d+)/i.exec(a.filter||"")||["","100"])[1].toInt()/100+"";break;case "float":d=F.IE?"styleFloat":"cssFloat";default:c=a[d];if(F.Opera&&/color/i.test(d)&&c)c=c.replace(/"/g,"")}return c||null}function ia(a,b,c){Y[a]=eval("["+Y[a].toString().replace(b,c)+"]")[0]}function Ka(a){a=T(a);qa=qa.concat(a);ba(r[s],a);ba(Z[s],a)}function La(a, b){var c=a||"*",d=b._;d="tagName"in d?d.tagName:null;return d===null?c:c.replace(/(^|,)/g,"$1"+d+" ")}function ja(a){var b=new Ma(a),c=b.target;c=c.parent&&c.parent();b.type=a.type==="focusin"||a.type==="focus"?"focus":"blur";c&&c.fire(b)}function Na(a,b){var c=q.createElement(b);c.setAttribute(a,";");return aa(c[a])}function gb(a,b,c){return function(d){var e=d.target,f=o(b),i=f.shift();if(c.find(a).includes(e))aa(i)?i.apply(e,[d].concat(f)):e[i].apply(e,f)}}function Oa(a){a=o(a);var b=a[1]||{}, c={},d;if(L(b)){c[b]=a.slice(2);if(X(c[b][0]))c[b]=c[b][0].map(R)}else c=b;for(d in c){c[d]=R(c[d]);c[d]=X(c[d][0])?c[d]:[c[d]]}return c}function Pa(a,b){var c=a[0],d,e,f=Oa(a),i=!u.keys(f).length;return(b.$listeners||[]).filter(function(z){return z.dr&&z.n===c&&(i||function(){for(var k in f)if(z.dr===k){d=0;for(e=f[k];d<e.length;d++)if(!e[d].length||e[d][0]===z.dc)return true}return false}())})}function ra(a,b){a.stop();this.send(u.merge({spinner:this.first(".spinner")},b))}function ea(a){return a=== "transparent"||a==="rgba(0, 0, 0, 0)"}function Qa(a){var b={},c=/[\\d\\.\\-]+/g,d,e,f;for(e in a){d=a[e].match(c);d=d.map("toFloat");d.t=a[e].split(c);d.r=d.t[0]==="rgb(";d.t.length==1&&d.t.unshift("");for(f=0;f<d.length;f++)d.t.splice(f*2+1,0,d[f]);b[e]=d}return b}var j=function(a){return a};j.version="2.0.0-rc2";j.modules=["core","dom","form","events","xhr","fx","cookie","olds"];var s="prototype",J=E[s],sa=u[s].toString,Da=J.slice,ca=function(){return function(){}},Ra=q.documentElement,ta=1,ka=[], N="_rid"+(new Date).getTime(),I=j.$ext=function(a,b,c){b=b||{};var d;for(d in b)if(!c||!(d in a))a[d]=b[d];return a},Sa=j.$eval=function(a){if(a)"execScript"in Q?n(q).window()._.execScript(a):ua("script",{text:a}).insertTo(Ra)};j.$break=function(){throw new j.Break;};var B=j.$alias=function(a,b){for(var c in b)a[c]=a[b[c]];return a};j.defined=function(a){return typeof a!=="undefined"};var aa=j.isFunction=function(a){return typeof a==="function"},L=j.isString=function(a){return typeof a==="string"}, Ta=j.isNumber=function(a){return typeof a==="number"},y=j.isHash=function(a){return sa.call(a)==="[object Object]"},X=j.isArray=function(a){return sa.call(a)==="[object Array]"},Ua=j.isElement=function(a){return a&&a.tagName};j.isNode=function(a){return a&&a.nodeType};var n=j.$=function(a){if(typeof a==="string")a=q.getElementById(a);if(a)if(N in a&&a[N]in ka)a=ka[a[N]];else if(a.nodeType===1)a=new r(a);else if(Ua(a.target)||Ua(a.srcElement))a=new Ma(a);else if(a.nodeType===9)a=new Z(a);else if(a.window== a)a=new da(a);return a},hb=j.$$=function(a,b){return n(b||q).find(a)},ua=j.$E=function(a,b){return new r(a,b)},T=j.$w=function(a){return a.trim().split(/\\s+/)},o=j.$A=function(a){try{return Da.call(a)}catch(b){for(var c=[],d=0,e=a.length;d<e;d++)c[d]=a[d];return c}},va=j.$uid=function(a){return N in a?a[N]:a[N]=ta++};if(y(Ra))y=j.isHash=function(a){return sa.call(a)==="[object Object]"&&a!==null&&typeof a!=="undefined"&&typeof a.hasOwnProperty!=="undefined"};for(var C=0,K="Array Function Number String Date RegExp".split(" "), fa=function(){for(var a=0,b=arguments;a<b.length;a++)if(y(b[a])){I(this[s],b[a]);I(this.Methods,b[a])}};C<K.length;C++)I(j[K[C]]=Q[K[C]],{Methods:{},include:fa});j.Object=u;j.Math=w;I(u,{keys:function(a){var b=[],c;for(c in a)b.push(c);return b},values:function(a){var b=[],c;for(c in a)b.push(a[c]);return b},each:function(a,b,c){for(var d in a)b.call(c,d,a[d]);return a},empty:function(a){for(var b in a)return false;return true},without:function(){var a=o(arguments),b=a.shift(),c={},d;for(d in b)a.includes(d)|| (c[d]=b[d]);return c},only:function(){for(var a=o(arguments),b=a.shift(),c={},d=0,e=a.length;d<e;d++)if(a[d]in b)c[a[d]]=b[a[d]];return c},merge:function(){for(var a={},b=0,c=arguments.length;b<c;b++)y(arguments[b])&&I(a,arguments[b]);return a},toQueryString:function(a){var b=[],c,d,e=encodeURIComponent;for(c in a){d=R(a[c]);for(var f=0;f<d.length;f++)b.push(e(c)+"="+e(d[f]))}return b.join("&")}},true);var Va=w.random;w.random=function(a,b){if(arguments.length===0)return Va();else if(arguments.length=== 1){b=a;a=0}return~~(Va()*(b-a+1)+~~a)};var ib=J.sort;C=function(a,b,c){return eval("[function(c,s){for(var "+a+"i=0,l=this.length;i<l;i++){"+b.replace("_","c.call(s,this[i],i,this)")+"}"+c+"}]")[0]};var Wa=J.forEach||C("","_",""),jb=J.filter||C("r=[],j=0,","if(_)r[j++]=this[i]","return r"),kb=C("r=[],j=0,","if(!_)r[j++]=this[i]","return r"),lb=J.map||C("r=[],","r[i]=_","return r"),mb=J.some||C("","if(_)return true","return false"),nb=J.every||C("","if(!_)return false","return true"),ob=C("","if(_)return this[i]", "return [][0]"),pb=function(a,b){for(var c=this.length-1;c>-1;c--)if(a.call(b,this[c],c,this))return this[c];return null};E.include({indexOf:J.indexOf||function(a,b){for(var c=b<0?w.max(0,this.length+b):b||0,d=this.length;c<d;c++)if(this[c]===a)return c;return-1},lastIndexOf:J.lastIndexOf||function(a){for(var b=this.length-1;b>-1;b--)if(this[b]===a)return b;return-1},first:function(){return arguments.length?S(ob,this,arguments):this[0]},last:function(){return arguments.length?S(pb,this,arguments): this[this.length-1]},random:function(){return this.length?this[w.random(this.length-1)]:null},size:function(){return this.length},clean:function(){this.length=0;return this},empty:function(){return!this.length},clone:function(){return this.slice(0)},each:function(){S(Wa,this,arguments);return this},forEach:Wa,map:function(){return S(lb,this,arguments)},filter:function(){return S(jb,this,arguments)},reject:function(){return S(kb,this,arguments)},some:function(a){return S(mb,this,a?arguments:[Ea])}, every:function(a){return S(nb,this,a?arguments:[Ea])},walk:function(){this.map.apply(this,arguments).forEach(function(a,b){this[b]=a},this);return this},merge:function(){for(var a=this.clone(),b,c=0,d,e=arguments.length;c<e;c++){b=arguments[c];b=R(b);for(d=0;d<b.length;d++)a.indexOf(b[d])==-1&&a.push(b[d])}return a},flatten:function(){var a=[];this.forEach(function(b){if(X(b))a=a.concat(b.flatten());else a.push(b)});return a},compact:function(){return this.without(null,undefined)},uniq:function(){return[].merge(this)}, includes:function(){for(var a=0,b=arguments.length;a<b;a++)if(this.indexOf(arguments[a])==-1)return false;return true},without:function(){var a=o(arguments);return this.filter(function(b){return!a.includes(b)})},shuffle:function(){for(var a=this.clone(),b,c,d=a.length;d>0;b=w.random(d-1),c=a[--d],a[d]=a[b],a[b]=c);return a},sort:function(a){return ib.apply(this,a||!Ta(this[0])?arguments:[Fa])},sortBy:function(){var a=Ca(arguments,this);return this.sort(function(b,c){return Fa(a[0].call(a[1],b),a[0].call(a[1], c))})},min:function(){return w.min.apply(w,this)},max:function(){return w.max.apply(w,this)},sum:function(){for(var a=0,b=this.length,c=0;a<b;c+=this[a++]);return c}});B(J,{include:"includes"});O.include({empty:function(){return this==""},blank:function(){return/^\\s*$/.test(this)},trim:O[s].trim||function(){for(var a=this.replace(/^\\s\\s*/,""),b=a.length;/\\s/.test(a.charAt(--b)););return a.slice(0,b+1)},stripTags:function(){return this.replace(/<\\/?[^>]+>/ig,"")},stripScripts:function(a){var b="", c=this.replace(/<script[^>]*>([\\s\\S]*?)<\\/script>/img,function(d,e){b+=e+"\\n";return""});if(a===true)Sa(b);else aa(a)&&a(b,c);return c},extractScripts:function(){var a="";this.stripScripts(function(b){a=b});return a},evalScripts:function(){this.stripScripts(true);return this},camelize:function(){return this.replace(/(\\-|_)+(.)?/g,function(a,b,c){return c?c.toUpperCase():""})},underscored:function(){return this.replace(/([a-z\\d])([A-Z]+)/g,"$1_$2").replace(/\\-/g,"_").toLowerCase()},capitalize:function(){return this.charAt(0).toUpperCase()+ this.substring(1).toLowerCase()},includes:function(a){return this.indexOf(a)!=-1},startsWith:function(a,b){var c=this.substr(0,a.length);return b?c.toLowerCase()===a.toLowerCase():c===a},endsWith:function(a,b){var c=this.substring(this.length-a.length);return b?c.toLowerCase()===a.toLowerCase():c===a},toInt:function(a){return parseInt(this,a||10)},toFloat:function(a){return parseFloat(a?this:this.replace(",",".").replace(/(\\d)-(\\d)/g,"$1.$2"))}});B(O[s],{include:"includes"});W.include({bind:function(){var a= o(arguments),b=a.shift(),c=this;return function(){return c.apply(b,a.length||arguments.length?a.concat(o(arguments)):a)}},bindAsEventListener:function(){var a=o(arguments),b=a.shift(),c=this;return function(d){return c.apply(b,[d].concat(a).concat(o(arguments)))}},curry:function(){return this.bind.apply(this,[this].concat(o(arguments)))},rcurry:function(){var a=o(arguments),b=this;return function(){return b.apply(b,o(arguments).concat(a))}},delay:function(){var a=o(arguments),b=a.shift();a=new na(setTimeout(this.bind.apply(this, [this].concat(a)),b));a.cancel=function(){clearTimeout(this)};return a},periodical:function(){var a=o(arguments),b=a.shift();a=new na(setInterval(this.bind.apply(this,[this].concat(a)),b));a.stop=function(){clearInterval(this)};return a},chain:function(){var a=o(arguments),b=a.shift(),c=this;return function(){var d=c.apply(c,arguments);b.apply(b,a);return d}}});na.include({times:function(a,b){for(var c=0;c<this;c++)a.call(b,c);return this},upto:function(a,b,c){for(var d=this+0;d<=a;d++)b.call(c,d); return this},downto:function(a,b,c){for(var d=this+0;d>=a;d--)b.call(c,d);return this},abs:function(){return w.abs(this)},round:function(a){return a?parseFloat(this.toFixed(a)):w.round(this)},ceil:function(){return w.ceil(this)},floor:function(){return w.floor(this)},min:function(a){return this<a?a:this+0},max:function(a){return this>a?a:this+0}});RegExp.escape=function(a){return(""+a).replace(/([.*+?\\^=!:${}()|\\[\\]\\/\\\\])/g,"\\\\$1")};E=j.Class=function(){function a(){"prebind"in this&&X(this.prebind)&& this.prebind.each(function(e){this[e]=this[e].bind(this)},this);return this.initialize?this.initialize.apply(this,arguments):this}var b=o(arguments),c=b.pop()||{},d=b.pop();if(!b.length&&!y(c)){d=c;c={}}I(a,Xa).inherit(d);Ga(a,c);return a.include(c)};W=T("selfExtended self_extended selfIncluded self_included");var qb=W.concat(T(s+" parent extend include")),rb=W.concat(["constructor"]),Xa={inherit:function(a){if(a&&a[s]){var b=ca();b[s]=a[s];this[s]=new b;this.parent=a}for(this.ancestors=[];a;){this.ancestors.push(a); a=a.parent}return this[s].constructor=this},extend:function(){o(arguments).filter(y).each(function(a){var b=a.selfExtended||a.self_extended;I(this,u.without.apply(u,[a].concat(qb)));b&&b.call(a,this)},this);return this},include:function(){var a=(this.ancestors||[]).map(s);o(arguments).filter(y).each(function(b){var c=b.selfIncluded||b.self_included;u.each(u.without.apply(u,[b].concat(rb)),function(d,e){var f=a.first(function(i){return d in i&&aa(i[d])});this[s][d]=!f?e:function(){this.$super=f[d]; return e.apply(this,arguments)}},this);c&&c.call(b,this)},this);return this}};W=j.Options={setOptions:function(a){a=this.options=u.merge(oa(this,"options"),a);var b,c;if(aa(this.on))for(c in a)if(b=c.match(/on([A-Z][A-Za-z]+)/)){this.on(b[1].toLowerCase(),a[c]);delete a[c]}return this},cutOptions:function(a){a=o(a);this.setOptions(y(a.last())?a.pop():{});return a}};var ga=j.Observer=new E({include:W,initialize:function(a){this.setOptions(a);ba(this,oa(this,"events"));return this},on:function(){var a= o(arguments),b=a.shift(),c;if(L(b)){if(!("$listeners"in this))this.$listeners=[];var d=a.shift();switch(typeof d){case "string":c=d;d=this[d];case "function":var e={};e.e=b;e.f=d;e.a=a;e.r=c;this.$listeners.push(e);break;default:if(X(d))for(c=0;c<d.length;c++)this.on.apply(this,[b].concat(R(d[c])).concat(a))}}else for(c in b)this.on.apply(this,[c].concat(R(b[c])).concat(a));return this},observes:function(a,b){if(!L(a)){b=a;a=null}if(L(b))b=this[b];return(this.$listeners||[]).some(function(c){return a&& b?c.e===a&&c.f===b:a?c.e===a:c.f===b})},stopObserving:function(a,b){if(y(a))for(var c in a)this.stopObserving(c,a[c]);else{if(!L(a)){b=a;a=null}if(L(b))b=this[b];this.$listeners=(this.$listeners||[]).filter(function(d){return a&&b?d.e!==a||d.f!==b:a?d.e!==a:d.f!==b},this)}return this},listeners:function(a){return(this.$listeners||[]).filter(function(b){return!a||b.e===a}).map(function(b){return b.f}).uniq()},fire:function(){var a=o(arguments),b=a.shift();(this.$listeners||[]).each(function(c){c.e=== b&&c.f.apply(this,c.a.concat(a))},this);return this}});J=ga.create=function(a,b){I(a,u.without(ga[s],"initialize","setOptions"),true);return ba(a,b||oa(a,"events"))};var ba=ga.createShortcuts=function(a,b){(b||[]).each(function(c){var d="on"+c.replace(/(^|_|:)([a-z])/g,function(e,f,i){return i.toUpperCase()});d in a||(a[d]=function(){return this.on.apply(this,[c].concat(o(arguments)))})});return a};j.Break=new E(Error,{message:"Manual break"});K=navigator.userAgent;C="attachEvent"in Q;fa="opera"in Q;var F=j.Browser={IE:C&&!fa,Opera:fa,WebKit:K.include("AppleWebKit/"),Gecko:K.include("Gecko")&&!K.include("KHTML"),MobileSafari:/Apple.*Mobile.*Safari/.test(K),Konqueror:K.include("Konqueror"),OLD:C&&!fa&&!q.querySelector},U=j.Wrapper=function(a,b){var c=function(d,e){this.initialize(d,e);var f=this,i=f._;if(this.constructor===r&&i.tagName in P){f=new P[i.tagName](i);if("$listeners"in this)f.$listeners=this.$listeners}i=N in i?i[N]:i[N]=ta++;return ka[i]=f};if(!b){b=a;a=null}I(c,Xa).inherit(a|| U);Ga(c,b);return c.include({_:undefined},b)};U.Cache=ka;var Z=j.Document=new U({initialize:function(a){this._=a},window:function(){return n(this._.defaultView||this._.parentWindow)}}),da=j.Window=new U({initialize:function(a){this._=a;this.d=a.document},window:function(){return this},size:function(){var a=this._,b=this.d.documentElement;return a.innerWidth?{x:a.innerWidth,y:a.innerHeight}:{x:b.clientWidth,y:b.clientHeight}},scrolls:function(){var a=this._,b=this.d,c=b.body;b=b.documentElement;return a.pageXOffset|| a.pageYOffset?{x:a.pageXOffset,y:a.pageYOffset}:c.scrollLeft||c.scrollTop?{x:c.scrollLeft,y:c.scrollTop}:{x:b.scrollLeft,y:b.scrollTop}},scrollTo:function(a,b,c){var d=a,e=b,f=n(a);if(f&&f instanceof r)a=f.position();if(y(a)){e=a.y;d=a.x}y(c=c||b)&&j.Fx?(new v.Scroll(this,c)).start({x:d,y:e}):this._.scrollTo(d,e);return this}}),Ma=j.Event=new U({type:null,which:null,keyCode:null,target:null,currentTarget:null,relatedTarget:null,pageX:null,pageY:null,initialize:function(a,b){if(typeof a==="string"){a= u.merge({type:a},b);this.stopped=a.bubbles===false;y(b)&&I(this,b)}this._=a;this.type=a.type;this.which=a.which;this.keyCode=a.keyCode;this.target=n(a.target);this.currentTarget=n(a.currentTarget);this.relatedTarget=n(a.relatedTarget);this.pageX=a.pageX;this.pageY=a.pageY;if(!("target"in a)&&"srcElement"in a){this.which=a.button==2?3:a.button==4?2:1;this.target=n(a.srcElement)||b;this.relatedTarget=this.target._===a.fromElement?n(a.toElement):this.target;this.currentTarget=b;var c=this.target.window().scrolls(); this.pageX=a.clientX+c.x;this.pageY=a.clientY+c.y}else if(a.target&&"nodeType"in a.target&&a.target.nodeType===3)this.target=n(a.target.parentNode)},stopPropagation:function(){if("stopPropagation"in this._)this._.stopPropagation();else this._.cancelBubble=true;this.stopped=true;return this},preventDefault:function(){if("preventDefault"in this._)this._.preventDefault();else this._.returnValue=false;return this},stop:function(){return this.stopPropagation().preventDefault()},position:function(){return{x:this.pageX, y:this.pageY}},find:function(a){if(this.target instanceof r){var b=this.target;b=[b].concat(b.parents());var c=this.currentTarget.find(a);return b.first(function(d){return c.include(d)})}}}),qa=[],Ya={id:"id",html:"innerHTML","class":"className"},Za={style:"setStyle",on:"on"},P={},wa={};K=function(a,b){this._=a=(a in wa?wa[a]:wa[a]=q.createElement(a)).cloneNode(false);if(b!==undefined)for(var c in b)if(c in Ya)a[Ya[c]]=b[c];else c in Za?this[Za[c]](b[c]):this.set(c,b[c])};if(F.IE)K=eval("["+K.toString().replace(/(\\((\\w+),\\s*(\\w+)\\)\\s*\\{)/, \'$1if($2==="input"&&$3)$2="<input name="+$3.name+" type="+$3.type+($3.checked?" checked":"")+"/>";\')+"]")[0];var r=j.Element=new U({initialize:function(a,b){if(typeof a==="string")this.construct(a,b);else this._=a},construct:K});r.Wrappers=P;r.include({parent:function(a){return a?this.parents(a)[0]:n(this._.parentNode||null)},parents:function(a){return pa(this,"parentNode",a)},children:function(a){return this.find(a).filter(function(b){return b._.parentNode===this._},this)},siblings:function(a){return this.prevSiblings(a).reverse().concat(this.nextSiblings(a))}, nextSiblings:function(a){return pa(this,"nextSibling",a)},prevSiblings:function(a){return pa(this,"previousSibling",a)},next:function(a){return this.nextSiblings(a)[0]},prev:function(a){return this.prevSiblings(a)[0]},remove:function(){var a=this._,b=a.parentNode;b&&b.removeChild(a);return this},insert:function(a,b){var c=null,d=this._;b=(b||"bottom").toLowerCase();if(typeof a!=="object")c=a=""+a;else if(a&&a instanceof r)a=a._;sb[b](d,a.tagName?a:eb.call(b==="bottom"||b==="top"?d:d.parentNode,a)); c!==null&&c.evalScripts();return this},insertTo:function(a,b){n(a).insert(this,b);return this},append:function(){return this.insert(arguments)},update:function(a){if(typeof a!=="object"){a=""+a;try{this._.innerHTML=a}catch(b){return this.clean().insert(a)}a.evalScripts();return this}else return this.clean().insert(a)},html:function(a){return a===undefined?this._.innerHTML:this.update(a)},replace:function(a){return this.insert(a,"instead")},wrap:function(a){var b=this._,c=b.parentNode;if(c){a=n(a)._; c.replaceChild(a,b);a.appendChild(b)}return this},clean:function(){for(;this._.firstChild;)this._.removeChild(this._.firstChild);return this},empty:function(){return this.html().blank()},clone:function(){var a=this._.cloneNode(true);a[N]=ta++;return new r(a)}});var sb={bottom:function(a,b){a.appendChild(b)},top:function(a,b){a.firstChild!==null?a.insertBefore(b,a.firstChild):a.appendChild(b)},after:function(a,b){var c=a.parentNode,d=a.nextSibling;d!==null?c.insertBefore(b,d):c.appendChild(b)},before:function(a, b){a.parentNode.insertBefore(b,a)},instead:function(a,b){a.parentNode.replaceChild(b,a)}},Ha={TBODY:["<TABLE>","</TABLE>",2],TR:["<TABLE><TBODY>","</TBODY></TABLE>",3],TD:["<TABLE><TBODY><TR>","</TR></TBODY></TABLE>",4],COL:["<TABLE><COLGROUP>","</COLGROUP><TBODY></TBODY></TABLE>",2],LEGEND:["<FIELDSET>","</FIELDSET>",2],AREA:["<map>","</map>",2],OPTION:["<SELECT>","</SELECT>",2]};B(Ha,{OPTGROUP:"OPTION",THEAD:"TBODY",TFOOT:"TBODY",TH:"TD"});var Ia=q.createDocumentFragment(),fb=q.createElement("DIV"); r.include({setStyle:function(a,b){var c,d,e={},f=this._.style;if(b){e[a]=b;a=e}else if(L(a)){a.split(";").each(function(i){i=i.split(":").map("trim");if(i[0]&&i[1])e[i[0]]=i[1]});a=e}for(c in a){d=c.indexOf("-")<0?c:c.camelize();if(c==="opacity")if(F.IE)f.filter="alpha(opacity="+a[c]*100+")";else f.opacity=a[c];else if(c==="float")d=F.IE?"styleFloat":"cssFloat";f[d]=a[c]}return this},getStyle:function(a){return Ja(this._.style,a)||Ja(this.computedStyles(),a)},computedStyles:function(){var a=this._; return a.currentStyle||a.runtimeStyle||a.ownerDocument.defaultView.getComputedStyle(a,null)||{}},hasClass:function(a){return(" "+this._.className+" ").indexOf(" "+a+" ")!=-1},setClass:function(a){this._.className=a;return this},addClass:function(a){var b=" "+this._.className+" ";if(b.indexOf(" "+a+" ")==-1)this._.className+=(b===" "?"":" ")+a;return this},removeClass:function(a){this._.className=(" "+this._.className+" ").replace(" "+a+" "," ").trim();return this},toggleClass:function(a){return this[this.hasClass(a)? "removeClass":"addClass"](a)},radioClass:function(a){this.siblings().each("removeClass",a);return this.addClass(a)}});r.include({set:function(a,b){if(typeof a==="string"){var c={};c[a]=b;a=c}var d;c=this._;for(d in a){d in c||c.setAttribute(d,""+a[d]);c[d]=a[d]}return this},get:function(a){var b=this._;a=b[a]||b.getAttribute(a);return a===""?null:a},has:function(a){return this.get(a)!==null},erase:function(a){this._.removeAttribute(a);return this},hidden:function(){return this.getStyle("display")=== "none"},visible:function(){return!this.hidden()},hide:function(){if(this.visible()){this._d=this.getStyle("display");this._.style.display="none"}return this},show:function(){if(this.hidden()){var a=this._,b=a.tagName=="DIV"?"block":"inline";a.style.display=this._d=="none"?b:this._d||b}return this},toggle:function(a,b){return this[this.hidden()?"show":"hide"](a,b)},radio:function(a,b){this.siblings().each("hide",a,b);return this.show()}});r.include({document:function(){return n(this._.ownerDocument)}, window:function(){return this.document().window()},size:function(){return{x:this._.offsetWidth,y:this._.offsetHeight}},position:function(){var a=this._.getBoundingClientRect(),b=this.document()._.documentElement,c=this.window().scrolls();return{x:a.left+c.x-b.clientLeft,y:a.top+c.y-b.clientTop}},scrolls:function(){return{x:this._.scrollLeft,y:this._.scrollTop}},dimensions:function(){var a=this.size(),b=this.scrolls(),c=this.position();return{top:c.y,left:c.x,width:a.x,height:a.y,scrollLeft:b.x,scrollTop:b.y}}, overlaps:function(a){var b=this.position(),c=this.size();return a.x>b.x&&a.x<b.x+c.x&&a.y>b.y&&a.y<b.y+c.y},setWidth:function(a){var b=this._.style;b.width=a+"px";b.width=2*a-this._.offsetWidth+"px";return this},setHeight:function(a){var b=this._.style;b.height=a+"px";b.height=2*a-this._.offsetHeight+"px";return this},resize:function(a,b){if(y(a)){b=a.y;a=a.x}return this.setWidth(a).setHeight(b)},moveTo:function(a,b){if(y(a)){b=a.y;a=a.x}return this.setStyle({left:a+"px",top:b+"px"})},scrollTo:function(a, b){if(y(a)){b=a.y;a=a.x}this._.scrollLeft=a;this._.scrollTop=b;return this},scrollThere:function(a){this.window().scrollTo(this,a);return this}});var Y=J({});ia("on",/(\\$listeners\\.push\\((\\w+?)\\);)/,\'$1$2.e=$2.n=$2.e==="rightclick"?"contextmenu":$2.e;\'+(F.Gecko?\'if($2.n==="mousewheel")$2.n="DOMMouseScroll";\':"")+(F.Konqueror?\'if($2.n==="contextmenu")$2.n="rightclick";\':"")+\'$2.w=function(){var a=$A(arguments);$2.r&&$2.r!=="stopEvent"?a.shift():a[0]=new RightJS.Event(a[0],this);$2.f.apply($2.t,a.concat($2.a))};$2.t=this;\'+ (C?\'$2.w=$2.w.bind(this);this._.attachEvent("on"+$2.n,$2.w);\':"this._.addEventListener($2.n,$2.w,false);"));ia("stopObserving",/(function\\s*\\((\\w+)\\)\\s*\\{\\s*)(return\\s*)([^}]+)/m,"$1var r=$4;if(!r)"+(C?\'this._.detachEvent("on"+$2.n,$2.w);\':"this._.removeEventListener($2.n,$2.w,false);")+"$3 r");ia("fire",/(\\w+)(\\s*=\\s*(\\w+).shift\\(\\))/,"$1$2;$1=$1 instanceof RightJS.Event?$1:new RightJS.Event($1,Object.merge({target:this._},$3[0]));$1.currentTarget=this");ia("fire",/((\\w+)\\.e\\s*===\\s*(\\w+))([^}]+\\2\\.f\\.apply)[^}]+?\\.concat\\(\\w+\\)\\)/, \'$1.type$4(this,(($2.r&&$1.r!=="stopEvent")?[]:[$3]).concat($2.a))\');Y.stopEvent=function(a){a.stop()};r.include(Y);Z.include(Y);da.include(Y);ba(da[s],T("blur focus scroll resize load"));Ka("click rightclick contextmenu mousedown mouseup mouseover mouseout mousemove keypress keydown keyup");[r,Z].each("include",{first:function(a){return n(this._.querySelector(La(a,this)))},find:function(a){return o(this._.querySelectorAll(La(a,this))).map(n)}});r.include({match:function(a){var b=this._.tagName=== "HTML"?this._.ownerDocument:this.parents().last();a=n(b||ua("p").insert(this)).find(a).include(this);b||this.remove();return a}});[da,Z].each(function(a){a=a[s];var b=a.on;a.on=function(c){if(c=="ready"&&!this._wR){var d=this._,e=this.fire.bind(this,"ready");d=d.nodeType==9?d:d.document;"readyState"in d?function(){["loaded","complete"].includes(d.readyState)?e():arguments.callee.delay(50)}():d.addEventListener("DOMContentLoaded",e,false);this._wR=true}return b.apply(this,arguments)};ba(a,["ready"])}); B(r[s],{subNodes:"children",sizes:"size",select:"find"});B(Z[s],{select:"find"});B(da[s],{sizes:"size"});var xa=j.Form=P.FORM=new U(r,{initialize:function(a){a=a||{};var b="remote"in a,c=a;if(y(a)){c="form";a=u.without(a,"remote")}this.$super(c,a);b&&this.remotize()},elements:function(){return this.find("input,button,select,textarea")},inputs:function(){return this.elements().filter(function(a){return!["submit","button","reset","image",null].includes(a._.type)})},input:function(a){return n(this._[a])}, focus:function(){var a=this.inputs().first(function(b){return b._.type!=="hidden"});a&&a.focus();return this},blur:function(){this.elements().each("blur");return this},disable:function(){this.elements().each("disable");return this},enable:function(){this.elements().each("enable");return this},values:function(){var a={},b,c,d;this.inputs().each(function(e){d=e._;c=d.name;if(!d.disabled&&c&&(!["checkbox","radio"].includes(d.type)||d.checked)){b=e.getValue();if(c.endsWith("[]"))b=(a[c]||[]).concat([b]); a[c]=b}});return a},serialize:function(){return u.toQueryString(this.values())},submit:function(){this._.submit();return this},reset:function(){this._.reset();return this}});Ka("submit reset focus blur disable enable change");B(xa[s],{getElements:"elements"});var tb=r[s].insert,$a=j.Input=P.INPUT=P.BUTTON=P.SELECT=P.TEXTAREA=P.OPTGROUP=new U(r,{initialize:function(a,b){if(!a||y(a)){b=a||{};if(/textarea|select/.test(b.type||"")){a=b.type;delete b.type}else a="input"}this.$super(a,b)},form:function(){return n(this._.form)}, insert:function(a,b){tb.call(this,a,b);this._.tagName==="SELECT"&&L(a)&&o(this._.getElementsByTagName("option")).each(function(c){c.selected=!!c.getAttribute("selected")});return this},update:function(a){return this.clean().insert(a)},getValue:function(){return this._.type=="select-multiple"?o(this._.getElementsByTagName("option")).map(function(a){return a.selected?a.value:null}).compact():this._.value},setValue:function(a){if(this._.type=="select-multiple"){a=R(a).map(O);o(this._.getElementsByTagName("option")).each(function(b){b.selected= a.includes(b.value)})}else this._.value=a;return this},value:function(a){return this[a===undefined?"getValue":"setValue"](a)},focus:function(){this._.focus();this.focused=true;F.IE&&this.fire("focus",{bubbles:false});return this},blur:function(){this._.blur();this.focused=false;F.IE&&this.fire("blur",{bubbles:false});return this},select:function(){this._.select();return this.focus()},disable:function(){this._.disabled=true;return this.fire("disable")},enable:function(){this._.disabled=false;return this.fire("enable")}}); r[s].fire=eval("["+Y.fire.toString().replace(/(\\w+)(\\s*=\\s*\\w+\\.shift[\\s\\S]+)(return this)/m,"$1$2var p=!$1.stopped&&this.parent&&this.parent();p&&p.fire&&p.fire($1);$3")+"]")[0];if(F.IE){q.attachEvent("onfocusin",ja);q.attachEvent("onfocusout",ja)}else{q.addEventListener("focus",ja,true);q.addEventListener("blur",ja,true)}if(!Na("onsubmit","form")){B=function(a){var b=n(a),c=b.target._,d=c.type;c=c.form;var e;if(c&&(e=n(c).parent())&&(a.keyCode===13&&(d==="text"||d==="password")||a.type==="click"&& (d==="submit"||d==="image"))){b.type="submit";b.target=n(c);e.fire(b)}};q.attachEvent("onclick",B);q.attachEvent("onkeypress",B)}if(!Na("onchange","input")){var ab=function(a){var b=a._,c=b.type;return c==="radio"||c==="checkbox"?b.checked:a.getValue()},bb=function(a,b){var c=b.parent(),d=ab(b);if(c&&""+b._prev_value!==""+d){b._prev_value=d;a.type="change";c.fire(a)}};B=function(a){a=n(a);var b=a.target,c=b._.type,d=b._.tagName,e=c==="radio"||c==="checkbox";if(a.type==="click"&&(e||d==="SELECT")|| a.type==="keydown"&&(a.keyCode==13&&d!=="TEXTAREA"||c==="select-multiple"))bb(a,b)};q.attachEvent("onclick",B);q.attachEvent("onkeydown",B);q.attachEvent("onfocusout",function(a){a=n(a);var b=a.target;b instanceof $a&&bb(a,b)});q.attachEvent("onbeforeactivate",function(a){a=n(a).target;if(a instanceof $a)a._prev_value=ab(a)})}[r,Z].each("include",{delegate:function(a){var b=Oa(arguments),c,d,e;for(c in b){d=0;for(e=b[c];d<e.length;d++){this.on(a,gb(c,e[d],this));I(this.$listeners.last(),{dr:c,dc:e[d][0]})}}return this}, undelegate:function(){Pa(arguments,this).each(function(a){this.stopObserving(a.n,a.f)},this);return this},delegates:function(){return!!Pa(arguments,this).length}});u.each({on:"delegate",stopObserving:"undelegate",observes:"delegates"},function(a,b){O[s][a]=function(){var c=n(q),d=o(arguments);d.splice(1,0,""+this);d=c[b].apply(c,d);return d===c?this:d}});qa.each(function(a){O[s]["on"+a.capitalize()]=function(){return this.on.apply(this,[a].concat(o(arguments)))}});var t=j.Xhr=new E(ga,{extend:{EVENTS:T("success failure complete request cancel create"), Options:{headers:{"X-Requested-With":"XMLHttpRequest",Accept:"text/javascript,text/html,application/xml,text/xml,*/*"},method:"post",encoding:"utf-8",async:true,evalScripts:false,evalResponse:false,evalJS:true,evalJSON:true,secureJSON:true,urlEncoded:true,spinner:null,spinnerFx:"fade",params:null,iframed:false,jsonp:false},load:function(a,b){return(new this(a,u.merge({method:"get"},b))).send()}},initialize:function(a,b){this.initCallbacks();this.url=a;I(this.$super(b),this.options);if(t.Options.spinner&& n(this.spinner)===n(t.Options.spinner))this.spinner=null},setHeader:function(a,b){this.headers[a]=b;return this},getHeader:function(a){var b;try{b=this.xhr.getResponseHeader(a)}catch(c){}return b},successful:function(){return this.status>=200&&this.status<300},send:function(a){var b={},c=this.url,d=this.method.toLowerCase(),e=this.headers,f;if(d=="put"||d=="delete"){b._method=d;d="post"}b=this.prepareData(this.params,this.prepareParams(a),b);this.urlEncoded&&d=="post"&&!e["Content-type"]&&this.setHeader("Content-type", "application/x-www-form-urlencoded;charset="+this.encoding);if(d=="get"){if(b)c+=(c.includes("?")?"&":"?")+b;b=null}a=this.xhr=this.createXhr();this.fire("create");a.open(d,c,this.async);a.onreadystatechange=this.stateChanged.bind(this);for(f in e)a.setRequestHeader(f,e[f]);a.send(b);this.fire("request");this.async||this.stateChanged();return this},update:function(a,b){return this.onSuccess(function(c){a.update(c.text)}).send(b)},cancel:function(){var a=this.xhr;if(!a||a.canceled)return this;a.abort(); a.onreadystatechange=ca();a.canceled=true;return this.fire("cancel")},fire:function(a){return this.$super(a,this,this.xhr)},createXhr:function(){if(this.jsonp)return new t.JSONP(this);else if(this.form&&this.form.first("input[type=file]"))return new t.IFramed(this.form);else try{return new XMLHttpRequest}catch(a){return new ActiveXObject("MSXML2.XMLHTTP")}},prepareParams:function(a){if(a&&a instanceof xa){this.form=a;a=a.values()}return a},prepareData:function(){return o(arguments).map(function(a){L(a)|| (a=u.toQueryString(a));return a.blank()?null:a}).compact().join("&")},stateChanged:function(){var a=this.xhr;if(!(a.readyState!=4||a.canceled)){try{this.status=a.status}catch(b){this.status=0}this.text=this.responseText=a.responseText;this.xml=this.responseXML=a.responseXML;this.fire("complete").fire(this.successful()?"success":"failure")}},tryScripts:function(){var a=this.getHeader("Content-type");if(this.evalResponse||this.evalJS&&/(ecma|java)script/i.test(a))Sa(this.text);else if(/json/.test(a)&& this.evalJSON)this.json=this.responseJSON=this.sanitizedJSON();else this.evalScripts&&this.text.evalScripts()},sanitizedJSON:function(){try{return JSON.parse(this.text)}catch(a){if(Q.JSON||!/^[,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t]*$/.test(this.text.replace(/\\\\./g,"@").replace(/"[^"\\\\\\n\\r]*"/g,""))){if(this.secureJSON)throw"JSON error: "+this.text;return null}}return eval("("+this.text+")")},initCallbacks:function(){this.on({success:"tryScripts",create:"showSpinner",complete:"hideSpinner",cancel:"hideSpinner"}); t.EVENTS.each(function(a){this.on(a,function(){t.fire(a,this,this.xhr)})},this)},showSpinner:function(){t.showSpinner.call(this,this)},hideSpinner:function(){t.hideSpinner.call(this,this)}});I(J(t),{counter:0,showSpinner:function(a){t.trySpinner(a,"show")},hideSpinner:function(a){t.trySpinner(a,"hide")},trySpinner:function(a,b){var c=a||t.Options,d=n(c.spinner);d&&d[b](c.spinnerFx,{duration:100})},countIn:function(){t.counter++;t.showSpinner()},countOut:function(){t.counter--;t.counter<1&&t.hideSpinner()}}).on({create:"countIn", complete:"countOut",cancel:"countOut"});xa.include({send:function(a){a=a||{};a.method=a.method||this._.method||"post";(new t(this._.action||q.location.href,a)).onRequest(function(){this.disable.bind(this).delay(20)}.bind(this)).onComplete(this.enable.bind(this)).send(this);return this},remotize:function(a){if(!this.observes("submit",ra)){this.on("submit",ra,a);this.remote=true}return this},unremotize:function(){this.stopObserving("submit",ra);this.remote=false;return this}});r.include({load:function(a, b){(new t(a,u.merge({method:"get"},b))).update(this);return this}});t.Dummy={open:ca(),abort:ca(),setRequestHeader:ca(),onreadystatechange:ca()};t.IFramed=new E({include:t.Dummy,initialize:function(a){this.form=a;this.id="xhr_"+(new Date).getTime();a.insert(\'<i><iframe name="\'+this.id+\'" id="\'+this.id+\'" width="0" height="0" frameborder="0" src="about:blank"></iframe></i>\',"after");n(this.id).on("load",this.onLoad.bind(this))},send:function(){this.form.set("target",this.id).submit()},onLoad:function(){this.status= 200;this.readyState=4;try{this.responseText=Q[this.id].document.documentElement.innerHTML}catch(a){}this.onreadystatechange()}});t.JSONP=new E({include:t.Dummy,prefix:"jsonp",initialize:function(a){this.xhr=a;this.name=this.prefix+(new Date).getTime();this.param=(L(a.jsonp)?a.jsonp:"callback")+"="+this.name;this.script=ua("script",{charset:a.encoding,async:a.async})},open:function(a,b){this.url=b;this.method=a},send:function(a){Q[this.name]=this.finish.bind(this);this.script.set("src",this.url+(this.url.include("?")? "&":"?")+this.param+"&"+a).insertTo(hb("script").last(),"after")},finish:function(a){this.status=200;this.readyState=4;this.xhr.json=this.xhr.responseJSON=a;this.onreadystatechange()}});var v=j.Fx=new E(ga,{extend:{EVENTS:T("start finish cancel"),Durations:{"short":200,normal:400,"long":800},Options:{fps:F.IE?40:60,duration:"normal",transition:"Sin",queue:true},Transitions:{Sin:function(a){return-(w.cos(w.PI*a)-1)/2},Cos:function(a){return w.asin((a-0.5)*2)/w.PI+0.5},Exp:function(a){return w.pow(2, 8*(a-1))},Log:function(a){return 1-w.pow(2,-8*a)},Lin:function(a){return a}},ch:[],cr:[]},initialize:function(a,b){this.$super(b);if(this.element=a=n(a)){var c=va(a);this.ch=v.ch[c]=v.ch[c]||[];this.cr=v.cr[c]=v.cr[c]||[]}},start:function(){if(this.queue(arguments))return this;this.prepare.apply(this,arguments);var a=this.options,b=v.Durations[a.duration]||a.duration;this.transition=v.Transitions[a.transition]||a.transition;this.steps=(b/1E3*this.options.fps).ceil();this.number=1;this.cr&&this.cr.push(this); return this.fire("start",this).startTimer()},finish:function(){return this.stopTimer().unreg().fire("finish").next()},cancel:function(){this.ch.clean();return this.stopTimer().unreg().fire("cancel")},pause:function(){return this.stopTimer()},resume:function(){return this.startTimer()},prepare:function(){},render:function(){},step:function(a){if(a.number>a.steps)a.finish();else{if(!a.w){a.w=true;a.render(a.transition(a.number/a.steps));a.w=false}a.number++}},startTimer:function(){this.timer=this.step.periodical((1E3/ this.options.fps).round(),this);return this},stopTimer:function(){this.timer&&this.timer.stop();return this},queue:function(a){var b=this.ch,c=this.options.queue;if(!b||this.$ch)return this.$ch=false;c&&b.push([a,this]);return c&&b[0][1]!==this},next:function(){var a=this.ch,b=a.shift();if(b=a[0]){b[1].$ch=true;b[1].start.apply(b[1],b[0])}return this},unreg:function(){var a=this.cr;a&&a.splice(a.indexOf(this),1);return this}});O.COLORS={maroon:"#800000",red:"#ff0000",orange:"#ffA500",yellow:"#ffff00", olive:"#808000",purple:"#800080",fuchsia:"#ff00ff",white:"#ffffff",lime:"#00ff00",green:"#008000",navy:"#000080",blue:"#0000ff",aqua:"#00ffff",teal:"#008080",black:"#000000",silver:"#c0c0c0",gray:"#808080",brown:"#a52a2a"};O.include({toHex:function(){var a=/^#(\\w)(\\w)(\\w)$/.exec(this);return a=a?"#"+a[1]+a[1]+a[2]+a[2]+a[3]+a[3]:(a=/^rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)$/.exec(this))?"#"+a.slice(1).map(function(b){b=(b-0).toString(16);return b.length==1?"0"+b:b}).join(""):O.COLORS[this]||this},toRgb:function(a){var b= /#([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})/i.exec(this.toHex()||"");if(b){b=b.slice(1).map("toInt",16);b=a?b:"rgb("+b+")"}return b}});B=r.prototype;var cb=B.hide,ya=B.show,db=B.remove,ub=B.scrollTo;r.include({stop:function(){(v.cr[va(this)]||[]).each("cancel");return this},hide:function(a,b){return a&&this.visible()?this.fx(a,["out",b]):cb.call(this)},show:function(a,b){return a&&this.hidden()?this.fx(a,["in",b]):ya.call(this)},remove:function(a,b){return a&&this.visible()?this.fx(a,["out",u.merge(b, {onFinish:db.bind(this)})]):db.call(this)},morph:function(a,b){return this.fx("morph",[a,b||{}])},highlight:function(){return this.fx("highlight",arguments)},fade:function(){return this.fx("fade",arguments)},slide:function(){return this.fx("slide",arguments)},scroll:function(a,b){return this.fx("scroll",[a,b||{}])},scrollTo:function(a,b){return y(b)?this.scroll(a,b):ub.apply(this,arguments)},fx:function(a,b){var c=o(b).compact(),d=y(c.last())?c.pop():{};d=new (v[a.capitalize()])(this,d);d.start.apply(d, c);return this}});var la=T("Top Left Right Bottom");v.Morph=new E(v,{prepare:function(a){var b=[],c=["Style","Color","Width"],d,e,f;for(d in a)if(d.startsWith("border"))for(e=0;e<c.length;e++)for(f=0;f<la.length;f++)b.push("border"+la[f]+c[e]);else if(d=="margin"||d=="padding"){e=b;f=d;for(var i=la,z=0;z<i.length;z++)e.push(f+i[z])}else if(d.startsWith("background")){e=b;f=["Color","Position","PositionX","PositionY"];for(i=0;i<f.length;i++)e.push("background"+f[i])}else d=="opacity"&&F.IE?b.push("filter"): b.push(d);c=this._cloneStyle(this.element,b);a=this._endStyle(a,b);b=this.element;d=[];var k;for(k in a)if((k=="width"||k=="height")&&c[k]=="auto")c[k]=b._["offset"+k.capitalize()]+"px";if(a.filter&&!c.filter)c.filter="alpha(opacity=100)";for(e=0;e<4;e++){z=la[e];f="border"+z+"Style";i="border"+z+"Width";z="border"+z+"Color";if(f in c&&c[f]!=a[f]){var ha=b._.style;if(c[f]=="none")ha[i]="0px";ha[f]=a[f];if(ea(c[z]))ha[z]=b.getStyle("Color")}}for(k in a){if(a[k]!==c[k]&&!d.includes(k)&&/color/i.test(k)){if(F.Opera){a[k]= a[k].replace(/"/g,"");c[k]=c[k].replace(/"/g,"")}ea(a[k])||(a[k]=a[k].toRgb());ea(c[k])||(c[k]=c[k].toRgb());if(!a[k]||!c[k])a[k]=c[k]=""}if(/\\d/.test(a[k])&&!/\\d/.test(c[k]))c[k]=a[k].replace(/[\\d\\.\\-]+/g,"0");if(a[k]===c[k]||d.includes(k)||!/\\d/.test(c[k])||!/\\d/.test(a[k])){delete a[k];delete c[k]}}this.before=Qa(c);this.after=Qa(a)},render:function(a){var b,c,d,e=this.element._.style,f,i,z;for(f in this.after){b=this.before[f];c=this.after[f];i=0;for(z=c.length;i<z;i++){d=b[i]+(c[i]-b[i])*a;if(c.r)d= w.round(d);c.t[i*2+1]=d}e[f]=c.t.join("")}},_endStyle:function(a,b){var c=this.element,d=c.clone().setStyle("position:absolute;z-index:-1;visibility:hidden").setWidth(c.size().x).setStyle(a);c.parent()&&c.insert(d,"before");c=this._cloneStyle(d,b);d.remove();return c},_cloneStyle:function(a,b){for(var c=0,d=b.length,e=a.computedStyles(),f={},i;c<d;c++){i=b[c];if(i in e)f[i]=""+e[i];if(i==="opacity")f[i]=f[i].replace(",",".")}return f}});v.Highlight=new E(v.Morph,{extend:{Options:u.merge(v.Options, {color:"#FF8",transition:"Exp"})},prepare:function(a,b){var c=this.element,d=c._.style,e=b||c.getStyle("backgroundColor");if(ea(e)){this.onFinish(function(){d.backgroundColor="transparent"});e=[c].concat(c.parents()).map(function(f){return(f=f.getStyle("backgroundColor"))&&!ea(f)?f:null}).compact().first()||"#FFF"}d.backgroundColor=a||this.options.color;return this.$super({backgroundColor:e})}});v.Twin=new E(v.Morph,{finish:function(){this.how=="out"&&cb.call(this.element);return this.$super()},setHow:function(a){this.how= a||"toggle";if(this.how=="toggle")this.how=this.element.visible()?"out":"in"}});v.Slide=new E(v.Twin,{extend:{Options:u.merge(v.Options,{direction:"top"})},prepare:function(a){this.setHow(a);var b=ya.call(this.element);this.size=b.size();this.styles={};T("overflow height width marginTop marginLeft").each(function(c){this.styles[c]=b._.style[c]},this);b._.style.overflow="hidden";this.onFinish("_getBack").onCancel("_getBack");return this.$super(this._getStyle(this.options.direction))},_getBack:function(){this.element.setStyle(this.styles)}, _getStyle:function(a){var b={},c=this.size,d=this.styles.marginLeft.toFloat()||0,e=this.styles.marginTop.toFloat()||0;if(this.how=="out"){b[["top","bottom"].includes(a)?"height":"width"]="0px";if(a=="right")b.marginLeft=d+c.x+"px";else if(a=="bottom")b.marginTop=e+c.y+"px"}else if(this.how=="in"){var f=this.element._.style;if(["top","bottom"].includes(a)){b.height=c.y+"px";f.height="0px"}else{b.width=c.x+"px";f.width="0px"}if(a=="right"){b.marginLeft=d+"px";f.marginLeft=d+c.x+"px"}else if(a=="bottom"){b.marginTop= e+"px";f.marginTop=e+c.y+"px"}}return b}});v.Fade=new E(v.Twin,{prepare:function(a){this.setHow(a);this.how=="in"&&ya.call(this.element.setStyle({opacity:0}));return this.$super({opacity:Ta(a)?a:this.how=="in"?1:0})}});v.Scroll=new E(v,{initialize:function(a,b){a=n(a);this.$super(a instanceof da?a._.document[F.WebKit?"body":"documentElement"]:a,b)},prepare:function(a){var b=this.before={},c=this.element._;this.after=a;if("x"in a)b.x=c.scrollLeft;if("y"in a)b.y=c.scrollTop},render:function(a){var b= this.before,c;for(c in b)this.element._["scroll"+(c=="x"?"Left":"Top")]=b[c]+(this.after[c]-b[c])*a}});j.Cookie=new E({include:W,extend:{set:function(a,b,c){return(new this(a,c)).set(b)},get:function(a){return(new this(a)).get()},remove:function(a){return(new this(a)).remove()},enabled:function(){q.cookie="__t=1";return q.cookie.indexOf("__t=1")!=-1},Options:{secure:false,document:q}},initialize:function(a,b){this.name=a;this.setOptions(b)},set:function(a){a=encodeURIComponent(a);var b=this.options; if(b.domain)a+="; domain="+b.domain;if(b.path)a+="; path="+b.path;if(b.duration){var c=new Date;c.setTime(c.getTime()+b.duration*24*60*60*1E3);a+="; expires="+c.toGMTString()}if(b.secure)a+="; secure";b.document.cookie=this.name+"="+a;return this},get:function(){var a=this.options.document.cookie.match("(?:^|;)\\\\s*"+RegExp.escape(this.name)+"=([^;]*)");return a?decodeURIComponent(a[1]):null},remove:function(){this.options.duration=-1;return this.set("")}});if(j.Browser.OLD)n=j.$=function(a){return function(b){var c= a(b);if(c&&c instanceof j.Element&&j.isString(b)&&c._.id!==b)c=j.$(q).first("#"+b);return c}}(j.$);j.$E("p").getBoundingClientRect||j.Element.include({position:function(){var a=this._,b=a.offsetTop,c=a.offsetLeft;for(a=a.offsetParent;a;){b+=a.offsetTop;c+=a.offsetLeft;a=a.offsetParent}return{x:c,y:b}}});q.querySelector||function(a){function b(g){if(!za[g]){var h,p,l,A,M,D,x={};for(l=g;h=l.match(vb);){A=A||{};A[h[1]]={o:h[2],v:h[5]||h[6]};l=l.replace(h[0],"")}if(h=l.match(ha)){M=h[1];D=h[3]==""?null: h[3];l=l.replace(h[0],"")}h=(l.match(i)||[1,null])[1];p=(l.match(z)||"*").toString().toUpperCase();l=(l.match(k)||[1,""])[1].split(".").without("");x.tag=p;if(h||l.length||A||M){var G="function(y){var e,r=[],z=0,x=y.length;for(;z<x;z++){e=y[z];_f_}return r}",H=function(V){G=G.replace("_f_",V+"_f_")};h&&H("if(e.id!=i)continue;");l.length&&H(\'if(e.className){var n=e.className.split(" ");if(n.length==1&&c.indexOf(n[0])==-1)continue;else{for(var i=0,l=c.length,b=false;i<l;i++)if(n.indexOf(c[i])==-1){b=true;break;}if(b)continue;}}else continue;\'); A&&H(\'var p,o,v,k,b=false;for (k in a){p=e.getAttribute(k)||"";o=a[k].o||"";v=a[k].v||"";if((o===""&&e.getAttributeNode(k)===null)||(o==="="&&p!=v)||(o==="*="&&!p.includes(v))||(o==="^="&&!p.startsWith(v))||(o==="$="&&!p.endsWith(v))||(o==="~="&&!p.split(" ").includes(v))||(o==="|="&&!p.split("-").includes(v))){b=true;break;}}if(b){continue;}\');M in e&&H("if(!S[P].call(e,V,S))continue;");x.filter=eval("[function(i,t,c,a,P,V,S,s){return eval(\'[\'+s+\']\')[0]}]")[0](h,p,l,A,M,D,e,G.replace("_f_","r.push(e)"))}za[g]= x}return za[g]}function c(g){var h=g.join("");if(!Aa[h]){for(var p=0;p<g.length;p++)g[p][1]=b(g[p][1]);var l=va,A=function(D){for(var x=[],G=[],H,V=0,$=D.length;V<$;V++){H=l(D[V]);if(!G[H]){x.push(D[V]);G[H]=true}}return x},M=function(D,x){var G=d[x[0]](D,x[1].tag);return x[1].filter?x[1].filter(G):G};Aa[h]=function(D){for(var x,G,H=0,V=g.length;H<V;H++)if(H===0)x=M(D,g[H]);else{if(H>1)x=A(x);for(var $=0;$<x.length;$++){G=M(x[$],g[H]);G.unshift(1);G.unshift($);x.splice.apply(x,G);$+=G.length-3}}return g.length> 1?A(x):x}}return Aa[h]}var d={" ":function(g,h){return a.$A(g.getElementsByTagName(h))},">":function(g,h){for(var p=[],l=g.firstChild;l;){if(h=="*"||l.tagName==h)p.push(l);l=l.nextSibling}return p},"+":function(g,h){for(;g=g.nextSibling;)if(g.tagName)return h=="*"||g.tagName==h?[g]:[];return[]},"~":function(g,h){for(var p=[];g=g.nextSibling;)if(h=="*"||g.tagName==h)p.push(g);return p}},e={checked:function(){return this.checked},disabled:function(){return this.disabled},empty:function(){return!(this.innerText|| this.innerHTML||this.textContent||"").length},"first-child":function(g){for(var h=this;h=h.previousSibling;)if(h.tagName&&(!g||h.tagName==g))return false;return true},"first-of-type":function(g,h){return h["first-child"].call(this,this.tagName)},"last-child":function(g){for(var h=this;h=h.nextSibling;)if(h.tagName&&(!g||h.tagName==g))return false;return true},"last-of-type":function(g,h){return h["last-child"].call(this,this.tagName)},"only-child":function(g,h){return h["first-child"].call(this,g)&& h["last-child"].call(this,g)},"only-of-type":function(g,h){return h["only-child"].call(this,this.tagName,h)},"nth-child":function(g,h,p){if(!this.parentNode)return false;g=g.toLowerCase();if(g=="n")return true;if(g.includes("n")){var l=h=0;if(m=g.match(/^([+\\-]?\\d*)?n([+\\-]?\\d*)?$/)){h=m[1]=="-"?-1:parseInt(m[1],10)||1;l=parseInt(m[2],10)||0}g=1;for(var A=this;A=A.previousSibling;)if(A.tagName&&(!p||A.tagName==p))g++;return(g-l)%h===0&&(g-l)/h>=0}else return h.index.call(this,g.toInt()-1,h,p)},"nth-of-type":function(g, h){return h["nth-child"].call(this,g,h,this.tagName)},index:function(g,h,p){g=a.isString(g)?g.toInt():g;h=this;for(var l=0;h=h.previousSibling;)if(h.tagName&&(!p||h.tagName==p)&&++l>g)return false;return l==g}},f=/((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|[\'"][^\'"]*[\'"]|[^\\[\\]\'"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?/g,i=/#([\\w\\-_]+)/,z=/^[\\w\\*]+/,k=/\\.([\\w\\-\\._]+)/,ha=/:([\\w\\-]+)(\\((.+?)\\))*$/,vb=/\\[((?:[\\w\\-]*:)?[\\w\\-]+)\\s*(?:([!\\^$*~|]?=)\\s*(([\'"])([^\\4]*?)\\4|([^\'"][^\\]]*?)))?\\]/,za= {},Aa={},Ba={},ma={first:function(g){return this.find(g)[0]},find:function(g){var h=this._;g=g||"*";if(!Ba[g]){f.lastIndex=0;for(var p=[],l=[],A=" ",M,D;M=f.exec(g);){D=M[1];if(D=="+"||D==">"||D=="~")A=D;else{l.push([A,D]);A=" "}if(M[2]){p.push(c(l));l=[]}}p.push(c(l));Ba[g]=p}g=Ba[g];p=[];l=0;for(A=g.length;l<A;l++)p=p.concat(g[l](h));return p.map(a.$)}};ma.select=ma.find;a.Element.include(ma);a.Document.include(ma)}(j);I(Q,u.without(j,"version","modules"));return j}(window,document,Object,Array, String,Function,Number,Math);');
|
8
|
+
f.close();c=c.createElement("script");c.text=e;f.body.appendChild(c)}var a=b.RightJS;a.context=b;a.safe=true;return a.$ext(function(d){switch(typeof d){case "number":return a.$N(d);case "string":return a.$S(d);case "function":return a.$ext(d,a.Function.Methods);case "object":if(a.isArray(d))return a.$A(d)}return d},a)}(window,'var RightJS=function(P,r,u,E,M,V,ma,w){function Q(a){return W(a)?a:[a]}function Ba(a,b){var c=a[0],d=Ca.call(a,1),e=b,f;if(L(c)){f=c;c=b.length&&$(b[0][f])?function(i){return i[f].apply(i,d)}:function(i){return i[f]}}else e=d[0];return[c,e]}function R(a,b,c){var d;try{d=a.apply(b,Ba(c,b))}catch(e){if(!(e instanceof j.Break))throw e;}return d}function Da(a){return!!a}function Ea(a,b){return a>b?1:a<b?-1:0}function Fa(a,b){["extend","include"].each(function(c){var d=b[c];if(x(d)||W(d)){a[c].apply(a, Q(d));delete b[c]}})}function na(a,b){var c=b.toUpperCase(),d=b.capitalize(),e=a.constructor;return(e=[a,e].concat("ancestors"in e?e.ancestors:[]).first(function(f){return f&&(c in f||d in f)}))?e[c]||e[d]:null}function oa(a,b,c){a=a._;for(var d=[];a=a[b];)if(a.tagName&&(!c||n(a).match(c)))d.push(n(a));return d}function eb(a){if(typeof a==="string"){var b=this.tagName,c=fb,d=Ga[b]||["","",1],e=d[2];for(c.innerHTML=d[0]+"<"+b+">"+a+"</"+b+">"+d[1];e-- >0;)c=c.firstChild;a=c.childNodes}b=0;for(c=a.length;b< c;b++){d=a[a.length===c?b:0];Ha.appendChild(d instanceof s?d._:d)}return Ha}function Ia(a,b){var c,d=b.camelize();switch(d){case "opacity":c=!H.IE?a[d].replace(",","."):(/opacity=(\\d+)/i.exec(a.filter||"")||["","100"])[1].toInt()/100+"";break;case "float":d=H.IE?"styleFloat":"cssFloat";default:c=a[d];if(H.Opera&&/color/i.test(d)&&c)c=c.replace(/"/g,"")}return c||null}function ha(a,b,c){X[a]=eval("["+X[a].toString().replace(b,c)+"]")[0]}function Ja(a){a=S(a);pa=pa.concat(a);aa(s[q],a);aa(Y[q],a)}function Ka(a, b){var c=a||"*",d=b._;d="tagName"in d?d.tagName:null;return d===null?c:c.replace(/(^|,)/g,"$1"+d+" ")}function ia(a){var b=new La(a),c=b.target;c=c.parent&&c.parent();b.type=a.type==="focusin"||a.type==="focus"?"focus":"blur";c&&c.fire(b)}function Ma(a,b){var c=r.createElement(b);c.setAttribute(a,";");return $(c[a])}function gb(a,b,c){return function(d){var e=d.target,f=o(b),i=f.shift();if(c.find(a).includes(e))$(i)?i.apply(e,[d].concat(f)):e[i].apply(e,f)}}function Na(a){a=o(a);var b=a[1]||{},c= {},d;if(L(b)){c[b]=a.slice(2);if(W(c[b][0]))c[b]=c[b][0].map(Q)}else c=b;for(d in c){c[d]=Q(c[d]);c[d]=W(c[d][0])?c[d]:[c[d]]}return c}function Oa(a,b){var c=a[0],d,e,f=Na(a),i=!u.keys(f).length;return(b.$listeners||[]).filter(function(z){return z.dr&&z.n===c&&(i||function(){for(var k in f)if(z.dr===k){d=0;for(e=f[k];d<e.length;d++)if(!e[d].length||e[d][0]===z.dc)return true}return false}())})}function qa(a,b){a.stop();this.send(u.merge({spinner:this.first(".spinner")},b))}function da(a){return a=== "transparent"||a==="rgba(0, 0, 0, 0)"}function Pa(a){var b={},c=/[\\d\\.\\-]+/g,d,e,f;for(e in a){d=a[e].match(c);d=d.map("toFloat");d.t=a[e].split(c);d.r=d.t[0]==="rgb(";d.t.length==1&&d.t.unshift("");for(f=0;f<d.length;f++)d.t.splice(f*2+1,0,d[f]);b[e]=d}return b}var j=function(a){return a};j.version="2.0.0";j.modules=["core","dom","form","events","xhr","fx","cookie","olds"];var q="prototype",J=E[q],ra=u[q].toString,Ca=J.slice,ba=function(){return function(){}},Qa=r.documentElement,sa=1,ja=[],I=j.$ext= function(a,b,c){b=b||{};var d;for(d in b)if(!c||!(d in a))a[d]=b[d];return a},Ra=j.$eval=function(a){if(a)"execScript"in P?n(r).window()._.execScript(a):ta("script",{text:a}).insertTo(Qa)};j.$break=function(){throw new j.Break;};var B=j.$alias=function(a,b){for(var c in b)a[c]=a[b[c]];return a};j.defined=function(a){return typeof a!=="undefined"};var $=j.isFunction=function(a){return typeof a==="function"},L=j.isString=function(a){return typeof a==="string"},Sa=j.isNumber=function(a){return typeof a=== "number"},x=j.isHash=function(a){return ra.call(a)==="[object Object]"},W=j.isArray=function(a){return ra.call(a)==="[object Array]"},Ta=j.isElement=function(a){return a&&a.tagName};j.isNode=function(a){return a&&a.nodeType};var n=j.$=function(a){if(typeof a==="string")a=r.getElementById(a);if(a)if("_rjs_id"in a&&a._rjs_id in ja)a=ja[a._rjs_id];else if(a.nodeType===1)a=new s(a);else if(Ta(a.target)||Ta(a.srcElement))a=new La(a);else if(a.nodeType===9)a=new Y(a);else if(a.window==a)a=new ca(a);return a}, hb=j.$$=function(a,b){return n(b||r).find(a)},ta=j.$E=function(a,b){return new s(a,b)},S=j.$w=function(a){return a.trim().split(/\\s+/)},o=j.$A=function(a){try{return Ca.call(a)}catch(b){for(var c=[],d=0,e=a.length;d<e;d++)c[d]=a[d];return c}},ua=j.$uid=function(a){return"_rjs_id"in a?a._rjs_id:a._rjs_id=sa++};if(x(Qa))x=j.isHash=function(a){return ra.call(a)==="[object Object]"&&a!==null&&typeof a!=="undefined"&&typeof a.hasOwnProperty!=="undefined"};for(var C=0,K="Array Function Number String Date RegExp".split(" "), ea=function(){for(var a=0;a<arguments.length;a++)if(x(arguments[a])){I(this[q],arguments[a]);I(this.Methods,arguments[a])}};C<K.length;C++)I(j[K[C]]=P[K[C]],{Methods:{},include:ea});j.Object=u;j.Math=w;I(u,{keys:function(a){var b=[],c;for(c in a)b.push(c);return b},values:function(a){var b=[],c;for(c in a)b.push(a[c]);return b},each:function(a,b,c){for(var d in a)b.call(c,d,a[d]);return a},empty:function(a){for(var b in a)return false;return true},without:function(){var a=o(arguments),b=a.shift(), c={},d;for(d in b)a.includes(d)||(c[d]=b[d]);return c},only:function(){for(var a=o(arguments),b=a.shift(),c={},d=0,e=a.length;d<e;d++)if(a[d]in b)c[a[d]]=b[a[d]];return c},merge:function(){for(var a={},b=0,c=arguments.length;b<c;b++)x(arguments[b])&&I(a,arguments[b]);return a},toQueryString:function(a){var b=[],c,d,e=encodeURIComponent;for(c in a){d=Q(a[c]);for(var f=0;f<d.length;f++)b.push(e(c)+"="+e(d[f]))}return b.join("&")}},true);var Ua=w.random;w.random=function(a,b){if(arguments.length===0)return Ua(); else if(arguments.length===1){b=a;a=0}return~~(Ua()*(b-a+1)+~~a)};var ib=J.sort;C=function(a,b,c){return eval("[function(c,s){for(var "+a+"i=0,l=this.length;i<l;i++){"+b.replace("_","c.call(s,this[i],i,this)")+"}"+c+"}]")[0]};var Va=J.forEach||C("","_",""),jb=J.filter||C("r=[],j=0,","if(_)r[j++]=this[i]","return r"),kb=C("r=[],j=0,","if(!_)r[j++]=this[i]","return r"),lb=J.map||C("r=[],","r[i]=_","return r"),mb=J.some||C("","if(_)return true","return false"),nb=J.every||C("","if(!_)return false","return true"), ob=C("","if(_)return this[i]","return [][0]"),pb=function(a,b){for(var c=this.length-1;c>-1;c--)if(a.call(b,this[c],c,this))return this[c];return null};E.include({indexOf:J.indexOf||function(a,b){for(var c=b<0?w.max(0,this.length+b):b||0,d=this.length;c<d;c++)if(this[c]===a)return c;return-1},lastIndexOf:J.lastIndexOf||function(a){for(var b=this.length-1;b>-1;b--)if(this[b]===a)return b;return-1},first:function(){return arguments.length?R(ob,this,arguments):this[0]},last:function(){return arguments.length? R(pb,this,arguments):this[this.length-1]},random:function(){return this.length?this[w.random(this.length-1)]:null},size:function(){return this.length},clean:function(){this.length=0;return this},empty:function(){return!this.length},clone:function(){return this.slice(0)},each:function(){R(Va,this,arguments);return this},forEach:Va,map:function(){return R(lb,this,arguments)},filter:function(){return R(jb,this,arguments)},reject:function(){return R(kb,this,arguments)},some:function(a){return R(mb,this, a?arguments:[Da])},every:function(a){return R(nb,this,a?arguments:[Da])},walk:function(){this.map.apply(this,arguments).forEach(function(a,b){this[b]=a},this);return this},merge:function(){for(var a=this.clone(),b,c=0,d,e=arguments.length;c<e;c++){b=arguments[c];b=Q(b);for(d=0;d<b.length;d++)a.indexOf(b[d])==-1&&a.push(b[d])}return a},flatten:function(){var a=[];this.forEach(function(b){if(W(b))a=a.concat(b.flatten());else a.push(b)});return a},compact:function(){return this.without(null,undefined)}, uniq:function(){return[].merge(this)},includes:function(){for(var a=0,b=arguments.length;a<b;a++)if(this.indexOf(arguments[a])==-1)return false;return true},without:function(){var a=o(arguments);return this.filter(function(b){return!a.includes(b)})},shuffle:function(){for(var a=this.clone(),b,c,d=a.length;d>0;b=w.random(d-1),c=a[--d],a[d]=a[b],a[b]=c);return a},sort:function(a){return ib.apply(this,a||!Sa(this[0])?arguments:[Ea])},sortBy:function(){var a=Ba(arguments,this);return this.sort(function(b, c){return Ea(a[0].call(a[1],b),a[0].call(a[1],c))})},min:function(){return w.min.apply(w,this)},max:function(){return w.max.apply(w,this)},sum:function(){for(var a=0,b=this.length,c=0;a<b;c+=this[a++]);return c}});B(J,{include:"includes"});M.include({empty:function(){return this==""},blank:function(){return/^\\s*$/.test(this)},trim:M[q].trim||function(){for(var a=this.replace(/^\\s\\s*/,""),b=a.length;/\\s/.test(a.charAt(--b)););return a.slice(0,b+1)},stripTags:function(){return this.replace(/<\\/?[^>]+>/ig, "")},stripScripts:function(a){var b="",c=this.replace(/<script[^>]*>([\\s\\S]*?)<\\/script>/img,function(d,e){b+=e+"\\n";return""});if(a===true)Ra(b);else $(a)&&a(b,c);return c},extractScripts:function(){var a="";this.stripScripts(function(b){a=b});return a},evalScripts:function(){this.stripScripts(true);return this},camelize:function(){return this.replace(/(\\-|_)+(.)?/g,function(a,b,c){return c?c.toUpperCase():""})},underscored:function(){return this.replace(/([a-z\\d])([A-Z]+)/g,"$1_$2").replace(/\\-/g, "_").toLowerCase()},capitalize:function(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase()},includes:function(a){return this.indexOf(a)!=-1},startsWith:function(a,b){var c=this.substr(0,a.length);return b?c.toLowerCase()===a.toLowerCase():c===a},endsWith:function(a,b){var c=this.substring(this.length-a.length);return b?c.toLowerCase()===a.toLowerCase():c===a},toInt:function(a){return parseInt(this,a||10)},toFloat:function(a){return parseFloat(a?this:this.replace(",",".").replace(/(\\d)-(\\d)/g, "$1.$2"))}});B(M[q],{include:"includes"});V.include({bind:function(){var a=o(arguments),b=a.shift(),c=this;return function(){return c.apply(b,a.length||arguments.length?a.concat(o(arguments)):a)}},bindAsEventListener:function(){var a=o(arguments),b=a.shift(),c=this;return function(d){return c.apply(b,[d].concat(a).concat(o(arguments)))}},curry:function(){return this.bind.apply(this,[this].concat(o(arguments)))},rcurry:function(){var a=o(arguments),b=this;return function(){return b.apply(b,o(arguments).concat(a))}}, delay:function(){var a=o(arguments),b=a.shift();a=new ma(setTimeout(this.bind.apply(this,[this].concat(a)),b));a.cancel=function(){clearTimeout(this)};return a},periodical:function(){var a=o(arguments),b=a.shift();a=new ma(setInterval(this.bind.apply(this,[this].concat(a)),b));a.stop=function(){clearInterval(this)};return a},chain:function(){var a=o(arguments),b=a.shift(),c=this;return function(){var d=c.apply(c,arguments);b.apply(b,a);return d}}});ma.include({times:function(a,b){for(var c=0;c<this;c++)a.call(b, c);return this},upto:function(a,b,c){for(var d=this+0;d<=a;d++)b.call(c,d);return this},downto:function(a,b,c){for(var d=this+0;d>=a;d--)b.call(c,d);return this},abs:function(){return w.abs(this)},round:function(a){return a?parseFloat(this.toFixed(a)):w.round(this)},ceil:function(){return w.ceil(this)},floor:function(){return w.floor(this)},min:function(a){return this<a?a:this+0},max:function(a){return this>a?a:this+0}});RegExp.escape=function(a){return(""+a).replace(/([.*+?\\^=!:${}()|\\[\\]\\/\\\\])/g, "\\\\$1")};E=j.Class=function(){function a(){"prebind"in this&&W(this.prebind)&&this.prebind.each(function(e){this[e]=this[e].bind(this)},this);return this.initialize?this.initialize.apply(this,arguments):this}var b=o(arguments),c=b.pop()||{},d=b.pop();if(!b.length&&!x(c)){d=c;c={}}I(a,Wa).inherit(d);Fa(a,c);return a.include(c)};V=S("selfExtended self_extended selfIncluded self_included");var qb=V.concat(S(q+" parent extend include")),rb=V.concat(["constructor"]),Wa={inherit:function(a){if(a&&a[q]){var b= ba();b[q]=a[q];this[q]=new b;this.parent=a}for(this.ancestors=[];a;){this.ancestors.push(a);a=a.parent}return this[q].constructor=this},extend:function(){o(arguments).filter(x).each(function(a){var b=a.selfExtended||a.self_extended;I(this,u.without.apply(u,[a].concat(qb)));b&&b.call(a,this)},this);return this},include:function(){var a=(this.ancestors||[]).map(q);o(arguments).filter(x).each(function(b){var c=b.selfIncluded||b.self_included;u.each(u.without.apply(u,[b].concat(rb)),function(d,e){var f= a.first(function(i){return d in i&&$(i[d])});this[q][d]=!f?e:function(){this.$super=f[d];return e.apply(this,arguments)}},this);c&&c.call(b,this)},this);return this}};V=j.Options={setOptions:function(a){a=this.options=u.merge(na(this,"options"),a);var b,c;if($(this.on))for(c in a)if(b=c.match(/on([A-Z][A-Za-z]+)/)){this.on(b[1].toLowerCase(),a[c]);delete a[c]}return this},cutOptions:function(a){a=o(a);this.setOptions(x(a.last())?a.pop():{});return a}};var fa=j.Observer=new E({include:V,initialize:function(a){this.setOptions(a); aa(this,na(this,"events"));return this},on:function(){var a=o(arguments),b=a.shift(),c;if(L(b)){if(!("$listeners"in this))this.$listeners=[];var d=a.shift();switch(typeof d){case "string":c=d;d=this[d];case "function":var e={};e.e=b;e.f=d;e.a=a;e.r=c;this.$listeners.push(e);break;default:if(W(d))for(c=0;c<d.length;c++)this.on.apply(this,[b].concat(Q(d[c])).concat(a))}}else for(c in b)this.on.apply(this,[c].concat(Q(b[c])).concat(a));return this},observes:function(a,b){if(!L(a)){b=a;a=null}if(L(b))b= this[b];return(this.$listeners||[]).some(function(c){return a&&b?c.e===a&&c.f===b:a?c.e===a:c.f===b})},stopObserving:function(a,b){if(x(a))for(var c in a)this.stopObserving(c,a[c]);else{if(!L(a)){b=a;a=null}if(L(b))b=this[b];this.$listeners=(this.$listeners||[]).filter(function(d){return a&&b?d.e!==a||d.f!==b:a?d.e!==a:d.f!==b},this)}return this},listeners:function(a){return(this.$listeners||[]).filter(function(b){return!a||b.e===a}).map(function(b){return b.f}).uniq()},fire:function(){var a=o(arguments), b=a.shift();(this.$listeners||[]).each(function(c){c.e===b&&c.f.apply(this,c.a.concat(a))},this);return this}});J=fa.create=function(a,b){I(a,u.without(fa[q],"initialize","setOptions"),true);return aa(a,b||na(a,"events"))};var aa=fa.createShortcuts=function(a,b){(b||[]).each(function(c){var d="on"+c.replace(/(^|_|:)([a-z])/g,function(e,f,i){return i.toUpperCase()});d in a||(a[d]=function(){return this.on.apply(this,[c].concat(o(arguments)))})});return a};j.Break=new E(Error,{message:"Manual break"}); K=navigator.userAgent;C="attachEvent"in P;ea="opera"in P;var H=j.Browser={IE:C&&!ea,Opera:ea,WebKit:K.include("AppleWebKit/"),Gecko:K.include("Gecko")&&!K.include("KHTML"),MobileSafari:/Apple.*Mobile.*Safari/.test(K),Konqueror:K.include("Konqueror"),OLD:C&&!ea&&!r.querySelector},T=j.Wrapper=function(a,b){var c=function(d,e){this.initialize(d,e);var f=this,i=f._;if(this.constructor===s&&i.tagName in O){f=new O[i.tagName](i);if("$listeners"in this)f.$listeners=this.$listeners}i="_rjs_id"in i?i._rjs_id: i._rjs_id=sa++;return ja[i]=f};if(!b){b=a;a=null}I(c,Wa).inherit(a||T);Fa(c,b);return c.include({_:undefined},b)};T.Cache=ja;var Y=j.Document=new T({initialize:function(a){this._=a},window:function(){return n(this._.defaultView||this._.parentWindow)}}),ca=j.Window=new T({initialize:function(a){this._=a;this.d=a.document},window:function(){return this},size:function(){var a=this._,b=this.d.documentElement;return a.innerWidth?{x:a.innerWidth,y:a.innerHeight}:{x:b.clientWidth,y:b.clientHeight}},scrolls:function(){var a= this._,b=this.d,c=b.body;b=b.documentElement;return a.pageXOffset||a.pageYOffset?{x:a.pageXOffset,y:a.pageYOffset}:c&&(c.scrollLeft||c.scrollTop)?{x:c.scrollLeft,y:c.scrollTop}:{x:b.scrollLeft,y:b.scrollTop}},scrollTo:function(a,b,c){var d=a,e=b,f=n(a);if(f&&f instanceof s)a=f.position();if(x(a)){e=a.y;d=a.x}x(c=c||b)&&j.Fx?(new v.Scroll(this,c)).start({x:d,y:e}):this._.scrollTo(d,e);return this}}),La=j.Event=new T({type:null,which:null,keyCode:null,target:null,currentTarget:null,relatedTarget:null, pageX:null,pageY:null,initialize:function(a,b){if(typeof a==="string"){a=u.merge({type:a},b);this.stopped=a.bubbles===false;x(b)&&I(this,b)}this._=a;this.type=a.type;this.which=a.which;this.keyCode=a.keyCode;this.target=n(a.target);this.currentTarget=n(a.currentTarget);this.relatedTarget=n(a.relatedTarget);this.pageX=a.pageX;this.pageY=a.pageY;if(!("target"in a)&&"srcElement"in a){this.which=a.button==2?3:a.button==4?2:1;this.target=n(a.srcElement)||b;this.relatedTarget=this.target._===a.fromElement? n(a.toElement):this.target;this.currentTarget=b;var c=this.target.window().scrolls();this.pageX=a.clientX+c.x;this.pageY=a.clientY+c.y}else if(a.target&&"nodeType"in a.target&&a.target.nodeType===3)this.target=n(a.target.parentNode)},stopPropagation:function(){if("stopPropagation"in this._)this._.stopPropagation();else this._.cancelBubble=true;this.stopped=true;return this},preventDefault:function(){if("preventDefault"in this._)this._.preventDefault();else this._.returnValue=false;return this},stop:function(){return this.stopPropagation().preventDefault()}, position:function(){return{x:this.pageX,y:this.pageY}},find:function(a){if(this.target instanceof s){var b=this.target;b=[b].concat(b.parents());var c=this.currentTarget.find(a);return b.first(function(d){return c.include(d)})}}}),pa=[],Xa={id:"id",html:"innerHTML","class":"className"},Ya={style:"setStyle",on:"on"},O={},va={};K=function(a,b){this._=a=(a in va?va[a]:va[a]=r.createElement(a)).cloneNode(false);if(b!==undefined)for(var c in b)if(c in Xa)a[Xa[c]]=b[c];else c in Ya?this[Ya[c]](b[c]):this.set(c, b[c])};try{r.createElement("<input/>");K=eval("["+K.toString().replace(/(\\((\\w+),\\s*(\\w+)\\)\\s*\\{)/,\'$1if($2==="input"&&$3)$2="<input name="+$3.name+" type="+$3.type+($3.checked?" checked":"")+"/>";\')+"]")[0]}catch(wb){}var s=j.Element=new T({initialize:function(a,b){if(typeof a==="string")this.construct(a,b);else this._=a},construct:K});s.Wrappers=O;s.include({parent:function(a){return a?this.parents(a)[0]:n(this._.parentNode||null)},parents:function(a){return oa(this,"parentNode",a)},children:function(a){return this.find(a).filter(function(b){return b._.parentNode=== this._},this)},siblings:function(a){return this.prevSiblings(a).reverse().concat(this.nextSiblings(a))},nextSiblings:function(a){return oa(this,"nextSibling",a)},prevSiblings:function(a){return oa(this,"previousSibling",a)},next:function(a){return this.nextSiblings(a)[0]},prev:function(a){return this.prevSiblings(a)[0]},remove:function(){var a=this._,b=a.parentNode;b&&b.removeChild(a);return this},insert:function(a,b){var c=null,d=this._;b=(b||"bottom").toLowerCase();if(typeof a!=="object")c=a=""+ a;else if(a&&a instanceof s)a=a._;sb[b](d,a.tagName?a:eb.call(b==="bottom"||b==="top"?d:d.parentNode,a));c!==null&&c.evalScripts();return this},insertTo:function(a,b){n(a).insert(this,b);return this},append:function(a){return this.insert(L(a)?o(arguments).join(""):arguments)},update:function(a){if(typeof a!=="object"){a=""+a;try{this._.innerHTML=a}catch(b){return this.clean().insert(a)}a.evalScripts();return this}else return this.clean().insert(a)},html:function(a){return a===undefined?this._.innerHTML: this.update(a)},replace:function(a){return this.insert(a,"instead")},wrap:function(a){var b=this._,c=b.parentNode;if(c){a=n(a)._;c.replaceChild(a,b);a.appendChild(b)}return this},clean:function(){for(;this._.firstChild;)this._.removeChild(this._.firstChild);return this},empty:function(){return this.html().blank()},clone:function(){var a=this._.cloneNode(true);a._rjs_id=sa++;return new s(a)}});var sb={bottom:function(a,b){a.appendChild(b)},top:function(a,b){a.firstChild!==null?a.insertBefore(b,a.firstChild): a.appendChild(b)},after:function(a,b){var c=a.parentNode,d=a.nextSibling;d!==null?c.insertBefore(b,d):c.appendChild(b)},before:function(a,b){a.parentNode.insertBefore(b,a)},instead:function(a,b){a.parentNode.replaceChild(b,a)}},Ga={TBODY:["<TABLE>","</TABLE>",2],TR:["<TABLE><TBODY>","</TBODY></TABLE>",3],TD:["<TABLE><TBODY><TR>","</TR></TBODY></TABLE>",4],COL:["<TABLE><COLGROUP>","</COLGROUP><TBODY></TBODY></TABLE>",2],LEGEND:["<FIELDSET>","</FIELDSET>",2],AREA:["<map>","</map>",2],OPTION:["<SELECT>", "</SELECT>",2]};B(Ga,{OPTGROUP:"OPTION",THEAD:"TBODY",TFOOT:"TBODY",TH:"TD"});var Ha=r.createDocumentFragment(),fb=r.createElement("DIV");s.include({setStyle:function(a,b){var c,d,e={},f=this._.style;if(b){e[a]=b;a=e}else if(L(a)){a.split(";").each(function(i){i=i.split(":").map("trim");if(i[0]&&i[1])e[i[0]]=i[1]});a=e}for(c in a){d=c.indexOf("-")<0?c:c.camelize();if(c==="opacity")if(H.IE)f.filter="alpha(opacity="+a[c]*100+")";else f.opacity=a[c];else if(c==="float")d=H.IE?"styleFloat":"cssFloat"; f[d]=a[c]}return this},getStyle:function(a){return Ia(this._.style,a)||Ia(this.computedStyles(),a)},computedStyles:function(){var a=this._;return a.currentStyle||a.runtimeStyle||a.ownerDocument.defaultView.getComputedStyle(a,null)||{}},hasClass:function(a){return(" "+this._.className+" ").indexOf(" "+a+" ")!=-1},setClass:function(a){this._.className=a;return this},addClass:function(a){var b=" "+this._.className+" ";if(b.indexOf(" "+a+" ")==-1)this._.className+=(b===" "?"":" ")+a;return this},removeClass:function(a){this._.className= (" "+this._.className+" ").replace(" "+a+" "," ").trim();return this},toggleClass:function(a){return this[this.hasClass(a)?"removeClass":"addClass"](a)},radioClass:function(a){this.siblings().each("removeClass",a);return this.addClass(a)}});s.include({set:function(a,b){if(typeof a==="string"){var c={};c[a]=b;a=c}var d;c=this._;for(d in a){d in c||c.setAttribute(d,""+a[d]);c[d]=a[d]}return this},get:function(a){var b=this._;a=b[a]||b.getAttribute(a);return a===""?null:a},has:function(a){return this.get(a)!== null},erase:function(a){this._.removeAttribute(a);return this},hidden:function(){return this.getStyle("display")==="none"},visible:function(){return!this.hidden()},hide:function(){if(this.visible()){this._d=this.getStyle("display");this._.style.display="none"}return this},show:function(){if(this.hidden()){var a=this._,b=a.tagName=="DIV"?"block":"inline";a.style.display=this._d=="none"?b:this._d||b}return this},toggle:function(a,b){return this[this.visible()?"hide":"show"](a,b)},radio:function(a,b){this.siblings().each("hide", a,b);return this.show()}});s.include({document:function(){return n(this._.ownerDocument)},window:function(){return this.document().window()},size:function(){return{x:this._.offsetWidth,y:this._.offsetHeight}},position:function(){var a=this._.getBoundingClientRect(),b=this.document()._.documentElement,c=this.window().scrolls();return{x:a.left+c.x-b.clientLeft,y:a.top+c.y-b.clientTop}},scrolls:function(){return{x:this._.scrollLeft,y:this._.scrollTop}},dimensions:function(){var a=this.size(),b=this.scrolls(), c=this.position();return{top:c.y,left:c.x,width:a.x,height:a.y,scrollLeft:b.x,scrollTop:b.y}},overlaps:function(a){var b=this.position(),c=this.size();return a.x>b.x&&a.x<b.x+c.x&&a.y>b.y&&a.y<b.y+c.y},setWidth:function(a){var b=this._.style;b.width=a+"px";b.width=2*a-this._.offsetWidth+"px";return this},setHeight:function(a){var b=this._.style;b.height=a+"px";b.height=2*a-this._.offsetHeight+"px";return this},resize:function(a,b){if(x(a)){b=a.y;a=a.x}return this.setWidth(a).setHeight(b)},moveTo:function(a, b){if(x(a)){b=a.y;a=a.x}return this.setStyle({left:a+"px",top:b+"px"})},scrollTo:function(a,b){if(x(a)){b=a.y;a=a.x}this._.scrollLeft=a;this._.scrollTop=b;return this},scrollThere:function(a){this.window().scrollTo(this,a);return this}});var X=J({});ha("on",/(\\$listeners\\.push\\((\\w+?)\\);)/,\'$1$2.e=$2.n=$2.e==="rightclick"?"contextmenu":$2.e;\'+(H.Gecko?\'if($2.n==="mousewheel")$2.n="DOMMouseScroll";\':"")+(H.Konqueror?\'if($2.n==="contextmenu")$2.n="rightclick";\':"")+\'$2.w=function(){var a=$A(arguments),_;$2.r&&$2.r!=="stopEvent"?a.shift():_=a[0]=new RightJS.Event(a[0],this);$2.f.apply($2.t,a.concat($2.a))===false&&_.stop()};$2.t=this;\'+ (C?\'$2.w=$2.w.bind(this);this._.attachEvent("on"+$2.n,$2.w);\':"this._.addEventListener($2.n,$2.w,false);"));ha("stopObserving",/(function\\s*\\((\\w+)\\)\\s*\\{\\s*)(return\\s*)([^}]+)/m,"$1var r=$4;if(!r)"+(C?\'this._.detachEvent("on"+$2.n,$2.w);\':"this._.removeEventListener($2.n,$2.w,false);")+"$3 r");ha("fire",/(\\w+)(\\s*=\\s*(\\w+).shift\\(\\))/,"$1$2;$1=$1 instanceof RightJS.Event?$1:new RightJS.Event($1,Object.merge({target:this._},$3[0]));$1.currentTarget=this");ha("fire",/((\\w+)\\.e\\s*===\\s*(\\w+))([^}]+\\2\\.f\\.apply)[^}]+?\\.concat\\(\\w+\\)\\)/, \'$1.type$4(this,(($2.r&&$1.r!=="stopEvent")?[]:[$3]).concat($2.a))\');X.stopEvent=function(a){a.stop()};s.include(X);Y.include(X);ca.include(X);aa(ca[q],S("blur focus scroll resize load"));Ja("click rightclick contextmenu mousedown mouseup mouseover mouseout mousemove keypress keydown keyup");[s,Y].each("include",{first:function(a){return n(this._.querySelector(Ka(a,this)))},find:function(a){return o(this._.querySelectorAll(Ka(a,this))).map(n)}});s.include({match:function(a){var b=this._.tagName=== "HTML"?this._.ownerDocument:this.parents().last();a=n(b||ta("p").insert(this)).find(a).include(this);b||this.remove();return a}});[ca,Y].each(function(a){a=a[q];var b=a.on;a.on=function(c){if(c=="ready"&&!this._wR){var d=this._,e=this.fire.bind(this,"ready");d=d.nodeType==9?d:d.document;"readyState"in d?function(){["loaded","complete"].includes(d.readyState)?e():arguments.callee.delay(50)}():d.addEventListener("DOMContentLoaded",e,false);this._wR=true}return b.apply(this,arguments)};aa(a,["ready"])}); B(s[q],{subNodes:"children",sizes:"size",select:"find"});B(Y[q],{select:"find"});B(ca[q],{sizes:"size"});var wa=j.Form=O.FORM=new T(s,{initialize:function(a){a=a||{};var b="remote"in a,c=a;if(x(a)){c="form";a=u.without(a,"remote")}this.$super(c,a);b&&this.remotize()},elements:function(){return this.find("input,button,select,textarea")},inputs:function(){return this.elements().filter(function(a){return!["submit","button","reset","image",null].includes(a._.type)})},input:function(a){return n(this._[a])}, focus:function(){var a=this.inputs().first(function(b){return b._.type!=="hidden"});a&&a.focus();return this},blur:function(){this.elements().each("blur");return this},disable:function(){this.elements().each("disable");return this},enable:function(){this.elements().each("enable");return this},values:function(){var a={},b,c,d;this.inputs().each(function(e){d=e._;c=d.name;if(!d.disabled&&c&&(!["checkbox","radio"].includes(d.type)||d.checked)){b=e.getValue();if(c.endsWith("[]"))b=(a[c]||[]).concat([b]); a[c]=b}});return a},serialize:function(){return u.toQueryString(this.values())},submit:function(){this._.submit();return this},reset:function(){this._.reset();return this}});Ja("submit reset focus blur disable enable change");B(wa[q],{getElements:"elements"});var tb=s[q].insert,Za=j.Input=O.INPUT=O.BUTTON=O.SELECT=O.TEXTAREA=O.OPTGROUP=new T(s,{initialize:function(a,b){if(!a||x(a)){b=a||{};if(/textarea|select/.test(b.type||"")){a=b.type;delete b.type}else a="input"}this.$super(a,b)},form:function(){return n(this._.form)}, insert:function(a,b){tb.call(this,a,b);this._.tagName==="SELECT"&&L(a)&&o(this._.getElementsByTagName("option")).each(function(c){c.selected=!!c.getAttribute("selected")});return this},update:function(a){return this.clean().insert(a)},getValue:function(){return this._.type=="select-multiple"?o(this._.getElementsByTagName("option")).map(function(a){return a.selected?a.value:null}).compact():this._.value},setValue:function(a){if(this._.type=="select-multiple"){a=Q(a).map(M);o(this._.getElementsByTagName("option")).each(function(b){b.selected= a.includes(b.value)})}else this._.value=a;return this},value:function(a){return this[a===undefined?"getValue":"setValue"](a)},focus:function(){this._.focus();this.focused=true;H.IE&&this.fire("focus",{bubbles:false});return this},blur:function(){this._.blur();this.focused=false;H.IE&&this.fire("blur",{bubbles:false});return this},select:function(){this._.select();return this.focus()},disable:function(){this._.disabled=true;return this.fire("disable")},enable:function(){this._.disabled=false;return this.fire("enable")}, disabled:function(a){return a===undefined?this._.disabled:this[a?"disable":"enable"]()},checked:function(a){if(a===undefined)a=this._.checked;else{this._.checked=a;a=this}return a}});s[q].fire=eval("["+X.fire.toString().replace(/(\\w+)(\\s*=\\s*\\w+\\.shift[\\s\\S]+)(return this)/m,"$1$2var p=!$1.stopped&&this.parent&&this.parent();p&&p.fire&&p.fire($1);$3")+"]")[0];if(H.IE){r.attachEvent("onfocusin",ia);r.attachEvent("onfocusout",ia)}else{r.addEventListener("focus",ia,true);r.addEventListener("blur",ia, true)}if(!Ma("onsubmit","form")){B=function(a){var b=n(a),c=b.target._,d=c.type;c=c.form;var e;if(c&&(e=n(c).parent())&&(a.keyCode===13&&(d==="text"||d==="password")||a.type==="click"&&(d==="submit"||d==="image"))){b.type="submit";b.target=n(c);e.fire(b)}};r.attachEvent("onclick",B);r.attachEvent("onkeypress",B)}if(!Ma("onchange","input")){var $a=function(a){var b=a._,c=b.type;return c==="radio"||c==="checkbox"?b.checked:a.getValue()},ab=function(a,b){var c=b.parent(),d=$a(b);if(c&&""+b._prev_value!== ""+d){b._prev_value=d;a.type="change";c.fire(a)}};B=function(a){a=n(a);var b=a.target,c=b._.type,d=b._.tagName,e=c==="radio"||c==="checkbox";if(a.type==="click"&&(e||d==="SELECT")||a.type==="keydown"&&(a.keyCode==13&&d!=="TEXTAREA"||c==="select-multiple"))ab(a,b)};r.attachEvent("onclick",B);r.attachEvent("onkeydown",B);r.attachEvent("onfocusout",function(a){a=n(a);var b=a.target;b instanceof Za&&ab(a,b)});r.attachEvent("onbeforeactivate",function(a){a=n(a).target;if(a instanceof Za)a._prev_value= $a(a)})}[s,Y].each("include",{delegate:function(a){var b=Na(arguments),c,d,e;for(c in b){d=0;for(e=b[c];d<e.length;d++){this.on(a,gb(c,e[d],this));I(this.$listeners.last(),{dr:c,dc:e[d][0]})}}return this},undelegate:function(){Oa(arguments,this).each(function(a){this.stopObserving(a.n,a.f)},this);return this},delegates:function(){return!!Oa(arguments,this).length}});u.each({on:"delegate",stopObserving:"undelegate",observes:"delegates"},function(a,b){M[q][a]=function(){var c=n(r),d=o(arguments);d.splice(1, 0,""+this);d=c[b].apply(c,d);return d===c?this:d}});var bb=M[q].on;M[q].on=function(a){if(x(a))for(var b in a)bb.apply(this,[b].concat([a[b]]));else bb.apply(this,arguments);return this};pa.each(function(a){M[q]["on"+a.capitalize()]=function(){return this.on.apply(this,[a].concat(o(arguments)))}});var t=j.Xhr=new E(fa,{extend:{EVENTS:S("success failure complete request cancel create"),Options:{headers:{"X-Requested-With":"XMLHttpRequest",Accept:"text/javascript,text/html,application/xml,text/xml,*/*"}, method:"post",encoding:"utf-8",async:true,evalScripts:false,evalResponse:false,evalJS:true,evalJSON:true,secureJSON:true,urlEncoded:true,spinner:null,spinnerFx:"fade",params:null,iframed:false,jsonp:false},load:function(a,b){return(new this(a,u.merge({method:"get"},b))).send()}},initialize:function(a,b){this.initCallbacks();this.url=a;I(this.$super(b),this.options);if(t.Options.spinner&&n(this.spinner)===n(t.Options.spinner))this.spinner=null},setHeader:function(a,b){this.headers[a]=b;return this}, getHeader:function(a){var b;try{b=this.xhr.getResponseHeader(a)}catch(c){}return b},successful:function(){return this.status>=200&&this.status<300},send:function(a){var b={},c=this.url,d=this.method.toLowerCase(),e=this.headers,f;if(d=="put"||d=="delete"){b._method=d;d="post"}b=this.prepareData(this.params,this.prepareParams(a),b);this.urlEncoded&&d=="post"&&!e["Content-type"]&&this.setHeader("Content-type","application/x-www-form-urlencoded;charset="+this.encoding);if(d=="get"){if(b)c+=(c.includes("?")? "&":"?")+b;b=null}a=this.xhr=this.createXhr();this.fire("create");a.open(d,c,this.async);a.onreadystatechange=this.stateChanged.bind(this);for(f in e)a.setRequestHeader(f,e[f]);a.send(b);this.fire("request");this.async||this.stateChanged();return this},update:function(a,b){return this.onSuccess(function(c){a.update(c.text)}).send(b)},cancel:function(){var a=this.xhr;if(!a||a.canceled)return this;a.abort();a.onreadystatechange=ba();a.canceled=true;return this.fire("cancel")},fire:function(a){return this.$super(a, this,this.xhr)},createXhr:function(){if(this.jsonp)return new t.JSONP(this);else if(this.form&&this.form.first("input[type=file]"))return new t.IFramed(this.form);else try{return new XMLHttpRequest}catch(a){return new ActiveXObject("MSXML2.XMLHTTP")}},prepareParams:function(a){if(a&&a instanceof wa){this.form=a;a=a.values()}return a},prepareData:function(){return o(arguments).map(function(a){L(a)||(a=u.toQueryString(a));return a.blank()?null:a}).compact().join("&")},stateChanged:function(){var a= this.xhr;if(!(a.readyState!=4||a.canceled)){try{this.status=a.status}catch(b){this.status=0}this.text=this.responseText=a.responseText;this.xml=this.responseXML=a.responseXML;this.fire("complete").fire(this.successful()?"success":"failure")}},tryScripts:function(){var a=this.getHeader("Content-type");if(this.evalResponse||this.evalJS&&/(ecma|java)script/i.test(a))Ra(this.text);else if(/json/.test(a)&&this.evalJSON)this.json=this.responseJSON=this.sanitizedJSON();else this.evalScripts&&this.text.evalScripts()}, sanitizedJSON:function(){try{return JSON.parse(this.text)}catch(a){if(P.JSON||!/^[,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t]*$/.test(this.text.replace(/\\\\./g,"@").replace(/"[^"\\\\\\n\\r]*"/g,""))){if(this.secureJSON)throw"JSON error: "+this.text;return null}}return eval("("+this.text+")")},initCallbacks:function(){this.on({success:"tryScripts",create:"showSpinner",complete:"hideSpinner",cancel:"hideSpinner"});t.EVENTS.each(function(a){this.on(a,function(){t.fire(a,this,this.xhr)})},this)},showSpinner:function(){t.showSpinner.call(this, this)},hideSpinner:function(){t.hideSpinner.call(this,this)}});I(J(t),{counter:0,showSpinner:function(a){t.trySpinner(a,"show")},hideSpinner:function(a){t.trySpinner(a,"hide")},trySpinner:function(a,b){var c=a||t.Options,d=n(c.spinner);d&&d[b](c.spinnerFx,{duration:100})},countIn:function(){t.counter++;t.showSpinner()},countOut:function(){t.counter--;t.counter<1&&t.hideSpinner()}}).on({create:"countIn",complete:"countOut",cancel:"countOut"});wa.include({send:function(a){a=a||{};a.method=a.method|| this._.method||"post";(new t(this._.action||r.location.href,a)).onComplete(this.enable.bind(this)).send(this);this.disable.bind(this).delay(1);return this},remotize:function(a){if(!this.observes("submit",qa)){this.on("submit",qa,a);this.remote=true}return this},unremotize:function(){this.stopObserving("submit",qa);this.remote=false;return this}});s.include({load:function(a,b){(new t(a,u.merge({method:"get"},b))).update(this);return this}});t.Dummy={open:ba(),abort:ba(),setRequestHeader:ba(),onreadystatechange:ba()}; t.IFramed=new E({include:t.Dummy,initialize:function(a){this.form=a;this.id="xhr_"+(new Date).getTime();a.insert(\'<i><iframe name="\'+this.id+\'" id="\'+this.id+\'" width="0" height="0" frameborder="0" src="about:blank"></iframe></i>\',"after");n(this.id).on("load",this.onLoad.bind(this))},send:function(){this.form.set("target",this.id).submit()},onLoad:function(){this.status=200;this.readyState=4;try{this.responseText=P[this.id].document.documentElement.innerHTML}catch(a){}this.onreadystatechange()}}); t.JSONP=new E({include:t.Dummy,prefix:"jsonp",initialize:function(a){this.xhr=a;this.name=this.prefix+(new Date).getTime();this.param=(L(a.jsonp)?a.jsonp:"callback")+"="+this.name;this.script=ta("script",{charset:a.encoding,async:a.async})},open:function(a,b){this.url=b;this.method=a},send:function(a){P[this.name]=this.finish.bind(this);this.script.set("src",this.url+(this.url.include("?")?"&":"?")+this.param+"&"+a).insertTo(hb("script").last(),"after")},finish:function(a){this.status=200;this.readyState= 4;this.xhr.json=this.xhr.responseJSON=a;this.onreadystatechange()}});var v=j.Fx=new E(fa,{extend:{EVENTS:S("start finish cancel"),Durations:{"short":200,normal:400,"long":800},Options:{fps:H.IE?40:60,duration:"normal",transition:"Sin",queue:true},Transitions:{Sin:function(a){return-(w.cos(w.PI*a)-1)/2},Cos:function(a){return w.asin((a-0.5)*2)/w.PI+0.5},Exp:function(a){return w.pow(2,8*(a-1))},Log:function(a){return 1-w.pow(2,-8*a)},Lin:function(a){return a}},ch:[],cr:[]},initialize:function(a,b){this.$super(b); if(this.element=a=n(a)){var c=ua(a);this.ch=v.ch[c]=v.ch[c]||[];this.cr=v.cr[c]=v.cr[c]||[]}},start:function(){if(this.queue(arguments))return this;this.prepare.apply(this,arguments);var a=this.options,b=v.Durations[a.duration]||a.duration;this.transition=v.Transitions[a.transition]||a.transition;this.steps=(b/1E3*this.options.fps).ceil();this.number=1;this.cr&&this.cr.push(this);return this.fire("start",this).startTimer()},finish:function(){return this.stopTimer().unreg().fire("finish").next()}, cancel:function(){this.ch.clean();return this.stopTimer().unreg().fire("cancel")},pause:function(){return this.stopTimer()},resume:function(){return this.startTimer()},prepare:function(){},render:function(){},step:function(a){if(a.number>a.steps)a.finish();else{if(!a.w){a.w=true;a.render(a.transition(a.number/a.steps));a.w=false}a.number++}},startTimer:function(){this.timer=this.step.periodical((1E3/this.options.fps).round(),this);return this},stopTimer:function(){this.timer&&this.timer.stop();return this}, queue:function(a){var b=this.ch,c=this.options.queue;if(!b||this.$ch)return this.$ch=false;c&&b.push([a,this]);return c&&b[0][1]!==this},next:function(){var a=this.ch,b=a.shift();if(b=a[0]){b[1].$ch=true;b[1].start.apply(b[1],b[0])}return this},unreg:function(){var a=this.cr;a&&a.splice(a.indexOf(this),1);return this}});M.COLORS={maroon:"#800000",red:"#ff0000",orange:"#ffA500",yellow:"#ffff00",olive:"#808000",purple:"#800080",fuchsia:"#ff00ff",white:"#ffffff",lime:"#00ff00",green:"#008000",navy:"#000080", blue:"#0000ff",aqua:"#00ffff",teal:"#008080",black:"#000000",silver:"#c0c0c0",gray:"#808080",brown:"#a52a2a"};M.include({toHex:function(){var a=/^#(\\w)(\\w)(\\w)$/.exec(this);return a=a?"#"+a[1]+a[1]+a[2]+a[2]+a[3]+a[3]:(a=/^rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)$/.exec(this))?"#"+a.slice(1).map(function(b){b=(b-0).toString(16);return b.length==1?"0"+b:b}).join(""):M.COLORS[this]||this},toRgb:function(a){var b=/#([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})/i.exec(this.toHex()||"");if(b){b=b.slice(1).map("toInt",16); b=a?b:"rgb("+b+")"}return b}});B=s.prototype;var cb=B.hide,xa=B.show,db=B.remove,ub=B.scrollTo;s.include({stop:function(){(v.cr[ua(this)]||[]).each("cancel");return this},hide:function(a,b){return a&&this.visible()?this.fx(a,["out",b]):cb.call(this)},show:function(a,b){return a&&!this.visible()?this.fx(a,["in",b]):xa.call(this)},remove:function(a,b){return a&&this.visible()?this.fx(a,["out",u.merge(b,{onFinish:db.bind(this)})]):db.call(this)},morph:function(a,b){return this.fx("morph",[a,b||{}])}, highlight:function(){return this.fx("highlight",arguments)},fade:function(){return this.fx("fade",arguments)},slide:function(){return this.fx("slide",arguments)},scroll:function(a,b){return this.fx("scroll",[a,b||{}])},scrollTo:function(a,b){return x(b)?this.scroll(a,b):ub.apply(this,arguments)},fx:function(a,b){var c=o(b).compact(),d=x(c.last())?c.pop():{};d=new (v[a.capitalize()])(this,d);d.start.apply(d,c);return this}});var ka=S("Top Left Right Bottom");v.Morph=new E(v,{prepare:function(a){var b= [],c=["Style","Color","Width"],d,e,f;for(d in a)if(d.startsWith("border"))for(e=0;e<c.length;e++)for(f=0;f<ka.length;f++)b.push("border"+ka[f]+c[e]);else if(d=="margin"||d=="padding"){e=b;f=d;for(var i=ka,z=0;z<i.length;z++)e.push(f+i[z])}else if(d.startsWith("background")){e=b;f=["Color","Position","PositionX","PositionY"];for(i=0;i<f.length;i++)e.push("background"+f[i])}else d=="opacity"&&H.IE?b.push("filter"):b.push(d);c=this._cloneStyle(this.element,b);a=this._endStyle(a,b);b=this.element;d=[]; var k;for(k in a)if((k=="width"||k=="height")&&c[k]=="auto")c[k]=b._["offset"+k.capitalize()]+"px";if(a.filter&&!c.filter)c.filter="alpha(opacity=100)";for(e=0;e<4;e++){z=ka[e];f="border"+z+"Style";i="border"+z+"Width";z="border"+z+"Color";if(f in c&&c[f]!=a[f]){var ga=b._.style;if(c[f]=="none")ga[i]="0px";ga[f]=a[f];if(da(c[z]))ga[z]=b.getStyle("Color")}}for(k in a){if(a[k]!==c[k]&&!d.includes(k)&&/color/i.test(k)){if(H.Opera){a[k]=a[k].replace(/"/g,"");c[k]=c[k].replace(/"/g,"")}da(a[k])||(a[k]= a[k].toRgb());da(c[k])||(c[k]=c[k].toRgb());if(!a[k]||!c[k])a[k]=c[k]=""}if(/\\d/.test(a[k])&&!/\\d/.test(c[k]))c[k]=a[k].replace(/[\\d\\.\\-]+/g,"0");if(a[k]===c[k]||d.includes(k)||!/\\d/.test(c[k])||!/\\d/.test(a[k])){delete a[k];delete c[k]}}this.before=Pa(c);this.after=Pa(a)},render:function(a){var b,c,d,e=this.element._.style,f,i,z;for(f in this.after){b=this.before[f];c=this.after[f];i=0;for(z=c.length;i<z;i++){d=b[i]+(c[i]-b[i])*a;if(c.r)d=w.round(d);c.t[i*2+1]=d}e[f]=c.t.join("")}},_endStyle:function(a, b){var c=this.element,d=c.clone().setStyle("position:absolute;z-index:-1;visibility:hidden").setWidth(c.size().x).setStyle(a);c.parent()&&c.insert(d,"before");c=this._cloneStyle(d,b);d.remove();return c},_cloneStyle:function(a,b){for(var c=0,d=b.length,e=a.computedStyles(),f={},i;c<d;c++){i=b[c];if(i in e)f[i]=""+e[i];if(i==="opacity")f[i]=f[i].replace(",",".")}return f}});v.Highlight=new E(v.Morph,{extend:{Options:u.merge(v.Options,{color:"#FF8",transition:"Exp"})},prepare:function(a,b){var c=this.element, d=c._.style,e=b||c.getStyle("backgroundColor");if(da(e)){this.onFinish(function(){d.backgroundColor="transparent"});e=[c].concat(c.parents()).map(function(f){return(f=f.getStyle("backgroundColor"))&&!da(f)?f:null}).compact().first()||"#FFF"}d.backgroundColor=a||this.options.color;return this.$super({backgroundColor:e})}});v.Twin=new E(v.Morph,{finish:function(){this.how=="out"&&cb.call(this.element);return this.$super()},setHow:function(a){this.how=a||"toggle";if(this.how=="toggle")this.how=this.element.visible()? "out":"in"}});v.Slide=new E(v.Twin,{extend:{Options:u.merge(v.Options,{direction:"top"})},prepare:function(a){this.setHow(a);var b=xa.call(this.element);this.size=b.size();this.styles={};S("overflow height width marginTop marginLeft").each(function(c){this.styles[c]=b._.style[c]},this);b._.style.overflow="hidden";this.onFinish("_getBack").onCancel("_getBack");return this.$super(this._getStyle(this.options.direction))},_getBack:function(){this.element.setStyle(this.styles)},_getStyle:function(a){var b= {},c=this.size,d=this.styles.marginLeft.toFloat()||0,e=this.styles.marginTop.toFloat()||0;if(this.how=="out"){b[["top","bottom"].includes(a)?"height":"width"]="0px";if(a=="right")b.marginLeft=d+c.x+"px";else if(a=="bottom")b.marginTop=e+c.y+"px"}else if(this.how=="in"){var f=this.element._.style;if(["top","bottom"].includes(a)){b.height=c.y+"px";f.height="0px"}else{b.width=c.x+"px";f.width="0px"}if(a=="right"){b.marginLeft=d+"px";f.marginLeft=d+c.x+"px"}else if(a=="bottom"){b.marginTop=e+"px";f.marginTop= e+c.y+"px"}}return b}});v.Fade=new E(v.Twin,{prepare:function(a){this.setHow(a);this.how=="in"&&xa.call(this.element.setStyle({opacity:0}));return this.$super({opacity:Sa(a)?a:this.how=="in"?1:0})}});v.Scroll=new E(v,{initialize:function(a,b){a=n(a);this.$super(a instanceof ca?a._.document[H.WebKit?"body":"documentElement"]:a,b)},prepare:function(a){var b=this.before={},c=this.element._;this.after=a;if("x"in a)b.x=c.scrollLeft;if("y"in a)b.y=c.scrollTop},render:function(a){var b=this.before,c;for(c in b)this.element._["scroll"+ (c=="x"?"Left":"Top")]=b[c]+(this.after[c]-b[c])*a}});j.Cookie=new E({include:V,extend:{set:function(a,b,c){return(new this(a,c)).set(b)},get:function(a){return(new this(a)).get()},remove:function(a){return(new this(a)).remove()},enabled:function(){r.cookie="__t=1";return r.cookie.indexOf("__t=1")!=-1},Options:{secure:false,document:r}},initialize:function(a,b){this.name=a;this.setOptions(b)},set:function(a){a=encodeURIComponent(a);var b=this.options;if(b.domain)a+="; domain="+b.domain;if(b.path)a+= "; path="+b.path;if(b.duration){var c=new Date;c.setTime(c.getTime()+b.duration*24*60*60*1E3);a+="; expires="+c.toGMTString()}if(b.secure)a+="; secure";b.document.cookie=this.name+"="+a;return this},get:function(){var a=this.options.document.cookie.match("(?:^|;)\\\\s*"+RegExp.escape(this.name)+"=([^;]*)");return a?decodeURIComponent(a[1]):null},remove:function(){this.options.duration=-1;return this.set("")}});if(j.Browser.OLD)n=j.$=function(a){return function(b){var c=a(b);if(c&&c instanceof j.Element&& j.isString(b)&&c._.id!==b)c=j.$(r).first("#"+b);return c}}(j.$);j.$E("p").getBoundingClientRect||j.Element.include({position:function(){var a=this._,b=a.offsetTop,c=a.offsetLeft;for(a=a.offsetParent;a;){b+=a.offsetTop;c+=a.offsetLeft;a=a.offsetParent}return{x:c,y:b}}});r.querySelector||function(a){function b(g){if(!ya[g]){var h,p,l,A,N,D,y={};for(l=g;h=l.match(vb);){A=A||{};A[h[1]]={o:h[2],v:h[5]||h[6]};l=l.replace(h[0],"")}if(h=l.match(ga)){N=h[1];D=h[3]==""?null:h[3];l=l.replace(h[0],"")}h=(l.match(i)|| [1,null])[1];p=(l.match(z)||"*").toString().toUpperCase();l=(l.match(k)||[1,""])[1].split(".").without("");y.tag=p;if(h||l.length||A||N){var F="function(y){var e,r=[],z=0,x=y.length;for(;z<x;z++){e=y[z];_f_}return r}",G=function(U){F=F.replace("_f_",U+"_f_")};h&&G("if(e.id!=i)continue;");l.length&&G(\'if(e.className){var n=e.className.split(" ");if(n.length==1&&c.indexOf(n[0])==-1)continue;else{for(var i=0,l=c.length,b=false;i<l;i++)if(n.indexOf(c[i])==-1){b=true;break;}if(b)continue;}}else continue;\'); A&&G(\'var p,o,v,k,b=false;for (k in a){p=e.getAttribute(k)||"";o=a[k].o||"";v=a[k].v||"";if((o===""&&e.getAttributeNode(k)===null)||(o==="="&&p!=v)||(o==="*="&&!p.includes(v))||(o==="^="&&!p.startsWith(v))||(o==="$="&&!p.endsWith(v))||(o==="~="&&!p.split(" ").includes(v))||(o==="|="&&!p.split("-").includes(v))){b=true;break;}}if(b){continue;}\');N in e&&G("if(!S[P].call(e,V,S))continue;");y.filter=eval("[function(i,t,c,a,P,V,S,s){return eval(\'[\'+s+\']\')[0]}]")[0](h,p,l,A,N,D,e,F.replace("_f_","r.push(e)"))}ya[g]= y}return ya[g]}function c(g){var h=g.join("");if(!za[h]){for(var p=0;p<g.length;p++)g[p][1]=b(g[p][1]);var l=ua,A=function(D){for(var y=[],F=[],G,U=0,Z=D.length;U<Z;U++){G=l(D[U]);if(!F[G]){y.push(D[U]);F[G]=true}}return y},N=function(D,y){var F=d[y[0]](D,y[1].tag);return y[1].filter?y[1].filter(F):F};za[h]=function(D){for(var y,F,G=0,U=g.length;G<U;G++)if(G===0)y=N(D,g[G]);else{if(G>1)y=A(y);for(var Z=0;Z<y.length;Z++){F=N(y[Z],g[G]);F.unshift(1);F.unshift(Z);y.splice.apply(y,F);Z+=F.length-3}}return g.length> 1?A(y):y}}return za[h]}var d={" ":function(g,h){return a.$A(g.getElementsByTagName(h))},">":function(g,h){for(var p=[],l=g.firstChild;l;){if(h=="*"||l.tagName==h)p.push(l);l=l.nextSibling}return p},"+":function(g,h){for(;g=g.nextSibling;)if(g.tagName)return h=="*"||g.tagName==h?[g]:[];return[]},"~":function(g,h){for(var p=[];g=g.nextSibling;)if(h=="*"||g.tagName==h)p.push(g);return p}},e={checked:function(){return this.checked},disabled:function(){return this.disabled},empty:function(){return!(this.innerText|| this.innerHTML||this.textContent||"").length},"first-child":function(g){for(var h=this;h=h.previousSibling;)if(h.tagName&&(!g||h.tagName==g))return false;return true},"first-of-type":function(g,h){return h["first-child"].call(this,this.tagName)},"last-child":function(g){for(var h=this;h=h.nextSibling;)if(h.tagName&&(!g||h.tagName==g))return false;return true},"last-of-type":function(g,h){return h["last-child"].call(this,this.tagName)},"only-child":function(g,h){return h["first-child"].call(this,g)&& h["last-child"].call(this,g)},"only-of-type":function(g,h){return h["only-child"].call(this,this.tagName,h)},"nth-child":function(g,h,p){if(!this.parentNode)return false;g=g.toLowerCase();if(g=="n")return true;if(g.includes("n")){var l=h=0;if(m=g.match(/^([+\\-]?\\d*)?n([+\\-]?\\d*)?$/)){h=m[1]=="-"?-1:parseInt(m[1],10)||1;l=parseInt(m[2],10)||0}g=1;for(var A=this;A=A.previousSibling;)if(A.tagName&&(!p||A.tagName==p))g++;return(g-l)%h===0&&(g-l)/h>=0}else return h.index.call(this,g.toInt()-1,h,p)},"nth-of-type":function(g, h){return h["nth-child"].call(this,g,h,this.tagName)},index:function(g,h,p){g=a.isString(g)?g.toInt():g;h=this;for(var l=0;h=h.previousSibling;)if(h.tagName&&(!p||h.tagName==p)&&++l>g)return false;return l==g}},f=/((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|[\'"][^\'"]*[\'"]|[^\\[\\]\'"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?/g,i=/#([\\w\\-_]+)/,z=/^[\\w\\*]+/,k=/\\.([\\w\\-\\._]+)/,ga=/:([\\w\\-]+)(\\((.+?)\\))*$/,vb=/\\[((?:[\\w\\-]*:)?[\\w\\-]+)\\s*(?:([!\\^$*~|]?=)\\s*(([\'"])([^\\4]*?)\\4|([^\'"][^\\]]*?)))?\\]/,ya= {},za={},Aa={},la={first:function(g){return this.find(g)[0]},find:function(g){var h=this._;g=g||"*";if(!Aa[g]){f.lastIndex=0;for(var p=[],l=[],A=" ",N,D;N=f.exec(g);){D=N[1];if(D=="+"||D==">"||D=="~")A=D;else{l.push([A,D]);A=" "}if(N[2]){p.push(c(l));l=[]}}p.push(c(l));Aa[g]=p}g=Aa[g];p=[];l=0;for(A=g.length;l<A;l++)p=p.concat(g[l](h));return p.map(a.$)}};la.select=la.find;a.Element.include(la);a.Document.include(la)}(j);I(P,u.without(j,"version","modules"));return j}(window,document,Object,Array, String,Function,Number,Math);');
|
@@ -10,7 +10,7 @@
|
|
10
10
|
* Copyright (C) 2010 Nikolay Nemshilov
|
11
11
|
*/
|
12
12
|
var RightJS = (function(window, document, Object, Array, String, Function, Number, Math) {
|
13
|
-
|
13
|
+
|
14
14
|
/**
|
15
15
|
* The framework description object
|
16
16
|
*
|
@@ -20,7 +20,7 @@ var RightJS = function(value) {
|
|
20
20
|
return value; // <- a dummy method to emulate the safe-mode
|
21
21
|
};
|
22
22
|
|
23
|
-
RightJS.version = "2.0.0
|
23
|
+
RightJS.version = "2.0.0";
|
24
24
|
RightJS.modules =["core", "dom", "form", "events", "xhr", "fx", "cookie"];
|
25
25
|
|
26
26
|
|
@@ -39,13 +39,13 @@ RightJS.modules =["core", "dom", "form", "events", "xhr", "fx", "cookie"];
|
|
39
39
|
/**
|
40
40
|
* Some top-level variables to shortify the things
|
41
41
|
*/
|
42
|
-
var
|
42
|
+
var
|
43
43
|
PROTO = 'prototype', A_proto = Array[PROTO],
|
44
44
|
to_s = Object[PROTO].toString, slice = A_proto.slice,
|
45
45
|
dummy = function() { return function() {}; },
|
46
46
|
HTML = document.documentElement, UID = 1, // !#server
|
47
|
-
Wrappers_Cache = [], UID_KEY = '
|
48
|
-
|
47
|
+
Wrappers_Cache = [], UID_KEY = '_rjs_id', // !#server
|
48
|
+
|
49
49
|
/**
|
50
50
|
* extends the first object with the keys and values of the second one
|
51
51
|
*
|
@@ -57,7 +57,7 @@ Wrappers_Cache = [], UID_KEY = '_rid'+ new Date().getTime(), // !#server
|
|
57
57
|
* @param Boolean flag if the function should not overwrite intersecting values
|
58
58
|
* @return Object extended destination object
|
59
59
|
*/
|
60
|
-
$ext = RightJS.$ext = function(dest, source, dont_overwrite) {
|
60
|
+
$ext = RightJS.$ext = function(dest, source, dont_overwrite) {
|
61
61
|
var src = source || {}, key;
|
62
62
|
|
63
63
|
for (key in src) {
|
@@ -212,7 +212,7 @@ $ = RightJS.$ = function(object) {
|
|
212
212
|
if (typeof object === 'string') {
|
213
213
|
object = document.getElementById(object);
|
214
214
|
}
|
215
|
-
|
215
|
+
|
216
216
|
if (object) {
|
217
217
|
if (UID_KEY in object && object[UID_KEY] in Wrappers_Cache) {
|
218
218
|
object = Wrappers_Cache[object[UID_KEY]];
|
@@ -226,7 +226,7 @@ $ = RightJS.$ = function(object) {
|
|
226
226
|
object = new Window(object);
|
227
227
|
}
|
228
228
|
}
|
229
|
-
|
229
|
+
|
230
230
|
return object;
|
231
231
|
},
|
232
232
|
|
@@ -304,10 +304,10 @@ if (isHash(HTML)) {
|
|
304
304
|
*/
|
305
305
|
var i=0, natives = 'Array Function Number String Date RegExp'.split(' '),
|
306
306
|
include_native = function() {
|
307
|
-
for (var i=0
|
308
|
-
if (isHash(
|
309
|
-
$ext(this[PROTO],
|
310
|
-
$ext(this.Methods,
|
307
|
+
for (var i=0; i < arguments.length; i++) {
|
308
|
+
if (isHash(arguments[i])) {
|
309
|
+
$ext(this[PROTO], arguments[i]);
|
310
|
+
$ext(this.Methods, arguments[i]);
|
311
311
|
}
|
312
312
|
}
|
313
313
|
};
|
@@ -371,7 +371,7 @@ $ext(Object, {
|
|
371
371
|
}
|
372
372
|
return keys;
|
373
373
|
},
|
374
|
-
|
374
|
+
|
375
375
|
/**
|
376
376
|
* extracts the list of the attribute values of the given object
|
377
377
|
*
|
@@ -385,7 +385,7 @@ $ext(Object, {
|
|
385
385
|
}
|
386
386
|
return values;
|
387
387
|
},
|
388
|
-
|
388
|
+
|
389
389
|
/**
|
390
390
|
* Calls the function with every key/value pair on the hash
|
391
391
|
*
|
@@ -398,10 +398,10 @@ $ext(Object, {
|
|
398
398
|
for (var key in object) {
|
399
399
|
callback.call(scope, key, object[key]);
|
400
400
|
}
|
401
|
-
|
401
|
+
|
402
402
|
return object;
|
403
403
|
},
|
404
|
-
|
404
|
+
|
405
405
|
/**
|
406
406
|
* checks if the object-hash has no keys
|
407
407
|
*
|
@@ -412,7 +412,7 @@ $ext(Object, {
|
|
412
412
|
for (var key in object) { return false; }
|
413
413
|
return true;
|
414
414
|
},
|
415
|
-
|
415
|
+
|
416
416
|
/**
|
417
417
|
* returns a copy of the object which contains
|
418
418
|
* all the same keys/values except the key-names
|
@@ -425,16 +425,16 @@ $ext(Object, {
|
|
425
425
|
*/
|
426
426
|
without: function() {
|
427
427
|
var filter = $A(arguments), object = filter.shift(), copy = {}, key;
|
428
|
-
|
428
|
+
|
429
429
|
for (key in object) {
|
430
430
|
if (!filter.includes(key)) {
|
431
431
|
copy[key] = object[key];
|
432
432
|
}
|
433
433
|
}
|
434
|
-
|
434
|
+
|
435
435
|
return copy;
|
436
436
|
},
|
437
|
-
|
437
|
+
|
438
438
|
/**
|
439
439
|
* returns a copy of the object which contains all the
|
440
440
|
* key/value pairs from the specified key-names list
|
@@ -449,21 +449,21 @@ $ext(Object, {
|
|
449
449
|
only: function() {
|
450
450
|
var filter = $A(arguments), object = filter.shift(), copy = {},
|
451
451
|
i=0, length = filter.length;
|
452
|
-
|
452
|
+
|
453
453
|
for (; i < length; i++) {
|
454
454
|
if (filter[i] in object) {
|
455
455
|
copy[filter[i]] = object[filter[i]];
|
456
456
|
}
|
457
457
|
}
|
458
|
-
|
458
|
+
|
459
459
|
return copy;
|
460
460
|
},
|
461
|
-
|
461
|
+
|
462
462
|
/**
|
463
463
|
* merges the given objects and returns the result
|
464
464
|
*
|
465
465
|
* NOTE this method _DO_NOT_ change the objects, it creates a new object
|
466
|
-
* which conatins all the given ones.
|
466
|
+
* which conatins all the given ones.
|
467
467
|
* if there is some keys introspections, the last object wins.
|
468
468
|
* all non-object arguments will be omitted
|
469
469
|
*
|
@@ -481,7 +481,7 @@ $ext(Object, {
|
|
481
481
|
}
|
482
482
|
return object;
|
483
483
|
},
|
484
|
-
|
484
|
+
|
485
485
|
/**
|
486
486
|
* converts a hash-object into an equivalent url query string
|
487
487
|
*
|
@@ -500,6 +500,7 @@ $ext(Object, {
|
|
500
500
|
}
|
501
501
|
}, true);
|
502
502
|
|
503
|
+
|
503
504
|
/**
|
504
505
|
* here are the starndard Math object extends
|
505
506
|
*
|
@@ -524,17 +525,18 @@ var Math_old_random = Math.random;
|
|
524
525
|
* @return Float random between 0 and 1 if there's no arguments or an integer in the given range
|
525
526
|
*/
|
526
527
|
Math.random = function(min, max) {
|
527
|
-
|
528
|
+
|
528
529
|
if (arguments.length === 0) {
|
529
530
|
return Math_old_random();
|
530
531
|
} else if (arguments.length === 1) {
|
531
532
|
max = min;
|
532
533
|
min = 0;
|
533
534
|
}
|
534
|
-
|
535
|
+
|
535
536
|
return ~~(Math_old_random() * (max-min+1) + ~~min);
|
536
537
|
};
|
537
538
|
|
539
|
+
|
538
540
|
/**
|
539
541
|
* The Array class extentions
|
540
542
|
*
|
@@ -550,12 +552,12 @@ var original_sort = A_proto.sort,
|
|
550
552
|
build_loop = function(pre, body, ret) {
|
551
553
|
return eval('[function(c,s){'+
|
552
554
|
'for(var '+pre+'i=0,l=this.length;i<l;i++){'+
|
553
|
-
body.replace('_', 'c.call(s,this[i],i,this)') +
|
555
|
+
body.replace('_', 'c.call(s,this[i],i,this)') +
|
554
556
|
'}' +
|
555
557
|
ret +
|
556
558
|
'}]')[0];
|
557
559
|
},
|
558
|
-
|
560
|
+
|
559
561
|
// JavaScript 1.6 methods recatching up or faking
|
560
562
|
for_each = A_proto.forEach || build_loop('', '_', ''),
|
561
563
|
filter = A_proto.filter || build_loop('r=[],j=0,', 'if(_)r[j++]=this[i]', 'return r'),
|
@@ -572,8 +574,8 @@ last = function(callback, scope) {
|
|
572
574
|
}
|
573
575
|
return null;
|
574
576
|
};
|
575
|
-
|
576
|
-
|
577
|
+
|
578
|
+
|
577
579
|
//
|
578
580
|
// RightJS callbacks magick preprocessing
|
579
581
|
//
|
@@ -581,7 +583,7 @@ last = function(callback, scope) {
|
|
581
583
|
// prepares a correct callback function
|
582
584
|
function guess_callback(argsi, array) {
|
583
585
|
var callback = argsi[0], args = slice.call(argsi, 1), scope = array, attr;
|
584
|
-
|
586
|
+
|
585
587
|
if (isString(callback)) {
|
586
588
|
attr = callback;
|
587
589
|
if (array.length && isFunction(array[0][attr])) {
|
@@ -592,18 +594,18 @@ function guess_callback(argsi, array) {
|
|
592
594
|
} else {
|
593
595
|
scope = args[0];
|
594
596
|
}
|
595
|
-
|
597
|
+
|
596
598
|
return [callback, scope];
|
597
599
|
}
|
598
600
|
|
599
601
|
// calls the given method with preprocessing the arguments
|
600
602
|
function call_method(func, scope, args) {
|
601
603
|
var result;
|
602
|
-
|
604
|
+
|
603
605
|
try {
|
604
606
|
result = func.apply(scope, guess_callback(args, scope));
|
605
607
|
} catch(e) { if (!(e instanceof RightJS.Break)) { throw(e); } }
|
606
|
-
|
608
|
+
|
607
609
|
return result;
|
608
610
|
}
|
609
611
|
|
@@ -616,7 +618,7 @@ function boolean_check(i) {
|
|
616
618
|
function default_sort(a, b) {
|
617
619
|
return a > b ? 1 : a < b ? -1 : 0;
|
618
620
|
}
|
619
|
-
|
621
|
+
|
620
622
|
Array.include({
|
621
623
|
/**
|
622
624
|
* IE fix
|
@@ -634,7 +636,7 @@ Array.include({
|
|
634
636
|
}
|
635
637
|
return -1;
|
636
638
|
},
|
637
|
-
|
639
|
+
|
638
640
|
/**
|
639
641
|
* IE fix
|
640
642
|
* returns the last index of the value in the array
|
@@ -650,7 +652,7 @@ Array.include({
|
|
650
652
|
}
|
651
653
|
return -1;
|
652
654
|
},
|
653
|
-
|
655
|
+
|
654
656
|
/**
|
655
657
|
* returns the first element of the array
|
656
658
|
*
|
@@ -659,7 +661,7 @@ Array.include({
|
|
659
661
|
first: function() {
|
660
662
|
return arguments.length ? call_method(first, this, arguments) : this[0];
|
661
663
|
},
|
662
|
-
|
664
|
+
|
663
665
|
/**
|
664
666
|
* returns the last element of the array
|
665
667
|
*
|
@@ -668,7 +670,7 @@ Array.include({
|
|
668
670
|
last: function() {
|
669
671
|
return arguments.length ? call_method(last, this, arguments) : this[this.length-1];
|
670
672
|
},
|
671
|
-
|
673
|
+
|
672
674
|
/**
|
673
675
|
* returns a random item of the array
|
674
676
|
*
|
@@ -677,7 +679,7 @@ Array.include({
|
|
677
679
|
random: function() {
|
678
680
|
return this.length ? this[Math.random(this.length-1)] : null;
|
679
681
|
},
|
680
|
-
|
682
|
+
|
681
683
|
/**
|
682
684
|
* returns the array size
|
683
685
|
*
|
@@ -686,7 +688,7 @@ Array.include({
|
|
686
688
|
size: function() {
|
687
689
|
return this.length;
|
688
690
|
},
|
689
|
-
|
691
|
+
|
690
692
|
/**
|
691
693
|
* cleans the array
|
692
694
|
* @return Array this
|
@@ -695,7 +697,7 @@ Array.include({
|
|
695
697
|
this.length = 0;
|
696
698
|
return this;
|
697
699
|
},
|
698
|
-
|
700
|
+
|
699
701
|
/**
|
700
702
|
* checks if the array has no elements in it
|
701
703
|
*
|
@@ -704,7 +706,7 @@ Array.include({
|
|
704
706
|
empty: function() {
|
705
707
|
return !this.length;
|
706
708
|
},
|
707
|
-
|
709
|
+
|
708
710
|
/**
|
709
711
|
* creates a copy of the given array
|
710
712
|
*
|
@@ -713,7 +715,7 @@ Array.include({
|
|
713
715
|
clone: function() {
|
714
716
|
return this.slice(0);
|
715
717
|
},
|
716
|
-
|
718
|
+
|
717
719
|
/**
|
718
720
|
* calls the given callback function in the given scope for each element of the array
|
719
721
|
*
|
@@ -726,7 +728,7 @@ Array.include({
|
|
726
728
|
return this;
|
727
729
|
},
|
728
730
|
forEach: for_each,
|
729
|
-
|
731
|
+
|
730
732
|
/**
|
731
733
|
* creates a list of the array items converted in the given callback function
|
732
734
|
*
|
@@ -737,7 +739,7 @@ Array.include({
|
|
737
739
|
map: function() {
|
738
740
|
return call_method(map, this, arguments);
|
739
741
|
},
|
740
|
-
|
742
|
+
|
741
743
|
/**
|
742
744
|
* creates a list of the array items which are matched in the given callback function
|
743
745
|
*
|
@@ -748,7 +750,7 @@ Array.include({
|
|
748
750
|
filter: function() {
|
749
751
|
return call_method(filter, this, arguments);
|
750
752
|
},
|
751
|
-
|
753
|
+
|
752
754
|
/**
|
753
755
|
* creates a list of the array items that are not matching the give callback function
|
754
756
|
*
|
@@ -759,7 +761,7 @@ Array.include({
|
|
759
761
|
reject: function() {
|
760
762
|
return call_method(reject, this, arguments);
|
761
763
|
},
|
762
|
-
|
764
|
+
|
763
765
|
/**
|
764
766
|
* checks if any of the array elements is logically true
|
765
767
|
*
|
@@ -770,7 +772,7 @@ Array.include({
|
|
770
772
|
some: function(value) {
|
771
773
|
return call_method(some, this, value ? arguments : [boolean_check]);
|
772
774
|
},
|
773
|
-
|
775
|
+
|
774
776
|
/**
|
775
777
|
* checks if all the array elements are logically true
|
776
778
|
*
|
@@ -781,7 +783,7 @@ Array.include({
|
|
781
783
|
every: function(value) {
|
782
784
|
return call_method(every, this, value ? arguments : [boolean_check]);
|
783
785
|
},
|
784
|
-
|
786
|
+
|
785
787
|
/**
|
786
788
|
* applies the given lambda to each element in the array
|
787
789
|
*
|
@@ -795,7 +797,7 @@ Array.include({
|
|
795
797
|
this.map.apply(this, arguments).forEach(function(value, i) { this[i] = value; }, this);
|
796
798
|
return this;
|
797
799
|
},
|
798
|
-
|
800
|
+
|
799
801
|
/**
|
800
802
|
* similar to the concat function but it adds only the values which are not on the list yet
|
801
803
|
*
|
@@ -807,7 +809,7 @@ Array.include({
|
|
807
809
|
for (var copy = this.clone(), arg, i=0, j, length = arguments.length; i < length; i++) {
|
808
810
|
arg = arguments[i];
|
809
811
|
arg = ensure_array(arg);
|
810
|
-
|
812
|
+
|
811
813
|
for (j=0; j < arg.length; j++) {
|
812
814
|
if (copy.indexOf(arg[j]) == -1) {
|
813
815
|
copy.push(arg[j]);
|
@@ -816,7 +818,7 @@ Array.include({
|
|
816
818
|
}
|
817
819
|
return copy;
|
818
820
|
},
|
819
|
-
|
821
|
+
|
820
822
|
/**
|
821
823
|
* flats out complex array into a single dimension array
|
822
824
|
*
|
@@ -833,7 +835,7 @@ Array.include({
|
|
833
835
|
});
|
834
836
|
return copy;
|
835
837
|
},
|
836
|
-
|
838
|
+
|
837
839
|
/**
|
838
840
|
* returns a copy of the array whithout any null or undefined values
|
839
841
|
*
|
@@ -842,7 +844,7 @@ Array.include({
|
|
842
844
|
compact: function() {
|
843
845
|
return this.without(null, undefined);
|
844
846
|
},
|
845
|
-
|
847
|
+
|
846
848
|
/**
|
847
849
|
* returns a copy of the array which contains only the unique values
|
848
850
|
*
|
@@ -851,7 +853,7 @@ Array.include({
|
|
851
853
|
uniq: function() {
|
852
854
|
return [].merge(this);
|
853
855
|
},
|
854
|
-
|
856
|
+
|
855
857
|
/**
|
856
858
|
* checks if all of the given values
|
857
859
|
* exists in the given array
|
@@ -868,7 +870,7 @@ Array.include({
|
|
868
870
|
}
|
869
871
|
return true;
|
870
872
|
},
|
871
|
-
|
873
|
+
|
872
874
|
/**
|
873
875
|
* returns a copy of the array without the items passed as the arguments
|
874
876
|
*
|
@@ -882,7 +884,7 @@ Array.include({
|
|
882
884
|
return !filter.includes(value);
|
883
885
|
});
|
884
886
|
},
|
885
|
-
|
887
|
+
|
886
888
|
/**
|
887
889
|
* Shuffles the array items in a random order
|
888
890
|
*
|
@@ -890,12 +892,12 @@ Array.include({
|
|
890
892
|
*/
|
891
893
|
shuffle: function() {
|
892
894
|
var shuff = this.clone(), j, x, i = shuff.length;
|
893
|
-
|
895
|
+
|
894
896
|
for (; i > 0; j = Math.random(i-1), x = shuff[--i], shuff[i] = shuff[j], shuff[j] = x) {}
|
895
|
-
|
897
|
+
|
896
898
|
return shuff;
|
897
899
|
},
|
898
|
-
|
900
|
+
|
899
901
|
/**
|
900
902
|
* Default sort fix for numeric values
|
901
903
|
*
|
@@ -905,7 +907,7 @@ Array.include({
|
|
905
907
|
sort: function(callback) {
|
906
908
|
return original_sort.apply(this, (callback || !isNumber(this[0])) ? arguments : [default_sort]);
|
907
909
|
},
|
908
|
-
|
910
|
+
|
909
911
|
/**
|
910
912
|
* sorts the array by running its items though a lambda or calling their attributes
|
911
913
|
*
|
@@ -915,7 +917,7 @@ Array.include({
|
|
915
917
|
*/
|
916
918
|
sortBy: function() {
|
917
919
|
var pair = guess_callback(arguments, this);
|
918
|
-
|
920
|
+
|
919
921
|
return this.sort(function(a, b) {
|
920
922
|
return default_sort(
|
921
923
|
pair[0].call(pair[1], a),
|
@@ -923,7 +925,7 @@ Array.include({
|
|
923
925
|
);
|
924
926
|
});
|
925
927
|
},
|
926
|
-
|
928
|
+
|
927
929
|
/**
|
928
930
|
* Returns the minimal value on the list
|
929
931
|
*
|
@@ -932,7 +934,7 @@ Array.include({
|
|
932
934
|
min: function() {
|
933
935
|
return Math.min.apply(Math, this);
|
934
936
|
},
|
935
|
-
|
937
|
+
|
936
938
|
/**
|
937
939
|
* Returns the maximal value
|
938
940
|
*
|
@@ -941,7 +943,7 @@ Array.include({
|
|
941
943
|
max: function() {
|
942
944
|
return Math.max.apply(Math, this);
|
943
945
|
},
|
944
|
-
|
946
|
+
|
945
947
|
/**
|
946
948
|
* Returns a summ of all the items on the list
|
947
949
|
*
|
@@ -978,7 +980,7 @@ String.include({
|
|
978
980
|
empty: function() {
|
979
981
|
return this == '';
|
980
982
|
},
|
981
|
-
|
983
|
+
|
982
984
|
/**
|
983
985
|
* checks if the string contains only white-spaces
|
984
986
|
*
|
@@ -987,9 +989,9 @@ String.include({
|
|
987
989
|
blank: function() {
|
988
990
|
return (/^\s*$/).test(this);
|
989
991
|
},
|
990
|
-
|
992
|
+
|
991
993
|
/**
|
992
|
-
* removes trailing whitespaces
|
994
|
+
* removes trailing whitespaces
|
993
995
|
*
|
994
996
|
* @return String trimmed version
|
995
997
|
*/
|
@@ -998,7 +1000,7 @@ String.include({
|
|
998
1000
|
while ((/\s/).test(str.charAt(--i))) {}
|
999
1001
|
return str.slice(0, i + 1);
|
1000
1002
|
},
|
1001
|
-
|
1003
|
+
|
1002
1004
|
/**
|
1003
1005
|
* returns a copy of the string with all the tags removed
|
1004
1006
|
* @return String without tags
|
@@ -1006,10 +1008,10 @@ String.include({
|
|
1006
1008
|
stripTags: function() {
|
1007
1009
|
return this.replace(/<\/?[^>]+>/ig, '');
|
1008
1010
|
},
|
1009
|
-
|
1011
|
+
|
1010
1012
|
/**
|
1011
1013
|
* removes all the scripts declarations out of the string
|
1012
|
-
* @param mixed option. If it equals true the scrips will be executed,
|
1014
|
+
* @param mixed option. If it equals true the scrips will be executed,
|
1013
1015
|
* if a function the scripts will be passed in it
|
1014
1016
|
* @return String without scripts
|
1015
1017
|
*/
|
@@ -1018,16 +1020,16 @@ String.include({
|
|
1018
1020
|
scripts += source + "\n";
|
1019
1021
|
return '';
|
1020
1022
|
});
|
1021
|
-
|
1023
|
+
|
1022
1024
|
if (option === true) {
|
1023
1025
|
$eval(scripts);
|
1024
1026
|
} else if (isFunction(option)) {
|
1025
1027
|
option(scripts, text);
|
1026
1028
|
}
|
1027
|
-
|
1029
|
+
|
1028
1030
|
return text;
|
1029
1031
|
},
|
1030
|
-
|
1032
|
+
|
1031
1033
|
/**
|
1032
1034
|
* extracts all the scripts out of the string
|
1033
1035
|
*
|
@@ -1038,7 +1040,7 @@ String.include({
|
|
1038
1040
|
this.stripScripts(function(s) { scripts = s; });
|
1039
1041
|
return scripts;
|
1040
1042
|
},
|
1041
|
-
|
1043
|
+
|
1042
1044
|
/**
|
1043
1045
|
* evals all the scripts in the string
|
1044
1046
|
*
|
@@ -1048,7 +1050,7 @@ String.include({
|
|
1048
1050
|
this.stripScripts(true);
|
1049
1051
|
return this;
|
1050
1052
|
},
|
1051
|
-
|
1053
|
+
|
1052
1054
|
/**
|
1053
1055
|
* converts underscored or dasherized string to a camelized one
|
1054
1056
|
* @returns String camelized version
|
@@ -1058,7 +1060,7 @@ String.include({
|
|
1058
1060
|
return chr ? chr.toUpperCase() : '';
|
1059
1061
|
});
|
1060
1062
|
},
|
1061
|
-
|
1063
|
+
|
1062
1064
|
/**
|
1063
1065
|
* converts a camelized or dasherized string into an underscored one
|
1064
1066
|
* @return String underscored version
|
@@ -1075,7 +1077,7 @@ String.include({
|
|
1075
1077
|
capitalize: function() {
|
1076
1078
|
return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase();
|
1077
1079
|
},
|
1078
|
-
|
1080
|
+
|
1079
1081
|
/**
|
1080
1082
|
* checks if the string contains the given substring
|
1081
1083
|
*
|
@@ -1085,7 +1087,7 @@ String.include({
|
|
1085
1087
|
includes: function(string) {
|
1086
1088
|
return this.indexOf(string) != -1;
|
1087
1089
|
},
|
1088
|
-
|
1090
|
+
|
1089
1091
|
/**
|
1090
1092
|
* checks if the string starts with the given substring
|
1091
1093
|
*
|
@@ -1095,10 +1097,10 @@ String.include({
|
|
1095
1097
|
*/
|
1096
1098
|
startsWith: function(string, ignorecase) {
|
1097
1099
|
var start_str = this.substr(0, string.length);
|
1098
|
-
return ignorecase ? start_str.toLowerCase() === string.toLowerCase() :
|
1100
|
+
return ignorecase ? start_str.toLowerCase() === string.toLowerCase() :
|
1099
1101
|
start_str === string;
|
1100
1102
|
},
|
1101
|
-
|
1103
|
+
|
1102
1104
|
/**
|
1103
1105
|
* checks if the string ends with the given substring
|
1104
1106
|
*
|
@@ -1111,7 +1113,7 @@ String.include({
|
|
1111
1113
|
return ignorecase ? end_str.toLowerCase() === string.toLowerCase() :
|
1112
1114
|
end_str === string;
|
1113
1115
|
},
|
1114
|
-
|
1116
|
+
|
1115
1117
|
/**
|
1116
1118
|
* converts the string to an integer value
|
1117
1119
|
* @param Integer base
|
@@ -1120,7 +1122,7 @@ String.include({
|
|
1120
1122
|
toInt: function(base) {
|
1121
1123
|
return parseInt(this, base || 10);
|
1122
1124
|
},
|
1123
|
-
|
1125
|
+
|
1124
1126
|
/**
|
1125
1127
|
* converts the string to a float value
|
1126
1128
|
* @param boolean flat if the method should not use a flexible matching
|
@@ -1129,11 +1131,12 @@ String.include({
|
|
1129
1131
|
toFloat: function(strict) {
|
1130
1132
|
return parseFloat(strict ? this : this.replace(',', '.').replace(/(\d)-(\d)/g, '$1.$2'));
|
1131
1133
|
}
|
1132
|
-
|
1134
|
+
|
1133
1135
|
});
|
1134
1136
|
|
1135
1137
|
$alias(String[PROTO], {include: 'includes'});
|
1136
1138
|
|
1139
|
+
|
1137
1140
|
/**
|
1138
1141
|
* The Function class extentions
|
1139
1142
|
*
|
@@ -1184,7 +1187,7 @@ Function.include({
|
|
1184
1187
|
curry: function() {
|
1185
1188
|
return this.bind.apply(this, [this].concat($A(arguments)));
|
1186
1189
|
},
|
1187
|
-
|
1190
|
+
|
1188
1191
|
/**
|
1189
1192
|
* The right side curry feature
|
1190
1193
|
*
|
@@ -1232,7 +1235,7 @@ Function.include({
|
|
1232
1235
|
|
1233
1236
|
return timer;
|
1234
1237
|
},
|
1235
|
-
|
1238
|
+
|
1236
1239
|
/**
|
1237
1240
|
* Chains the given function after the current one
|
1238
1241
|
*
|
@@ -1251,6 +1254,7 @@ Function.include({
|
|
1251
1254
|
}
|
1252
1255
|
});
|
1253
1256
|
|
1257
|
+
|
1254
1258
|
/**
|
1255
1259
|
* The Number class extentions
|
1256
1260
|
*
|
@@ -1274,46 +1278,47 @@ Number.include({
|
|
1274
1278
|
}
|
1275
1279
|
return this;
|
1276
1280
|
},
|
1277
|
-
|
1281
|
+
|
1278
1282
|
upto: function(number, callback, scope) {
|
1279
1283
|
for (var i=this+0; i <= number; i++) {
|
1280
1284
|
callback.call(scope, i);
|
1281
1285
|
}
|
1282
1286
|
return this;
|
1283
1287
|
},
|
1284
|
-
|
1288
|
+
|
1285
1289
|
downto: function(number, callback, scope) {
|
1286
1290
|
for (var i=this+0; i >= number; i--) {
|
1287
1291
|
callback.call(scope, i);
|
1288
1292
|
}
|
1289
1293
|
return this;
|
1290
1294
|
},
|
1291
|
-
|
1295
|
+
|
1292
1296
|
abs: function() {
|
1293
1297
|
return Math.abs(this);
|
1294
1298
|
},
|
1295
|
-
|
1299
|
+
|
1296
1300
|
round: function(size) {
|
1297
1301
|
return size ? parseFloat(this.toFixed(size)) : Math.round(this);
|
1298
1302
|
},
|
1299
|
-
|
1303
|
+
|
1300
1304
|
ceil: function() {
|
1301
1305
|
return Math.ceil(this);
|
1302
1306
|
},
|
1303
|
-
|
1307
|
+
|
1304
1308
|
floor: function() {
|
1305
1309
|
return Math.floor(this);
|
1306
1310
|
},
|
1307
|
-
|
1311
|
+
|
1308
1312
|
min: function(value) {
|
1309
1313
|
return this < value ? value : this + 0;
|
1310
1314
|
},
|
1311
|
-
|
1315
|
+
|
1312
1316
|
max: function(value) {
|
1313
1317
|
return this > value ? value : this + 0;
|
1314
1318
|
}
|
1315
1319
|
});
|
1316
1320
|
|
1321
|
+
|
1317
1322
|
/**
|
1318
1323
|
* The Regexp class extentions
|
1319
1324
|
*
|
@@ -1335,6 +1340,7 @@ RegExp.escape = function(string) {
|
|
1335
1340
|
return (''+string).replace(/([.*+?\^=!:${}()|\[\]\/\\])/g, '\\$1');
|
1336
1341
|
};
|
1337
1342
|
|
1343
|
+
|
1338
1344
|
/**
|
1339
1345
|
* The basic Class unit
|
1340
1346
|
*
|
@@ -1349,7 +1355,7 @@ RegExp.escape = function(string) {
|
|
1349
1355
|
var Class = RightJS.Class = function() {
|
1350
1356
|
var args = $A(arguments), properties = args.pop() || {},
|
1351
1357
|
parent = args.pop();
|
1352
|
-
|
1358
|
+
|
1353
1359
|
// basic class object definition
|
1354
1360
|
function klass() {
|
1355
1361
|
if ('prebind' in this && isArray(this.prebind)) {
|
@@ -1357,7 +1363,7 @@ var Class = RightJS.Class = function() {
|
|
1357
1363
|
this[method] = this[method].bind(this);
|
1358
1364
|
}, this);
|
1359
1365
|
}
|
1360
|
-
|
1366
|
+
|
1361
1367
|
return this.initialize ? this.initialize.apply(this, arguments) : this;
|
1362
1368
|
}
|
1363
1369
|
|
@@ -1365,13 +1371,13 @@ var Class = RightJS.Class = function() {
|
|
1365
1371
|
if (!args.length && !isHash(properties)) {
|
1366
1372
|
parent = properties; properties = {};
|
1367
1373
|
}
|
1368
|
-
|
1374
|
+
|
1369
1375
|
// attaching main class-level methods
|
1370
1376
|
$ext(klass, Class_Methods).inherit(parent);
|
1371
|
-
|
1377
|
+
|
1372
1378
|
// catching the injections
|
1373
1379
|
Class_attachInjections(klass, properties);
|
1374
|
-
|
1380
|
+
|
1375
1381
|
return klass.include(properties);
|
1376
1382
|
},
|
1377
1383
|
|
@@ -1430,9 +1436,9 @@ Class_Methods = {
|
|
1430
1436
|
extend: function() {
|
1431
1437
|
$A(arguments).filter(isHash).each(function(module) {
|
1432
1438
|
var callback = module.selfExtended || module.self_extended;
|
1433
|
-
|
1439
|
+
|
1434
1440
|
$ext(this, clean_module(module, true));
|
1435
|
-
|
1441
|
+
|
1436
1442
|
if (callback) {
|
1437
1443
|
callback.call(module, this);
|
1438
1444
|
}
|
@@ -1455,10 +1461,10 @@ Class_Methods = {
|
|
1455
1461
|
|
1456
1462
|
$A(arguments).filter(isHash).each(function(module) {
|
1457
1463
|
var callback = module.selfIncluded || module.self_included;
|
1458
|
-
|
1464
|
+
|
1459
1465
|
Object.each(clean_module(module, false), function(key, method) {
|
1460
1466
|
var ancestor = ancestors.first(function(proto) { return key in proto && isFunction(proto[key]); });
|
1461
|
-
|
1467
|
+
|
1462
1468
|
this[PROTO][key] = !ancestor ? method : function() {
|
1463
1469
|
this.$super = ancestor[key];
|
1464
1470
|
return method.apply(this, arguments);
|
@@ -1508,10 +1514,11 @@ function Class_findSet(object, property) {
|
|
1508
1514
|
constructor = object.constructor,
|
1509
1515
|
candidates = [object, constructor].concat('ancestors' in constructor ? constructor.ancestors : []),
|
1510
1516
|
holder = candidates.first(function(o) { return o && (upcased in o || capcased in o); });
|
1511
|
-
|
1517
|
+
|
1512
1518
|
return holder ? holder[upcased] || holder[capcased] : null;
|
1513
1519
|
}
|
1514
1520
|
|
1521
|
+
|
1515
1522
|
/**
|
1516
1523
|
* This is a simple mix-in module to be included in other classes
|
1517
1524
|
*
|
@@ -1533,7 +1540,7 @@ var Options = RightJS.Options = {
|
|
1533
1540
|
*/
|
1534
1541
|
setOptions: function(opts) {
|
1535
1542
|
var options = this.options = Object.merge(Class_findSet(this, 'options'), opts), match, key;
|
1536
|
-
|
1543
|
+
|
1537
1544
|
// hooking up the observer options
|
1538
1545
|
if (isFunction(this.on)) {
|
1539
1546
|
for (key in options) {
|
@@ -1543,10 +1550,10 @@ var Options = RightJS.Options = {
|
|
1543
1550
|
}
|
1544
1551
|
}
|
1545
1552
|
}
|
1546
|
-
|
1553
|
+
|
1547
1554
|
return this;
|
1548
1555
|
},
|
1549
|
-
|
1556
|
+
|
1550
1557
|
/**
|
1551
1558
|
* Cuts of an options hash from the end of the arguments list
|
1552
1559
|
* assigns them using the #setOptions method and then
|
@@ -1562,8 +1569,9 @@ var Options = RightJS.Options = {
|
|
1562
1569
|
}
|
1563
1570
|
};
|
1564
1571
|
|
1572
|
+
|
1565
1573
|
/**
|
1566
|
-
* standard Observer class.
|
1574
|
+
* standard Observer class.
|
1567
1575
|
*
|
1568
1576
|
* Might be used as a usual class or as a builder over another objects
|
1569
1577
|
*
|
@@ -1575,18 +1583,18 @@ var Options = RightJS.Options = {
|
|
1575
1583
|
*/
|
1576
1584
|
var Observer = RightJS.Observer = new Class({
|
1577
1585
|
include: Options,
|
1578
|
-
|
1586
|
+
|
1579
1587
|
/**
|
1580
1588
|
* general constructor
|
1581
1589
|
*
|
1582
1590
|
* @param Object options
|
1583
1591
|
*/
|
1584
1592
|
initialize: function(options) {
|
1585
|
-
this.setOptions(options);
|
1593
|
+
this.setOptions(options);
|
1586
1594
|
Observer_createShortcuts(this, Class_findSet(this, 'events'));
|
1587
1595
|
return this;
|
1588
1596
|
},
|
1589
|
-
|
1597
|
+
|
1590
1598
|
/**
|
1591
1599
|
* binds an event listener
|
1592
1600
|
*
|
@@ -1599,7 +1607,7 @@ var Observer = RightJS.Observer = new Class({
|
|
1599
1607
|
*/
|
1600
1608
|
on: function() {
|
1601
1609
|
var args = $A(arguments), event = args.shift(), name;
|
1602
|
-
|
1610
|
+
|
1603
1611
|
if (isString(event)) {
|
1604
1612
|
if (!('$listeners' in this)) { this.$listeners = []; }
|
1605
1613
|
|
@@ -1611,14 +1619,14 @@ var Observer = RightJS.Observer = new Class({
|
|
1611
1619
|
|
1612
1620
|
case "function":
|
1613
1621
|
var hash = {};
|
1614
|
-
|
1622
|
+
|
1615
1623
|
// DON'T move it in the one-line hash variable definition,
|
1616
1624
|
// it causes problems with the Konqueror 3 later on
|
1617
1625
|
hash.e = event;
|
1618
1626
|
hash.f = callback;
|
1619
1627
|
hash.a = args;
|
1620
1628
|
hash.r = name;
|
1621
|
-
|
1629
|
+
|
1622
1630
|
this.$listeners.push(hash);
|
1623
1631
|
break;
|
1624
1632
|
|
@@ -1631,7 +1639,7 @@ var Observer = RightJS.Observer = new Class({
|
|
1631
1639
|
}
|
1632
1640
|
}
|
1633
1641
|
}
|
1634
|
-
|
1642
|
+
|
1635
1643
|
} else {
|
1636
1644
|
// assuming it's a hash of key-value pairs
|
1637
1645
|
for (name in event) {
|
@@ -1640,12 +1648,12 @@ var Observer = RightJS.Observer = new Class({
|
|
1640
1648
|
).concat(args));
|
1641
1649
|
}
|
1642
1650
|
}
|
1643
|
-
|
1644
|
-
|
1645
|
-
|
1651
|
+
|
1652
|
+
|
1653
|
+
|
1646
1654
|
return this;
|
1647
1655
|
},
|
1648
|
-
|
1656
|
+
|
1649
1657
|
/**
|
1650
1658
|
* checks if the observer observes given event and/or callback
|
1651
1659
|
*
|
@@ -1659,13 +1667,13 @@ var Observer = RightJS.Observer = new Class({
|
|
1659
1667
|
observes: function(event, callback) {
|
1660
1668
|
if (!isString(event)) { callback = event; event = null; }
|
1661
1669
|
if (isString(callback)) { callback = this[callback]; }
|
1662
|
-
|
1670
|
+
|
1663
1671
|
return (this.$listeners || []).some(function(i) {
|
1664
1672
|
return (event && callback) ? i.e === event && i.f === callback :
|
1665
1673
|
event ? i.e === event : i.f === callback;
|
1666
1674
|
});
|
1667
1675
|
},
|
1668
|
-
|
1676
|
+
|
1669
1677
|
/**
|
1670
1678
|
* stops observing an event or/and function
|
1671
1679
|
*
|
@@ -1684,16 +1692,16 @@ var Observer = RightJS.Observer = new Class({
|
|
1684
1692
|
} else {
|
1685
1693
|
if (!isString(event)) { callback = event; event = null; }
|
1686
1694
|
if (isString(callback)){ callback = this[callback]; }
|
1687
|
-
|
1695
|
+
|
1688
1696
|
this.$listeners = (this.$listeners || []).filter(function(i) {
|
1689
1697
|
return (event && callback) ? (i.e !== event || i.f !== callback) :
|
1690
1698
|
(event ? i.e !== event : i.f !== callback);
|
1691
1699
|
}, this);
|
1692
1700
|
}
|
1693
|
-
|
1701
|
+
|
1694
1702
|
return this;
|
1695
1703
|
},
|
1696
|
-
|
1704
|
+
|
1697
1705
|
/**
|
1698
1706
|
* returns the listeners list for the event
|
1699
1707
|
*
|
@@ -1708,7 +1716,7 @@ var Observer = RightJS.Observer = new Class({
|
|
1708
1716
|
return !event || i.e === event;
|
1709
1717
|
}).map(function(i) { return i.f; }).uniq();
|
1710
1718
|
},
|
1711
|
-
|
1719
|
+
|
1712
1720
|
/**
|
1713
1721
|
* initiates the event handling
|
1714
1722
|
*
|
@@ -1719,13 +1727,13 @@ var Observer = RightJS.Observer = new Class({
|
|
1719
1727
|
*/
|
1720
1728
|
fire: function() {
|
1721
1729
|
var args = $A(arguments), event = args.shift();
|
1722
|
-
|
1730
|
+
|
1723
1731
|
(this.$listeners || []).each(function(i) {
|
1724
1732
|
if (i.e === event) {
|
1725
1733
|
i.f.apply(this, i.a.concat(args));
|
1726
1734
|
}
|
1727
1735
|
}, this);
|
1728
|
-
|
1736
|
+
|
1729
1737
|
return this;
|
1730
1738
|
}
|
1731
1739
|
}),
|
@@ -1758,7 +1766,7 @@ Observer_createShortcuts = Observer.createShortcuts = function(object, names) {
|
|
1758
1766
|
};
|
1759
1767
|
}
|
1760
1768
|
});
|
1761
|
-
|
1769
|
+
|
1762
1770
|
return object;
|
1763
1771
|
};
|
1764
1772
|
|
@@ -1772,6 +1780,7 @@ var Break = RightJS.Break = new Class(Error, {
|
|
1772
1780
|
message: "Manual break"
|
1773
1781
|
});
|
1774
1782
|
|
1783
|
+
|
1775
1784
|
/**
|
1776
1785
|
* this object will contain info about the current browser
|
1777
1786
|
*
|
@@ -1791,6 +1800,7 @@ Browser = RightJS.Browser = {
|
|
1791
1800
|
OLD: looks_like_ie && !looks_like_opera && !document.querySelector
|
1792
1801
|
};
|
1793
1802
|
|
1803
|
+
|
1794
1804
|
/**
|
1795
1805
|
* The dom-wrapper main unit
|
1796
1806
|
*
|
@@ -1802,13 +1812,13 @@ Browser = RightJS.Browser = {
|
|
1802
1812
|
*/
|
1803
1813
|
|
1804
1814
|
var Wrapper = RightJS.Wrapper = function(parent, methods) {
|
1805
|
-
|
1815
|
+
|
1806
1816
|
// creating the actual wrapper class
|
1807
1817
|
var Klass = function(object, options) {
|
1808
1818
|
this.initialize(object, options);
|
1809
|
-
|
1819
|
+
|
1810
1820
|
var instance = this, unit = instance._, uid;
|
1811
|
-
|
1821
|
+
|
1812
1822
|
// dynamically typecasting in case if the user is creating
|
1813
1823
|
// an element of a subtype via the basic Element constructor
|
1814
1824
|
if (this.constructor === Element && unit.tagName in Element_wrappers) {
|
@@ -1817,24 +1827,24 @@ var Wrapper = RightJS.Wrapper = function(parent, methods) {
|
|
1817
1827
|
instance.$listeners = this.$listeners;
|
1818
1828
|
}
|
1819
1829
|
}
|
1820
|
-
|
1830
|
+
|
1821
1831
|
uid = UID_KEY in unit ? unit[UID_KEY] : (unit[UID_KEY] = UID++);
|
1822
|
-
|
1832
|
+
|
1823
1833
|
return (Wrappers_Cache[uid] = instance);
|
1824
1834
|
};
|
1825
|
-
|
1835
|
+
|
1826
1836
|
// finding the parent
|
1827
1837
|
if (!methods) {
|
1828
1838
|
methods = parent;
|
1829
1839
|
parent = null;
|
1830
1840
|
}
|
1831
|
-
|
1841
|
+
|
1832
1842
|
// hooking up the extedning tools and methods
|
1833
1843
|
$ext(Klass, Class_Methods).inherit(parent || Wrapper);
|
1834
|
-
|
1844
|
+
|
1835
1845
|
// checking for the injections
|
1836
1846
|
Class_attachInjections(Klass, methods);
|
1837
|
-
|
1847
|
+
|
1838
1848
|
// including the basic tools
|
1839
1849
|
return Klass.include({_: undefined}, methods);
|
1840
1850
|
};
|
@@ -1842,6 +1852,7 @@ var Wrapper = RightJS.Wrapper = function(parent, methods) {
|
|
1842
1852
|
// exposing the cache so it could be manupulated externally
|
1843
1853
|
Wrapper.Cache = Wrappers_Cache;
|
1844
1854
|
|
1855
|
+
|
1845
1856
|
/**
|
1846
1857
|
* A simple document wrapper
|
1847
1858
|
*
|
@@ -1851,13 +1862,14 @@ var Document = RightJS.Document = new Wrapper({
|
|
1851
1862
|
initialize: function(document) {
|
1852
1863
|
this._ = document;
|
1853
1864
|
},
|
1854
|
-
|
1865
|
+
|
1855
1866
|
// returns the window reference
|
1856
1867
|
window: function() {
|
1857
1868
|
return $(this._.defaultView || this._.parentWindow);
|
1858
1869
|
}
|
1859
1870
|
});
|
1860
1871
|
|
1872
|
+
|
1861
1873
|
/**
|
1862
1874
|
* the window object extensions
|
1863
1875
|
*
|
@@ -1874,7 +1886,7 @@ var Window = RightJS.Window = new Wrapper({
|
|
1874
1886
|
this._ = window;
|
1875
1887
|
this.d = window.document;
|
1876
1888
|
},
|
1877
|
-
|
1889
|
+
|
1878
1890
|
/**
|
1879
1891
|
* Generic API reference
|
1880
1892
|
*
|
@@ -1883,7 +1895,7 @@ var Window = RightJS.Window = new Wrapper({
|
|
1883
1895
|
window: function() {
|
1884
1896
|
return this;
|
1885
1897
|
},
|
1886
|
-
|
1898
|
+
|
1887
1899
|
/**
|
1888
1900
|
* returns the inner-size of the window
|
1889
1901
|
*
|
@@ -1902,9 +1914,9 @@ var Window = RightJS.Window = new Wrapper({
|
|
1902
1914
|
*/
|
1903
1915
|
scrolls: function() {
|
1904
1916
|
var win = this._, doc = this.d, body = doc.body, html = doc.documentElement;
|
1905
|
-
|
1917
|
+
|
1906
1918
|
return (win.pageXOffset || win.pageYOffset) ? {x: win.pageXOffset, y: win.pageYOffset} :
|
1907
|
-
(body.scrollLeft || body.scrollTop) ? {x: body.scrollLeft, y: body.scrollTop} :
|
1919
|
+
(body && (body.scrollLeft || body.scrollTop)) ? {x: body.scrollLeft, y: body.scrollTop} :
|
1908
1920
|
{x: html.scrollLeft, y: html.scrollTop};
|
1909
1921
|
},
|
1910
1922
|
|
@@ -1918,7 +1930,7 @@ var Window = RightJS.Window = new Wrapper({
|
|
1918
1930
|
*/
|
1919
1931
|
scrollTo: function(left, top, fx_options) {
|
1920
1932
|
var left_pos = left, top_pos = top, element = $(left); // moving the values into new vars so they didn't get screwed later on
|
1921
|
-
|
1933
|
+
|
1922
1934
|
if(element && element instanceof Element) {
|
1923
1935
|
left = element.position();
|
1924
1936
|
}
|
@@ -1927,7 +1939,7 @@ var Window = RightJS.Window = new Wrapper({
|
|
1927
1939
|
top_pos = left.y;
|
1928
1940
|
left_pos = left.x;
|
1929
1941
|
}
|
1930
|
-
|
1942
|
+
|
1931
1943
|
// checking if a smooth scroll was requested
|
1932
1944
|
if (isHash(fx_options = fx_options || top) && RightJS.Fx) {
|
1933
1945
|
new Fx.Scroll(this, fx_options).start({x: left_pos, y: top_pos});
|
@@ -1954,17 +1966,17 @@ var Window = RightJS.Window = new Wrapper({
|
|
1954
1966
|
var Event = RightJS.Event = new Wrapper({
|
1955
1967
|
// predefining the keys to spped up the assignments
|
1956
1968
|
type: null,
|
1957
|
-
|
1969
|
+
|
1958
1970
|
which: null,
|
1959
1971
|
keyCode: null,
|
1960
|
-
|
1972
|
+
|
1961
1973
|
target: null,
|
1962
1974
|
currentTarget: null,
|
1963
1975
|
relatedTarget: null,
|
1964
|
-
|
1976
|
+
|
1965
1977
|
pageX: null,
|
1966
1978
|
pageY: null,
|
1967
|
-
|
1979
|
+
|
1968
1980
|
/**
|
1969
1981
|
* the class constructor
|
1970
1982
|
*
|
@@ -1976,39 +1988,39 @@ var Event = RightJS.Event = new Wrapper({
|
|
1976
1988
|
if (typeof event === 'string') {
|
1977
1989
|
event = Object.merge({type: event}, bound_element);
|
1978
1990
|
this.stopped = event.bubbles === false;
|
1979
|
-
|
1991
|
+
|
1980
1992
|
if (isHash(bound_element)) {
|
1981
1993
|
$ext(this, bound_element);
|
1982
1994
|
}
|
1983
1995
|
}
|
1984
|
-
|
1996
|
+
|
1985
1997
|
this._ = event;
|
1986
1998
|
this.type = event.type;
|
1987
|
-
|
1999
|
+
|
1988
2000
|
this.which = event.which;
|
1989
2001
|
this.keyCode = event.keyCode;
|
1990
|
-
|
2002
|
+
|
1991
2003
|
this.target = $(event.target);
|
1992
2004
|
this.currentTarget = $(event.currentTarget);
|
1993
2005
|
this.relatedTarget = $(event.relatedTarget);
|
1994
|
-
|
2006
|
+
|
1995
2007
|
this.pageX = event.pageX;
|
1996
2008
|
this.pageY = event.pageY;
|
1997
|
-
|
2009
|
+
|
1998
2010
|
if (!('target' in event) && 'srcElement' in event) {
|
1999
2011
|
// grabbin the IE properties
|
2000
2012
|
this.which = event.button == 2 ? 3 : event.button == 4 ? 2 : 1;
|
2001
|
-
|
2002
|
-
// faking the target property
|
2013
|
+
|
2014
|
+
// faking the target property
|
2003
2015
|
this.target = $(event.srcElement) || bound_element;
|
2004
|
-
|
2016
|
+
|
2005
2017
|
// faking the relatedTarget, currentTarget and other targets
|
2006
2018
|
this.relatedTarget = this.target._ === event.fromElement ? $(event.toElement) : this.target;
|
2007
2019
|
this.currentTarget = bound_element;
|
2008
|
-
|
2020
|
+
|
2009
2021
|
// faking the mouse position
|
2010
2022
|
var scrolls = this.target.window().scrolls();
|
2011
|
-
|
2023
|
+
|
2012
2024
|
this.pageX = event.clientX + scrolls.x;
|
2013
2025
|
this.pageY = event.clientY + scrolls.y;
|
2014
2026
|
} else if (event.target && 'nodeType' in event.target && event.target.nodeType === 3) {
|
@@ -2016,7 +2028,7 @@ var Event = RightJS.Event = new Wrapper({
|
|
2016
2028
|
this.target = $(event.target.parentNode);
|
2017
2029
|
}
|
2018
2030
|
},
|
2019
|
-
|
2031
|
+
|
2020
2032
|
/**
|
2021
2033
|
* Stops the event bubbling process
|
2022
2034
|
*
|
@@ -2031,7 +2043,7 @@ var Event = RightJS.Event = new Wrapper({
|
|
2031
2043
|
this.stopped = true;
|
2032
2044
|
return this;
|
2033
2045
|
},
|
2034
|
-
|
2046
|
+
|
2035
2047
|
/**
|
2036
2048
|
* Prevents the default browser action on the event
|
2037
2049
|
*
|
@@ -2045,7 +2057,7 @@ var Event = RightJS.Event = new Wrapper({
|
|
2045
2057
|
}
|
2046
2058
|
return this;
|
2047
2059
|
},
|
2048
|
-
|
2060
|
+
|
2049
2061
|
/**
|
2050
2062
|
* Fully stops the event
|
2051
2063
|
*
|
@@ -2054,7 +2066,7 @@ var Event = RightJS.Event = new Wrapper({
|
|
2054
2066
|
stop: function() {
|
2055
2067
|
return this.stopPropagation().preventDefault();
|
2056
2068
|
},
|
2057
|
-
|
2069
|
+
|
2058
2070
|
/**
|
2059
2071
|
* Returns the event position
|
2060
2072
|
*
|
@@ -2063,7 +2075,7 @@ var Event = RightJS.Event = new Wrapper({
|
|
2063
2075
|
position: function() {
|
2064
2076
|
return {x: this.pageX, y: this.pageY};
|
2065
2077
|
},
|
2066
|
-
|
2078
|
+
|
2067
2079
|
/**
|
2068
2080
|
* Finds the element between the event target
|
2069
2081
|
* and the boundary element that matches the
|
@@ -2089,6 +2101,7 @@ var Event = RightJS.Event = new Wrapper({
|
|
2089
2101
|
|
2090
2102
|
Event_delegation_shortcuts = [];
|
2091
2103
|
|
2104
|
+
|
2092
2105
|
/**
|
2093
2106
|
* The DOM Element unit handling
|
2094
2107
|
*
|
@@ -2141,16 +2154,17 @@ element_constructor = function(element, options) {
|
|
2141
2154
|
}
|
2142
2155
|
};
|
2143
2156
|
|
2144
|
-
|
2145
|
-
|
2146
|
-
|
2147
|
-
|
2148
|
-
|
2149
|
-
|
2157
|
+
//
|
2158
|
+
// IE 6,7,8 (not 9!) browsers have a bug with checkbox and radio input elements
|
2159
|
+
// it doesn't place the 'checked' property correctly, so we kinda hacking
|
2160
|
+
// the Element constructor a bit for them
|
2161
|
+
//
|
2162
|
+
try {
|
2163
|
+
document.createElement('<input/>'); // <- works for IE < 9 only
|
2150
2164
|
element_constructor = patch_function(element_constructor, /(\((\w+),\s*(\w+)\)\s*\{)/,
|
2151
2165
|
'$1if($2==="input"&&$3)$2="<input name="+$3.name+" type="+$3.type+($3.checked?" checked":"")+"/>";'
|
2152
2166
|
);
|
2153
|
-
}
|
2167
|
+
} catch (e) {}
|
2154
2168
|
|
2155
2169
|
/**
|
2156
2170
|
* The actual elements wrapper
|
@@ -2174,9 +2188,9 @@ var Element = RightJS.Element = new Wrapper({
|
|
2174
2188
|
this._ = element;
|
2175
2189
|
}
|
2176
2190
|
},
|
2177
|
-
|
2191
|
+
|
2178
2192
|
// protected
|
2179
|
-
|
2193
|
+
|
2180
2194
|
// constructs the event
|
2181
2195
|
construct: element_constructor
|
2182
2196
|
});
|
@@ -2206,37 +2220,37 @@ Element.include({
|
|
2206
2220
|
parent: function(css_rule) {
|
2207
2221
|
return css_rule ? this.parents(css_rule)[0] : $(this._.parentNode || null); // <- IE6 need that || null
|
2208
2222
|
},
|
2209
|
-
|
2223
|
+
|
2210
2224
|
parents: function(css_rule) {
|
2211
2225
|
return recursively_collect(this, 'parentNode', css_rule);
|
2212
2226
|
},
|
2213
|
-
|
2227
|
+
|
2214
2228
|
children: function(css_rule) {
|
2215
2229
|
return this.find(css_rule).filter(function(element) {
|
2216
2230
|
return element._.parentNode === this._;
|
2217
2231
|
}, this);
|
2218
2232
|
},
|
2219
|
-
|
2233
|
+
|
2220
2234
|
siblings: function(css_rule) {
|
2221
2235
|
return this.prevSiblings(css_rule).reverse().concat(this.nextSiblings(css_rule));
|
2222
2236
|
},
|
2223
|
-
|
2237
|
+
|
2224
2238
|
nextSiblings: function(css_rule) {
|
2225
2239
|
return recursively_collect(this, 'nextSibling', css_rule);
|
2226
2240
|
},
|
2227
|
-
|
2241
|
+
|
2228
2242
|
prevSiblings: function(css_rule) {
|
2229
2243
|
return recursively_collect(this, 'previousSibling', css_rule);
|
2230
2244
|
},
|
2231
|
-
|
2245
|
+
|
2232
2246
|
next: function(css_rule) {
|
2233
2247
|
return this.nextSiblings(css_rule)[0];
|
2234
2248
|
},
|
2235
|
-
|
2249
|
+
|
2236
2250
|
prev: function(css_rule) {
|
2237
2251
|
return this.prevSiblings(css_rule)[0];
|
2238
2252
|
},
|
2239
|
-
|
2253
|
+
|
2240
2254
|
/**
|
2241
2255
|
* removes the elemnt out of this parent node
|
2242
2256
|
*
|
@@ -2249,7 +2263,7 @@ Element.include({
|
|
2249
2263
|
}
|
2250
2264
|
return this;
|
2251
2265
|
},
|
2252
|
-
|
2266
|
+
|
2253
2267
|
/**
|
2254
2268
|
* handles the elements insertion functionality
|
2255
2269
|
*
|
@@ -2257,35 +2271,35 @@ Element.include({
|
|
2257
2271
|
*
|
2258
2272
|
* o) an element instance
|
2259
2273
|
* o) a String, which will be converted into content to insert (all the scripts will be parsed out and executed)
|
2260
|
-
* o) a list of Elements
|
2274
|
+
* o) a list of Elements
|
2261
2275
|
* o) a hash like {position: content}
|
2262
2276
|
*
|
2263
2277
|
* @param mixed data to insert
|
2264
2278
|
* @param String position to insert top/bottom/before/after/instead
|
2265
2279
|
* @return Element self
|
2266
2280
|
*/
|
2267
|
-
insert: function(content, position) {
|
2281
|
+
insert: function(content, position) {
|
2268
2282
|
var scripts = null, element = this._;
|
2269
2283
|
position = (position||'bottom').toLowerCase();
|
2270
|
-
|
2284
|
+
|
2271
2285
|
if (typeof(content) !== 'object') {
|
2272
2286
|
scripts = content = (''+content);
|
2273
2287
|
} else if (content && content instanceof Element) {
|
2274
2288
|
content = content._;
|
2275
2289
|
}
|
2276
|
-
|
2290
|
+
|
2277
2291
|
Element_insertions[position](element, content.tagName ? content :
|
2278
2292
|
Element_createFragment.call(
|
2279
2293
|
(position === 'bottom' || position === 'top') ?
|
2280
2294
|
element : element.parentNode, content
|
2281
2295
|
)
|
2282
2296
|
);
|
2283
|
-
|
2297
|
+
|
2284
2298
|
if (scripts !== null) { scripts.evalScripts(); }
|
2285
|
-
|
2299
|
+
|
2286
2300
|
return this;
|
2287
2301
|
},
|
2288
|
-
|
2302
|
+
|
2289
2303
|
/**
|
2290
2304
|
* Inserts the element inside the given one at the given position
|
2291
2305
|
*
|
@@ -2297,7 +2311,7 @@ Element.include({
|
|
2297
2311
|
$(element).insert(this, position);
|
2298
2312
|
return this;
|
2299
2313
|
},
|
2300
|
-
|
2314
|
+
|
2301
2315
|
/**
|
2302
2316
|
* A shortcut to uppend several units into the element
|
2303
2317
|
*
|
@@ -2305,10 +2319,10 @@ Element.include({
|
|
2305
2319
|
* ..................
|
2306
2320
|
* @return Element this
|
2307
2321
|
*/
|
2308
|
-
append: function() {
|
2309
|
-
return this.insert(arguments);
|
2322
|
+
append: function(first) {
|
2323
|
+
return this.insert(isString(first) ? $A(arguments).join('') : arguments);
|
2310
2324
|
},
|
2311
|
-
|
2325
|
+
|
2312
2326
|
/**
|
2313
2327
|
* updates the content of the element by the given content
|
2314
2328
|
*
|
@@ -2318,21 +2332,21 @@ Element.include({
|
|
2318
2332
|
update: function(content) {
|
2319
2333
|
if (typeof(content) !== 'object') {
|
2320
2334
|
content = '' + content;
|
2321
|
-
|
2335
|
+
|
2322
2336
|
try {
|
2323
2337
|
this._.innerHTML = content;
|
2324
2338
|
} catch(e) {
|
2325
2339
|
return this.clean().insert(content);
|
2326
2340
|
}
|
2327
|
-
|
2341
|
+
|
2328
2342
|
content.evalScripts();
|
2329
|
-
|
2343
|
+
|
2330
2344
|
return this;
|
2331
2345
|
} else {
|
2332
2346
|
return this.clean().insert(content);
|
2333
2347
|
}
|
2334
2348
|
},
|
2335
|
-
|
2349
|
+
|
2336
2350
|
/**
|
2337
2351
|
* Works with the Element's innerHTML property
|
2338
2352
|
* This method works both ways! if a content is provided
|
@@ -2355,7 +2369,7 @@ Element.include({
|
|
2355
2369
|
replace: function(content) {
|
2356
2370
|
return this.insert(content, 'instead');
|
2357
2371
|
},
|
2358
|
-
|
2372
|
+
|
2359
2373
|
/**
|
2360
2374
|
* wraps the element with the given element
|
2361
2375
|
*
|
@@ -2371,7 +2385,7 @@ Element.include({
|
|
2371
2385
|
}
|
2372
2386
|
return this;
|
2373
2387
|
},
|
2374
|
-
|
2388
|
+
|
2375
2389
|
/**
|
2376
2390
|
* removes all the child nodes out of the element
|
2377
2391
|
*
|
@@ -2381,10 +2395,10 @@ Element.include({
|
|
2381
2395
|
while (this._.firstChild) {
|
2382
2396
|
this._.removeChild(this._.firstChild);
|
2383
2397
|
}
|
2384
|
-
|
2398
|
+
|
2385
2399
|
return this;
|
2386
2400
|
},
|
2387
|
-
|
2401
|
+
|
2388
2402
|
/**
|
2389
2403
|
* checks if the element has no child nodes
|
2390
2404
|
*
|
@@ -2393,7 +2407,7 @@ Element.include({
|
|
2393
2407
|
empty: function() {
|
2394
2408
|
return this.html().blank();
|
2395
2409
|
},
|
2396
|
-
|
2410
|
+
|
2397
2411
|
/**
|
2398
2412
|
* Creates a clean clone of the element without any events attached to it
|
2399
2413
|
*
|
@@ -2414,7 +2428,7 @@ Element.include({
|
|
2414
2428
|
* @param name String pointer attribute name
|
2415
2429
|
* @param rule String optional css-atom rule
|
2416
2430
|
* @return Array found elements
|
2417
|
-
*/
|
2431
|
+
*/
|
2418
2432
|
function recursively_collect(where, attr, css_rule) {
|
2419
2433
|
var node = where._, result = [];
|
2420
2434
|
|
@@ -2423,7 +2437,7 @@ function recursively_collect(where, attr, css_rule) {
|
|
2423
2437
|
result.push($(node));
|
2424
2438
|
}
|
2425
2439
|
}
|
2426
|
-
|
2440
|
+
|
2427
2441
|
return result;
|
2428
2442
|
}
|
2429
2443
|
|
@@ -2433,7 +2447,7 @@ var Element_insertions = {
|
|
2433
2447
|
bottom: function(target, content) {
|
2434
2448
|
target.appendChild(content);
|
2435
2449
|
},
|
2436
|
-
|
2450
|
+
|
2437
2451
|
top: function(target, content) {
|
2438
2452
|
if (target.firstChild !== null) {
|
2439
2453
|
target.insertBefore(content, target.firstChild);
|
@@ -2441,7 +2455,7 @@ var Element_insertions = {
|
|
2441
2455
|
target.appendChild(content);
|
2442
2456
|
}
|
2443
2457
|
},
|
2444
|
-
|
2458
|
+
|
2445
2459
|
after: function(target, content) {
|
2446
2460
|
var parent = target.parentNode, sibling = target.nextSibling;
|
2447
2461
|
if (sibling !== null) {
|
@@ -2450,11 +2464,11 @@ var Element_insertions = {
|
|
2450
2464
|
parent.appendChild(content);
|
2451
2465
|
}
|
2452
2466
|
},
|
2453
|
-
|
2467
|
+
|
2454
2468
|
before: function(target, content) {
|
2455
2469
|
target.parentNode.insertBefore(content, target);
|
2456
2470
|
},
|
2457
|
-
|
2471
|
+
|
2458
2472
|
instead: function(target, content) {
|
2459
2473
|
target.parentNode.replaceChild(content, target);
|
2460
2474
|
}
|
@@ -2477,27 +2491,27 @@ $alias(Element_wraps, {
|
|
2477
2491
|
TFOOT: 'TBODY',
|
2478
2492
|
TH: 'TD'
|
2479
2493
|
});
|
2480
|
-
|
2494
|
+
|
2481
2495
|
// converts any data into a html fragment unit
|
2482
2496
|
var fragment = document.createDocumentFragment(),
|
2483
2497
|
tmp_cont = document.createElement('DIV');
|
2484
|
-
|
2498
|
+
|
2485
2499
|
function Element_createFragment(content) {
|
2486
2500
|
if (typeof(content) === 'string') {
|
2487
2501
|
var tag = this.tagName,
|
2488
2502
|
tmp = tmp_cont,
|
2489
2503
|
wrap = Element_wraps[tag] || ['', '', 1],
|
2490
2504
|
depth = wrap[2];
|
2491
|
-
|
2505
|
+
|
2492
2506
|
tmp.innerHTML = wrap[0] + '<'+ tag + '>' + content + '</'+ tag + '>' + wrap[1];
|
2493
|
-
|
2507
|
+
|
2494
2508
|
while (depth-- > 0) {
|
2495
2509
|
tmp = tmp.firstChild;
|
2496
2510
|
}
|
2497
|
-
|
2511
|
+
|
2498
2512
|
content = tmp.childNodes;
|
2499
2513
|
}
|
2500
|
-
|
2514
|
+
|
2501
2515
|
for (var i=0, length = content.length, node; i < length; i++) {
|
2502
2516
|
// in case of NodeList unit, the elements will be removed out of the list during the appends
|
2503
2517
|
// therefore if that's an array we use the 'i' variable, and if it's a collection of nodes
|
@@ -2505,15 +2519,16 @@ function Element_createFragment(content) {
|
|
2505
2519
|
node = content[content.length === length ? i : 0];
|
2506
2520
|
fragment.appendChild(node instanceof Element ? node._ : node);
|
2507
2521
|
}
|
2508
|
-
|
2522
|
+
|
2509
2523
|
return fragment;
|
2510
2524
|
}
|
2511
2525
|
|
2526
|
+
|
2512
2527
|
/**
|
2513
2528
|
* this module contains the element unit styles related methods
|
2514
2529
|
*
|
2515
2530
|
* Credits:
|
2516
|
-
* Some of the functionality is inspired by
|
2531
|
+
* Some of the functionality is inspired by
|
2517
2532
|
* - Prototype (http://prototypejs.org) Copyright (C) Sam Stephenson
|
2518
2533
|
* - MooTools (http://mootools.net) Copyright (C) Valerio Proietti
|
2519
2534
|
* - Dojo (www.dojotoolkit.org) Copyright (C) The Dojo Foundation
|
@@ -2532,7 +2547,7 @@ Element.include({
|
|
2532
2547
|
*/
|
2533
2548
|
setStyle: function(hash, value) {
|
2534
2549
|
var key, c_key, style = {}, element_style = this._.style;
|
2535
|
-
|
2550
|
+
|
2536
2551
|
if (value) { style[hash] = value; hash = style; }
|
2537
2552
|
else if(isString(hash)) {
|
2538
2553
|
hash.split(';').each(function(option) {
|
@@ -2543,11 +2558,11 @@ Element.include({
|
|
2543
2558
|
});
|
2544
2559
|
hash = style;
|
2545
2560
|
}
|
2546
|
-
|
2547
|
-
|
2561
|
+
|
2562
|
+
|
2548
2563
|
for (key in hash) {
|
2549
2564
|
c_key = key.indexOf('-') < 0 ? key : key.camelize();
|
2550
|
-
|
2565
|
+
|
2551
2566
|
if (key === 'opacity') {
|
2552
2567
|
if (Browser.IE) {
|
2553
2568
|
element_style.filter = 'alpha(opacity='+ hash[key] * 100 +')';
|
@@ -2557,13 +2572,13 @@ Element.include({
|
|
2557
2572
|
} else if (key === 'float') {
|
2558
2573
|
c_key = Browser.IE ? 'styleFloat' : 'cssFloat';
|
2559
2574
|
}
|
2560
|
-
|
2575
|
+
|
2561
2576
|
element_style[c_key] = hash[key];
|
2562
2577
|
}
|
2563
|
-
|
2578
|
+
|
2564
2579
|
return this;
|
2565
2580
|
},
|
2566
|
-
|
2581
|
+
|
2567
2582
|
/**
|
2568
2583
|
* returns style of the element
|
2569
2584
|
*
|
@@ -2575,7 +2590,7 @@ Element.include({
|
|
2575
2590
|
getStyle: function(key) {
|
2576
2591
|
return clean_style(this._.style, key) || clean_style(this.computedStyles(), key);
|
2577
2592
|
},
|
2578
|
-
|
2593
|
+
|
2579
2594
|
/**
|
2580
2595
|
* returns the hash of computed styles for the element
|
2581
2596
|
*
|
@@ -2586,17 +2601,17 @@ Element.include({
|
|
2586
2601
|
// old IE, IE8, W3C
|
2587
2602
|
return element.currentStyle || element.runtimeStyle || element.ownerDocument.defaultView.getComputedStyle(element, null) || {};
|
2588
2603
|
},
|
2589
|
-
|
2604
|
+
|
2590
2605
|
/**
|
2591
2606
|
* checks if the element has the given class name
|
2592
|
-
*
|
2607
|
+
*
|
2593
2608
|
* @param String class name
|
2594
2609
|
* @return boolean check result
|
2595
2610
|
*/
|
2596
2611
|
hasClass: function(name) {
|
2597
2612
|
return (' '+this._.className+' ').indexOf(' '+name+' ') != -1;
|
2598
2613
|
},
|
2599
|
-
|
2614
|
+
|
2600
2615
|
/**
|
2601
2616
|
* sets the whole class-name string for the element
|
2602
2617
|
*
|
@@ -2621,7 +2636,7 @@ Element.include({
|
|
2621
2636
|
}
|
2622
2637
|
return this;
|
2623
2638
|
},
|
2624
|
-
|
2639
|
+
|
2625
2640
|
/**
|
2626
2641
|
* removes the given class name
|
2627
2642
|
*
|
@@ -2632,7 +2647,7 @@ Element.include({
|
|
2632
2647
|
this._.className = (' '+this._.className+' ').replace(' '+name+' ', ' ').trim();
|
2633
2648
|
return this;
|
2634
2649
|
},
|
2635
|
-
|
2650
|
+
|
2636
2651
|
/**
|
2637
2652
|
* toggles the given class name on the element
|
2638
2653
|
*
|
@@ -2642,7 +2657,7 @@ Element.include({
|
|
2642
2657
|
toggleClass: function(name) {
|
2643
2658
|
return this[this.hasClass(name) ? 'removeClass' : 'addClass'](name);
|
2644
2659
|
},
|
2645
|
-
|
2660
|
+
|
2646
2661
|
/**
|
2647
2662
|
* adds the given class-name to the element
|
2648
2663
|
* and removes it from all the element siblings
|
@@ -2665,28 +2680,29 @@ Element.include({
|
|
2665
2680
|
*/
|
2666
2681
|
function clean_style(style, in_key) {
|
2667
2682
|
var value, key = in_key.camelize();
|
2668
|
-
|
2683
|
+
|
2669
2684
|
switch (key) {
|
2670
2685
|
case 'opacity':
|
2671
2686
|
value = !Browser.IE ? style[key].replace(',', '.') :
|
2672
2687
|
((/opacity=(\d+)/i.exec(style.filter || '') || ['', '100'])[1].toInt() / 100)+'';
|
2673
2688
|
break;
|
2674
|
-
|
2689
|
+
|
2675
2690
|
case 'float':
|
2676
2691
|
key = Browser.IE ? 'styleFloat' : 'cssFloat';
|
2677
|
-
|
2692
|
+
|
2678
2693
|
default:
|
2679
2694
|
value = style[key];
|
2680
|
-
|
2695
|
+
|
2681
2696
|
// Opera returns named colors with quotes
|
2682
2697
|
if (Browser.Opera && /color/i.test(key) && value) {
|
2683
2698
|
value = value.replace(/"/g, '');
|
2684
2699
|
}
|
2685
2700
|
}
|
2686
|
-
|
2701
|
+
|
2687
2702
|
return value || null;
|
2688
2703
|
}
|
2689
2704
|
|
2705
|
+
|
2690
2706
|
/**
|
2691
2707
|
* Common DOM Element unit methods
|
2692
2708
|
*
|
@@ -2706,9 +2722,9 @@ Element.include({
|
|
2706
2722
|
*/
|
2707
2723
|
set: function(hash, value) {
|
2708
2724
|
if (typeof(hash) === 'string') { var val = {}; val[hash] = value; hash = val; }
|
2709
|
-
|
2725
|
+
|
2710
2726
|
var key, element = this._;
|
2711
|
-
|
2727
|
+
|
2712
2728
|
for (key in hash) {
|
2713
2729
|
// some attributes are not available as properties
|
2714
2730
|
if (!(key in element)) {
|
@@ -2716,10 +2732,10 @@ Element.include({
|
|
2716
2732
|
}
|
2717
2733
|
element[key] = hash[key];
|
2718
2734
|
}
|
2719
|
-
|
2735
|
+
|
2720
2736
|
return this;
|
2721
2737
|
},
|
2722
|
-
|
2738
|
+
|
2723
2739
|
/**
|
2724
2740
|
* returns the attribute value for the name
|
2725
2741
|
*
|
@@ -2730,7 +2746,7 @@ Element.include({
|
|
2730
2746
|
var element = this._, value = element[name] || element.getAttribute(name);
|
2731
2747
|
return value === '' ? null : value;
|
2732
2748
|
},
|
2733
|
-
|
2749
|
+
|
2734
2750
|
/**
|
2735
2751
|
* checks if the element has that attribute
|
2736
2752
|
*
|
@@ -2740,7 +2756,7 @@ Element.include({
|
|
2740
2756
|
has: function(name) {
|
2741
2757
|
return this.get(name) !== null;
|
2742
2758
|
},
|
2743
|
-
|
2759
|
+
|
2744
2760
|
/**
|
2745
2761
|
* erases the given attribute of the element
|
2746
2762
|
*
|
@@ -2751,7 +2767,7 @@ Element.include({
|
|
2751
2767
|
this._.removeAttribute(name);
|
2752
2768
|
return this;
|
2753
2769
|
},
|
2754
|
-
|
2770
|
+
|
2755
2771
|
/**
|
2756
2772
|
* checks if the elemnt is hidden
|
2757
2773
|
*
|
@@ -2762,7 +2778,7 @@ Element.include({
|
|
2762
2778
|
hidden: function() {
|
2763
2779
|
return this.getStyle('display') === 'none';
|
2764
2780
|
},
|
2765
|
-
|
2781
|
+
|
2766
2782
|
/**
|
2767
2783
|
* checks if the element is visible
|
2768
2784
|
*
|
@@ -2771,7 +2787,7 @@ Element.include({
|
|
2771
2787
|
visible: function() {
|
2772
2788
|
return !this.hidden();
|
2773
2789
|
},
|
2774
|
-
|
2790
|
+
|
2775
2791
|
/**
|
2776
2792
|
* hides the element
|
2777
2793
|
*
|
@@ -2784,10 +2800,10 @@ Element.include({
|
|
2784
2800
|
this._d = this.getStyle('display');
|
2785
2801
|
this._.style.display = 'none';
|
2786
2802
|
}
|
2787
|
-
|
2803
|
+
|
2788
2804
|
return this;
|
2789
2805
|
},
|
2790
|
-
|
2806
|
+
|
2791
2807
|
/**
|
2792
2808
|
* shows the element
|
2793
2809
|
*
|
@@ -2799,13 +2815,13 @@ Element.include({
|
|
2799
2815
|
if (this.hidden()) {
|
2800
2816
|
// setting 'block' for the divs and 'inline' for the other elements hidden on the css-level
|
2801
2817
|
var element = this._, value = element.tagName == 'DIV' ? 'block' : 'inline';
|
2802
|
-
|
2818
|
+
|
2803
2819
|
element.style.display = this._d == 'none' ? value : this._d || value;
|
2804
2820
|
}
|
2805
|
-
|
2821
|
+
|
2806
2822
|
return this;
|
2807
2823
|
},
|
2808
|
-
|
2824
|
+
|
2809
2825
|
/**
|
2810
2826
|
* toggles the visibility state of the element
|
2811
2827
|
*
|
@@ -2814,9 +2830,9 @@ Element.include({
|
|
2814
2830
|
* @return Element self
|
2815
2831
|
*/
|
2816
2832
|
toggle: function(effect, options) {
|
2817
|
-
return this[this.
|
2833
|
+
return this[this.visible() ? 'hide' : 'show'](effect, options);
|
2818
2834
|
},
|
2819
|
-
|
2835
|
+
|
2820
2836
|
/**
|
2821
2837
|
* shows the element and hides all the sibligns
|
2822
2838
|
*
|
@@ -2830,8 +2846,9 @@ Element.include({
|
|
2830
2846
|
}
|
2831
2847
|
});
|
2832
2848
|
|
2849
|
+
|
2833
2850
|
/**
|
2834
|
-
* this module contains the Element's part of functionality
|
2851
|
+
* this module contains the Element's part of functionality
|
2835
2852
|
* responsible for the dimensions and positions getting/setting
|
2836
2853
|
*
|
2837
2854
|
* Copyright (C) 2008-2010 Nikolay Nemshilov
|
@@ -2845,7 +2862,7 @@ Element.include({
|
|
2845
2862
|
document: function() {
|
2846
2863
|
return $(this._.ownerDocument);
|
2847
2864
|
},
|
2848
|
-
|
2865
|
+
|
2849
2866
|
/**
|
2850
2867
|
* Returns the reference to this elements window
|
2851
2868
|
*
|
@@ -2854,7 +2871,7 @@ Element.include({
|
|
2854
2871
|
window: function() {
|
2855
2872
|
return this.document().window();
|
2856
2873
|
},
|
2857
|
-
|
2874
|
+
|
2858
2875
|
/**
|
2859
2876
|
* Returns the element size as a hash
|
2860
2877
|
*
|
@@ -2863,7 +2880,7 @@ Element.include({
|
|
2863
2880
|
size: function() {
|
2864
2881
|
return { x: this._.offsetWidth, y: this._.offsetHeight };
|
2865
2882
|
},
|
2866
|
-
|
2883
|
+
|
2867
2884
|
/**
|
2868
2885
|
* Returns the element absolute position
|
2869
2886
|
*
|
@@ -2875,13 +2892,13 @@ Element.include({
|
|
2875
2892
|
var rect = this._.getBoundingClientRect(),
|
2876
2893
|
html = this.document()._.documentElement,
|
2877
2894
|
scrolls = this.window().scrolls();
|
2878
|
-
|
2895
|
+
|
2879
2896
|
return {
|
2880
2897
|
x: rect.left + scrolls.x - html.clientLeft,
|
2881
2898
|
y: rect.top + scrolls.y - html.clientTop
|
2882
2899
|
};
|
2883
2900
|
},
|
2884
|
-
|
2901
|
+
|
2885
2902
|
/**
|
2886
2903
|
* Returns the element scrolls
|
2887
2904
|
*
|
@@ -2890,7 +2907,7 @@ Element.include({
|
|
2890
2907
|
scrolls: function() {
|
2891
2908
|
return { x: this._.scrollLeft, y: this._.scrollTop };
|
2892
2909
|
},
|
2893
|
-
|
2910
|
+
|
2894
2911
|
/**
|
2895
2912
|
* returns the element dimensions hash
|
2896
2913
|
*
|
@@ -2900,7 +2917,7 @@ Element.include({
|
|
2900
2917
|
var size = this.size(),
|
2901
2918
|
scrolls = this.scrolls(),
|
2902
2919
|
position = this.position();
|
2903
|
-
|
2920
|
+
|
2904
2921
|
return {
|
2905
2922
|
top: position.y,
|
2906
2923
|
left: position.x,
|
@@ -2910,7 +2927,7 @@ Element.include({
|
|
2910
2927
|
scrollTop: scrolls.y
|
2911
2928
|
};
|
2912
2929
|
},
|
2913
|
-
|
2930
|
+
|
2914
2931
|
/**
|
2915
2932
|
* Checks if the element overlaps the given position
|
2916
2933
|
*
|
@@ -2919,11 +2936,11 @@ Element.include({
|
|
2919
2936
|
*/
|
2920
2937
|
overlaps: function(target) {
|
2921
2938
|
var pos = this.position(), size = this.size();
|
2922
|
-
|
2939
|
+
|
2923
2940
|
return target.x > pos.x && target.x < (pos.x + size.x) &&
|
2924
2941
|
target.y > pos.y && target.y < (pos.y + size.y);
|
2925
2942
|
},
|
2926
|
-
|
2943
|
+
|
2927
2944
|
/**
|
2928
2945
|
* sets the width of the element in pixels
|
2929
2946
|
*
|
@@ -2939,7 +2956,7 @@ Element.include({
|
|
2939
2956
|
style.width = (2 * width_px - this._.offsetWidth) + 'px';
|
2940
2957
|
return this;
|
2941
2958
|
},
|
2942
|
-
|
2959
|
+
|
2943
2960
|
/**
|
2944
2961
|
* sets the width of the element in pixels
|
2945
2962
|
*
|
@@ -2955,7 +2972,7 @@ Element.include({
|
|
2955
2972
|
style.height = (2 * height_px - this._.offsetHeight) + 'px';
|
2956
2973
|
return this;
|
2957
2974
|
},
|
2958
|
-
|
2975
|
+
|
2959
2976
|
/**
|
2960
2977
|
* sets the size of the element in pixels
|
2961
2978
|
*
|
@@ -2973,7 +2990,7 @@ Element.include({
|
|
2973
2990
|
}
|
2974
2991
|
return this.setWidth(width).setHeight(height);
|
2975
2992
|
},
|
2976
|
-
|
2993
|
+
|
2977
2994
|
/**
|
2978
2995
|
* sets the element position (against the window corner)
|
2979
2996
|
*
|
@@ -2986,13 +3003,13 @@ Element.include({
|
|
2986
3003
|
top = left.y;
|
2987
3004
|
left = left.x;
|
2988
3005
|
}
|
2989
|
-
|
3006
|
+
|
2990
3007
|
return this.setStyle({
|
2991
3008
|
left: left + 'px',
|
2992
3009
|
top: top + 'px'
|
2993
3010
|
});
|
2994
3011
|
},
|
2995
|
-
|
3012
|
+
|
2996
3013
|
/**
|
2997
3014
|
* sets the scroll position
|
2998
3015
|
*
|
@@ -3005,13 +3022,13 @@ Element.include({
|
|
3005
3022
|
top = left.y;
|
3006
3023
|
left = left.x;
|
3007
3024
|
}
|
3008
|
-
|
3025
|
+
|
3009
3026
|
this._.scrollLeft = left;
|
3010
3027
|
this._.scrollTop = top;
|
3011
|
-
|
3028
|
+
|
3012
3029
|
return this;
|
3013
3030
|
},
|
3014
|
-
|
3031
|
+
|
3015
3032
|
/**
|
3016
3033
|
* makes the window be scrolled to the element
|
3017
3034
|
*
|
@@ -3024,10 +3041,11 @@ Element.include({
|
|
3024
3041
|
}
|
3025
3042
|
});
|
3026
3043
|
|
3044
|
+
|
3027
3045
|
/**
|
3028
3046
|
* DOM Element events handling methods
|
3029
3047
|
*
|
3030
|
-
* Copyright (C) 2008-2010 Nikolay
|
3048
|
+
* Copyright (C) 2008-2010 Nikolay Nemshilov
|
3031
3049
|
*/
|
3032
3050
|
var Element_observer = Observer_create({});
|
3033
3051
|
|
@@ -3041,29 +3059,31 @@ function hack_observer(name, re, text) {
|
|
3041
3059
|
Element_observer[name] = patch_function(Element_observer[name], re, text);
|
3042
3060
|
}
|
3043
3061
|
|
3044
|
-
hack_observer('on',
|
3062
|
+
hack_observer('on',
|
3045
3063
|
/(\$listeners\.push\((\w+?)\);)/,
|
3046
|
-
|
3064
|
+
|
3047
3065
|
// aliasing the 'rightclick' to the 'contextmenu' event
|
3048
3066
|
'$1$2.e=$2.n=$2.e==="rightclick"?"contextmenu":$2.e;'+
|
3049
|
-
|
3067
|
+
|
3050
3068
|
// swapping a browser related event names
|
3051
3069
|
(Browser.Gecko ? 'if($2.n==="mousewheel")$2.n="DOMMouseScroll";' : '') +
|
3052
3070
|
(Browser.Konqueror ? 'if($2.n==="contextmenu")$2.n="rightclick";' : '') +
|
3053
|
-
|
3071
|
+
|
3054
3072
|
'$2.w=function(){'+
|
3055
|
-
'var a=$A(arguments)
|
3056
|
-
'$2.
|
3057
|
-
|
3058
|
-
|
3059
|
-
|
3060
|
-
)
|
3073
|
+
'var a=$A(arguments),_;'+
|
3074
|
+
'$2.r&&$2.r!=="stopEvent"?a.shift():_=a[0]=new RightJS.Event(a[0],this);'+
|
3075
|
+
'$2.f.apply($2.t,a.concat($2.a))===false&&_.stop()'+
|
3076
|
+
'};$2.t=this;' + (
|
3077
|
+
looks_like_ie ?
|
3078
|
+
'$2.w=$2.w.bind(this);this._.attachEvent("on"+$2.n,$2.w);' :
|
3079
|
+
'this._.addEventListener($2.n,$2.w,false);'
|
3080
|
+
)
|
3061
3081
|
);
|
3062
3082
|
|
3063
3083
|
hack_observer('stopObserving',
|
3064
|
-
/(function\s*\((\w+)\)\s*\{\s*)(return\s*)([^}]+)/m,
|
3084
|
+
/(function\s*\((\w+)\)\s*\{\s*)(return\s*)([^}]+)/m,
|
3065
3085
|
'$1var r=$4;'+
|
3066
|
-
'if(!r)' + (looks_like_ie ?
|
3086
|
+
'if(!r)' + (looks_like_ie ?
|
3067
3087
|
'this._.detachEvent("on"+$2.n,$2.w);' :
|
3068
3088
|
'this._.removeEventListener($2.n,$2.w,false);'
|
3069
3089
|
)+'$3 r'
|
@@ -3105,7 +3125,7 @@ Observer_createShortcuts(Window[PROTO], $w('blur focus scroll resize load'));
|
|
3105
3125
|
function Element_add_event_shortcuts(tokens) {
|
3106
3126
|
tokens = $w(tokens);
|
3107
3127
|
Event_delegation_shortcuts = Event_delegation_shortcuts.concat(tokens);
|
3108
|
-
|
3128
|
+
|
3109
3129
|
Observer_createShortcuts(Element[PROTO], tokens);
|
3110
3130
|
Observer_createShortcuts(Document[PROTO], tokens);
|
3111
3131
|
}
|
@@ -3147,7 +3167,7 @@ function stub_rule(css_rule, tag) {
|
|
3147
3167
|
first: function(css_rule) {
|
3148
3168
|
return $(this._.querySelector(stub_rule(css_rule, this)));
|
3149
3169
|
},
|
3150
|
-
|
3170
|
+
|
3151
3171
|
/**
|
3152
3172
|
* Finds a list of matching nodes, or all the descendant nodes if no css-rule provided
|
3153
3173
|
*
|
@@ -3158,7 +3178,7 @@ function stub_rule(css_rule, tag) {
|
|
3158
3178
|
return $A(this._.querySelectorAll(stub_rule(css_rule, this))).map($);
|
3159
3179
|
}
|
3160
3180
|
});
|
3161
|
-
|
3181
|
+
|
3162
3182
|
Element.include({
|
3163
3183
|
/**
|
3164
3184
|
* checks if the element matches this css-rule
|
@@ -3170,12 +3190,12 @@ Element.include({
|
|
3170
3190
|
*/
|
3171
3191
|
match: function(css_rule) {
|
3172
3192
|
var result, parent = this._.tagName === 'HTML' ? this._.ownerDocument : this.parents().last();
|
3173
|
-
|
3193
|
+
|
3174
3194
|
// if it's a single node putting it into the context
|
3175
3195
|
result = $(parent || $E('p').insert(this)).find(css_rule).include(this);
|
3176
|
-
|
3196
|
+
|
3177
3197
|
if (!parent) { this.remove(); }
|
3178
|
-
|
3198
|
+
|
3179
3199
|
return result;
|
3180
3200
|
}
|
3181
3201
|
});
|
@@ -3192,17 +3212,17 @@ Element.include({
|
|
3192
3212
|
*/
|
3193
3213
|
[Window, Document].each(function(object) {
|
3194
3214
|
var proto = object[PROTO], old_on = proto.on;
|
3195
|
-
|
3215
|
+
|
3196
3216
|
// redefining the observer method to catch up
|
3197
3217
|
proto.on = function(name) {
|
3198
3218
|
if (name == 'ready' && !this._wR) {
|
3199
3219
|
var document = this._, ready = this.fire.bind(this, 'ready');
|
3200
3220
|
document = document.nodeType == 9 ? document : document.document;
|
3201
|
-
|
3221
|
+
|
3202
3222
|
// IE and Konqueror browsers
|
3203
3223
|
if ('readyState' in document) {
|
3204
3224
|
(function() {
|
3205
|
-
if (['loaded','complete'].includes(document.readyState)) {
|
3225
|
+
if (['loaded','complete'].includes(document.readyState)) {
|
3206
3226
|
ready();
|
3207
3227
|
} else {
|
3208
3228
|
arguments.callee.delay(50);
|
@@ -3211,12 +3231,12 @@ Element.include({
|
|
3211
3231
|
} else {
|
3212
3232
|
document.addEventListener('DOMContentLoaded', ready, false);
|
3213
3233
|
}
|
3214
|
-
|
3234
|
+
|
3215
3235
|
this._wR = true;
|
3216
3236
|
}
|
3217
3237
|
return old_on.apply(this, arguments);
|
3218
3238
|
};
|
3219
|
-
|
3239
|
+
|
3220
3240
|
Observer_createShortcuts(proto, ['ready']);
|
3221
3241
|
});
|
3222
3242
|
|
@@ -3242,6 +3262,7 @@ $alias(Window[PROTO], {
|
|
3242
3262
|
sizes: 'size'
|
3243
3263
|
});
|
3244
3264
|
|
3265
|
+
|
3245
3266
|
/**
|
3246
3267
|
* The form unit class and extensions
|
3247
3268
|
*
|
@@ -3267,19 +3288,19 @@ var Form = RightJS.Form = Element_wrappers.FORM = new Wrapper(Element, {
|
|
3267
3288
|
*/
|
3268
3289
|
initialize: function(in_options) {
|
3269
3290
|
var options = in_options || {}, remote = 'remote' in options, element = options;
|
3270
|
-
|
3291
|
+
|
3271
3292
|
if (isHash(options)) {
|
3272
3293
|
element = 'form';
|
3273
3294
|
options = Object.without(options, 'remote');
|
3274
3295
|
}
|
3275
|
-
|
3296
|
+
|
3276
3297
|
this.$super(element, options);
|
3277
|
-
|
3298
|
+
|
3278
3299
|
if (remote) {
|
3279
3300
|
this.remotize();
|
3280
3301
|
}
|
3281
3302
|
},
|
3282
|
-
|
3303
|
+
|
3283
3304
|
/**
|
3284
3305
|
* returns the form elements as an array of extended units
|
3285
3306
|
*
|
@@ -3288,7 +3309,7 @@ var Form = RightJS.Form = Element_wrappers.FORM = new Wrapper(Element, {
|
|
3288
3309
|
elements: function() {
|
3289
3310
|
return this.find('input,button,select,textarea');
|
3290
3311
|
},
|
3291
|
-
|
3312
|
+
|
3292
3313
|
/**
|
3293
3314
|
* returns the list of all the input elements on the form
|
3294
3315
|
*
|
@@ -3299,7 +3320,7 @@ var Form = RightJS.Form = Element_wrappers.FORM = new Wrapper(Element, {
|
|
3299
3320
|
return !['submit', 'button', 'reset', 'image', null].includes(input._.type);
|
3300
3321
|
});
|
3301
3322
|
},
|
3302
|
-
|
3323
|
+
|
3303
3324
|
/**
|
3304
3325
|
* Accessing an input by name
|
3305
3326
|
*
|
@@ -3309,7 +3330,7 @@ var Form = RightJS.Form = Element_wrappers.FORM = new Wrapper(Element, {
|
|
3309
3330
|
input: function(name) {
|
3310
3331
|
return $(this._[name]);
|
3311
3332
|
},
|
3312
|
-
|
3333
|
+
|
3313
3334
|
/**
|
3314
3335
|
* focuses on the first input element on the form
|
3315
3336
|
*
|
@@ -3319,12 +3340,12 @@ var Form = RightJS.Form = Element_wrappers.FORM = new Wrapper(Element, {
|
|
3319
3340
|
var element = this.inputs().first(function(input) {
|
3320
3341
|
return input._.type !== 'hidden';
|
3321
3342
|
});
|
3322
|
-
|
3343
|
+
|
3323
3344
|
if (element) { element.focus(); }
|
3324
|
-
|
3345
|
+
|
3325
3346
|
return this;
|
3326
3347
|
},
|
3327
|
-
|
3348
|
+
|
3328
3349
|
/**
|
3329
3350
|
* removes focus out of all the form elements
|
3330
3351
|
*
|
@@ -3334,7 +3355,7 @@ var Form = RightJS.Form = Element_wrappers.FORM = new Wrapper(Element, {
|
|
3334
3355
|
this.elements().each('blur');
|
3335
3356
|
return this;
|
3336
3357
|
},
|
3337
|
-
|
3358
|
+
|
3338
3359
|
/**
|
3339
3360
|
* disables all the elements on the form
|
3340
3361
|
*
|
@@ -3344,7 +3365,7 @@ var Form = RightJS.Form = Element_wrappers.FORM = new Wrapper(Element, {
|
|
3344
3365
|
this.elements().each('disable');
|
3345
3366
|
return this;
|
3346
3367
|
},
|
3347
|
-
|
3368
|
+
|
3348
3369
|
/**
|
3349
3370
|
* enables all the elements on the form
|
3350
3371
|
*
|
@@ -3354,7 +3375,7 @@ var Form = RightJS.Form = Element_wrappers.FORM = new Wrapper(Element, {
|
|
3354
3375
|
this.elements().each('enable');
|
3355
3376
|
return this;
|
3356
3377
|
},
|
3357
|
-
|
3378
|
+
|
3358
3379
|
/**
|
3359
3380
|
* returns the list of the form values
|
3360
3381
|
*
|
@@ -3362,7 +3383,7 @@ var Form = RightJS.Form = Element_wrappers.FORM = new Wrapper(Element, {
|
|
3362
3383
|
*/
|
3363
3384
|
values: function() {
|
3364
3385
|
var values = {}, value, name, element, input;
|
3365
|
-
|
3386
|
+
|
3366
3387
|
this.inputs().each(function(element) {
|
3367
3388
|
input = element._;
|
3368
3389
|
name = input.name;
|
@@ -3371,14 +3392,14 @@ var Form = RightJS.Form = Element_wrappers.FORM = new Wrapper(Element, {
|
|
3371
3392
|
if (name.endsWith('[]')) {
|
3372
3393
|
value = (values[name] || []).concat([value]);
|
3373
3394
|
}
|
3374
|
-
|
3395
|
+
|
3375
3396
|
values[name] = value;
|
3376
3397
|
}
|
3377
3398
|
});
|
3378
|
-
|
3399
|
+
|
3379
3400
|
return values;
|
3380
3401
|
},
|
3381
|
-
|
3402
|
+
|
3382
3403
|
/**
|
3383
3404
|
* returns the key/values organized ready to be sent via a get request
|
3384
3405
|
*
|
@@ -3387,7 +3408,7 @@ var Form = RightJS.Form = Element_wrappers.FORM = new Wrapper(Element, {
|
|
3387
3408
|
serialize: function() {
|
3388
3409
|
return Object.toQueryString(this.values());
|
3389
3410
|
},
|
3390
|
-
|
3411
|
+
|
3391
3412
|
/**
|
3392
3413
|
* Delegating the submit method
|
3393
3414
|
*
|
@@ -3397,7 +3418,7 @@ var Form = RightJS.Form = Element_wrappers.FORM = new Wrapper(Element, {
|
|
3397
3418
|
this._.submit();
|
3398
3419
|
return this;
|
3399
3420
|
},
|
3400
|
-
|
3421
|
+
|
3401
3422
|
/**
|
3402
3423
|
* Delegating the 'reset' method
|
3403
3424
|
*
|
@@ -3425,13 +3446,13 @@ $alias(Form[PROTO], {
|
|
3425
3446
|
*/
|
3426
3447
|
var old_insert = Element[PROTO].insert,
|
3427
3448
|
|
3428
|
-
Input = RightJS.Input =
|
3449
|
+
Input = RightJS.Input =
|
3429
3450
|
|
3430
3451
|
// retgistering the typecasted wrappers
|
3431
|
-
Element_wrappers.INPUT =
|
3452
|
+
Element_wrappers.INPUT =
|
3432
3453
|
Element_wrappers.BUTTON =
|
3433
3454
|
Element_wrappers.SELECT =
|
3434
|
-
Element_wrappers.TEXTAREA =
|
3455
|
+
Element_wrappers.TEXTAREA =
|
3435
3456
|
Element_wrappers.OPTGROUP =
|
3436
3457
|
|
3437
3458
|
new Wrapper(Element, {
|
@@ -3455,7 +3476,7 @@ new Wrapper(Element, {
|
|
3455
3476
|
// type to tag name conversion
|
3456
3477
|
if (!element || isHash(element)) {
|
3457
3478
|
options = element || {};
|
3458
|
-
|
3479
|
+
|
3459
3480
|
if (/textarea|select/.test(options.type || '')) {
|
3460
3481
|
element = options.type;
|
3461
3482
|
delete(options.type);
|
@@ -3463,10 +3484,10 @@ new Wrapper(Element, {
|
|
3463
3484
|
element = 'input';
|
3464
3485
|
}
|
3465
3486
|
}
|
3466
|
-
|
3487
|
+
|
3467
3488
|
this.$super(element, options);
|
3468
3489
|
},
|
3469
|
-
|
3490
|
+
|
3470
3491
|
/**
|
3471
3492
|
* Returns a reference to the input's form
|
3472
3493
|
*
|
@@ -3475,7 +3496,7 @@ new Wrapper(Element, {
|
|
3475
3496
|
form: function() {
|
3476
3497
|
return $(this._.form);
|
3477
3498
|
},
|
3478
|
-
|
3499
|
+
|
3479
3500
|
/**
|
3480
3501
|
* SELECT element has a bug in FF that screws the selected options
|
3481
3502
|
*
|
@@ -3485,17 +3506,17 @@ new Wrapper(Element, {
|
|
3485
3506
|
*/
|
3486
3507
|
insert: function(content, position) {
|
3487
3508
|
old_insert.call(this, content, position);
|
3488
|
-
|
3509
|
+
|
3489
3510
|
// FF doesn't marks selected options correctly with a textual content
|
3490
3511
|
if (this._.tagName === 'SELECT' && isString(content)) {
|
3491
3512
|
$A(this._.getElementsByTagName('option')).each(function(option) {
|
3492
3513
|
option.selected = !!option.getAttribute('selected');
|
3493
3514
|
});
|
3494
3515
|
}
|
3495
|
-
|
3516
|
+
|
3496
3517
|
return this;
|
3497
3518
|
},
|
3498
|
-
|
3519
|
+
|
3499
3520
|
/**
|
3500
3521
|
* Overloading the method so it always called the '#insert' method
|
3501
3522
|
*
|
@@ -3505,7 +3526,7 @@ new Wrapper(Element, {
|
|
3505
3526
|
update: function(content) {
|
3506
3527
|
return this.clean().insert(content);
|
3507
3528
|
},
|
3508
|
-
|
3529
|
+
|
3509
3530
|
/**
|
3510
3531
|
* uniform access to the element values
|
3511
3532
|
*
|
@@ -3538,7 +3559,7 @@ new Wrapper(Element, {
|
|
3538
3559
|
}
|
3539
3560
|
return this;
|
3540
3561
|
},
|
3541
|
-
|
3562
|
+
|
3542
3563
|
/**
|
3543
3564
|
* Both ways getter/setter for the value parameter
|
3544
3565
|
*
|
@@ -3548,7 +3569,7 @@ new Wrapper(Element, {
|
|
3548
3569
|
value: function(value) {
|
3549
3570
|
return this[value === undefined ? 'getValue' : 'setValue'](value);
|
3550
3571
|
},
|
3551
|
-
|
3572
|
+
|
3552
3573
|
/**
|
3553
3574
|
* focuses on the first input element on the form
|
3554
3575
|
*
|
@@ -3560,7 +3581,7 @@ new Wrapper(Element, {
|
|
3560
3581
|
if (Browser.IE) { this.fire('focus', {bubbles: false}); }
|
3561
3582
|
return this;
|
3562
3583
|
},
|
3563
|
-
|
3584
|
+
|
3564
3585
|
/**
|
3565
3586
|
* removes focus out of all the form elements
|
3566
3587
|
*
|
@@ -3572,7 +3593,7 @@ new Wrapper(Element, {
|
|
3572
3593
|
if (Browser.IE) { this.fire('blur', {bubbles: false}); }
|
3573
3594
|
return this;
|
3574
3595
|
},
|
3575
|
-
|
3596
|
+
|
3576
3597
|
/**
|
3577
3598
|
* focuses on the element and selects its content
|
3578
3599
|
*
|
@@ -3582,7 +3603,7 @@ new Wrapper(Element, {
|
|
3582
3603
|
this._.select();
|
3583
3604
|
return this.focus();
|
3584
3605
|
},
|
3585
|
-
|
3606
|
+
|
3586
3607
|
/**
|
3587
3608
|
* disables all the elements on the form
|
3588
3609
|
*
|
@@ -3592,7 +3613,7 @@ new Wrapper(Element, {
|
|
3592
3613
|
this._.disabled = true;
|
3593
3614
|
return this.fire('disable');
|
3594
3615
|
},
|
3595
|
-
|
3616
|
+
|
3596
3617
|
/**
|
3597
3618
|
* enables all the elements on the form
|
3598
3619
|
*
|
@@ -3601,6 +3622,33 @@ new Wrapper(Element, {
|
|
3601
3622
|
enable: function() {
|
3602
3623
|
this._.disabled = false;
|
3603
3624
|
return this.fire('enable');
|
3625
|
+
},
|
3626
|
+
|
3627
|
+
/**
|
3628
|
+
* A bidirectional method to set/get the disabled status of the input field
|
3629
|
+
*
|
3630
|
+
* @param boolean optional value
|
3631
|
+
* @return Input in setter mode boolean in getter
|
3632
|
+
*/
|
3633
|
+
disabled: function(value) {
|
3634
|
+
return value === undefined ? this._.disabled : this[value ? 'disable' : 'enable']();
|
3635
|
+
},
|
3636
|
+
|
3637
|
+
/**
|
3638
|
+
* A bidirectional method to set/get the checked status of the input field
|
3639
|
+
*
|
3640
|
+
* @param boolean optional value
|
3641
|
+
* @return Input in setter mode boolean in getter
|
3642
|
+
*/
|
3643
|
+
checked: function(value) {
|
3644
|
+
if (value === undefined) {
|
3645
|
+
value = this._.checked;
|
3646
|
+
} else {
|
3647
|
+
this._.checked = value;
|
3648
|
+
value = this;
|
3649
|
+
}
|
3650
|
+
|
3651
|
+
return value;
|
3604
3652
|
}
|
3605
3653
|
});
|
3606
3654
|
|
@@ -3629,9 +3677,9 @@ function focus_boobler(raw_event) {
|
|
3629
3677
|
var event = new Event(raw_event),
|
3630
3678
|
target = event.target,
|
3631
3679
|
parent = target.parent && target.parent();
|
3632
|
-
|
3680
|
+
|
3633
3681
|
event.type = (raw_event.type === 'focusin' || raw_event.type === 'focus') ? 'focus' : 'blur';
|
3634
|
-
|
3682
|
+
|
3635
3683
|
if (parent) { parent.fire(event); }
|
3636
3684
|
}
|
3637
3685
|
|
@@ -3671,7 +3719,7 @@ if (!event_support_for('onsubmit', 'form')) {
|
|
3671
3719
|
var submit_boobler = function(raw_event) {
|
3672
3720
|
var event = $(raw_event), element = event.target._,
|
3673
3721
|
type = element.type, form = element.form, parent;
|
3674
|
-
|
3722
|
+
|
3675
3723
|
if (form && (parent = $(form).parent()) && (
|
3676
3724
|
(raw_event.keyCode === 13 && (type === 'text' || type === 'password')) ||
|
3677
3725
|
(raw_event.type === 'click' && (type === 'submit' || type === 'image'))
|
@@ -3681,21 +3729,21 @@ if (!event_support_for('onsubmit', 'form')) {
|
|
3681
3729
|
parent.fire(event);
|
3682
3730
|
}
|
3683
3731
|
};
|
3684
|
-
|
3732
|
+
|
3685
3733
|
document.attachEvent('onclick', submit_boobler);
|
3686
3734
|
document.attachEvent('onkeypress', submit_boobler);
|
3687
3735
|
}
|
3688
3736
|
|
3689
3737
|
if (!event_support_for('onchange', 'input')) {
|
3690
|
-
|
3738
|
+
|
3691
3739
|
var get_input_value = function(target) {
|
3692
3740
|
var element = target._,
|
3693
3741
|
type = element.type;
|
3694
|
-
|
3742
|
+
|
3695
3743
|
return type === 'radio' || type === 'checkbox' ?
|
3696
3744
|
element.checked : target.getValue();
|
3697
3745
|
},
|
3698
|
-
|
3746
|
+
|
3699
3747
|
/**
|
3700
3748
|
* Emulates the 'change' event bubbling
|
3701
3749
|
*
|
@@ -3713,7 +3761,7 @@ if (!event_support_for('onchange', 'input')) {
|
|
3713
3761
|
parent.fire(event);
|
3714
3762
|
}
|
3715
3763
|
},
|
3716
|
-
|
3764
|
+
|
3717
3765
|
/**
|
3718
3766
|
* Catches the input field changes
|
3719
3767
|
*
|
@@ -3726,7 +3774,7 @@ if (!event_support_for('onchange', 'input')) {
|
|
3726
3774
|
type = target._.type,
|
3727
3775
|
tag = target._.tagName,
|
3728
3776
|
input_is_radio = (type === 'radio' || type === 'checkbox');
|
3729
|
-
|
3777
|
+
|
3730
3778
|
if (
|
3731
3779
|
(event.type === 'click' && (input_is_radio || tag === 'SELECT')) ||
|
3732
3780
|
(event.type === 'keydown' && (
|
@@ -3737,7 +3785,7 @@ if (!event_support_for('onchange', 'input')) {
|
|
3737
3785
|
change_boobler(event, target);
|
3738
3786
|
}
|
3739
3787
|
},
|
3740
|
-
|
3788
|
+
|
3741
3789
|
/**
|
3742
3790
|
* Catch inputs blur
|
3743
3791
|
*
|
@@ -3747,29 +3795,30 @@ if (!event_support_for('onchange', 'input')) {
|
|
3747
3795
|
catch_input_left = function(raw_event) {
|
3748
3796
|
var event = $(raw_event),
|
3749
3797
|
target = event.target;
|
3750
|
-
|
3798
|
+
|
3751
3799
|
if (target instanceof Input) {
|
3752
3800
|
change_boobler(event, target);
|
3753
3801
|
}
|
3754
3802
|
};
|
3755
|
-
|
3803
|
+
|
3756
3804
|
document.attachEvent('onclick', catch_inputs_access);
|
3757
3805
|
document.attachEvent('onkeydown', catch_inputs_access);
|
3758
3806
|
document.attachEvent('onfocusout', catch_input_left);
|
3759
|
-
|
3807
|
+
|
3760
3808
|
/**
|
3761
3809
|
* storing the input element previous value, so we could figure out
|
3762
3810
|
* if it was changed later on
|
3763
3811
|
*/
|
3764
3812
|
document.attachEvent('onbeforeactivate', function(event) {
|
3765
3813
|
var element = $(event).target;
|
3766
|
-
|
3814
|
+
|
3767
3815
|
if (element instanceof Input) {
|
3768
3816
|
element._prev_value = get_input_value(element);
|
3769
3817
|
}
|
3770
3818
|
});
|
3771
3819
|
}
|
3772
3820
|
|
3821
|
+
|
3773
3822
|
/**
|
3774
3823
|
* This module the standard events delegation interface
|
3775
3824
|
*
|
@@ -3803,15 +3852,15 @@ if (!event_support_for('onchange', 'input')) {
|
|
3803
3852
|
for (i=0, list = rules[css_rule]; i < list.length; i++) {
|
3804
3853
|
// registering the delegative listener
|
3805
3854
|
this.on(event, build_delegative_listener(css_rule, list[i], this));
|
3806
|
-
|
3855
|
+
|
3807
3856
|
// adding the css-rule and callback references to the store
|
3808
3857
|
$ext(this.$listeners.last(), { dr: css_rule, dc: list[i][0] });
|
3809
3858
|
}
|
3810
3859
|
}
|
3811
|
-
|
3860
|
+
|
3812
3861
|
return this;
|
3813
3862
|
},
|
3814
|
-
|
3863
|
+
|
3815
3864
|
/**
|
3816
3865
|
* Removes a delegative event listener from the element
|
3817
3866
|
*
|
@@ -3839,10 +3888,10 @@ if (!event_support_for('onchange', 'input')) {
|
|
3839
3888
|
delegation_listeners(arguments, this).each(function(h) {
|
3840
3889
|
this.stopObserving(h.n, h.f);
|
3841
3890
|
}, this);
|
3842
|
-
|
3891
|
+
|
3843
3892
|
return this;
|
3844
3893
|
},
|
3845
|
-
|
3894
|
+
|
3846
3895
|
/**
|
3847
3896
|
* Checks if there is sucha delegative event listener
|
3848
3897
|
*
|
@@ -3897,7 +3946,7 @@ function build_delegative_listener(css_rule, entry, scope) {
|
|
3897
3946
|
*/
|
3898
3947
|
function delegation_rules(raw_args) {
|
3899
3948
|
var args = $A(raw_args), rules = args[1] || {}, hash = {}, css_rule;
|
3900
|
-
|
3949
|
+
|
3901
3950
|
if (isString(rules)) {
|
3902
3951
|
hash[rules] = args.slice(2);
|
3903
3952
|
if (isArray(hash[rules][0])) {
|
@@ -3906,13 +3955,13 @@ function delegation_rules(raw_args) {
|
|
3906
3955
|
} else {
|
3907
3956
|
hash = rules;
|
3908
3957
|
}
|
3909
|
-
|
3958
|
+
|
3910
3959
|
// converting everything into a hash of lists of callbacks
|
3911
3960
|
for (css_rule in hash) {
|
3912
3961
|
hash[css_rule] = ensure_array(hash[css_rule]);
|
3913
3962
|
hash[css_rule] = isArray(hash[css_rule][0]) ? hash[css_rule] : [hash[css_rule]];
|
3914
3963
|
}
|
3915
|
-
|
3964
|
+
|
3916
3965
|
return hash;
|
3917
3966
|
}
|
3918
3967
|
|
@@ -3927,7 +3976,7 @@ function delegation_listeners(args, object) {
|
|
3927
3976
|
var event = args[0], i, list,
|
3928
3977
|
rules = delegation_rules(args),
|
3929
3978
|
rules_are_empty = !Object.keys(rules).length;
|
3930
|
-
|
3979
|
+
|
3931
3980
|
return (object.$listeners || []).filter(function(hash) {
|
3932
3981
|
return hash.dr && hash.n === event && (
|
3933
3982
|
rules_are_empty || (function() {
|
@@ -3940,7 +3989,7 @@ function delegation_listeners(args, object) {
|
|
3940
3989
|
}
|
3941
3990
|
}
|
3942
3991
|
}
|
3943
|
-
|
3992
|
+
|
3944
3993
|
return false;
|
3945
3994
|
})()
|
3946
3995
|
);
|
@@ -3983,19 +4032,30 @@ Object.each({
|
|
3983
4032
|
}, function(name, method) {
|
3984
4033
|
String[PROTO][name] = function() {
|
3985
4034
|
var doc = $(document), args = $A(arguments), result;
|
3986
|
-
|
4035
|
+
|
3987
4036
|
args.splice(1,0,''+this);
|
3988
4037
|
result = doc[method].apply(doc, args);
|
3989
|
-
|
4038
|
+
|
3990
4039
|
return result === doc ? this : result;
|
3991
4040
|
};
|
3992
4041
|
});
|
4042
|
+
var old_on = String[PROTO].on;
|
4043
|
+
String[PROTO].on = function(hash) {
|
4044
|
+
if (isHash(hash)) {
|
4045
|
+
for (var key in hash) {
|
4046
|
+
old_on.apply(this, [key].concat([hash[key]]));
|
4047
|
+
}
|
4048
|
+
} else {
|
4049
|
+
old_on.apply(this, arguments);
|
4050
|
+
}
|
4051
|
+
return this;
|
4052
|
+
};
|
3993
4053
|
|
3994
4054
|
/**
|
3995
4055
|
* building the list of String#onEvent shortucts
|
3996
4056
|
*
|
3997
4057
|
* USAGE:
|
3998
|
-
*
|
4058
|
+
*
|
3999
4059
|
* "#css.rule".onClick(function() {...});
|
4000
4060
|
* "#css.rule".onMouseover('method_name');
|
4001
4061
|
*/
|
@@ -4005,6 +4065,7 @@ Event_delegation_shortcuts.each(function(name) {
|
|
4005
4065
|
};
|
4006
4066
|
});
|
4007
4067
|
|
4068
|
+
|
4008
4069
|
/**
|
4009
4070
|
* XMLHttpRequest wrapper
|
4010
4071
|
*
|
@@ -4020,7 +4081,7 @@ var Xhr = RightJS.Xhr = new Class(Observer, {
|
|
4020
4081
|
extend: {
|
4021
4082
|
// supported events list
|
4022
4083
|
EVENTS: $w('success failure complete request cancel create'),
|
4023
|
-
|
4084
|
+
|
4024
4085
|
// default options
|
4025
4086
|
Options: {
|
4026
4087
|
headers: {
|
@@ -4042,7 +4103,7 @@ var Xhr = RightJS.Xhr = new Class(Observer, {
|
|
4042
4103
|
iframed: false,
|
4043
4104
|
jsonp: false
|
4044
4105
|
},
|
4045
|
-
|
4106
|
+
|
4046
4107
|
/**
|
4047
4108
|
* Shortcut to initiate and send an XHR in a single call
|
4048
4109
|
*
|
@@ -4054,7 +4115,7 @@ var Xhr = RightJS.Xhr = new Class(Observer, {
|
|
4054
4115
|
return new this(url, Object.merge({method: 'get'}, options)).send();
|
4055
4116
|
}
|
4056
4117
|
},
|
4057
|
-
|
4118
|
+
|
4058
4119
|
/**
|
4059
4120
|
* basic constructor
|
4060
4121
|
*
|
@@ -4063,20 +4124,20 @@ var Xhr = RightJS.Xhr = new Class(Observer, {
|
|
4063
4124
|
*/
|
4064
4125
|
initialize: function(url, options) {
|
4065
4126
|
this.initCallbacks(); // system level callbacks should be initialized before the user callbacks
|
4066
|
-
|
4127
|
+
|
4067
4128
|
this.url = url;
|
4068
4129
|
|
4069
4130
|
// copying some options to the instance level attributes
|
4070
4131
|
$ext(this.$super(options), this.options);
|
4071
|
-
|
4132
|
+
|
4072
4133
|
// removing the local spinner if it's the same as the global one
|
4073
4134
|
if (Xhr.Options.spinner && $(this.spinner) === $(Xhr.Options.spinner)) {
|
4074
4135
|
this.spinner = null;
|
4075
4136
|
}
|
4076
4137
|
},
|
4077
|
-
|
4138
|
+
|
4078
4139
|
/**
|
4079
|
-
* sets a header
|
4140
|
+
* sets a header
|
4080
4141
|
*
|
4081
4142
|
* @param name String header name
|
4082
4143
|
* @param value String header value
|
@@ -4086,7 +4147,7 @@ var Xhr = RightJS.Xhr = new Class(Observer, {
|
|
4086
4147
|
this.headers[name] = value;
|
4087
4148
|
return this;
|
4088
4149
|
},
|
4089
|
-
|
4150
|
+
|
4090
4151
|
/**
|
4091
4152
|
* tries to get a response header
|
4092
4153
|
*
|
@@ -4099,7 +4160,7 @@ var Xhr = RightJS.Xhr = new Class(Observer, {
|
|
4099
4160
|
} catch(e) {}
|
4100
4161
|
return value;
|
4101
4162
|
},
|
4102
|
-
|
4163
|
+
|
4103
4164
|
/**
|
4104
4165
|
* checks if the request was successful
|
4105
4166
|
*
|
@@ -4108,7 +4169,7 @@ var Xhr = RightJS.Xhr = new Class(Observer, {
|
|
4108
4169
|
successful: function() {
|
4109
4170
|
return (this.status >= 200) && (this.status < 300);
|
4110
4171
|
},
|
4111
|
-
|
4172
|
+
|
4112
4173
|
/**
|
4113
4174
|
* performs the actual request sending
|
4114
4175
|
*
|
@@ -4117,46 +4178,46 @@ var Xhr = RightJS.Xhr = new Class(Observer, {
|
|
4117
4178
|
*/
|
4118
4179
|
send: function(params) {
|
4119
4180
|
var add_params = {}, url = this.url, method = this.method.toLowerCase(), headers = this.headers, key, xhr;
|
4120
|
-
|
4181
|
+
|
4121
4182
|
if (method == 'put' || method == 'delete') {
|
4122
4183
|
add_params._method = method;
|
4123
4184
|
method = 'post';
|
4124
4185
|
}
|
4125
|
-
|
4186
|
+
|
4126
4187
|
var data = this.prepareData(this.params, this.prepareParams(params), add_params);
|
4127
|
-
|
4188
|
+
|
4128
4189
|
if (this.urlEncoded && method == 'post' && !headers['Content-type']) {
|
4129
4190
|
this.setHeader('Content-type', 'application/x-www-form-urlencoded;charset='+this.encoding);
|
4130
4191
|
}
|
4131
|
-
|
4192
|
+
|
4132
4193
|
if (method == 'get') {
|
4133
4194
|
if (data) { url += (url.includes('?') ? '&' : '?') + data; }
|
4134
4195
|
data = null;
|
4135
4196
|
}
|
4136
|
-
|
4197
|
+
|
4137
4198
|
xhr = this.xhr = this.createXhr();
|
4138
4199
|
this.fire('create');
|
4139
|
-
|
4200
|
+
|
4140
4201
|
xhr.open(method, url, this.async);
|
4141
|
-
|
4202
|
+
|
4142
4203
|
xhr.onreadystatechange = this.stateChanged.bind(this);
|
4143
|
-
|
4204
|
+
|
4144
4205
|
for (key in headers) {
|
4145
4206
|
xhr.setRequestHeader(key, headers[key]);
|
4146
4207
|
}
|
4147
|
-
|
4208
|
+
|
4148
4209
|
xhr.send(data);
|
4149
4210
|
this.fire('request');
|
4150
|
-
|
4211
|
+
|
4151
4212
|
if (!this.async) { this.stateChanged(); }
|
4152
|
-
|
4213
|
+
|
4153
4214
|
return this;
|
4154
4215
|
},
|
4155
|
-
|
4216
|
+
|
4156
4217
|
/**
|
4157
|
-
* elements automaticall update method, creates an Xhr request
|
4218
|
+
* elements automaticall update method, creates an Xhr request
|
4158
4219
|
* and updates the element innerHTML value onSuccess.
|
4159
|
-
*
|
4220
|
+
*
|
4160
4221
|
* @param Element element
|
4161
4222
|
* @param Object optional request params
|
4162
4223
|
* @return Xhr self
|
@@ -4164,7 +4225,7 @@ var Xhr = RightJS.Xhr = new Class(Observer, {
|
|
4164
4225
|
update: function(element, params) {
|
4165
4226
|
return this.onSuccess(function(r) { element.update(r.text); }).send(params);
|
4166
4227
|
},
|
4167
|
-
|
4228
|
+
|
4168
4229
|
/**
|
4169
4230
|
* stops the request processing
|
4170
4231
|
*
|
@@ -4172,22 +4233,22 @@ var Xhr = RightJS.Xhr = new Class(Observer, {
|
|
4172
4233
|
*/
|
4173
4234
|
cancel: function() {
|
4174
4235
|
var xhr = this.xhr;
|
4175
|
-
|
4236
|
+
|
4176
4237
|
if (!xhr || xhr.canceled) { return this; }
|
4177
|
-
|
4238
|
+
|
4178
4239
|
xhr.abort();
|
4179
4240
|
xhr.onreadystatechange = dummy();
|
4180
4241
|
xhr.canceled = true;
|
4181
|
-
|
4242
|
+
|
4182
4243
|
return this.fire('cancel');
|
4183
4244
|
},
|
4184
|
-
|
4245
|
+
|
4185
4246
|
// protected
|
4186
4247
|
// wrapping the original method to send references to the xhr objects
|
4187
4248
|
fire: function(name) {
|
4188
4249
|
return this.$super(name, this, this.xhr);
|
4189
4250
|
},
|
4190
|
-
|
4251
|
+
|
4191
4252
|
// creates new request instance
|
4192
4253
|
createXhr: function() {
|
4193
4254
|
if (this.jsonp) {
|
@@ -4202,7 +4263,7 @@ var Xhr = RightJS.Xhr = new Class(Observer, {
|
|
4202
4263
|
}
|
4203
4264
|
}
|
4204
4265
|
},
|
4205
|
-
|
4266
|
+
|
4206
4267
|
// prepares user sending params
|
4207
4268
|
prepareParams: function(params) {
|
4208
4269
|
if (params && params instanceof Form) {
|
@@ -4211,7 +4272,7 @@ var Xhr = RightJS.Xhr = new Class(Observer, {
|
|
4211
4272
|
}
|
4212
4273
|
return params;
|
4213
4274
|
},
|
4214
|
-
|
4275
|
+
|
4215
4276
|
// converts all the params into a url params string
|
4216
4277
|
prepareData: function() {
|
4217
4278
|
return $A(arguments).map(function(param) {
|
@@ -4225,22 +4286,22 @@ var Xhr = RightJS.Xhr = new Class(Observer, {
|
|
4225
4286
|
// handles the state change
|
4226
4287
|
stateChanged: function() {
|
4227
4288
|
var xhr = this.xhr;
|
4228
|
-
|
4289
|
+
|
4229
4290
|
if (xhr.readyState != 4 || xhr.canceled) { return; }
|
4230
|
-
|
4291
|
+
|
4231
4292
|
try { this.status = xhr.status;
|
4232
4293
|
} catch(e) { this.status = 0; }
|
4233
|
-
|
4294
|
+
|
4234
4295
|
this.text = this.responseText = xhr.responseText;
|
4235
4296
|
this.xml = this.responseXML = xhr.responseXML;
|
4236
|
-
|
4297
|
+
|
4237
4298
|
this.fire('complete').fire(this.successful() ? 'success' : 'failure');
|
4238
4299
|
},
|
4239
|
-
|
4300
|
+
|
4240
4301
|
// called on success
|
4241
4302
|
tryScripts: function(response) {
|
4242
4303
|
var content_type = this.getHeader('Content-type');
|
4243
|
-
|
4304
|
+
|
4244
4305
|
if (this.evalResponse || (this.evalJS && /(ecma|java)script/i.test(content_type))) {
|
4245
4306
|
$eval(this.text);
|
4246
4307
|
} else if (/json/.test(content_type) && this.evalJSON) {
|
@@ -4249,7 +4310,7 @@ var Xhr = RightJS.Xhr = new Class(Observer, {
|
|
4249
4310
|
this.text.evalScripts();
|
4250
4311
|
}
|
4251
4312
|
},
|
4252
|
-
|
4313
|
+
|
4253
4314
|
// sanitizes the json-response texts
|
4254
4315
|
sanitizedJSON: function() {
|
4255
4316
|
try {
|
@@ -4257,17 +4318,17 @@ var Xhr = RightJS.Xhr = new Class(Observer, {
|
|
4257
4318
|
} catch(e) {
|
4258
4319
|
// manual json consistancy check
|
4259
4320
|
if (window.JSON || !(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(this.text.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''))) {
|
4260
|
-
if (this.secureJSON) {
|
4321
|
+
if (this.secureJSON) {
|
4261
4322
|
throw "JSON error: "+this.text;
|
4262
4323
|
}
|
4263
4324
|
return null;
|
4264
4325
|
}
|
4265
4326
|
}
|
4266
|
-
|
4327
|
+
|
4267
4328
|
// the fallback JSON extraction
|
4268
4329
|
return eval("("+this.text+")");
|
4269
4330
|
},
|
4270
|
-
|
4331
|
+
|
4271
4332
|
// initializes the request callbacks
|
4272
4333
|
initCallbacks: function() {
|
4273
4334
|
// connecting basic callbacks
|
@@ -4277,13 +4338,13 @@ var Xhr = RightJS.Xhr = new Class(Observer, {
|
|
4277
4338
|
complete: 'hideSpinner',
|
4278
4339
|
cancel: 'hideSpinner'
|
4279
4340
|
});
|
4280
|
-
|
4341
|
+
|
4281
4342
|
// wiring the global xhr callbacks
|
4282
4343
|
Xhr.EVENTS.each(function(name) {
|
4283
4344
|
this.on(name, function() { Xhr.fire(name, this, this.xhr); });
|
4284
4345
|
}, this);
|
4285
4346
|
},
|
4286
|
-
|
4347
|
+
|
4287
4348
|
showSpinner: function() { Xhr.showSpinner.call(this, this); },
|
4288
4349
|
hideSpinner: function() { Xhr.hideSpinner.call(this, this); }
|
4289
4350
|
});
|
@@ -4291,28 +4352,28 @@ var Xhr = RightJS.Xhr = new Class(Observer, {
|
|
4291
4352
|
// attaching the common spinner handling
|
4292
4353
|
$ext(Observer_create(Xhr), {
|
4293
4354
|
counter: 0,
|
4294
|
-
|
4355
|
+
|
4295
4356
|
// shows the spinner
|
4296
4357
|
showSpinner: function(context) {
|
4297
4358
|
Xhr.trySpinner(context, 'show');
|
4298
4359
|
},
|
4299
|
-
|
4360
|
+
|
4300
4361
|
// hides the spinner
|
4301
4362
|
hideSpinner: function(context) {
|
4302
4363
|
Xhr.trySpinner(context, 'hide');
|
4303
4364
|
},
|
4304
|
-
|
4365
|
+
|
4305
4366
|
trySpinner: function(context, method) {
|
4306
4367
|
var object = context || Xhr.Options, spinner = $(object.spinner);
|
4307
4368
|
if (spinner) { spinner[method](object.spinnerFx, {duration: 100}); }
|
4308
4369
|
},
|
4309
|
-
|
4370
|
+
|
4310
4371
|
// counts a request in
|
4311
4372
|
countIn: function() {
|
4312
4373
|
Xhr.counter ++;
|
4313
4374
|
Xhr.showSpinner();
|
4314
4375
|
},
|
4315
|
-
|
4376
|
+
|
4316
4377
|
// counts a request out
|
4317
4378
|
countOut: function() {
|
4318
4379
|
Xhr.counter --;
|
@@ -4362,9 +4423,9 @@ Form.include({
|
|
4362
4423
|
options.method = options.method || this._.method || 'post';
|
4363
4424
|
|
4364
4425
|
new Xhr(this._.action || document.location.href, options)
|
4365
|
-
.onRequest((function() {this.disable.bind(this).delay(20);}).bind(this))
|
4366
4426
|
.onComplete(this.enable.bind(this)).send(this);
|
4367
4427
|
|
4428
|
+
this.disable.bind(this).delay(1); // webkit needs this async call with iframed calls
|
4368
4429
|
return this;
|
4369
4430
|
},
|
4370
4431
|
|
@@ -4419,6 +4480,7 @@ Element.include({
|
|
4419
4480
|
}
|
4420
4481
|
});
|
4421
4482
|
|
4483
|
+
|
4422
4484
|
/**
|
4423
4485
|
* A dummy XmlHTTPRequest interface to be used in other
|
4424
4486
|
* fake requests
|
@@ -4441,7 +4503,7 @@ Xhr.Dummy = {
|
|
4441
4503
|
*/
|
4442
4504
|
Xhr.IFramed = new Class({
|
4443
4505
|
include: Xhr.Dummy,
|
4444
|
-
|
4506
|
+
|
4445
4507
|
/**
|
4446
4508
|
* constructor
|
4447
4509
|
*
|
@@ -4451,30 +4513,31 @@ Xhr.IFramed = new Class({
|
|
4451
4513
|
initialize: function(form) {
|
4452
4514
|
this.form = form;
|
4453
4515
|
this.id = 'xhr_'+ new Date().getTime();
|
4454
|
-
|
4516
|
+
|
4455
4517
|
form.insert('<i><iframe name="'+this.id+'" id="'+this.id+
|
4456
4518
|
'" width="0" height="0" frameborder="0" src="about:blank"></iframe></i>',
|
4457
4519
|
'after');
|
4458
|
-
|
4520
|
+
|
4459
4521
|
$(this.id).on('load', this.onLoad.bind(this));
|
4460
4522
|
},
|
4461
|
-
|
4523
|
+
|
4462
4524
|
send: function() {
|
4463
4525
|
this.form.set('target', this.id).submit();
|
4464
4526
|
},
|
4465
|
-
|
4527
|
+
|
4466
4528
|
onLoad: function() {
|
4467
4529
|
this.status = 200;
|
4468
4530
|
this.readyState = 4;
|
4469
|
-
|
4531
|
+
|
4470
4532
|
try {
|
4471
4533
|
this.responseText = window[this.id].document.documentElement.innerHTML;
|
4472
4534
|
} catch(e) { }
|
4473
|
-
|
4535
|
+
|
4474
4536
|
this.onreadystatechange();
|
4475
4537
|
}
|
4476
4538
|
});
|
4477
4539
|
|
4540
|
+
|
4478
4541
|
/**
|
4479
4542
|
* The JSONP Xhr request tonnel
|
4480
4543
|
*
|
@@ -4482,9 +4545,9 @@ Xhr.IFramed = new Class({
|
|
4482
4545
|
*/
|
4483
4546
|
Xhr.JSONP = new Class({
|
4484
4547
|
include: Xhr.Dummy,
|
4485
|
-
|
4548
|
+
|
4486
4549
|
prefix: 'jsonp',
|
4487
|
-
|
4550
|
+
|
4488
4551
|
/**
|
4489
4552
|
* Constructor
|
4490
4553
|
*
|
@@ -4496,13 +4559,13 @@ Xhr.JSONP = new Class({
|
|
4496
4559
|
this.name = this.prefix + new Date().getTime();
|
4497
4560
|
this.param = (isString(xhr.jsonp) ?
|
4498
4561
|
xhr.jsonp : 'callback') + "=" + this.name;
|
4499
|
-
|
4562
|
+
|
4500
4563
|
this.script = $E('script', {
|
4501
4564
|
charset: xhr.encoding,
|
4502
4565
|
async: xhr.async
|
4503
4566
|
});
|
4504
4567
|
},
|
4505
|
-
|
4568
|
+
|
4506
4569
|
/**
|
4507
4570
|
* saving the url and method for the further use
|
4508
4571
|
*
|
@@ -4510,12 +4573,12 @@ Xhr.JSONP = new Class({
|
|
4510
4573
|
* @param address String request url address
|
4511
4574
|
* @param Boolean async request marker
|
4512
4575
|
* @return void
|
4513
|
-
*/
|
4576
|
+
*/
|
4514
4577
|
open: function(method, url, async) {
|
4515
4578
|
this.url = url;
|
4516
4579
|
this.method = method;
|
4517
4580
|
},
|
4518
|
-
|
4581
|
+
|
4519
4582
|
/**
|
4520
4583
|
* Sends the actual request by inserting the script into the document body
|
4521
4584
|
*
|
@@ -4524,11 +4587,11 @@ Xhr.JSONP = new Class({
|
|
4524
4587
|
*/
|
4525
4588
|
send: function(data) {
|
4526
4589
|
window[this.name] = this.finish.bind(this);
|
4527
|
-
|
4590
|
+
|
4528
4591
|
this.script.set('src', this.url + (this.url.include('?') ? '&' : '?') + this.param + "&" + data)
|
4529
4592
|
.insertTo($$('script').last(), 'after');
|
4530
4593
|
},
|
4531
|
-
|
4594
|
+
|
4532
4595
|
/**
|
4533
4596
|
* Receives the actual JSON data from the server
|
4534
4597
|
*
|
@@ -4538,13 +4601,14 @@ Xhr.JSONP = new Class({
|
|
4538
4601
|
finish: function(data) {
|
4539
4602
|
this.status = 200;
|
4540
4603
|
this.readyState = 4;
|
4541
|
-
|
4604
|
+
|
4542
4605
|
this.xhr.json = this.xhr.responseJSON = data;
|
4543
|
-
|
4606
|
+
|
4544
4607
|
this.onreadystatechange();
|
4545
4608
|
}
|
4546
4609
|
});
|
4547
4610
|
|
4611
|
+
|
4548
4612
|
/**
|
4549
4613
|
* Basic visual effects class
|
4550
4614
|
*
|
@@ -4557,14 +4621,14 @@ Xhr.JSONP = new Class({
|
|
4557
4621
|
var Fx = RightJS.Fx = new Class(Observer, {
|
4558
4622
|
extend: {
|
4559
4623
|
EVENTS: $w('start finish cancel'),
|
4560
|
-
|
4624
|
+
|
4561
4625
|
// named durations
|
4562
4626
|
Durations: {
|
4563
4627
|
'short': 200,
|
4564
4628
|
'normal': 400,
|
4565
4629
|
'long': 800
|
4566
4630
|
},
|
4567
|
-
|
4631
|
+
|
4568
4632
|
// default options
|
4569
4633
|
Options: {
|
4570
4634
|
fps: Browser.IE ? 40 : 60,
|
@@ -4578,28 +4642,28 @@ var Fx = RightJS.Fx = new Class(Observer, {
|
|
4578
4642
|
Sin: function(i) {
|
4579
4643
|
return -(Math.cos(Math.PI * i) - 1) / 2;
|
4580
4644
|
},
|
4581
|
-
|
4645
|
+
|
4582
4646
|
Cos: function(i) {
|
4583
4647
|
return Math.asin((i-0.5) * 2)/Math.PI + 0.5;
|
4584
4648
|
},
|
4585
|
-
|
4649
|
+
|
4586
4650
|
Exp: function(i) {
|
4587
4651
|
return Math.pow(2, 8 * (i - 1));
|
4588
4652
|
},
|
4589
|
-
|
4653
|
+
|
4590
4654
|
Log: function(i) {
|
4591
4655
|
return 1 - Math.pow(2, - 8 * i);
|
4592
4656
|
},
|
4593
|
-
|
4657
|
+
|
4594
4658
|
Lin: function(i) {
|
4595
4659
|
return i;
|
4596
4660
|
}
|
4597
4661
|
},
|
4598
|
-
|
4662
|
+
|
4599
4663
|
ch: [], // scheduled effects registries
|
4600
4664
|
cr: [] // currently running effects registries
|
4601
4665
|
},
|
4602
|
-
|
4666
|
+
|
4603
4667
|
/**
|
4604
4668
|
* Basic constructor
|
4605
4669
|
*
|
@@ -4607,14 +4671,14 @@ var Fx = RightJS.Fx = new Class(Observer, {
|
|
4607
4671
|
*/
|
4608
4672
|
initialize: function(element, options) {
|
4609
4673
|
this.$super(options);
|
4610
|
-
|
4674
|
+
|
4611
4675
|
if ((this.element = element = $(element))) {
|
4612
4676
|
var uid = $uid(element);
|
4613
4677
|
this.ch = (Fx.ch[uid] = Fx.ch[uid] || []);
|
4614
4678
|
this.cr = (Fx.cr[uid] = Fx.cr[uid] || []);
|
4615
4679
|
}
|
4616
4680
|
},
|
4617
|
-
|
4681
|
+
|
4618
4682
|
/**
|
4619
4683
|
* starts the transition
|
4620
4684
|
*
|
@@ -4623,21 +4687,21 @@ var Fx = RightJS.Fx = new Class(Observer, {
|
|
4623
4687
|
start: function() {
|
4624
4688
|
if (this.queue(arguments)) { return this; }
|
4625
4689
|
this.prepare.apply(this, arguments);
|
4626
|
-
|
4690
|
+
|
4627
4691
|
var options = this.options,
|
4628
4692
|
duration = Fx.Durations[options.duration] || options.duration;
|
4629
4693
|
this.transition = Fx.Transitions[options.transition] || options.transition;
|
4630
|
-
|
4694
|
+
|
4631
4695
|
this.steps = (duration / 1000 * this.options.fps).ceil();
|
4632
4696
|
this.number = 1;
|
4633
|
-
|
4697
|
+
|
4634
4698
|
if (this.cr) {
|
4635
4699
|
this.cr.push(this); // adding this effect to the list of currently active
|
4636
4700
|
}
|
4637
|
-
|
4701
|
+
|
4638
4702
|
return this.fire('start', this).startTimer();
|
4639
4703
|
},
|
4640
|
-
|
4704
|
+
|
4641
4705
|
/**
|
4642
4706
|
* finishes the transition
|
4643
4707
|
*
|
@@ -4646,7 +4710,7 @@ var Fx = RightJS.Fx = new Class(Observer, {
|
|
4646
4710
|
finish: function() {
|
4647
4711
|
return this.stopTimer().unreg().fire('finish').next();
|
4648
4712
|
},
|
4649
|
-
|
4713
|
+
|
4650
4714
|
/**
|
4651
4715
|
* interrupts the transition
|
4652
4716
|
*
|
@@ -4660,7 +4724,7 @@ var Fx = RightJS.Fx = new Class(Observer, {
|
|
4660
4724
|
this.ch.clean();
|
4661
4725
|
return this.stopTimer().unreg().fire('cancel');
|
4662
4726
|
},
|
4663
|
-
|
4727
|
+
|
4664
4728
|
/**
|
4665
4729
|
* pauses the transition
|
4666
4730
|
*
|
@@ -4669,7 +4733,7 @@ var Fx = RightJS.Fx = new Class(Observer, {
|
|
4669
4733
|
pause: function() {
|
4670
4734
|
return this.stopTimer();
|
4671
4735
|
},
|
4672
|
-
|
4736
|
+
|
4673
4737
|
/**
|
4674
4738
|
* resumes a paused transition
|
4675
4739
|
*
|
@@ -4678,14 +4742,14 @@ var Fx = RightJS.Fx = new Class(Observer, {
|
|
4678
4742
|
resume: function() {
|
4679
4743
|
return this.startTimer();
|
4680
4744
|
},
|
4681
|
-
|
4745
|
+
|
4682
4746
|
// protected
|
4683
4747
|
// dummy method, should be implemented in a subclass
|
4684
4748
|
prepare: function(values) {},
|
4685
4749
|
|
4686
4750
|
// dummy method, processes the element properties
|
4687
4751
|
render: function(delta) {},
|
4688
|
-
|
4752
|
+
|
4689
4753
|
// the periodically called method
|
4690
4754
|
// NOTE: called outside of the instance scope!
|
4691
4755
|
step: function(that) {
|
@@ -4700,13 +4764,13 @@ var Fx = RightJS.Fx = new Class(Observer, {
|
|
4700
4764
|
that.number ++;
|
4701
4765
|
}
|
4702
4766
|
},
|
4703
|
-
|
4767
|
+
|
4704
4768
|
// starts the effect timer
|
4705
4769
|
startTimer: function() {
|
4706
4770
|
this.timer = this.step.periodical((1000 / this.options.fps).round(), this);
|
4707
4771
|
return this;
|
4708
4772
|
},
|
4709
|
-
|
4773
|
+
|
4710
4774
|
// stops the effect timer
|
4711
4775
|
stopTimer: function() {
|
4712
4776
|
if (this.timer) {
|
@@ -4719,7 +4783,7 @@ var Fx = RightJS.Fx = new Class(Observer, {
|
|
4719
4783
|
// should return false if there's no queue and true if there is a queue
|
4720
4784
|
queue: function(args) {
|
4721
4785
|
var chain = this.ch, queue = this.options.queue;
|
4722
|
-
|
4786
|
+
|
4723
4787
|
if (!chain || this.$ch) {
|
4724
4788
|
return (this.$ch = false);
|
4725
4789
|
}
|
@@ -4727,10 +4791,10 @@ var Fx = RightJS.Fx = new Class(Observer, {
|
|
4727
4791
|
if (queue) {
|
4728
4792
|
chain.push([args, this]);
|
4729
4793
|
}
|
4730
|
-
|
4794
|
+
|
4731
4795
|
return queue && chain[0][1] !== this;
|
4732
4796
|
},
|
4733
|
-
|
4797
|
+
|
4734
4798
|
// calls for the next effect in the queue
|
4735
4799
|
next: function() {
|
4736
4800
|
var chain = this.ch, next = chain.shift();
|
@@ -4740,7 +4804,7 @@ var Fx = RightJS.Fx = new Class(Observer, {
|
|
4740
4804
|
}
|
4741
4805
|
return this;
|
4742
4806
|
},
|
4743
|
-
|
4807
|
+
|
4744
4808
|
// unregisters this effect out of the currently running list
|
4745
4809
|
unreg: function() {
|
4746
4810
|
var currents = this.cr;
|
@@ -4749,9 +4813,10 @@ var Fx = RightJS.Fx = new Class(Observer, {
|
|
4749
4813
|
}
|
4750
4814
|
return this;
|
4751
4815
|
}
|
4752
|
-
|
4816
|
+
|
4753
4817
|
});
|
4754
4818
|
|
4819
|
+
|
4755
4820
|
/**
|
4756
4821
|
* There are the String unit extensions for the effects library
|
4757
4822
|
*
|
@@ -4786,7 +4851,7 @@ String.include({
|
|
4786
4851
|
*/
|
4787
4852
|
toHex: function() {
|
4788
4853
|
var match = /^#(\w)(\w)(\w)$/.exec(this);
|
4789
|
-
|
4854
|
+
|
4790
4855
|
if (match) {
|
4791
4856
|
match = "#"+ match[1]+match[1]+match[2]+match[2]+match[3]+match[3];
|
4792
4857
|
} else if ((match = /^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/.exec(this))) {
|
@@ -4797,10 +4862,10 @@ String.include({
|
|
4797
4862
|
} else {
|
4798
4863
|
match = String.COLORS[this] || this;
|
4799
4864
|
}
|
4800
|
-
|
4865
|
+
|
4801
4866
|
return match;
|
4802
4867
|
},
|
4803
|
-
|
4868
|
+
|
4804
4869
|
/**
|
4805
4870
|
* converts a hex string into an rgb array
|
4806
4871
|
*
|
@@ -4809,21 +4874,22 @@ String.include({
|
|
4809
4874
|
*/
|
4810
4875
|
toRgb: function(array) {
|
4811
4876
|
var match = /#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})/i.exec(this.toHex()||'');
|
4812
|
-
|
4877
|
+
|
4813
4878
|
if (match) {
|
4814
4879
|
match = match.slice(1).map('toInt', 16);
|
4815
4880
|
match = array ? match : 'rgb('+match+')';
|
4816
4881
|
}
|
4817
|
-
|
4882
|
+
|
4818
4883
|
return match;
|
4819
4884
|
}
|
4820
4885
|
});
|
4821
4886
|
|
4887
|
+
|
4822
4888
|
/**
|
4823
4889
|
* This block contains additional Element shortcuts for effects easy handling
|
4824
4890
|
*
|
4825
4891
|
* Credits:
|
4826
|
-
* Some ideas are inspired by
|
4892
|
+
* Some ideas are inspired by
|
4827
4893
|
* - MooTools (http://mootools.net) Copyright (C) Valerio Proietti
|
4828
4894
|
*
|
4829
4895
|
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
@@ -4833,7 +4899,7 @@ var methods = Element.prototype,
|
|
4833
4899
|
old_show = methods.show,
|
4834
4900
|
old_remove = methods.remove,
|
4835
4901
|
old_scroll = methods.scrollTo;
|
4836
|
-
|
4902
|
+
|
4837
4903
|
Element.include({
|
4838
4904
|
/**
|
4839
4905
|
* Stops all the visual effects on the element
|
@@ -4855,7 +4921,7 @@ Element.include({
|
|
4855
4921
|
hide: function(fx, options) {
|
4856
4922
|
return (fx && this.visible()) ? this.fx(fx, ['out', options]) : old_hide.call(this);
|
4857
4923
|
},
|
4858
|
-
|
4924
|
+
|
4859
4925
|
/**
|
4860
4926
|
* shows the element with the given visual effect
|
4861
4927
|
*
|
@@ -4864,9 +4930,9 @@ Element.include({
|
|
4864
4930
|
* @return Element this
|
4865
4931
|
*/
|
4866
4932
|
show: function(fx, options) {
|
4867
|
-
return (fx && this.
|
4933
|
+
return (fx && !this.visible()) ? this.fx(fx, ['in', options]) : old_show.call(this);
|
4868
4934
|
},
|
4869
|
-
|
4935
|
+
|
4870
4936
|
/**
|
4871
4937
|
* Removes the element out of the DOM structure
|
4872
4938
|
*
|
@@ -4879,7 +4945,7 @@ Element.include({
|
|
4879
4945
|
onFinish: old_remove.bind(this)
|
4880
4946
|
})]) : old_remove.call(this);
|
4881
4947
|
},
|
4882
|
-
|
4948
|
+
|
4883
4949
|
/**
|
4884
4950
|
* runs the Fx.Morth effect to the given style
|
4885
4951
|
*
|
@@ -4890,7 +4956,7 @@ Element.include({
|
|
4890
4956
|
morph: function(style, options) {
|
4891
4957
|
return this.fx('morph', [style, options || {}]); // <- don't replace with arguments
|
4892
4958
|
},
|
4893
|
-
|
4959
|
+
|
4894
4960
|
/**
|
4895
4961
|
* highlights the element
|
4896
4962
|
*
|
@@ -4902,7 +4968,7 @@ Element.include({
|
|
4902
4968
|
highlight: function() {
|
4903
4969
|
return this.fx('highlight', arguments);
|
4904
4970
|
},
|
4905
|
-
|
4971
|
+
|
4906
4972
|
/**
|
4907
4973
|
* runs the Fx.Fade effect on the element
|
4908
4974
|
*
|
@@ -4912,7 +4978,7 @@ Element.include({
|
|
4912
4978
|
fade: function() {
|
4913
4979
|
return this.fx('fade', arguments);
|
4914
4980
|
},
|
4915
|
-
|
4981
|
+
|
4916
4982
|
/**
|
4917
4983
|
* runs the Fx.Slide effect on the element
|
4918
4984
|
*
|
@@ -4923,7 +4989,7 @@ Element.include({
|
|
4923
4989
|
slide: function() {
|
4924
4990
|
return this.fx('slide', arguments);
|
4925
4991
|
},
|
4926
|
-
|
4992
|
+
|
4927
4993
|
/**
|
4928
4994
|
* Starts the smooth scrolling effect
|
4929
4995
|
*
|
@@ -4934,34 +5000,35 @@ Element.include({
|
|
4934
5000
|
scroll: function(value, options) {
|
4935
5001
|
return this.fx('scroll', [value, options||{}]);
|
4936
5002
|
},
|
4937
|
-
|
5003
|
+
|
4938
5004
|
/**
|
4939
5005
|
* wraps the old scroll to be able to run it with fxes
|
4940
5006
|
*
|
4941
5007
|
* If you send two hashes then will start a smooth scrolling
|
4942
5008
|
* otherwise will just jump over with the usual method
|
4943
|
-
*
|
5009
|
+
*
|
4944
5010
|
* @return Element this
|
4945
5011
|
*/
|
4946
5012
|
scrollTo: function(value, options) {
|
4947
5013
|
return isHash(options) ? this.scroll(value, options) : old_scroll.apply(this, arguments);
|
4948
5014
|
},
|
4949
|
-
|
4950
|
-
|
5015
|
+
|
5016
|
+
|
4951
5017
|
// protected
|
4952
5018
|
|
4953
5019
|
// runs an Fx on the element
|
4954
5020
|
fx: function(name, params) {
|
4955
5021
|
var args = $A(params).compact(), options = isHash(args.last()) ? args.pop() : {},
|
4956
5022
|
fx = new Fx[name.capitalize()](this, options);
|
4957
|
-
|
5023
|
+
|
4958
5024
|
fx.start.apply(fx, args);
|
4959
|
-
|
5025
|
+
|
4960
5026
|
return this;
|
4961
5027
|
}
|
4962
|
-
|
5028
|
+
|
4963
5029
|
});
|
4964
5030
|
|
5031
|
+
|
4965
5032
|
/**
|
4966
5033
|
* This class provides the basic effect for styles manipulation
|
4967
5034
|
*
|
@@ -4994,7 +5061,7 @@ function check_border_styles(element, before, after) {
|
|
4994
5061
|
bd_style = 'border' + direction + 'Style',
|
4995
5062
|
bd_width = 'border' + direction + 'Width',
|
4996
5063
|
bd_color = 'border' + direction + 'Color';
|
4997
|
-
|
5064
|
+
|
4998
5065
|
if (bd_style in before && before[bd_style] != after[bd_style]) {
|
4999
5066
|
var style = element._.style;
|
5000
5067
|
|
@@ -5013,7 +5080,7 @@ function check_border_styles(element, before, after) {
|
|
5013
5080
|
// parses the style hash into a processable format
|
5014
5081
|
function parse_style(values) {
|
5015
5082
|
var result = {}, re = /[\d\.\-]+/g, m, key, value, i;
|
5016
|
-
|
5083
|
+
|
5017
5084
|
for (key in values) {
|
5018
5085
|
m = values[key].match(re);
|
5019
5086
|
value = m.map('toFloat');
|
@@ -5021,35 +5088,35 @@ function parse_style(values) {
|
|
5021
5088
|
value.r = value.t[0] === 'rgb(';
|
5022
5089
|
|
5023
5090
|
if (value.t.length == 1) { value.t.unshift(''); }
|
5024
|
-
|
5091
|
+
|
5025
5092
|
for (i=0; i < value.length; i++) {
|
5026
5093
|
value.t.splice(i*2 + 1, 0, value[i]);
|
5027
5094
|
}
|
5028
5095
|
result[key] = value;
|
5029
5096
|
}
|
5030
|
-
|
5097
|
+
|
5031
5098
|
return result;
|
5032
5099
|
}
|
5033
5100
|
|
5034
5101
|
// cleans up and optimizies the styles
|
5035
5102
|
function clean_styles(element, before, after) {
|
5036
5103
|
var remove = [], key;
|
5037
|
-
|
5104
|
+
|
5038
5105
|
for (key in after) {
|
5039
5106
|
// checking the height/width options
|
5040
5107
|
if ((key == 'width' || key == 'height') && before[key] == 'auto') {
|
5041
5108
|
before[key] = element._['offset'+key.capitalize()] + 'px';
|
5042
5109
|
}
|
5043
5110
|
}
|
5044
|
-
|
5111
|
+
|
5045
5112
|
// IE opacity filter fix
|
5046
5113
|
if (after.filter && !before.filter) {
|
5047
5114
|
before.filter = 'alpha(opacity=100)';
|
5048
5115
|
}
|
5049
|
-
|
5116
|
+
|
5050
5117
|
// adjusting the border style
|
5051
5118
|
check_border_styles(element, before, after);
|
5052
|
-
|
5119
|
+
|
5053
5120
|
// cleaing up the list
|
5054
5121
|
for (key in after) {
|
5055
5122
|
// proprocessing colors
|
@@ -5064,12 +5131,12 @@ function clean_styles(element, before, after) {
|
|
5064
5131
|
|
5065
5132
|
if (!after[key] || !before[key]) { after[key] = before[key] = ''; }
|
5066
5133
|
}
|
5067
|
-
|
5134
|
+
|
5068
5135
|
// filling up the missing size
|
5069
5136
|
if (/\d/.test(after[key]) && !/\d/.test(before[key])) {
|
5070
5137
|
before[key] = after[key].replace(/[\d\.\-]+/g, '0');
|
5071
5138
|
}
|
5072
|
-
|
5139
|
+
|
5073
5140
|
// removing unprocessable keys
|
5074
5141
|
if (after[key] === before[key] || remove.includes(key) || !/\d/.test(before[key]) || !/\d/.test(after[key])) {
|
5075
5142
|
delete(after[key]);
|
@@ -5086,7 +5153,7 @@ function clean_styles(element, before, after) {
|
|
5086
5153
|
*/
|
5087
5154
|
function style_keys(style) {
|
5088
5155
|
var keys = [], border_types = ['Style', 'Color', 'Width'], key, i, j;
|
5089
|
-
|
5156
|
+
|
5090
5157
|
for (key in style) {
|
5091
5158
|
if (key.startsWith('border')) {
|
5092
5159
|
for (i=0; i < border_types.length; i++) {
|
@@ -5104,32 +5171,32 @@ function style_keys(style) {
|
|
5104
5171
|
keys.push(key);
|
5105
5172
|
}
|
5106
5173
|
}
|
5107
|
-
|
5174
|
+
|
5108
5175
|
return keys;
|
5109
5176
|
}
|
5110
|
-
|
5177
|
+
|
5111
5178
|
Fx.Morph = new Class(Fx, {
|
5112
5179
|
|
5113
|
-
// protected
|
5180
|
+
// protected
|
5114
5181
|
|
5115
5182
|
// parepares the effect
|
5116
5183
|
prepare: function(style) {
|
5117
5184
|
var keys = style_keys(style),
|
5118
5185
|
before = this._cloneStyle(this.element, keys),
|
5119
5186
|
after = this._endStyle(style, keys);
|
5120
|
-
|
5187
|
+
|
5121
5188
|
clean_styles(this.element, before, after);
|
5122
|
-
|
5189
|
+
|
5123
5190
|
this.before = parse_style(before);
|
5124
5191
|
this.after = parse_style(after);
|
5125
5192
|
},
|
5126
|
-
|
5193
|
+
|
5127
5194
|
render: function(delta) {
|
5128
5195
|
var before, after, value, style = this.element._.style, key, i, l;
|
5129
5196
|
for (key in this.after) {
|
5130
5197
|
before = this.before[key];
|
5131
5198
|
after = this.after[key];
|
5132
|
-
|
5199
|
+
|
5133
5200
|
for (i=0, l = after.length; i < l; i++) {
|
5134
5201
|
value = before[i] + (after[i] - before[i]) * delta;
|
5135
5202
|
if (after.r) {
|
@@ -5137,11 +5204,11 @@ Fx.Morph = new Class(Fx, {
|
|
5137
5204
|
}
|
5138
5205
|
after.t[i*2 + 1] = value;
|
5139
5206
|
}
|
5140
|
-
|
5207
|
+
|
5141
5208
|
style[key] = after.t.join('');
|
5142
5209
|
}
|
5143
5210
|
},
|
5144
|
-
|
5211
|
+
|
5145
5212
|
/**
|
5146
5213
|
* Returns a hash of the end style
|
5147
5214
|
*
|
@@ -5154,18 +5221,18 @@ Fx.Morph = new Class(Fx, {
|
|
5154
5221
|
.setStyle('position:absolute;z-index:-1;visibility:hidden')
|
5155
5222
|
.setWidth(element.size().x)
|
5156
5223
|
.setStyle(style);
|
5157
|
-
|
5224
|
+
|
5158
5225
|
if (element.parent()) {
|
5159
5226
|
element.insert(dummy, 'before');
|
5160
5227
|
}
|
5161
|
-
|
5228
|
+
|
5162
5229
|
var after = this._cloneStyle(dummy, keys);
|
5163
|
-
|
5230
|
+
|
5164
5231
|
dummy.remove();
|
5165
|
-
|
5232
|
+
|
5166
5233
|
return after;
|
5167
5234
|
},
|
5168
|
-
|
5235
|
+
|
5169
5236
|
/**
|
5170
5237
|
* Fast styles cloning
|
5171
5238
|
*
|
@@ -5179,13 +5246,13 @@ Fx.Morph = new Class(Fx, {
|
|
5179
5246
|
if (key in style) {
|
5180
5247
|
clean[key] = ''+ style[key];
|
5181
5248
|
}
|
5182
|
-
|
5249
|
+
|
5183
5250
|
// libwebkit bug fix for in case of languages pack applied
|
5184
5251
|
if (key === 'opacity') {
|
5185
5252
|
clean[key] = clean[key].replace(',', '.');
|
5186
5253
|
}
|
5187
5254
|
}
|
5188
|
-
|
5255
|
+
|
5189
5256
|
return clean;
|
5190
5257
|
}
|
5191
5258
|
});
|
@@ -5204,9 +5271,9 @@ Fx.Highlight = new Class(Fx.Morph, {
|
|
5204
5271
|
transition: 'Exp'
|
5205
5272
|
})
|
5206
5273
|
},
|
5207
|
-
|
5274
|
+
|
5208
5275
|
// protected
|
5209
|
-
|
5276
|
+
|
5210
5277
|
/**
|
5211
5278
|
* starts the transition
|
5212
5279
|
*
|
@@ -5216,19 +5283,19 @@ Fx.Highlight = new Class(Fx.Morph, {
|
|
5216
5283
|
*/
|
5217
5284
|
prepare: function(start, end) {
|
5218
5285
|
var element = this.element, style = element._.style, end_color = end || element.getStyle('backgroundColor');
|
5219
|
-
|
5286
|
+
|
5220
5287
|
if (is_transparent(end_color)) {
|
5221
5288
|
this.onFinish(function() { style.backgroundColor = 'transparent'; });
|
5222
|
-
|
5289
|
+
|
5223
5290
|
// trying to find the end color
|
5224
5291
|
end_color = [element].concat(element.parents()).map(function(node) {
|
5225
5292
|
var bg = node.getStyle('backgroundColor');
|
5226
|
-
return (bg && !is_transparent(bg)) ? bg : null;
|
5293
|
+
return (bg && !is_transparent(bg)) ? bg : null;
|
5227
5294
|
}).compact().first() || '#FFF';
|
5228
5295
|
}
|
5229
|
-
|
5296
|
+
|
5230
5297
|
style.backgroundColor = (start || this.options.color);
|
5231
|
-
|
5298
|
+
|
5232
5299
|
return this.$super({backgroundColor: end_color});
|
5233
5300
|
}
|
5234
5301
|
});
|
@@ -5240,7 +5307,7 @@ Fx.Highlight = new Class(Fx.Morph, {
|
|
5240
5307
|
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
5241
5308
|
*/
|
5242
5309
|
Fx.Twin = new Class(Fx.Morph, {
|
5243
|
-
|
5310
|
+
|
5244
5311
|
/**
|
5245
5312
|
* hides the element if it meant to be switched off
|
5246
5313
|
*
|
@@ -5250,12 +5317,12 @@ Fx.Twin = new Class(Fx.Morph, {
|
|
5250
5317
|
if (this.how == 'out') {
|
5251
5318
|
old_hide.call(this.element);
|
5252
5319
|
}
|
5253
|
-
|
5320
|
+
|
5254
5321
|
return this.$super();
|
5255
5322
|
},
|
5256
5323
|
|
5257
5324
|
// protected
|
5258
|
-
|
5325
|
+
|
5259
5326
|
/**
|
5260
5327
|
* assigns the direction of the effect in or out
|
5261
5328
|
*
|
@@ -5263,7 +5330,7 @@ Fx.Twin = new Class(Fx.Morph, {
|
|
5263
5330
|
*/
|
5264
5331
|
setHow: function(how) {
|
5265
5332
|
this.how = how || 'toggle';
|
5266
|
-
|
5333
|
+
|
5267
5334
|
if (this.how == 'toggle') {
|
5268
5335
|
this.how = this.element.visible() ? 'out' : 'in';
|
5269
5336
|
}
|
@@ -5271,6 +5338,7 @@ Fx.Twin = new Class(Fx.Morph, {
|
|
5271
5338
|
|
5272
5339
|
});
|
5273
5340
|
|
5341
|
+
|
5274
5342
|
/**
|
5275
5343
|
* the slide effects wrapper
|
5276
5344
|
*
|
@@ -5282,14 +5350,14 @@ Fx.Slide = new Class(Fx.Twin, {
|
|
5282
5350
|
direction: 'top'
|
5283
5351
|
})
|
5284
5352
|
},
|
5285
|
-
|
5286
|
-
// protected
|
5353
|
+
|
5354
|
+
// protected
|
5287
5355
|
prepare: function(how) {
|
5288
5356
|
this.setHow(how);
|
5289
|
-
|
5357
|
+
|
5290
5358
|
var element = old_show.call(this.element);
|
5291
5359
|
this.size = element.size();
|
5292
|
-
|
5360
|
+
|
5293
5361
|
this.styles = {};
|
5294
5362
|
$w('overflow height width marginTop marginLeft').each(function(key) {
|
5295
5363
|
this.styles[key] = element._.style[key];
|
@@ -5322,7 +5390,7 @@ Fx.Slide = new Class(Fx.Twin, {
|
|
5322
5390
|
|
5323
5391
|
} else if (this.how == 'in') {
|
5324
5392
|
var element_style = this.element._.style;
|
5325
|
-
|
5393
|
+
|
5326
5394
|
if (['top', 'bottom'].includes(direction)) {
|
5327
5395
|
style.height = size.y + 'px';
|
5328
5396
|
element_style.height = '0px';
|
@@ -5339,12 +5407,13 @@ Fx.Slide = new Class(Fx.Twin, {
|
|
5339
5407
|
element_style.marginTop = margin_top + size.y + 'px';
|
5340
5408
|
}
|
5341
5409
|
}
|
5342
|
-
|
5410
|
+
|
5343
5411
|
return style;
|
5344
5412
|
}
|
5345
5413
|
|
5346
5414
|
});
|
5347
5415
|
|
5416
|
+
|
5348
5417
|
/**
|
5349
5418
|
* The opacity effects wrapper
|
5350
5419
|
*
|
@@ -5353,37 +5422,38 @@ Fx.Slide = new Class(Fx.Twin, {
|
|
5353
5422
|
Fx.Fade = new Class(Fx.Twin, {
|
5354
5423
|
prepare: function(how) {
|
5355
5424
|
this.setHow(how);
|
5356
|
-
|
5425
|
+
|
5357
5426
|
if (this.how == 'in') {
|
5358
5427
|
old_show.call(this.element.setStyle({opacity: 0}));
|
5359
5428
|
}
|
5360
|
-
|
5429
|
+
|
5361
5430
|
return this.$super({opacity: isNumber(how) ? how : this.how == 'in' ? 1 : 0});
|
5362
5431
|
}
|
5363
5432
|
});
|
5364
5433
|
|
5434
|
+
|
5365
5435
|
/**
|
5366
5436
|
* A smooth scrolling visual effect
|
5367
5437
|
*
|
5368
5438
|
* Copyright (C) 2009-2010 Nikolay V. Nemshilov
|
5369
5439
|
*/
|
5370
5440
|
Fx.Scroll = new Class(Fx, {
|
5371
|
-
|
5441
|
+
|
5372
5442
|
initialize: function(element, options) {
|
5373
5443
|
element = $(element);
|
5374
5444
|
// swapping the actual scrollable when it's the window
|
5375
5445
|
this.$super(element instanceof Window ? element._.document[Browser.WebKit ? 'body' : 'documentElement'] : element, options);
|
5376
5446
|
},
|
5377
|
-
|
5447
|
+
|
5378
5448
|
prepare: function(value) {
|
5379
5449
|
var before = this.before = {}, element = this.element._;
|
5380
|
-
|
5450
|
+
|
5381
5451
|
this.after = value;
|
5382
|
-
|
5452
|
+
|
5383
5453
|
if ('x' in value) { before.x = element.scrollLeft; }
|
5384
5454
|
if ('y' in value) { before.y = element.scrollTop; }
|
5385
5455
|
},
|
5386
|
-
|
5456
|
+
|
5387
5457
|
render: function(delta) {
|
5388
5458
|
var before = this.before, key;
|
5389
5459
|
for (key in before) {
|
@@ -5392,6 +5462,7 @@ Fx.Scroll = new Class(Fx, {
|
|
5392
5462
|
}
|
5393
5463
|
});
|
5394
5464
|
|
5465
|
+
|
5395
5466
|
/**
|
5396
5467
|
* this module handles the work with cookies
|
5397
5468
|
*
|
@@ -5403,7 +5474,7 @@ Fx.Scroll = new Class(Fx, {
|
|
5403
5474
|
*/
|
5404
5475
|
var Cookie = RightJS.Cookie = new Class({
|
5405
5476
|
include: Options,
|
5406
|
-
|
5477
|
+
|
5407
5478
|
extend: {
|
5408
5479
|
// sets the cookie
|
5409
5480
|
set: function(name, value, options) {
|
@@ -5417,20 +5488,20 @@ var Cookie = RightJS.Cookie = new Class({
|
|
5417
5488
|
remove: function(name) {
|
5418
5489
|
return new this(name).remove();
|
5419
5490
|
},
|
5420
|
-
|
5491
|
+
|
5421
5492
|
// checks if the cookies are enabled
|
5422
5493
|
enabled: function() {
|
5423
5494
|
document.cookie = "__t=1";
|
5424
5495
|
return document.cookie.indexOf("__t=1")!=-1;
|
5425
5496
|
},
|
5426
|
-
|
5497
|
+
|
5427
5498
|
// some basic options
|
5428
5499
|
Options: {
|
5429
5500
|
secure: false,
|
5430
5501
|
document: document
|
5431
5502
|
}
|
5432
5503
|
},
|
5433
|
-
|
5504
|
+
|
5434
5505
|
/**
|
5435
5506
|
* constructor
|
5436
5507
|
* @param String cookie name
|
@@ -5441,7 +5512,7 @@ var Cookie = RightJS.Cookie = new Class({
|
|
5441
5512
|
this.name = name;
|
5442
5513
|
this.setOptions(options);
|
5443
5514
|
},
|
5444
|
-
|
5515
|
+
|
5445
5516
|
/**
|
5446
5517
|
* sets the cookie with the name
|
5447
5518
|
*
|
@@ -5461,7 +5532,7 @@ var Cookie = RightJS.Cookie = new Class({
|
|
5461
5532
|
options.document.cookie = this.name + '=' + value;
|
5462
5533
|
return this;
|
5463
5534
|
},
|
5464
|
-
|
5535
|
+
|
5465
5536
|
/**
|
5466
5537
|
* searches for a cookie with the name
|
5467
5538
|
*
|
@@ -5471,8 +5542,8 @@ var Cookie = RightJS.Cookie = new Class({
|
|
5471
5542
|
var value = this.options.document.cookie.match('(?:^|;)\\s*' + RegExp.escape(this.name) + '=([^;]*)');
|
5472
5543
|
return (value) ? decodeURIComponent(value[1]) : null;
|
5473
5544
|
},
|
5474
|
-
|
5475
|
-
/**
|
5545
|
+
|
5546
|
+
/**
|
5476
5547
|
* removes the cookie
|
5477
5548
|
*
|
5478
5549
|
* @return Cookie this
|
@@ -5483,6 +5554,12 @@ var Cookie = RightJS.Cookie = new Class({
|
|
5483
5554
|
}
|
5484
5555
|
});
|
5485
5556
|
|
5557
|
+
|
5558
|
+
// globalizing the top-level variables
|
5559
|
+
$ext(window, Object.without(RightJS, 'version', 'modules'));
|
5560
|
+
|
5561
|
+
return RightJS;
|
5562
|
+
})(window, document, Object, Array, String, Function, Number, Math);
|
5486
5563
|
/**
|
5487
5564
|
* The old browsers support patch loading script
|
5488
5565
|
* will be included in the core file when it's built
|
@@ -5500,10 +5577,3 @@ if (!document.querySelector) {
|
|
5500
5577
|
.src.replace(/(^|\/)(right)([^\/]+)$/, '$1$2-olds$3') +
|
5501
5578
|
'"></script>');
|
5502
5579
|
}
|
5503
|
-
|
5504
|
-
|
5505
|
-
// globalizing the top-level variables
|
5506
|
-
$ext(window, Object.without(RightJS, 'version', 'modules'));
|
5507
|
-
|
5508
|
-
return RightJS;
|
5509
|
-
})(window, document, Object, Array, String, Function, Number, Math);
|