right-rails 0.4.4 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/init.rb +37 -8
- data/javascripts/right-autocompleter-src.js +55 -41
- data/javascripts/right-autocompleter.js +2 -2
- data/javascripts/right-behavior-src.js +5 -5
- data/javascripts/right-behavior.js +2 -2
- data/javascripts/right-calendar-src.js +139 -67
- data/javascripts/right-calendar.js +2 -2
- data/javascripts/right-dnd-src.js +7 -7
- data/javascripts/right-dnd.js +2 -2
- data/javascripts/right-effects-src.js +9 -9
- data/javascripts/right-effects.js +2 -2
- data/javascripts/right-events-src.js +8 -8
- data/javascripts/right-events.js +2 -2
- data/javascripts/right-in-edit-src.js +10 -8
- data/javascripts/right-in-edit.js +2 -2
- data/javascripts/right-json-src.js +14 -15
- data/javascripts/right-json.js +2 -2
- data/javascripts/right-lightbox-src.js +141 -86
- data/javascripts/right-lightbox.js +3 -3
- data/javascripts/right-olds-src.js +26 -48
- data/javascripts/right-olds.js +2 -2
- data/javascripts/right-rails-src.js +109 -31
- data/javascripts/right-rails.js +2 -2
- data/javascripts/right-rater-src.js +20 -12
- data/javascripts/right-rater.js +2 -2
- data/javascripts/right-selectable-src.js +3 -3
- data/javascripts/right-selectable.js +1 -1
- data/javascripts/right-slider-src.js +3 -3
- data/javascripts/right-slider.js +1 -1
- data/javascripts/right-sortable-src.js +28 -28
- data/javascripts/right-sortable.js +2 -2
- data/javascripts/right-src.js +612 -405
- data/javascripts/right-tabs-src.js +115 -44
- data/javascripts/right-tabs.js +2 -2
- data/javascripts/right-tooltips-src.js +131 -74
- data/javascripts/right-tooltips.js +2 -2
- data/javascripts/right-ui-i18n-fr.js +4 -4
- data/javascripts/right-uploader-src.js +170 -0
- data/javascripts/right-uploader.js +9 -0
- data/javascripts/right.js +2 -4
- data/lib/right_rails.rb +1 -1
- data/lib/right_rails/helpers/basic.rb +10 -2
- data/lib/right_rails/helpers/misc.rb +16 -17
- data/lib/right_rails/helpers/rails.rb +0 -7
- data/spec/lib/right_rails/helpers/basic_spec.rb +0 -1
- data/spec/lib/right_rails/helpers/rails_spec.rb +24 -0
- data/spec/spec_helper.rb +9 -1
- metadata +14 -5
data/javascripts/right-rater.js
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
*
|
4
4
|
* Visit http://rightjs.org/ui/rater for details
|
5
5
|
*
|
6
|
-
* Copyright (C) 2009 Nikolay V. Nemshilov
|
6
|
+
* Copyright (C) 2009-2010 Nikolay V. Nemshilov
|
7
7
|
*/
|
8
8
|
if (!self.RightJS) throw "Gimme RightJS";
|
9
|
-
eval((function(s,d){for(var i=d.length-1;i>-1;i--)if(d[i])s=s.replace(new RegExp(i,'g'),d[i]);return s})("
|
9
|
+
eval((function(s,d){for(var i=d.length-1;i>-1;i--)if(d[i])s=s.replace(new RegExp(i,'g'),d[i]);return s})("23 57=61 Class(Observer,{extend:{EVENTS:$w('54 67 30'),Options:{31:5,18:22,26:22,17:68,25:68,63:22,55:'rate',56:22},rescan:4(s){}},69ialize:4(){23 a=$A(arguments);2.13=(a[0]&&!51(a[0]))?$(a[0]):22;2.$super(51(a.70())?a.70():2.13?eval('('+2.13.get('data-14-12')+')'):22);if(!2.13)2.13=2.64();if(!2.12.18)2.12.18=2.13.select('.16-14-48').length;2.13._14=2.69()},20:4(v){if(!2.17()){v=isString(v)?v.toInt():v;v=isNumber(v)?v.round():0;if(v>2.12.31)v=2.12.31;71 if(v<0)v=0;2.24(v);if(2.18!=v)2.37('54',2.18=v,2)}19 2},getValue:4(){19 2.18},40:4(e,p){2.13.40(e,p);19 2},41:4(b){23 a=4(e,v){if(e=$(e)){if(v===undefined||v===22)v='';e[e.20?'20':'26'](''+v)}}.58(b);23 c=4(e,o){23 e=$(e);if(e&&e.28)e.28(4(){2.20(e.18)}.29(o))}.58(b);if($(b)){a(2.18);c(2)}71 27.onReady(4(){a(2.18);c(2)}.29(2));19 2.28(a)},30:4(){if(2.12.63){61 56(2.12.63,2.12.56).30(2.12.55+\"=\"+2.18);2.37('30',2.18,2)}19 2},35:4(){2.13.42('16-14-17');19 2},enable:4(){2.13.34('16-14-17');19 2},17:4(){19 2.13.38('16-14-17')},46:4(i){if(!2.17()){2.24(i+1);2.37('67',i+1,2)}},44:4(i){2.20(i+1);if(2.12.25)2.35();2.30()},50:4(){2.20(2.18)},24:4(n){2.39.76(4(e,a){e[n-1<a?'34':'42']('16-14-48')})},69:4(){2.39=2.13.subNodes();2.39.76(4(e,i){e.32(2.46.29(2,i)).onClick(2.44.29(2,i))},2);2.13.onMouseout(2.50.29(2));2.20(2.12.18);if(2.12.17)2.35();if(2.12.26)2.41(2.12.26);19 2},64:4(){23 e=$E('21',{'class':'16-14'});2.12.31.times(4(){e.insert($E('21',{html:'★'}))});19 e}});27.32(4(a){23 t=a.target,e=[t].concat(t.parents()).first('38','16-14');if(e){23 r=e._14||61 57(e);if(t.parentNode===e)t.37('mouseover')}});27.write(\"<59 type=\\\"47/css\\\">21.16-14,21.16-14 21{margin:0;padding:0;background:75;border:75;45:49-block;*45:49;*zoom:1;74-family:Arial;74-31:110%}21.16-14{62:6em;36:43;vertical-65:middle}21.16-14 21{float:left;62:43;36:43;line-36:43;47-65:center;52:pointer;60:#888}21.16-14 21.16-14-48{60:brown;47-shadow:#666 .72 .72 .15em}21.16-14-17 21{52:default}</59>\");",",,this,,function,,,,,,,,options,element,rater,,right,disabled,value,return,setValue,div,null,var,highlight,disableOnVote,update,document,onChange,bind,send,size,onMouseover,,removeClass,disable,height,fire,hasClass,stars,insertTo,assignTo,addClass,1em,clicked,display,hovered,text,glow,inline,leaved,isHash,cursor,_rater,change,param,Xhr,Rater,curry,style,color,new,width,url,build,align,,hover,false,init,last,else,05em,,font,none,each".split(",")));
|
@@ -1,14 +1,14 @@
|
|
1
1
|
/**
|
2
2
|
* Selectable unit for RightJS (http://rightjs.org/ui/selectable)
|
3
3
|
*
|
4
|
-
* Copyright (C) 2009 Nikolay V. Nemshilov
|
4
|
+
* Copyright (C) 2009 Nikolay V. Nemshilov
|
5
5
|
*/
|
6
6
|
if (!self.RightJS) throw "Gimme RightJS";
|
7
7
|
|
8
8
|
/**
|
9
9
|
* Selectable unit main script
|
10
10
|
*
|
11
|
-
* Copyright (C) 2009 Nikolay V. Nemshilov
|
11
|
+
* Copyright (C) 2009 Nikolay V. Nemshilov
|
12
12
|
*/
|
13
13
|
var Selectable = new Class(Observer, {
|
14
14
|
extend: {
|
@@ -536,7 +536,7 @@ var Selectable = new Class(Observer, {
|
|
536
536
|
/**
|
537
537
|
* The document on-load hook for Selectable
|
538
538
|
*
|
539
|
-
* Copyright (C) 2009 Nikolay V. Nemshilov
|
539
|
+
* Copyright (C) 2009 Nikolay V. Nemshilov
|
540
540
|
*/
|
541
541
|
document.onReady(function() { Selectable.rescan(); });
|
542
542
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
/**
|
2
2
|
* Selectable unit for RightJS (http://rightjs.org/ui/selectable)
|
3
3
|
*
|
4
|
-
* Copyright (C) 2009 Nikolay V. Nemshilov
|
4
|
+
* Copyright (C) 2009 Nikolay V. Nemshilov
|
5
5
|
*/
|
6
6
|
if (!self.RightJS) throw "Gimme RightJS";
|
7
7
|
eval((function(s,d){for(var i=d.length-1;i>-1;i--)if(d[i])s=s.replace(new RegExp(i,'g'),d[i]);return s})("24 69=new 164(Observer,{extend:{EVENTS:$w('140 25 un25 72 111 81 149 113 116'),Options:{15:46,19:46,23:46,49:96,68:'slide',70:'short',36:46,129:148,155:'•',54:96},139:11(s){($(s)||42).25('*.13-12').32(11(e){if(!e._12)new 69(e)})}},118:'13-12',59:'13-12-142',17:'13-12-19',23164:'13-12-23',18164:'13-12-18',160ialize:11(){24 a=$A(76);if(a[0]&&!144(a[0]))9.16=$(a[0]);9.104(144(a.157())?a.157():9.16?eval('('+9.16.get('data-12-15')+')'):46);if(!9.16)9.16=9.130();47 if(9.16.136=='SELECT'){9.25box=9.82(9.16);9.16=9.130().45(9.25box,'105');9.90(9.95(9.25box))}9.16._12=9.160()},destroy:11(){9.21.32(11(i){i.28('99',9.55).28('65',9.71).28('57',9.62).28('53',9.58).28('74',9.83)},9);delete(9.16._12)},61:11(v){if(92(v))v=v.split(',').117('trim').106(11(a){14!a.blank()});9.21.32('37',9.17);24 i=9.34(v).32('48',9.17);if(9.22)9.93(i[0]);14 9.52()},getValue:11(){14 9.39},45:11(e,p){9.16.45(e,p);if(9.22)9.18.45(9.16,'105');14 9},90:11(b){24 a=11(e,v){if(e=$(e)){if(v===undefined||v===46)v='';e[e.61?'61':'36'](e.156=='25-49'?v:''+v)}}.151(b);24 c=11(e,o){24 e=$(e);if(e&&e.89)e.89(11(){9.61(e.39)}.31(o))}.151(b);if($(b)){a(9.39);c(9)}47 42.133(11(){a(9.39);c(9)}.31(9));14 9.89(a)},72:11(k){9.43(k).32(11(i){9.33('72',i.48(9.23164))},9);14 9},111:11(k){9.43(k).32(11(i){9.33('111',i.37(9.23164))},9);14 9},23:11(k){14 9.43(k).150('30',9.23164)},25:11(k){24 a=9.34(k);if(9.22&&a){9.21.32('37',9.17);a=[a[0]]}a.32(11(i){9.33('25',i.48(9.17))},9);14 9},un25:11(k){9.34(k).32(11(i){9.33('un25',i.37(9.17))},9);14 9},19:11(k){14 9.34(k).150('30',9.17)},54:11(){9.21=9.16.25('li').32(11(i){if(!9.21||!9.21.include(i))i.on({99:9.55,74:9.83,53:9.58,57:9.62,65:9.71})},9);14 9},160:11(){9.16.48(9.118);if(9.22=!9.15.49||9.16.30(9.59))9.101().16.48(9.59);9.58=9.53.31(9);9.83=9.74.31(9);9.62=9.57.31(9);9.71=9.65.31(9);9.55=9.99.31(9);9.39=46;9.54().94('52').onUn25('52');if(9.22)9.94('93');if(9.15.23)9.72(9.15.23);if(9.15.19)9.25(9.15.19);if(9.15.36)9.90(9.15.36);if(9.22){if(9.15.19===46)9.25(9.21[0]);9.94('91')}if(9.15.54){24 o=9.16.36;9.16.36=11(){24 r=o.153(9.16,76);9.54();14 r}.31(9)}14 9},52:11(){if(9.22){24 a=9.21.128('30',9.17);24 v=a?9.80(a):46}47 24 v=9.21.106('30',9.17).117(11(i){14 9.80(i)},9);if(v!=9.39){9.39=v;9.33('140',v,9)}14 9},80:11(i){14 i.id?9.15.129?i.id.match(/\\d+/):i.id:9.21.73(i)},33:11(n,i){if(i&&i.136)9.104(n,i,9.21.73(i),9);47 9.104.153(9,76);14 9},117:11(c){if(!135(c))c=[c];14 c.117(11(k){24 i=(92(k)&&/^\\d+$/.test(k))?k.toInt():k,b=k;if(isNumber(i))b=9.21[i];47 if(92(k))b=9.21.128(11(a){14 a.id==k});14 b},9).compact()},43:11(k){14 k?9.117(k):9.21},34:11(k){14 9.43(k).106(11(i){14!i.30(9.23164)},9)},53:11(e){e.121();24 c=e.107;if(!9.23(c)){if(9.22)9.25(c);47 if(9.19(c)){9.un25(c);9.63=96}47{9.25(c);9.67=96}if((e.shiftKey||e.metaKey)&&9.56){24 a=9.21.73(9.56);24 b=9.21.73(c);if(a!=b){if(a>b){24 t=a;a=b;b=a}for(24 i=a;i<b;i++)9[9.56.30(9.17)?'25':'un25'](9.21[i])}}9.56=c}},74:11(e){e.121();9.63=9.67=148},57:11(e){24 i=e.107;9.33('81',i);if(!9.22){if(9.67)9.25(i);47 if(9.63)9.un25(i)}},65:11(e){9.33('149',e.107)},99:11(e){e.121()},130:11(){24 e=$E('ul'),a=9.15.15;if(135(a))a.32(11(o){e.108($E('li',{137:o}))});47 for(24 k in a)e.108($E('li',{id:k,137:a[k]}));14 e},101:11(){9.18=$E('41',{'152':9.18164}).108([$E('41',{'137':9.15.155,'152':'13-12-141'}),$E('ul')]).45(9.16,'105').55(9.113165.31(9));42.55(9.91.31(9));14 9},113165:11(e){e.121();if(9.22){24 d=9.18.dimensions();9.16.setStyle({top:(d.top+d.50)+'px',119:d.119+'px',38:d.38+'px'}).113(9.15.68,{126:9.15.70,124:9.33.31(9,'113',9)});if(!9.15.68)9.33('113',9)}},91:11(){if(9.22&&9.16.visible()){9.16.116(9.15.68,{126:9.15.70,124:9.33.31(9,'116',9)});if(!9.15.68)9.33('116',9)}},93:11(i){9.18.128('ul').36(i?i.cloneNode(96):'<li> </li>')},82:11(b){24 a=9.15;if(b){a.49=b.has('49');a.15={};a.19=[];a.23=[];$A(b.getElementsByTagName('OPTION')).32(11(o,i){a.15[o.get('39')||o.120]=o.120;if(o.19)a.19.159(i);if(o.23)a.23.159(i)});if(a.19.empty())a.19=0}14 b},95:11(e){14 e.wrap($E('41',{78:'131:125;z-index:-1;visibility:109;38:0;50:0;123:109'}))}});42.133(11(){69.139()});42.write(\"<78 156=\\\"162/css\\\">*.13-12,*.13-12 li,*.13-12 dt,*.13-12 dd,*.13-12 ul,41.13-12-18 ul,41.13-12-18 ul li{146:0;51:0;27:98;26:98;list-78:98}*.13-12{27:114 79 #103;27-110:98;40:86-122;*40:86;*163:1;min-38:138;-154-27-85:.60;-112-27-85:.60}*.13-12 li{51:.3em 1em;87:134;27-110:114 79 #103}*.13-12 li:81{26:#EEE}*.13-12 li.13-12-19{97-143:161;26:#DDD}*.13-12 li.13-12-23,*.13-12 li.13-12-23:81{26:#103;102:#777;87:132}dl.13-12 dt{51:.3em .115;87:132;97-143:161;97-78:italic;102:#444;26:#EEE;27-110:114 79 #103}dl.13-12 dd li{51-119:1.115}*.13-12-142{-154-box-145:#AAA .60 .60 .115;-112-box-145:#AAA .60 .60 .115;40:98;131:125;26:#FFF}41.13-12-18{27:114 79 #103;-154-27-85:.60;-112-27-85:.60;40:86-122;*40:86;*163:1;*38:138;vertical-147:middle;min-38:138;87:134;50:1.6em}41.13-12-18 41.13-12-141{97-family:Arial;float:13;38:0.8em;26:#DDD;162-147:center;50:100%;158-50:0.8em;97-size:200%;102:#888;27-119:114 79 #103}41.13-12-18:81 41{102:#666}41.13-12-18 ul{40:122;38:auto;146-13:60;123:109}41.13-12-18 ul li{158-50:1.6em;51:0 .115}</78>\");",",,,,,,,,,this,,function,selectable,right,return,options,element,selectedClass,container,selected,,items,isSingle,disabled,var,select,background,border,stopObserving,disabledClass,hasClass,bind,each,fire,mapEnabled,unselect,update,removeClass,width,value,display,div,document,mapOrAll,,insertTo,null,else,addClass,multiple,height,padding,calcValue,mousedown,refresh,onClick,_prevItem,mouseover,onMousedown,singleClass,2em,setValue,onMouseover,_massRemove,_selectable,mouseout,,_massSelect,fxName,Selectable,fxDuration,onMouseout,disable,indexOf,mouseup,containerClass,arguments,,style,solid,itemValue,hover,harvestOptions,onMouseup,selectbox,radius,inline,cursor,,onChange,assignTo,hideList,isString,showItem,onSelect,hideOriginal,true,font,none,click,,buildSingle,color,CCC,$super,before,filter,target,insert,hidden,bottom,enable,webkit,show,1px,5em,hide,map,baseClass,left,innerHTML,stop,block,overflow,onFinish,absolute,duration,showList,first,parseIds,build,position,default,onReady,pointer,isArray,tagName,html,10em,rescan,change,handle,single,weight,isHash,shadow,margin,align,false,leave,every,curry,class,apply,moz,hCont,type,last,line,push,init,bold,text,zoom,Class,List".split(",")));
|
@@ -1,14 +1,14 @@
|
|
1
1
|
/**
|
2
2
|
* RightJS UI Slider unit (http://rightjs.org/ui/slider)
|
3
3
|
*
|
4
|
-
* Copyright (C) 2009 Nikolay V. Nemshilov
|
4
|
+
* Copyright (C) 2009 Nikolay V. Nemshilov
|
5
5
|
*/
|
6
6
|
if (!self.RightJS || !self.Draggable) throw "Gimme RightJS w/ DnD";
|
7
7
|
|
8
8
|
/**
|
9
9
|
* RightJS UI Slider unit
|
10
10
|
*
|
11
|
-
* Copyright (C) 2009 Nikolay V. Nemshilov
|
11
|
+
* Copyright (C) 2009 Nikolay V. Nemshilov
|
12
12
|
*/
|
13
13
|
var Slider = new Class(Observer, {
|
14
14
|
extend: {
|
@@ -284,7 +284,7 @@ var Slider = new Class(Observer, {
|
|
284
284
|
/**
|
285
285
|
* Document onReady hook for sliders
|
286
286
|
*
|
287
|
-
* Copyright (C) 2009 Nikolay V. Nemshilov
|
287
|
+
* Copyright (C) 2009 Nikolay V. Nemshilov
|
288
288
|
*/
|
289
289
|
document.onReady(function() { Slider.rescan(); });
|
290
290
|
|
data/javascripts/right-slider.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
/**
|
2
2
|
* RightJS UI Slider unit (http://rightjs.org/ui/slider)
|
3
3
|
*
|
4
|
-
* Copyright (C) 2009 Nikolay V. Nemshilov
|
4
|
+
* Copyright (C) 2009 Nikolay V. Nemshilov
|
5
5
|
*/
|
6
6
|
if (!self.RightJS || !self.Draggable) throw "Gimme RightJS w/ DnD";
|
7
7
|
eval((function(s,d){for(var i=d.length-1;i>-1;i--)if(d[i])s=s.replace(new RegExp(i,'g'),d[i]);return s})("14 50=78 83(Observer,{extend:{EVENTS:$w('69'),Options:{32:0,47:100,38:0,21:65,25:'x',39:65,55:0},67:9(s){($(s)||33).select('30.17-12').each(9(e){if(!e._12)78 50(e)})}},75ialize:9(){14 a=$A(arguments);7.13=(a[0]&&!70(a[0]))?$(a.shift()):7.74();7.$super(70(a[0])?a[0]:eval('('+7.13.get('data-12-8')+')'));if(7.8.39)7.54(7.8.39);7.13._12=7.75()},destroy:9(){7.16.undo82();delete(7.13._12);18 7},24:9(v){14 v=isString(v)?v.64():v;14 b=Math.pow(10,7.8.55);v=(v*b).55()/b;if(7.8.38){14 s=7.8.38;14 d=v % s;v=d<s/2?v-d:v-d+s}if(v<7.8.32)v=7.8.32;if(v>7.8.47)v=7.8.47;7.40(v);if(v!==7.21)7.fire('69',7.21=v);18 7},getValue:9(){18 7.21},53:9(v){18 7.36().24([v,7.8.21,7.8.32].compact()[0])},52:9(e,p){7.13.52(e,p);18 7.53(7.21)},54:9(b){14 a=9(e,v){if(e=$(e)){if(v===undefined||v===65)v='';e[e.24?'24':'39'](''+v)}}.72(b);14 c=9(e,o){14 e=$(e);if(e&&e.43)e.43(9(){7.24(e.21)}.45(o))}.72(b);if($(b)){a(7.21);c(7)}51 33.60(9(){a(7.21);c(7)}.45(7));18 7.43(a)},75:9(){7.16=7.13.first('30.17-12-16').make82({onBefore:7.63.45(7),onDrag:7.59.45(7)});7.13.onClick(7.61.45(7));if(7.8.25=='y')7.13.add83('17-12-29');51 7.8.25=7.13.has83('17-12-29')?'y':'x';if(7.46=(RightJS.version<'1.5.0'&&!7.16.getBoundingClientRect)){14 p=7.13;14 o=7.16.11;7.16.11=9(){14 d=o.call(7);14 s=p.11();d.22+=s.22;d.19+=s.19;18 d}}18 7.53()},74:9(){18 $E('30',{'71':'17-12'}).insert($E('30',{'71':'17-12-16'}))},61:9(a){a.s22();7.36().40(7.21);14 p=a.44();14 e=7.11;14 p=(7.15?p.x-e.19:p.y-e.22)-7.42;if(p>7.28)p=7.28;51 if(p<0)p=0;7.34(p)},59:9(d,e){7.34(d.13.48[7.15?'19':'22'].64())},63:9(d){7.36().40(7.21);14 o=7.42;14 e=7.11;14 a=d.8;a.37={};if((a.axis=7.8.25)=='x'){a.37.x=[e.19+o,e.19+e.31-o];if(7.46)a.37.x[0]-=e.19}51{a.37.y=[e.22+o,e.22+e.27-o];if(7.46)a.37.y[0]-=e.22}if(7.8.38)a.38=7.28/(7.8.47-7.8.32)*7.8.38},34:9(p){if(!7.15)p=7.28-p;14 v=p/7.28*(7.8.47-7.8.32)+7.8.32;7.24(v)},40:9(v){14 p=7.28/(7.8.47-7.8.32)*(v-7.8.32);if(!7.15)p=7.28-p;7.16.48[7.15?'19':'22']=p+'px';18 7},36:9(){14 h=7.16.setStyle({19:'0',22:'0'}).11();7.11=7.13.11();7.15=7.8.25=='x';7.42=7.15?h.19-7.11.19:h.22-7.11.22;7.28=(7.15?7.11.31-h.31:7.11.27-h.27)-7.42*2;18 7}});33.60(9(){50.67()});33.write(\"<48 type=\\\"text/css\\\">30.17-12,30.17-12-16{23:0;padding:0;26:76;35:76}30.17-12{27:0.62;31:20em;26:81 73 #77;35:#EEE;-79-26-41:.56;-66-26-41:.56;44:relative;23:.6em 0;58:68-block;*58:68;*zoom:1;29-align:middle}30.17-12-16{44:absolute;19:0;22:0;cursor:pointer;31:80;27:57;23-22:-0.62;23-19:0.57;35:#77;26:81 73 #AAA;-79-26-41:.56;-66-26-41:.56}30.17-12-29{27:10em;31:0.62;23:0 .3em}30.17-12-29 30.17-12-16{23:0;23-19:-0.62;23-22:0.57;27:80;31:57}</48>\");",",,,,,,,this,options,function,,dimensions,slider,element,var,horizontal,handle,right,return,left,,value,top,margin,setValue,direction,border,height,space,vertical,div,width,min,document,setPosition,background,precalc,range,snap,update,moveTo,radius,offset,onChange,position,bind,konqFix,max,style,_slider,Slider,else,insertTo,reset,assignTo,round,2em,1em,display,dragged,onReady,clicked,4em,prepare,toFloat,null,webkit,rescan,inline,change,isHash,class,curry,solid,build,init,none,CCC,new,moz,4pt,1px,Draggable,Class".split(",")));
|
@@ -3,14 +3,14 @@
|
|
3
3
|
*
|
4
4
|
* See http://rightjs.org/ui/sortable
|
5
5
|
*
|
6
|
-
* Copyright (C) Nikolay V. Nemshilov
|
6
|
+
* Copyright (C) 2009-2010 Nikolay V. Nemshilov
|
7
7
|
*/
|
8
8
|
if (!Draggable) throw "Gimme Draggable";
|
9
9
|
|
10
10
|
/**
|
11
11
|
* The Sortable unit
|
12
12
|
*
|
13
|
-
* Copyright (C) Nikolay V. Nemshilov
|
13
|
+
* Copyright (C) 2009-2010 Nikolay V. Nemshilov
|
14
14
|
*/
|
15
15
|
var Sortable = new Class(Observer, {
|
16
16
|
extend: {
|
@@ -29,29 +29,12 @@ var Sortable = new Class(Observer, {
|
|
29
29
|
idParam: 'id', // the id value name
|
30
30
|
posParam: 'position', // the position value name
|
31
31
|
parseId: true, // if the id attribute should be converted into an integer before sending
|
32
|
-
|
33
|
-
|
32
|
+
|
33
|
+
cssRule: '[rel^=sortable]' // css-rule for automatically processable sortables
|
34
34
|
},
|
35
35
|
|
36
|
-
// scans through the page for auto-discoverable sortables
|
37
|
-
rescan: function(scope) {
|
38
|
-
var key = Sortable.Options.relName;
|
39
|
-
var reg = new RegExp('^'+key+'\\[(.+?)\\]');
|
40
|
-
|
41
|
-
($(scope) || document).select('ul[rel^="'+key+'"], ol[rel^="'+key+'"]').each(function(element) {
|
42
|
-
if (!element._sortable) {
|
43
|
-
var data = element.get('data-'+key+'-options');
|
44
|
-
var options = eval('('+data+')') || {};
|
45
|
-
|
46
|
-
var url = element.get('rel').match(reg);
|
47
|
-
if (url) {
|
48
|
-
options.url = url[1];
|
49
|
-
}
|
50
|
-
|
51
|
-
new Sortable(element, options);
|
52
|
-
}
|
53
|
-
});
|
54
|
-
}
|
36
|
+
// DEPRECATED: scans through the page for auto-discoverable sortables
|
37
|
+
rescan: function(scope) { }
|
55
38
|
},
|
56
39
|
|
57
40
|
/**
|
@@ -62,7 +45,14 @@ var Sortable = new Class(Observer, {
|
|
62
45
|
*/
|
63
46
|
initialize: function(element, options) {
|
64
47
|
this.element = $(element);
|
65
|
-
this.$super(options);
|
48
|
+
this.$super(Object.merge(options, eval('('+this.element.get('data-sortable-options')+')')));
|
49
|
+
|
50
|
+
// trying to get the embedded Xhr url address
|
51
|
+
var rule = this.options.cssRule.split('[').last(),
|
52
|
+
attr = this.element.get(rule.split('^=').first()) || '',
|
53
|
+
url = attr.match(/\[(.+?)\]/);
|
54
|
+
|
55
|
+
if (url) this.options.url = url[1];
|
66
56
|
|
67
57
|
this.element._sortable = this.init().onUpdate('tryXhr');
|
68
58
|
},
|
@@ -193,16 +183,26 @@ var Sortable = new Class(Observer, {
|
|
193
183
|
/**
|
194
184
|
* Document level hooks for sortables
|
195
185
|
*
|
196
|
-
* Copyright (C) 2009 Nikolay V. Nemshilov
|
186
|
+
* Copyright (C) 2009-2010 Nikolay V. Nemshilov
|
197
187
|
*/
|
198
|
-
document.
|
188
|
+
document.onMousedown(function(event) {
|
189
|
+
var target = event.target, element = [target].concat(target.parents()).first('match', Sortable.Options.cssRule);
|
190
|
+
|
191
|
+
if (element) {
|
192
|
+
var sortable = element._srotable || new Sortable(element);
|
193
|
+
|
194
|
+
if (target._draggable) {
|
195
|
+
target._draggable.dragStart(event);
|
196
|
+
}
|
197
|
+
};
|
198
|
+
});
|
199
199
|
|
200
200
|
/**
|
201
201
|
* Element level features for the Sortable unit
|
202
202
|
*
|
203
|
-
* Copyright (C) Nikolay V. Nemshilov
|
203
|
+
* Copyright (C) 2009-2010 Nikolay V. Nemshilov
|
204
204
|
*/
|
205
|
-
Element.
|
205
|
+
Element.include({
|
206
206
|
/**
|
207
207
|
* Tries to make a sortable unit out of the element
|
208
208
|
*
|
@@ -3,7 +3,7 @@
|
|
3
3
|
*
|
4
4
|
* See http://rightjs.org/ui/sortable
|
5
5
|
*
|
6
|
-
* Copyright (C) Nikolay V. Nemshilov
|
6
|
+
* Copyright (C) 2009-2010 Nikolay V. Nemshilov
|
7
7
|
*/
|
8
8
|
if (!Draggable) throw "Gimme Draggable";
|
9
|
-
eval((function(s,d){for(var i=d.length-1;i>-1;i--)if(d[i])s=s.replace(new RegExp(i,'g'),d[i]);return s})("6 9=
|
9
|
+
eval((function(s,d){for(var i=d.length-1;i>-1;i--)if(d[i])s=s.replace(new RegExp(i,'g'),d[i]);return s})("6 9=39 Class(Observer,{extend:{EVENTS:$w('32'),27:{14:'21',40:'li',30:null,19:'put',34:{},29:'id',23:'position',28:42,16:'[rel^=24]'},rescan:3(s){}},43ialize:3(e,o){2.5=$(e);2.$super(15.25(o,eval('('+2.5.44('data-24-4')+')')));6 r=2.4.16.38('[').last(),a=2.5.44(r.38('^=').37())||'',u=a.22(/\\[(.+?)\\]/);if(u)2.4.30=u[1];2.5.8=2.43().onUpdate('33')},26:3(){2.10.31(3(i){i.undo45().undo46()});delete(2.5.8);12 2},35:3(e){6 b=2.10();6 p=b.indexOf(e);if(p>-1&&p!=e.7){2.fire('32',e,p);b.31(3(a,i){a.7=i})}e.set48({20:'21',36:'21'})},33:3(e,a){if(2.4.30){6 u=2.4.30,p={};6 o=15.25({19:2.4.19,11:{}},2.4.34);6 i=e.id||'';if(2.4.28&&i)i=i.22(/\\d+/)||'';if(u.13('%{id}'))u=u.replace('%{id}',i);41 p[2.4.29]=i;p[2.4.23]=a;if(is47(o.11))o.11+='&'+15.toQuery47(p);41 o.11=15.25(o.11,p);34.load(u,o)}},43:3(){6 h=2.10();if(h.length){6 c=2.35.bind(2);6 e=2.4.14!='21'?2.4.14:['20','right'].13(h[0].4448('float'))?'x':'y';6 f={range:2.5,axis:e,revert:42,revertDuration:0,onS36:3(){c(2.5)}};6 g={overlap:e,containment:h,onHover:3(a){if(h.13(a.5)){6 d=a.5.17();6 t=2.5.17();6 b=a.axisY?(d.36>t.36):(d.20>t.20);2.5.insert(a.clone,b?'before':'after')}}};h.31(3(a,i){a.make45(f).make46(g).7=i})}12 2},10:3(){12 2.5.subNodes(2.4.40)}});document.onMousedown(3(a){6 t=a.tar44,e=[t].concat(t.parents()).37('22',9.27.16);if(e){6 s=e._srotable||39 9(e);if(t.18)t.18.dragStart(a)}});Element.13({make9:3(o){39 9(2,o);12 2},undo9:3(){if(2.8)2.8.26();12 2}});",",,this,function,options,element,var,current_position,_sortable,Sortable,getItems,params,return,include,direction,Object,cssRule,dimensions,_draggable,method,left,auto,match,posParam,sortable,merge,destroy,Options,parseId,idParam,url,each,update,tryXhr,Xhr,moved,top,first,split,new,tags,else,true,init,get,Draggable,Droppable,String,Style".split(",")));
|
data/javascripts/right-src.js
CHANGED
@@ -2,40 +2,18 @@
|
|
2
2
|
* RightJS, http://rightjs.org
|
3
3
|
* Released under the MIT license
|
4
4
|
*
|
5
|
-
*
|
6
|
-
*
|
7
|
-
* Copyright (C) 2008-2009 Nikolay Nemshilov
|
5
|
+
* Copyright (C) 2008-2010 Nikolay Nemshilov
|
8
6
|
*/
|
9
7
|
/**
|
10
8
|
* The framework description object
|
11
9
|
*
|
12
|
-
* Copyright (C) 2008-
|
10
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
13
11
|
*/
|
14
|
-
|
15
|
-
version: "1.5.
|
16
|
-
modules: ["core", "form", "cookie", "xhr", "fx"]
|
12
|
+
RightJS = {
|
13
|
+
version: "1.5.6",
|
14
|
+
modules: ["core", "dom", "form", "cookie", "xhr", "fx"]
|
17
15
|
};
|
18
16
|
|
19
|
-
/**
|
20
|
-
* this object will contain info about the current browser
|
21
|
-
*
|
22
|
-
* Copyright (C) 2008 Nikolay V. Nemshilov aka St. <nemshilov#gma-il>
|
23
|
-
*/
|
24
|
-
var Browser = (function(agent) {
|
25
|
-
return {
|
26
|
-
IE: !!(window.attachEvent && !window.opera),
|
27
|
-
Opera: !!window.opera,
|
28
|
-
WebKit: agent.indexOf('AppleWebKit/') > -1,
|
29
|
-
Gecko: agent.indexOf('Gecko') > -1 && agent.indexOf('KHTML') < 0,
|
30
|
-
MobileSafari: !!agent.match(/Apple.*Mobile.*Safari/),
|
31
|
-
Konqueror: agent.indexOf('Konqueror') > -1,
|
32
|
-
|
33
|
-
// marker for the browsers which don't give access to the HTMLElement unit
|
34
|
-
OLD: agent.indexOf('MSIE 6') > -1 || agent.indexOf('MSIE 7') > -1,
|
35
|
-
IE8: agent.indexOf('MSIE 8') > -1
|
36
|
-
}
|
37
|
-
})(navigator.userAgent);
|
38
|
-
|
39
17
|
/**
|
40
18
|
* There are some util methods
|
41
19
|
*
|
@@ -44,7 +22,7 @@ var Browser = (function(agent) {
|
|
44
22
|
* - Prototype (http://prototypejs.org) Copyright (C) Sam Stephenson
|
45
23
|
* - MooTools (http://mootools.net) Copyright (C) Valerio Proietti
|
46
24
|
*
|
47
|
-
* Copyright (C) 2008-
|
25
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
48
26
|
*/
|
49
27
|
|
50
28
|
/**
|
@@ -59,10 +37,10 @@ var Browser = (function(agent) {
|
|
59
37
|
* @return Objecte extended destination object
|
60
38
|
*/
|
61
39
|
function $ext(dest, src, dont_overwrite) {
|
62
|
-
var src = src || {};
|
40
|
+
var src = src || {}, key;
|
63
41
|
|
64
|
-
for (
|
65
|
-
if (dont_overwrite
|
42
|
+
for (key in src)
|
43
|
+
if (dont_overwrite !== true || typeof(dest[key]) === 'undefined')
|
66
44
|
dest[key] = src[key];
|
67
45
|
|
68
46
|
return dest;
|
@@ -85,7 +63,7 @@ function $try() {
|
|
85
63
|
}
|
86
64
|
};
|
87
65
|
|
88
|
-
/**
|
66
|
+
/** !#server
|
89
67
|
* evals the given javascript text in the context of the current window
|
90
68
|
*
|
91
69
|
* @param String javascript
|
@@ -142,23 +120,9 @@ function $alias(object, names) {
|
|
142
120
|
* @return boolean check result
|
143
121
|
*/
|
144
122
|
function defined(value) {
|
145
|
-
return value !== undefined;
|
123
|
+
return typeof(value) !== 'undefined';
|
146
124
|
};
|
147
125
|
|
148
|
-
/**
|
149
|
-
* checks if the given value is a hash-like object
|
150
|
-
*
|
151
|
-
* @param mixed value
|
152
|
-
* @return boolean check result
|
153
|
-
*/
|
154
|
-
function isHash(value) {
|
155
|
-
return typeof(value) === 'object' && value !== null && value.constructor === Object;
|
156
|
-
};
|
157
|
-
|
158
|
-
// Opera 10.00 and Konqueror 3 heed some extra care with that
|
159
|
-
if (isHash(document.createElement('p'))) {
|
160
|
-
eval(isHash.toString().replace(';', '&&!(arguments[0] instanceof HTMLElement);'));
|
161
|
-
}
|
162
126
|
|
163
127
|
/**
|
164
128
|
* checks if the given value is a function
|
@@ -180,15 +144,6 @@ function isString(value) {
|
|
180
144
|
return typeof(value) === 'string';
|
181
145
|
};
|
182
146
|
|
183
|
-
/**
|
184
|
-
* checks if the given value is an array
|
185
|
-
*
|
186
|
-
* @param mixed value to check
|
187
|
-
* @return boolean check result
|
188
|
-
*/
|
189
|
-
function isArray(value) {
|
190
|
-
return value instanceof Array;
|
191
|
-
};
|
192
147
|
|
193
148
|
/**
|
194
149
|
* checks if the given value is a number
|
@@ -200,7 +155,7 @@ function isNumber(value) {
|
|
200
155
|
return typeof(value) === 'number';
|
201
156
|
};
|
202
157
|
|
203
|
-
/**
|
158
|
+
/** !#server
|
204
159
|
* checks if the given value is an element
|
205
160
|
*
|
206
161
|
* @param mixed value to check
|
@@ -210,7 +165,7 @@ function isElement(value) {
|
|
210
165
|
return value && value.tagName;
|
211
166
|
};
|
212
167
|
|
213
|
-
/**
|
168
|
+
/** !#server
|
214
169
|
* checks if the given value is a DOM-node
|
215
170
|
*
|
216
171
|
* @param mixed value to check
|
@@ -220,25 +175,7 @@ function isNode(value) {
|
|
220
175
|
return value && value.nodeType;
|
221
176
|
};
|
222
177
|
|
223
|
-
/**
|
224
|
-
* converts any iterables into an array
|
225
|
-
*
|
226
|
-
* @param Object iterable
|
227
|
-
* @return Array list
|
228
|
-
*/
|
229
|
-
var $A = (function(slice) {
|
230
|
-
return function (it) {
|
231
|
-
try {
|
232
|
-
return slice.call(it);
|
233
|
-
} catch(e) {
|
234
|
-
for (var a=[], i=0, length = it.length; i < length; i++)
|
235
|
-
a[i] = it[i];
|
236
|
-
return a;
|
237
|
-
}
|
238
|
-
};
|
239
|
-
})(Array.prototype.slice);
|
240
|
-
|
241
|
-
/**
|
178
|
+
/** !#server
|
242
179
|
* shortcut to instance new elements
|
243
180
|
*
|
244
181
|
* @param String tag name
|
@@ -249,7 +186,7 @@ function $E(tag_name, options) {
|
|
249
186
|
return new Element(tag_name, options);
|
250
187
|
};
|
251
188
|
|
252
|
-
/**
|
189
|
+
/** !#server
|
253
190
|
* searches an element by id and/or extends it with the framework extentions
|
254
191
|
*
|
255
192
|
* @param String element id or Element to extend
|
@@ -259,7 +196,7 @@ function $(element) {
|
|
259
196
|
return typeof(element) === 'string' ? document.getElementById(element) : element;
|
260
197
|
};
|
261
198
|
|
262
|
-
/**
|
199
|
+
/** !#server
|
263
200
|
* searches for elements in the document which matches the given css-rule
|
264
201
|
*
|
265
202
|
* @param String css-rule
|
@@ -277,19 +214,81 @@ function $$(css_rule) {
|
|
277
214
|
*/
|
278
215
|
function $w(string) {
|
279
216
|
return string.trim().split(/\s+/);
|
280
|
-
}
|
217
|
+
};
|
281
218
|
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
219
|
+
// we need to generate those functions in an anonymous scope
|
220
|
+
(function() {
|
221
|
+
var to_s = Object.prototype.toString, slice = Array.prototype.slice, UID = 1;
|
222
|
+
|
223
|
+
/**
|
224
|
+
* checks if the given value is a hash-like object
|
225
|
+
*
|
226
|
+
* @param mixed value
|
227
|
+
* @return boolean check result
|
228
|
+
*/
|
229
|
+
isHash = function(value) {
|
230
|
+
return to_s.call(value) === '[object Object]';
|
231
|
+
};
|
232
|
+
|
233
|
+
/** !#server
|
234
|
+
* Internet Explorer needs some additional mumbo-jumbo in here
|
235
|
+
*/
|
236
|
+
if (isHash(document.documentElement)) {
|
237
|
+
isHash = function(value) {
|
238
|
+
return to_s.call(value) === '[object Object]' &&
|
239
|
+
value !== null && typeof(value) !== 'undefined' &&
|
240
|
+
typeof(value.hasOwnProperty) !== 'undefined';
|
241
|
+
};
|
242
|
+
}
|
243
|
+
|
244
|
+
/**
|
245
|
+
* checks if the given value is an array
|
246
|
+
*
|
247
|
+
* @param mixed value to check
|
248
|
+
* @return boolean check result
|
249
|
+
*/
|
250
|
+
isArray = function(value) {
|
251
|
+
return to_s.call(value) === '[object Array]';
|
252
|
+
};
|
253
|
+
|
254
|
+
/**
|
255
|
+
* converts any iterables into an array
|
256
|
+
*
|
257
|
+
* @param Object iterable
|
258
|
+
* @return Array list
|
259
|
+
*/
|
260
|
+
$A = function (it) {
|
261
|
+
try {
|
262
|
+
return slice.call(it);
|
263
|
+
} catch(e) {
|
264
|
+
for (var a=[], i=0, length = it.length; i < length; i++)
|
265
|
+
a[i] = it[i];
|
266
|
+
return a;
|
267
|
+
}
|
268
|
+
};
|
269
|
+
|
270
|
+
/**
|
271
|
+
* generates an unique id for an object
|
272
|
+
*
|
273
|
+
* @param Object object
|
274
|
+
* @return Integer uniq id
|
275
|
+
*/
|
276
|
+
$uid = function(item) {
|
290
277
|
return item.uid || (item.uid = UID++);
|
291
278
|
};
|
292
|
-
|
279
|
+
|
280
|
+
/**
|
281
|
+
* Generating methods for native units extending
|
282
|
+
*/
|
283
|
+
for (var i=0, natives = [Array, Function, Number, String, Date, RegExp]; i < natives.length; i++) {
|
284
|
+
natives[i].include = function(module, dont_overwrite) {
|
285
|
+
$ext(this.prototype, module, dont_overwrite);
|
286
|
+
return this;
|
287
|
+
};
|
288
|
+
}
|
289
|
+
})();
|
290
|
+
|
291
|
+
|
293
292
|
|
294
293
|
|
295
294
|
/**
|
@@ -299,7 +298,7 @@ var $uid = (function(UID) {
|
|
299
298
|
* Some functionality is inspired by
|
300
299
|
* - Prototype (http://prototypejs.org) Copyright (C) Sam Stephenson
|
301
300
|
*
|
302
|
-
* Copyright (C) 2008-
|
301
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
303
302
|
*/
|
304
303
|
$ext(Object, {
|
305
304
|
/**
|
@@ -309,8 +308,8 @@ $ext(Object, {
|
|
309
308
|
* @return Array keys list
|
310
309
|
*/
|
311
310
|
keys: function(object) {
|
312
|
-
var keys = [];
|
313
|
-
for (
|
311
|
+
var keys = [], key;
|
312
|
+
for (key in object)
|
314
313
|
keys.push(key);
|
315
314
|
return keys;
|
316
315
|
},
|
@@ -322,8 +321,8 @@ $ext(Object, {
|
|
322
321
|
* @return Array values list
|
323
322
|
*/
|
324
323
|
values: function(object) {
|
325
|
-
var values = [];
|
326
|
-
for (
|
324
|
+
var values = [], key;
|
325
|
+
for (key in object)
|
327
326
|
values.push(object[key]);
|
328
327
|
return values;
|
329
328
|
},
|
@@ -350,9 +349,9 @@ $ext(Object, {
|
|
350
349
|
* @return Object filtered copy
|
351
350
|
*/
|
352
351
|
without: function() {
|
353
|
-
var filter = $A(arguments), object = filter.shift(), copy = {};
|
352
|
+
var filter = $A(arguments), object = filter.shift(), copy = {}, key;
|
354
353
|
|
355
|
-
for (
|
354
|
+
for (key in object)
|
356
355
|
if (!filter.includes(key))
|
357
356
|
copy[key] = object[key];
|
358
357
|
|
@@ -371,9 +370,10 @@ $ext(Object, {
|
|
371
370
|
* @return Object filtered copy
|
372
371
|
*/
|
373
372
|
only: function() {
|
374
|
-
var filter = $A(arguments), object = filter.shift(), copy = {}
|
373
|
+
var filter = $A(arguments), object = filter.shift(), copy = {},
|
374
|
+
i=0, length = filter.length;
|
375
375
|
|
376
|
-
for (
|
376
|
+
for (; i < length; i++) {
|
377
377
|
if (defined(object[filter[i]]))
|
378
378
|
copy[filter[i]] = object[filter[i]];
|
379
379
|
}
|
@@ -395,8 +395,8 @@ $ext(Object, {
|
|
395
395
|
* @return Object merged object
|
396
396
|
*/
|
397
397
|
merge: function() {
|
398
|
-
var object = {};
|
399
|
-
for (
|
398
|
+
var object = {}, i=0, length = arguments.length;
|
399
|
+
for (; i < length; i++) {
|
400
400
|
if (isHash(arguments[i])) {
|
401
401
|
$ext(object, arguments[i]);
|
402
402
|
}
|
@@ -411,13 +411,13 @@ $ext(Object, {
|
|
411
411
|
* @return String query
|
412
412
|
*/
|
413
413
|
toQueryString: function(object) {
|
414
|
-
var tokens = [];
|
415
|
-
for (
|
414
|
+
var tokens = [], key;
|
415
|
+
for (key in object) {
|
416
416
|
tokens.push(key+'='+encodeURIComponent(object[key]))
|
417
417
|
}
|
418
418
|
return tokens.join('&');
|
419
419
|
}
|
420
|
-
});
|
420
|
+
}, true);
|
421
421
|
|
422
422
|
/**
|
423
423
|
* here are the starndard Math object extends
|
@@ -426,7 +426,7 @@ $ext(Object, {
|
|
426
426
|
* The idea of random mehtod is taken from
|
427
427
|
* - Ruby (http://www.ruby-lang.org) Copyright (C) Yukihiro Matsumoto
|
428
428
|
*
|
429
|
-
* Copyright (C) 2008 Nikolay V. Nemshilov
|
429
|
+
* Copyright (C) 2008 Nikolay V. Nemshilov
|
430
430
|
*/
|
431
431
|
$ext(Math, {
|
432
432
|
/**
|
@@ -462,9 +462,9 @@ $ext(Math, {
|
|
462
462
|
* - Prototype (http://prototypejs.org) Copyright (C) Sam Stephenson
|
463
463
|
* - Ruby (http://www.ruby-lang.org) Copyright (C) Yukihiro Matsumoto
|
464
464
|
*
|
465
|
-
* Copyright (C) 2008-
|
465
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
466
466
|
*/
|
467
|
-
|
467
|
+
(function(A_proto) {
|
468
468
|
|
469
469
|
// JavaScript 1.6 methods recatching up or faking
|
470
470
|
var for_each = A_proto.forEach || function(callback, scope) {
|
@@ -503,20 +503,20 @@ $ext(Array.prototype, (function(A_proto) {
|
|
503
503
|
return true;
|
504
504
|
};
|
505
505
|
|
506
|
-
|
506
|
+
function first(callback, scope) {
|
507
507
|
for (var i=0, length = this.length; i < length; i++) {
|
508
508
|
if (callback.call(scope, this[i], i, this))
|
509
509
|
return this[i];
|
510
510
|
}
|
511
|
-
return undefined
|
511
|
+
return this._$u; // <- undefined, see #191
|
512
512
|
};
|
513
513
|
|
514
|
-
|
514
|
+
function last(callback, scope) {
|
515
515
|
for (var i=this.length-1; i > -1; i--) {
|
516
516
|
if (callback.call(scope, this[i], i, this))
|
517
517
|
return this[i];
|
518
518
|
}
|
519
|
-
return undefined
|
519
|
+
return this._$u; // <- undefined, see #191
|
520
520
|
};
|
521
521
|
|
522
522
|
|
@@ -525,7 +525,7 @@ $ext(Array.prototype, (function(A_proto) {
|
|
525
525
|
//
|
526
526
|
|
527
527
|
// prepares a correct callback function
|
528
|
-
|
528
|
+
function guess_callback(args, array) {
|
529
529
|
var callback = args[0], args = A_proto.slice.call(args, 1), scope = array;
|
530
530
|
|
531
531
|
if (isString(callback)) {
|
@@ -543,13 +543,18 @@ $ext(Array.prototype, (function(A_proto) {
|
|
543
543
|
};
|
544
544
|
|
545
545
|
// calls the given method with preprocessing the arguments
|
546
|
-
|
546
|
+
function call_method(func, scope, args) {
|
547
547
|
try {
|
548
548
|
return func.apply(scope, guess_callback(args, scope));
|
549
549
|
} catch(e) { if (!(e instanceof Break)) throw(e); }
|
550
550
|
};
|
551
551
|
|
552
|
-
|
552
|
+
// checks the value as a boolean
|
553
|
+
function boolean_check(i) {
|
554
|
+
return !!i;
|
555
|
+
};
|
556
|
+
|
557
|
+
Array.include({
|
553
558
|
/**
|
554
559
|
* IE fix
|
555
560
|
* returns the index of the value in the array
|
@@ -684,8 +689,8 @@ return {
|
|
684
689
|
* @param Object optional scope for the callback
|
685
690
|
* @return boolean check result
|
686
691
|
*/
|
687
|
-
some: function() {
|
688
|
-
return call_method(some, this,
|
692
|
+
some: function(value) {
|
693
|
+
return call_method(some, this, value ? arguments : [boolean_check]);
|
689
694
|
},
|
690
695
|
|
691
696
|
/**
|
@@ -695,8 +700,8 @@ return {
|
|
695
700
|
* @param Object optional scope for the callback
|
696
701
|
* @return Boolean check result
|
697
702
|
*/
|
698
|
-
every: function() {
|
699
|
-
return call_method(every, this,
|
703
|
+
every: function(value) {
|
704
|
+
return call_method(every, this, value ? arguments : [boolean_check]);
|
700
705
|
},
|
701
706
|
|
702
707
|
/**
|
@@ -721,10 +726,10 @@ return {
|
|
721
726
|
* @return Array new merged
|
722
727
|
*/
|
723
728
|
merge: function() {
|
724
|
-
for (var copy = this.clone(), arg, i=0, length = arguments.length; i < length; i++) {
|
729
|
+
for (var copy = this.clone(), arg, i=0, j, length = arguments.length; i < length; i++) {
|
725
730
|
arg = arguments[i];
|
726
731
|
if (isArray(arg)) {
|
727
|
-
for (
|
732
|
+
for (j=0; j < arg.length; j++) {
|
728
733
|
if (copy.indexOf(arg[j]) == -1)
|
729
734
|
copy.push(arg[j]);
|
730
735
|
}
|
@@ -758,7 +763,7 @@ return {
|
|
758
763
|
* @return Array filtered version
|
759
764
|
*/
|
760
765
|
compact: function() {
|
761
|
-
return this.without(null,
|
766
|
+
return this.without(null, this._$u); // <- this._u === undefined, see #191
|
762
767
|
},
|
763
768
|
|
764
769
|
/**
|
@@ -805,10 +810,9 @@ return {
|
|
805
810
|
* @return Array shuffled version
|
806
811
|
*/
|
807
812
|
shuffle: function() {
|
808
|
-
var shuff = this.clone();
|
813
|
+
var shuff = this.clone(), j, x, i = shuff.length;
|
809
814
|
|
810
|
-
for (
|
811
|
-
j = Math.random(i-1), x = shuff[--i], shuff[i] = shuff[j], shuff[j] = x);
|
815
|
+
for (; i; j = Math.random(i-1), x = shuff[--i], shuff[i] = shuff[j], shuff[j] = x);
|
812
816
|
|
813
817
|
return shuff;
|
814
818
|
},
|
@@ -831,14 +835,18 @@ return {
|
|
831
835
|
return a.value > b.value ? 1 : a.value < b.value ? -1 : 0;
|
832
836
|
}).map('item');
|
833
837
|
}
|
834
|
-
}
|
838
|
+
});
|
835
839
|
|
836
|
-
$alias(
|
840
|
+
$alias(A_proto, {
|
837
841
|
include: 'includes',
|
838
842
|
all: 'every',
|
839
843
|
any: 'some'
|
840
844
|
});
|
841
845
|
|
846
|
+
})(Array.prototype);
|
847
|
+
|
848
|
+
|
849
|
+
|
842
850
|
/**
|
843
851
|
* The String class extentions
|
844
852
|
*
|
@@ -848,9 +856,9 @@ $alias(Array.prototype, {
|
|
848
856
|
* The trim function taken from work of Steven Levithan
|
849
857
|
* - http://blog.stevenlevithan.com/archives/faster-trim-javascript
|
850
858
|
*
|
851
|
-
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
859
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
852
860
|
*/
|
853
|
-
|
861
|
+
String.include({
|
854
862
|
/**
|
855
863
|
* checks if the string is an empty string
|
856
864
|
*
|
@@ -925,7 +933,7 @@ $ext(String.prototype, {
|
|
925
933
|
* @return String self (unchanged version with scripts still in their place)
|
926
934
|
*/
|
927
935
|
evalScripts: function() {
|
928
|
-
|
936
|
+
this.stripScripts(true);
|
929
937
|
return this;
|
930
938
|
},
|
931
939
|
|
@@ -1027,13 +1035,9 @@ $alias(String.prototype, {include: 'includes'});
|
|
1027
1035
|
* Some of the functionality inspired by
|
1028
1036
|
* - Prototype (http://prototypejs.org) Copyright (C) Sam Stephenson
|
1029
1037
|
*
|
1030
|
-
* Copyright (C) 2008 Nikolay V. Nemshilov
|
1038
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
1031
1039
|
*/
|
1032
|
-
|
1033
|
-
// creating a local reference to the method for a faster access
|
1034
|
-
var _A = Array.prototype.slice;
|
1035
|
-
|
1036
|
-
return {
|
1040
|
+
Function.include({
|
1037
1041
|
/**
|
1038
1042
|
* binds the function to be executed in the given scope
|
1039
1043
|
*
|
@@ -1043,11 +1047,9 @@ return {
|
|
1043
1047
|
* @return Function binded function
|
1044
1048
|
*/
|
1045
1049
|
bind: function() {
|
1046
|
-
|
1047
|
-
|
1048
|
-
var slice = _A, args = slice.call(arguments), scope = args.shift(), func = this;
|
1050
|
+
var args = $A(arguments), scope = args.shift(), func = this;
|
1049
1051
|
return function() {
|
1050
|
-
return func.apply(scope, (args.length
|
1052
|
+
return func.apply(scope, (args.length || arguments.length) ? args.concat($A(arguments)) : args);
|
1051
1053
|
};
|
1052
1054
|
},
|
1053
1055
|
|
@@ -1060,9 +1062,9 @@ return {
|
|
1060
1062
|
* @return Function binded function
|
1061
1063
|
*/
|
1062
1064
|
bindAsEventListener: function() {
|
1063
|
-
var
|
1065
|
+
var args = $A(arguments), scope = args.shift(), func = this;
|
1064
1066
|
return function(event) {
|
1065
|
-
return func.apply(scope, [event || window.event].concat(args).concat(
|
1067
|
+
return func.apply(scope, [event || window.event].concat(args).concat($A(arguments)));
|
1066
1068
|
};
|
1067
1069
|
},
|
1068
1070
|
|
@@ -1074,7 +1076,7 @@ return {
|
|
1074
1076
|
* @return Function curried function
|
1075
1077
|
*/
|
1076
1078
|
curry: function() {
|
1077
|
-
return this.bind.apply(this, [this].concat(
|
1079
|
+
return this.bind.apply(this, [this].concat($A(arguments)));
|
1078
1080
|
},
|
1079
1081
|
|
1080
1082
|
/**
|
@@ -1085,9 +1087,9 @@ return {
|
|
1085
1087
|
* @return Function curried function
|
1086
1088
|
*/
|
1087
1089
|
rcurry: function() {
|
1088
|
-
var curry =
|
1090
|
+
var curry = $A(arguments), func = this;
|
1089
1091
|
return function() {
|
1090
|
-
return func.apply(func,
|
1092
|
+
return func.apply(func, $A(arguments).concat(curry));
|
1091
1093
|
}
|
1092
1094
|
},
|
1093
1095
|
|
@@ -1100,8 +1102,8 @@ return {
|
|
1100
1102
|
* @return Integer timeout marker
|
1101
1103
|
*/
|
1102
1104
|
delay: function() {
|
1103
|
-
var args =
|
1104
|
-
|
1105
|
+
var args = $A(arguments), timeout = args.shift(),
|
1106
|
+
timer = new Number(window.setTimeout(this.bind.apply(this, [this].concat(args)), timeout));
|
1105
1107
|
|
1106
1108
|
timer.cancel = function() { window.clearTimeout(this); };
|
1107
1109
|
|
@@ -1117,8 +1119,8 @@ return {
|
|
1117
1119
|
* @return Ineger interval marker
|
1118
1120
|
*/
|
1119
1121
|
periodical: function() {
|
1120
|
-
var args =
|
1121
|
-
|
1122
|
+
var args = $A(arguments), timeout = args.shift(),
|
1123
|
+
timer = new Number(window.setInterval(this.bind.apply(this, [this].concat(args)), timeout));
|
1122
1124
|
|
1123
1125
|
timer.stop = function() { window.clearInterval(this); };
|
1124
1126
|
|
@@ -1134,14 +1136,14 @@ return {
|
|
1134
1136
|
* @return Function chained function
|
1135
1137
|
*/
|
1136
1138
|
chain: function() {
|
1137
|
-
var args =
|
1139
|
+
var args = $A(arguments), func = args.shift(), current = this;
|
1138
1140
|
return function() {
|
1139
1141
|
var result = current.apply(current, arguments);
|
1140
1142
|
func.apply(func, args);
|
1141
1143
|
return result;
|
1142
1144
|
};
|
1143
1145
|
}
|
1144
|
-
}
|
1146
|
+
});
|
1145
1147
|
|
1146
1148
|
/**
|
1147
1149
|
* The Number class extentions
|
@@ -1150,9 +1152,9 @@ return {
|
|
1150
1152
|
* Some methods inspired by
|
1151
1153
|
* - Ruby (http://www.ruby-lang.org) Copyright (C) Yukihiro Matsumoto
|
1152
1154
|
*
|
1153
|
-
* Copyright (C) 2008 Nikolay V. Nemshilov
|
1155
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
1154
1156
|
*/
|
1155
|
-
|
1157
|
+
Number.include({
|
1156
1158
|
/**
|
1157
1159
|
* executes the given callback the given number of times
|
1158
1160
|
*
|
@@ -1207,19 +1209,19 @@ $ext(Number.prototype, {
|
|
1207
1209
|
* Inspired by
|
1208
1210
|
* - Prototype (http://prototypejs.org) Copyright (C) Sam Stephenson
|
1209
1211
|
*
|
1210
|
-
* Copyright (C) 2008-
|
1212
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
1211
1213
|
*/
|
1212
|
-
|
1213
|
-
|
1214
|
-
|
1215
|
-
|
1216
|
-
|
1217
|
-
|
1218
|
-
|
1219
|
-
|
1220
|
-
|
1221
|
-
}
|
1222
|
-
}
|
1214
|
+
|
1215
|
+
|
1216
|
+
/**
|
1217
|
+
* Escapes the string for safely use as a regular expression
|
1218
|
+
*
|
1219
|
+
* @param String raw string
|
1220
|
+
* @return String escaped string
|
1221
|
+
*/
|
1222
|
+
RegExp.escape = function(string) {
|
1223
|
+
return (''+string).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1');
|
1224
|
+
};
|
1223
1225
|
|
1224
1226
|
/**
|
1225
1227
|
* The basic Class unit
|
@@ -1230,21 +1232,21 @@ $ext(RegExp, {
|
|
1230
1232
|
* - MooTools (http://mootools.net) Copyright (C) Valerio Proietti
|
1231
1233
|
* - Ruby (http://www.ruby-lang.org) Copyright (C) Yukihiro Matsumoto
|
1232
1234
|
*
|
1233
|
-
* Copyright (C) 2008 Nikolay V. Nemshilov
|
1235
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
1234
1236
|
*/
|
1235
1237
|
var Class = function() {
|
1236
1238
|
var args = $A(arguments), properties = args.pop() || {}, parent = args.pop();
|
1239
|
+
|
1240
|
+
// basic class object definition
|
1241
|
+
function klass() {
|
1242
|
+
return this.initialize ? this.initialize.apply(this, arguments) : this;
|
1243
|
+
};
|
1237
1244
|
|
1238
1245
|
// if only the parent class has been specified
|
1239
1246
|
if (!args.length && !isHash(properties)) {
|
1240
1247
|
parent = properties; properties = {};
|
1241
1248
|
}
|
1242
|
-
|
1243
|
-
// basic class object definition
|
1244
|
-
var klass = function() {
|
1245
|
-
return this.initialize ? this.initialize.apply(this, arguments) : this;
|
1246
|
-
};
|
1247
|
-
|
1249
|
+
|
1248
1250
|
// attaching main class-level methods
|
1249
1251
|
$ext(klass, Class.Methods).inherit(parent);
|
1250
1252
|
|
@@ -1275,7 +1277,7 @@ var Class = function() {
|
|
1275
1277
|
Class.findSet = function(object, property) {
|
1276
1278
|
var upcased = property.toUpperCase(), capcased = property.capitalize(),
|
1277
1279
|
candidates = [object, object.constructor].concat(object.constructor.ancestors),
|
1278
|
-
holder = candidates.first(function(o) { return o[upcased] || o[capcased]});
|
1280
|
+
holder = candidates.first(function(o) { return o && (o[upcased] || o[capcased]) });
|
1279
1281
|
|
1280
1282
|
return holder ? holder[upcased] || holder[capcased] : null;
|
1281
1283
|
};
|
@@ -1285,14 +1287,14 @@ Class.findSet = function(object, property) {
|
|
1285
1287
|
* will be extended. It provides basic and standard way to work
|
1286
1288
|
* with the classes.
|
1287
1289
|
*
|
1288
|
-
* Copyright (C) 2008-
|
1290
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
1289
1291
|
*/
|
1290
1292
|
Class.Methods = (function() {
|
1291
|
-
var commons = $w('selfExtended self_extended selfIncluded self_included')
|
1292
|
-
|
1293
|
-
|
1293
|
+
var commons = $w('selfExtended self_extended selfIncluded self_included'),
|
1294
|
+
extend = commons.concat($w('prototype parent extend include')),
|
1295
|
+
include = commons.concat(['constructor']);
|
1294
1296
|
|
1295
|
-
|
1297
|
+
function clean_module(module, what) {
|
1296
1298
|
return Object.without.apply(Object, [module].concat(what == 'e' ? extend : include));
|
1297
1299
|
};
|
1298
1300
|
|
@@ -1394,9 +1396,9 @@ return {
|
|
1394
1396
|
* The idea of the module is inspired by
|
1395
1397
|
* - MooTools (http://mootools.net) Copyright (C) Valerio Proietti
|
1396
1398
|
*
|
1397
|
-
* Copyright (C) 2008-
|
1399
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
1398
1400
|
*/
|
1399
|
-
|
1401
|
+
Options = {
|
1400
1402
|
/**
|
1401
1403
|
* assigns the options by merging them with the default ones
|
1402
1404
|
*
|
@@ -1404,12 +1406,11 @@ var Options = {
|
|
1404
1406
|
* @return Object current instance
|
1405
1407
|
*/
|
1406
1408
|
setOptions: function(options) {
|
1407
|
-
var options = this.options = Object.merge(Class.findSet(this, 'options'), options);
|
1409
|
+
var options = this.options = Object.merge(Class.findSet(this, 'options'), options), match, key;
|
1408
1410
|
|
1409
1411
|
// hooking up the observer options
|
1410
1412
|
if (isFunction(this.on)) {
|
1411
|
-
|
1412
|
-
for (var key in options) {
|
1413
|
+
for (key in options) {
|
1413
1414
|
if (match = key.match(/on([A-Z][A-Za-z]+)/)) {
|
1414
1415
|
this.on(match[1].toLowerCase(), options[key]);
|
1415
1416
|
delete(options[key]);
|
@@ -1444,9 +1445,9 @@ var Options = {
|
|
1444
1445
|
* The naming principle is inspired by
|
1445
1446
|
* - Prototype (http://prototypejs.org) Copyright (C) Sam Stephenson
|
1446
1447
|
*
|
1447
|
-
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
1448
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
1448
1449
|
*/
|
1449
|
-
|
1450
|
+
Observer = new Class({
|
1450
1451
|
include: Options,
|
1451
1452
|
|
1452
1453
|
/**
|
@@ -1496,18 +1497,18 @@ var Observer = new Class({
|
|
1496
1497
|
|
1497
1498
|
default:
|
1498
1499
|
if (isArray(callback)) {
|
1499
|
-
callback.
|
1500
|
-
this.
|
1501
|
-
isArray(
|
1500
|
+
for (var i=0; i < callback.length; i++) {
|
1501
|
+
this.on.apply(this, [event].concat(
|
1502
|
+
isArray(callback[i]) ? callback[i] : [callback[i]]
|
1502
1503
|
).concat(args));
|
1503
|
-
}
|
1504
|
+
}
|
1504
1505
|
}
|
1505
1506
|
}
|
1506
1507
|
|
1507
1508
|
} else {
|
1508
1509
|
// assuming it's a hash of key-value pairs
|
1509
1510
|
for (var name in event) {
|
1510
|
-
this.
|
1511
|
+
this.on.apply(this, [name].concat(
|
1511
1512
|
isArray(event[name]) ? event[name] : [event[name]]
|
1512
1513
|
).concat(args));
|
1513
1514
|
}
|
@@ -1529,17 +1530,13 @@ var Observer = new Class({
|
|
1529
1530
|
* @retun boolean check result
|
1530
1531
|
*/
|
1531
1532
|
observes: function(event, callback) {
|
1532
|
-
if (
|
1533
|
-
|
1534
|
-
if (isString(callback)) callback = this[callback];
|
1535
|
-
|
1536
|
-
return this.$listeners.some(function(i) {
|
1537
|
-
return (event && callback) ? i.e == event && i.f == callback :
|
1538
|
-
event ? i.e == event : i.f == callback;
|
1539
|
-
});
|
1540
|
-
}
|
1533
|
+
if (!isString(event)) { callback = event; event = null; }
|
1534
|
+
if (isString(callback)) callback = this[callback];
|
1541
1535
|
|
1542
|
-
return
|
1536
|
+
return (this.$listeners || []).some(function(i) {
|
1537
|
+
return (event && callback) ? i.e === event && i.f === callback :
|
1538
|
+
event ? i.e === event : i.f === callback;
|
1539
|
+
});
|
1543
1540
|
},
|
1544
1541
|
|
1545
1542
|
/**
|
@@ -1553,11 +1550,15 @@ var Observer = new Class({
|
|
1553
1550
|
* @return Observer self
|
1554
1551
|
*/
|
1555
1552
|
stopObserving: function(event, callback) {
|
1556
|
-
if (
|
1553
|
+
if (isHash(event)) {
|
1554
|
+
for (var key in event) {
|
1555
|
+
this.stopObserving(key, event[key]);
|
1556
|
+
}
|
1557
|
+
} else {
|
1557
1558
|
if (!isString(event)) { callback = event; event = null; }
|
1558
1559
|
if (isString(callback)) callback = this[callback];
|
1559
1560
|
|
1560
|
-
this.$listeners = this.$listeners.filter(function(i) {
|
1561
|
+
this.$listeners = (this.$listeners || []).filter(function(i) {
|
1561
1562
|
return (event && callback) ? (i.e !== event || i.f !== callback) :
|
1562
1563
|
(event ? i.e !== event : i.f !== callback);
|
1563
1564
|
}, this);
|
@@ -1639,12 +1640,31 @@ $alias(Observer.prototype, { observe: 'on' });
|
|
1639
1640
|
/**
|
1640
1641
|
* iterators in-callbacks break exception
|
1641
1642
|
*
|
1642
|
-
* Copyright (C) 2009 Nikolay V. Nemshilov
|
1643
|
+
* Copyright (C) 2009-2010 Nikolay V. Nemshilov
|
1643
1644
|
*/
|
1644
|
-
|
1645
|
+
Break = new Class(Error, {
|
1645
1646
|
message: "Manual iterator break"
|
1646
1647
|
});
|
1647
1648
|
|
1649
|
+
/**
|
1650
|
+
* this object will contain info about the current browser
|
1651
|
+
*
|
1652
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
1653
|
+
*/
|
1654
|
+
Browser = (function(agent) {
|
1655
|
+
return {
|
1656
|
+
IE: !!(window.attachEvent && !window.opera),
|
1657
|
+
Opera: !!window.opera,
|
1658
|
+
WebKit: agent.indexOf('AppleWebKit/') > -1,
|
1659
|
+
Gecko: agent.indexOf('Gecko') > -1 && agent.indexOf('KHTML') < 0,
|
1660
|
+
MobileSafari: !!agent.match(/Apple.*Mobile.*Safari/),
|
1661
|
+
Konqueror: agent.indexOf('Konqueror') > -1,
|
1662
|
+
|
1663
|
+
// marker for the browsers which don't give access to the HTMLElement unit
|
1664
|
+
OLD: !!(window.attachEvent && !window.opera) && !document.querySelector
|
1665
|
+
}
|
1666
|
+
})(navigator.userAgent);
|
1667
|
+
|
1648
1668
|
/**
|
1649
1669
|
* represents some additional functionality for the Event class
|
1650
1670
|
*
|
@@ -1654,9 +1674,9 @@ var Break = new Class(Error, {
|
|
1654
1674
|
* The additional method names are inspired by
|
1655
1675
|
* - Prototype (http://prototypejs.org) Copyright (C) Sam Stephenson
|
1656
1676
|
*
|
1657
|
-
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
1677
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
1658
1678
|
*/
|
1659
|
-
|
1679
|
+
Event = new Class(window.Event, {
|
1660
1680
|
extend: {
|
1661
1681
|
/**
|
1662
1682
|
* extends a native object with additional functionality
|
@@ -1668,25 +1688,25 @@ var Event = new Class(Event, {
|
|
1668
1688
|
ext: function(event, bound_element) {
|
1669
1689
|
if (!event.stop) {
|
1670
1690
|
$ext(event, this.Methods, true);
|
1691
|
+
}
|
1692
|
+
|
1693
|
+
if (!event.target && event.srcElement) {
|
1694
|
+
// faking the which button
|
1695
|
+
event.which = event.button == 2 ? 3 : event.button == 4 ? 2 : 1;
|
1671
1696
|
|
1672
|
-
|
1673
|
-
|
1674
|
-
event.which = event.button == 2 ? 3 : event.button == 4 ? 2 : 1;
|
1675
|
-
|
1676
|
-
// faking the mouse position
|
1677
|
-
var scrolls = window.scrolls();
|
1697
|
+
// faking the mouse position
|
1698
|
+
var scrolls = window.scrolls();
|
1678
1699
|
|
1679
|
-
|
1680
|
-
|
1681
|
-
|
1682
|
-
|
1683
|
-
|
1684
|
-
|
1685
|
-
|
1686
|
-
|
1687
|
-
|
1688
|
-
|
1689
|
-
}
|
1700
|
+
event.pageX = event.clientX + scrolls.x;
|
1701
|
+
event.pageY = event.clientY + scrolls.y;
|
1702
|
+
|
1703
|
+
// faking the target property
|
1704
|
+
event.target = $(event.srcElement) || bound_element;
|
1705
|
+
|
1706
|
+
// faking the relatedTarget, currentTarget and other targets
|
1707
|
+
event.relatedTarget = event.target === event.fromElement ? $(event.toElement) : event.target;
|
1708
|
+
event.currentTarget = bound_element;
|
1709
|
+
event.eventPhase = 3; // bubbling phase
|
1690
1710
|
}
|
1691
1711
|
|
1692
1712
|
// Safari bug fix
|
@@ -1744,7 +1764,7 @@ var Event = new Class(Event, {
|
|
1744
1764
|
* @param Object methods
|
1745
1765
|
* @return void
|
1746
1766
|
*/
|
1747
|
-
Event.
|
1767
|
+
Event.include = function(methods) {
|
1748
1768
|
$ext(this.Methods, methods);
|
1749
1769
|
|
1750
1770
|
try { // extending the events prototype
|
@@ -1779,7 +1799,7 @@ Event.include({
|
|
1779
1799
|
/**
|
1780
1800
|
* custom events unit, used as a mediator for the artificial events handling in the generic observer
|
1781
1801
|
*
|
1782
|
-
* Copyright (C) 2008-
|
1802
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
1783
1803
|
*/
|
1784
1804
|
Event.Custom = function(name, options) {
|
1785
1805
|
this.type = name;
|
@@ -1787,24 +1807,177 @@ Event.Custom = function(name, options) {
|
|
1787
1807
|
$ext(this, options || {});
|
1788
1808
|
};
|
1789
1809
|
|
1810
|
+
/**
|
1811
|
+
* This module contains the basic events-delegation feature support
|
1812
|
+
*
|
1813
|
+
* Copyright (C) 2010 Nikolay V. Nemshilov
|
1814
|
+
*/
|
1815
|
+
Event.extend({
|
1816
|
+
/**
|
1817
|
+
* Creates an event delegation handler
|
1818
|
+
*
|
1819
|
+
* USAGE:
|
1820
|
+
*
|
1821
|
+
* var delegation = Event.delegate({
|
1822
|
+
* "css_rule_1": function() { do_something_usual(); },
|
1823
|
+
* "css_rule_2": function() { do_something_another(); },
|
1824
|
+
*
|
1825
|
+
* // us also can use references by name with or without options
|
1826
|
+
* "css_rule_3": ['addClass', 'that-class'],
|
1827
|
+
* "css_rule_4": 'hide'
|
1828
|
+
* });
|
1829
|
+
*
|
1830
|
+
* $(element).on('click', delegation);
|
1831
|
+
*
|
1832
|
+
* NOTE:
|
1833
|
+
* your delegation handler will be called in contexts of matching _targets_
|
1834
|
+
* not in the context of the element where it was attached
|
1835
|
+
*
|
1836
|
+
* @param Object delegation rules
|
1837
|
+
* @return Function delegation handler
|
1838
|
+
*/
|
1839
|
+
delegate: function(options) {
|
1840
|
+
return function(event) {
|
1841
|
+
var target = event.target, css_rule, args, callback;
|
1842
|
+
|
1843
|
+
for (css_rule in options) {
|
1844
|
+
if ($(this).select(css_rule).include(target)) {
|
1845
|
+
args = options[css_rule];
|
1846
|
+
args = isArray(args) ? args : [args];
|
1847
|
+
callback = args[0];
|
1848
|
+
args = args.slice(1);
|
1849
|
+
|
1850
|
+
if (isString(callback))
|
1851
|
+
target[callback].apply(target, args);
|
1852
|
+
else
|
1853
|
+
callback.apply(target, [event].concat(args));
|
1854
|
+
}
|
1855
|
+
}
|
1856
|
+
};
|
1857
|
+
},
|
1858
|
+
|
1859
|
+
/**
|
1860
|
+
* Creates a document-level events delegations catcher
|
1861
|
+
*
|
1862
|
+
* USAGE:
|
1863
|
+
* Event.behave("ul#main-menu li", "click", function() { alert('clicked'); });
|
1864
|
+
* Event.behave("ul#main-menu li", "mouseover", "addClass", "hovered");
|
1865
|
+
* Event.behave("ul#main-menu li", {
|
1866
|
+
* click: function() { alert('clicked'); },
|
1867
|
+
* mouseover: ['addClass', 'hovered'],
|
1868
|
+
* mouseout: ['removeClass', 'hovered'],
|
1869
|
+
* dblclick: 'hide'
|
1870
|
+
* });
|
1871
|
+
*
|
1872
|
+
* @param String css-rule
|
1873
|
+
* @param mixed String event name or a Hash of events
|
1874
|
+
* @param mixed Function callback or String method name
|
1875
|
+
* @param mixed optional curried arguments
|
1876
|
+
* @return Object with event handlers description the document.on() function will receive
|
1877
|
+
*/
|
1878
|
+
behave: function(css_rule, options) {
|
1879
|
+
var events = {}, hash = {}, args = $A(arguments).slice(1),
|
1880
|
+
focus = 'focus', blur = 'blur', focus_blur = [focus, blur];
|
1881
|
+
|
1882
|
+
if (isString(options)) {
|
1883
|
+
hash[args.shift()] = args;
|
1884
|
+
options = hash;
|
1885
|
+
}
|
1886
|
+
|
1887
|
+
for (var event in options) {
|
1888
|
+
var hash = {}; hash[css_rule] = options[event];
|
1889
|
+
|
1890
|
+
if (Browser.IE) {
|
1891
|
+
// fancy IE browsers have different names for bubbling versions of those events
|
1892
|
+
if (event == focus) event = focus + 'in';
|
1893
|
+
if (event == blur) event = focus + 'out';
|
1894
|
+
}
|
1895
|
+
|
1896
|
+
events[event] = Event.delegate(hash);
|
1897
|
+
|
1898
|
+
if (focus_blur.include(event) && !Browser.IE) {
|
1899
|
+
// HACK! HACK! HACK!
|
1900
|
+
// by default, method #on uses a non-captive events attachment
|
1901
|
+
// but for focus and blur effects we need the opposite
|
1902
|
+
// so we calling the method directly and pushing the listeners manually
|
1903
|
+
|
1904
|
+
document.addEventListener(event, events[event], true);
|
1905
|
+
|
1906
|
+
(document.$listeners = document.$listeners || []).push({
|
1907
|
+
e: event, f: events[event], a: []
|
1908
|
+
});
|
1909
|
+
|
1910
|
+
} else {
|
1911
|
+
document.on(event, events[event]);
|
1912
|
+
}
|
1913
|
+
}
|
1914
|
+
|
1915
|
+
return events;
|
1916
|
+
}
|
1917
|
+
});
|
1918
|
+
|
1919
|
+
|
1920
|
+
String.include({
|
1921
|
+
/**
|
1922
|
+
* A shortcut for document-level events delegation handler attaching
|
1923
|
+
*
|
1924
|
+
* USAGE:
|
1925
|
+
*
|
1926
|
+
* "ul#main-menu li".on("click", function() { alert('clicked'); });
|
1927
|
+
* "ul#main-menu li".on("mouseover", "addClass", "hovered");
|
1928
|
+
* "ul#main-menu li".on("mouseout", "removeClass", "hovered");
|
1929
|
+
*
|
1930
|
+
* // or like that in a shash
|
1931
|
+
* "ul#main-menu li".on({
|
1932
|
+
* click: function() { alert('clicked'); },
|
1933
|
+
* mouseover: ['addClass', 'hovered'],
|
1934
|
+
* mouseout: ['removeClass', 'hovered'],
|
1935
|
+
* dblclick: 'hide'
|
1936
|
+
* });
|
1937
|
+
*
|
1938
|
+
* ...
|
1939
|
+
* @return String this
|
1940
|
+
*/
|
1941
|
+
on: function() {
|
1942
|
+
Event.behave.apply(Event, [''+this].concat($A(arguments)));
|
1943
|
+
return this;
|
1944
|
+
}
|
1945
|
+
});
|
1946
|
+
|
1947
|
+
$alias(String.prototype, {behave: 'on'});
|
1948
|
+
|
1949
|
+
|
1790
1950
|
/**
|
1791
1951
|
* The DOM Element unit handling
|
1792
1952
|
*
|
1793
|
-
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
1953
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
1794
1954
|
*/
|
1795
|
-
|
1955
|
+
Element = (function(old_Element) {
|
1956
|
+
|
1957
|
+
// Element constructor options mapper
|
1958
|
+
var options_map = {
|
1959
|
+
id: ['id', 0],
|
1960
|
+
html: ['innerHTML', 0],
|
1961
|
+
'class': ['className', 0],
|
1962
|
+
style: ['setStyle', 1],
|
1963
|
+
observe: ['on', 1],
|
1964
|
+
on: ['on', 1]
|
1965
|
+
};
|
1796
1966
|
|
1797
|
-
|
1798
|
-
var element = document.createElement(tag)
|
1967
|
+
function new_Element(tag, options) {
|
1968
|
+
var element = document.createElement(tag);
|
1799
1969
|
|
1800
|
-
if (options
|
1801
|
-
|
1802
|
-
|
1803
|
-
|
1804
|
-
|
1970
|
+
if (options) {
|
1971
|
+
for (var key in options) {
|
1972
|
+
if (options_map[key]) {
|
1973
|
+
if (options_map[key][1]) element[options_map[key][0]](options[key]);
|
1974
|
+
else element[options_map[key][0]] = options[key];
|
1975
|
+
} else {
|
1976
|
+
element.set(key, options[key]);
|
1977
|
+
}
|
1978
|
+
}
|
1979
|
+
}
|
1805
1980
|
|
1806
|
-
for (var key in options) // a filter in case there is no keys in the options left
|
1807
|
-
return element.set(options);
|
1808
1981
|
return element;
|
1809
1982
|
};
|
1810
1983
|
|
@@ -1815,9 +1988,9 @@ self.Element = (function(old_Element) {
|
|
1815
1988
|
// and we kinda hacking the Element constructor so that
|
1816
1989
|
// it affected IE browsers only
|
1817
1990
|
//
|
1818
|
-
new_Element = eval('
|
1819
|
-
'$1if($2
|
1820
|
-
)+'
|
1991
|
+
new_Element = eval('['+new_Element.toString().replace(/(\((\w+),\s*(\w+)\)\s*\{)/,
|
1992
|
+
'$1if($2==="input"&&$3)$2="<input name="+$3.name+" type="+$3.type+($3.checked?" checked":"")+"/>";'
|
1993
|
+
)+']')[0];
|
1821
1994
|
}
|
1822
1995
|
|
1823
1996
|
// connecting the old Element instance to the new one for IE browsers
|
@@ -1827,13 +2000,13 @@ self.Element = (function(old_Element) {
|
|
1827
2000
|
}
|
1828
2001
|
|
1829
2002
|
return new_Element;
|
1830
|
-
})(
|
2003
|
+
})(window.Element);
|
1831
2004
|
|
1832
2005
|
|
1833
2006
|
$ext(Element, {
|
1834
2007
|
/**
|
1835
2008
|
* registeres the methods on the custom element methods list
|
1836
|
-
* will add them to prototype and
|
2009
|
+
* will add them to prototype and register at the Element.Methods hash
|
1837
2010
|
*
|
1838
2011
|
* USAGE:
|
1839
2012
|
* Element.include({
|
@@ -1841,7 +2014,6 @@ $ext(Element, {
|
|
1841
2014
|
* });
|
1842
2015
|
*
|
1843
2016
|
* $(element).foo(bar);
|
1844
|
-
* Element.foo(element, bar);
|
1845
2017
|
*
|
1846
2018
|
* @param Object new methods list
|
1847
2019
|
* @param Boolean flag if the method should keep the existing methods alive
|
@@ -1851,12 +2023,8 @@ $ext(Element, {
|
|
1851
2023
|
$ext(this.Methods, methods, dont_overwrite);
|
1852
2024
|
|
1853
2025
|
try { // busting up the basic element prototypes
|
1854
|
-
$ext(HTMLElement.prototype, methods, dont_overwrite);
|
1855
|
-
} catch(e) {
|
1856
|
-
try { // IE8 native element extension
|
1857
|
-
$ext(this.parent.prototype, methods, dont_overwrite);
|
1858
|
-
} catch(e) {}
|
1859
|
-
}
|
2026
|
+
$ext((window.HTMLElement || this.parent).prototype, methods, dont_overwrite);
|
2027
|
+
} catch(e) {}
|
1860
2028
|
|
1861
2029
|
return this;
|
1862
2030
|
},
|
@@ -1864,9 +2032,6 @@ $ext(Element, {
|
|
1864
2032
|
Methods: {} // DO NOT Extend this object manually unless you really need it, use Element#include
|
1865
2033
|
});
|
1866
2034
|
|
1867
|
-
// the old interface alias, NOTE will be nuked
|
1868
|
-
Element.addMethods = Element.include;
|
1869
|
-
|
1870
2035
|
/**
|
1871
2036
|
* The DOM Element unit structures handling module
|
1872
2037
|
*
|
@@ -1876,15 +2041,13 @@ Element.addMethods = Element.include;
|
|
1876
2041
|
* NOTE: if a css-rule was specified then the result of the method
|
1877
2042
|
* will be filtered/adjusted depends on the rule
|
1878
2043
|
*
|
1879
|
-
* the css-rule might be a string or a Selector instance
|
1880
|
-
*
|
1881
2044
|
* Credits:
|
1882
2045
|
* The naming principle and most of the names are taken from
|
1883
2046
|
* - Prototype (http://prototypejs.org) Copyright (C) Sam Stephenson
|
1884
2047
|
* The insertions system implementation is inspired by
|
1885
2048
|
* - MooTools (http://mootools.net) Copyright (C) Valerio Proietti
|
1886
2049
|
*
|
1887
|
-
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
2050
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
1888
2051
|
*/
|
1889
2052
|
Element.include({
|
1890
2053
|
parent: function(css_rule) {
|
@@ -1896,9 +2059,9 @@ Element.include({
|
|
1896
2059
|
},
|
1897
2060
|
|
1898
2061
|
subNodes: function(css_rule) {
|
1899
|
-
|
1900
|
-
|
1901
|
-
|
2062
|
+
return this.select(css_rule).filter(function(element) {
|
2063
|
+
return element.parentNode === this;
|
2064
|
+
}, this);
|
1902
2065
|
},
|
1903
2066
|
|
1904
2067
|
siblings: function(css_rule) {
|
@@ -2000,7 +2163,7 @@ Element.include({
|
|
2000
2163
|
* @return Element self
|
2001
2164
|
*/
|
2002
2165
|
update: function(content) {
|
2003
|
-
if (isString(content) || isNumber(content)) {
|
2166
|
+
if ((isString(content) || isNumber(content)) && !Element.insertions.wraps[this.tagName]) {
|
2004
2167
|
var scripts;
|
2005
2168
|
this.innerHTML = (''+content).stripScripts(function(s) { scripts = s; });
|
2006
2169
|
if (scripts) $eval(scripts);
|
@@ -2155,7 +2318,7 @@ $alias(Element.insertions.wraps, {
|
|
2155
2318
|
* - MooTools (http://mootools.net) Copyright (C) Valerio Proietti
|
2156
2319
|
* - Dojo (www.dojotoolkit.org) Copyright (C) The Dojo Foundation
|
2157
2320
|
*
|
2158
|
-
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
2321
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
2159
2322
|
*/
|
2160
2323
|
Element.include({
|
2161
2324
|
/**
|
@@ -2168,9 +2331,10 @@ Element.include({
|
|
2168
2331
|
* @return Element self
|
2169
2332
|
*/
|
2170
2333
|
setStyle: function(hash, value) {
|
2171
|
-
|
2334
|
+
var key, c_key, style = {};
|
2335
|
+
|
2336
|
+
if (value) { style[hash] = value; hash = style; }
|
2172
2337
|
else if(isString(hash)) {
|
2173
|
-
var style = {};
|
2174
2338
|
hash.split(';').each(function(option) {
|
2175
2339
|
var els = option.split(':').map('trim');
|
2176
2340
|
if (els[0] && els[1]) {
|
@@ -2180,15 +2344,15 @@ Element.include({
|
|
2180
2344
|
hash = style;
|
2181
2345
|
}
|
2182
2346
|
|
2183
|
-
|
2184
|
-
for (
|
2347
|
+
|
2348
|
+
for (key in hash) {
|
2185
2349
|
c_key = key.indexOf('-') != -1 ? key.camelize() : key;
|
2186
2350
|
|
2187
2351
|
if (key === 'opacity') {
|
2188
2352
|
if (Browser.IE) {
|
2189
|
-
this.style.filter = 'alpha(opacity='+
|
2353
|
+
this.style.filter = 'alpha(opacity='+ hash[key] * 100 +')';
|
2190
2354
|
} else {
|
2191
|
-
this.style.opacity =
|
2355
|
+
this.style.opacity = hash[key];
|
2192
2356
|
}
|
2193
2357
|
} else if (key === 'float') {
|
2194
2358
|
c_key = Browser.IE ? 'styleFloat' : 'cssFloat';
|
@@ -2323,7 +2487,7 @@ Element.include({
|
|
2323
2487
|
* Most of the naming system in the module inspired by
|
2324
2488
|
* - Prototype (http://prototypejs.org) Copyright (C) Sam Stephenson
|
2325
2489
|
*
|
2326
|
-
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
2490
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
2327
2491
|
*/
|
2328
2492
|
Element.include({
|
2329
2493
|
/**
|
@@ -2338,7 +2502,7 @@ Element.include({
|
|
2338
2502
|
|
2339
2503
|
for (var key in hash) {
|
2340
2504
|
// some attributes are not available as properties
|
2341
|
-
if (this[key] === undefined) {
|
2505
|
+
if (typeof(this[key]) === 'undefined') {
|
2342
2506
|
this.setAttribute(key, ''+hash[key]);
|
2343
2507
|
}
|
2344
2508
|
this[key] = hash[key];
|
@@ -2456,7 +2620,7 @@ Element.include({
|
|
2456
2620
|
* this module contains the Element's part of functionality
|
2457
2621
|
* responsible for the dimensions and positions getting/setting
|
2458
2622
|
*
|
2459
|
-
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
2623
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
2460
2624
|
*/
|
2461
2625
|
Element.include({
|
2462
2626
|
/**
|
@@ -2604,10 +2768,11 @@ Element.include({
|
|
2604
2768
|
/**
|
2605
2769
|
* makes the window be scrolled to the element
|
2606
2770
|
*
|
2771
|
+
* @param Object fx options
|
2607
2772
|
* @return Element self
|
2608
2773
|
*/
|
2609
|
-
scrollThere: function() {
|
2610
|
-
window.scrollTo(this);
|
2774
|
+
scrollThere: function(options) {
|
2775
|
+
window.scrollTo(this, options);
|
2611
2776
|
return this;
|
2612
2777
|
}
|
2613
2778
|
});
|
@@ -2615,7 +2780,7 @@ Element.include({
|
|
2615
2780
|
/**
|
2616
2781
|
* DOM Element events handling methods
|
2617
2782
|
*
|
2618
|
-
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
2783
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
2619
2784
|
*/
|
2620
2785
|
Element.include((function() {
|
2621
2786
|
var observer = Observer.create({},
|
@@ -2628,38 +2793,35 @@ Element.include((function() {
|
|
2628
2793
|
// I'm kinda patching the observer methods manually in here
|
2629
2794
|
// the reason is in building flat and fast functions
|
2630
2795
|
//
|
2631
|
-
|
2632
|
-
observer.
|
2633
|
-
|
2634
|
-
|
2635
|
-
|
2636
|
-
|
2637
|
-
|
2638
|
-
|
2639
|
-
|
2640
|
-
|
2641
|
-
|
2642
|
-
|
2643
|
-
|
2644
|
-
|
2645
|
-
|
2646
|
-
|
2647
|
-
|
2648
|
-
|
2649
|
-
|
2650
|
-
|
2651
|
-
|
2652
|
-
|
2653
|
-
|
2654
|
-
|
2655
|
-
|
2656
|
-
|
2657
|
-
|
2658
|
-
|
2659
|
-
'
|
2660
|
-
|
2661
|
-
// a simple events terminator method to be hooked like
|
2662
|
-
// this.onClick('stopEvent');
|
2796
|
+
function hack(name, re, text) {
|
2797
|
+
observer[name] = eval('['+ observer[name].toString().replace(re, text) +']')[0];
|
2798
|
+
};
|
2799
|
+
|
2800
|
+
hack('on',
|
2801
|
+
/(\$listeners\.push\((\w+?)\);)/,
|
2802
|
+
|
2803
|
+
'$1$2.e=Event.cleanName($2.e);$2.n=Event.realName($2.e);$2.w=function(){var a=$A(arguments),e=($2.r&&$2.r!=="stopEvent")?a.shift():Event.ext(a[0],this);return $2.f.apply(this,a.concat($2.a))};' + (
|
2804
|
+
window.attachEvent ?
|
2805
|
+
'$2.w=$2.w.bind(this);this.attachEvent("on"+$2.n,$2.w);' :
|
2806
|
+
'this.addEventListener($2.n,$2.w,false);'
|
2807
|
+
)
|
2808
|
+
);
|
2809
|
+
observer.observe = observer.on;
|
2810
|
+
|
2811
|
+
hack('stopObserving',
|
2812
|
+
/(function\s*\((\w+)\)\s*\{\s*)(return\s*)([^}]+)/m,
|
2813
|
+
'$1var r=$4;if(!r)' + (window.attachEvent ?
|
2814
|
+
'this.detachEvent("on"+$2.n,$2.w);' :
|
2815
|
+
'this.removeEventListener($2.n,$2.w,false);'
|
2816
|
+
)+'$3 r'
|
2817
|
+
);
|
2818
|
+
|
2819
|
+
hack('fire',
|
2820
|
+
/(\w+)\.f\.apply.*?\.concat\((\w+)\)\)/,
|
2821
|
+
'$1.f.apply(this,(($1.r&&$1.r!=="stopEvent")?[]:[new Event($1.e,$2.shift())]).concat($1.a).concat($2))'
|
2822
|
+
);
|
2823
|
+
|
2824
|
+
// a simple events terminator method to be hooked like this.onClick('stopEvent');
|
2663
2825
|
observer.stopEvent = function(e) { e.stop(); };
|
2664
2826
|
|
2665
2827
|
$ext(window, observer);
|
@@ -2677,7 +2839,7 @@ Element.include((function() {
|
|
2677
2839
|
* NOTE: this module is just a wrap over the native CSS-selectors feature
|
2678
2840
|
* see the olds/css.js file for the manual selector code
|
2679
2841
|
*
|
2680
|
-
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
2842
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
2681
2843
|
*/
|
2682
2844
|
Element.include((function() {
|
2683
2845
|
/**
|
@@ -2685,7 +2847,7 @@ Element.include((function() {
|
|
2685
2847
|
* and as we actually search only inside of the element we add it's tag
|
2686
2848
|
* as a scope for the search
|
2687
2849
|
*/
|
2688
|
-
|
2850
|
+
function stub_rule(css_rule, tag) {
|
2689
2851
|
return css_rule ? css_rule.replace(/(^|,)/g, '$1'+ tag + ' ') : '*';
|
2690
2852
|
};
|
2691
2853
|
|
@@ -2714,18 +2876,18 @@ return {
|
|
2714
2876
|
/**
|
2715
2877
|
* checks if the element matches this css-rule
|
2716
2878
|
*
|
2879
|
+
* NOTE: the element should be attached to the page
|
2880
|
+
*
|
2717
2881
|
* @param String css-rule
|
2718
2882
|
* @return Boolean check result
|
2719
2883
|
*/
|
2720
2884
|
match: function(css_rule) {
|
2721
|
-
|
2722
|
-
|
2723
|
-
var fake, result, parent, parents = this.parents();
|
2885
|
+
var result, parent = this.tagName === 'HTML' ? this.ownerDocument : this.parents().last();
|
2724
2886
|
|
2725
|
-
|
2726
|
-
result = parent.select(css_rule).include(this);
|
2887
|
+
// if it's a single node putting it into the context
|
2888
|
+
result = $(parent || $E('p').insert(this)).select(css_rule).include(this);
|
2727
2889
|
|
2728
|
-
if (
|
2890
|
+
if (!parent) this.remove();
|
2729
2891
|
|
2730
2892
|
return result;
|
2731
2893
|
}
|
@@ -2734,21 +2896,22 @@ return {
|
|
2734
2896
|
// document-level hooks
|
2735
2897
|
$ext(document, {
|
2736
2898
|
first: function(css_rule) {
|
2737
|
-
return this.querySelector(css_rule
|
2899
|
+
return this.querySelector(css_rule);
|
2738
2900
|
},
|
2739
2901
|
|
2740
2902
|
select: function(css_rule) {
|
2741
|
-
return $A(this.querySelectorAll(css_rule
|
2903
|
+
return $A(this.querySelectorAll(css_rule));
|
2742
2904
|
}
|
2743
2905
|
});
|
2744
2906
|
|
2907
|
+
|
2745
2908
|
/**
|
2746
2909
|
* the window object extensions
|
2747
2910
|
*
|
2748
|
-
* Copyright (C) 2008-
|
2911
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
2749
2912
|
*/
|
2750
|
-
$ext(
|
2751
|
-
var
|
2913
|
+
$ext(window, (function() {
|
2914
|
+
var native_scroll = window.scrollTo;
|
2752
2915
|
|
2753
2916
|
return {
|
2754
2917
|
/**
|
@@ -2782,19 +2945,27 @@ return {
|
|
2782
2945
|
*
|
2783
2946
|
* @param mixed number left position, a hash position, element or a string element id
|
2784
2947
|
* @param number top position
|
2948
|
+
* @param Object fx options
|
2785
2949
|
* @return window self
|
2786
2950
|
*/
|
2787
|
-
scrollTo: function(left, top) {
|
2951
|
+
scrollTo: function(left, top, fx_options) {
|
2952
|
+
var left_pos = left, top_pos = top; // moving the values into new vars so they didn't get screwed later on
|
2953
|
+
|
2788
2954
|
if(isElement(left) || (isString(left) && $(left))) {
|
2789
2955
|
left = $(left).position();
|
2790
2956
|
}
|
2791
2957
|
|
2792
2958
|
if (isHash(left)) {
|
2793
|
-
|
2794
|
-
|
2959
|
+
top_pos = left.y;
|
2960
|
+
left_pos = left.x;
|
2795
2961
|
}
|
2796
2962
|
|
2797
|
-
|
2963
|
+
// checking if a smooth scroll was requested
|
2964
|
+
if (isHash(fx_options = fx_options || top) && window.Fx) {
|
2965
|
+
new Fx.Scroll(this, fx_options).start({x: left_pos, y: top_pos});
|
2966
|
+
} else {
|
2967
|
+
native_scroll(left_pos, top_pos);
|
2968
|
+
}
|
2798
2969
|
|
2799
2970
|
return this;
|
2800
2971
|
}
|
@@ -2809,14 +2980,14 @@ return {
|
|
2809
2980
|
* The basic principles of the module are originated from
|
2810
2981
|
* - MooTools (http://mootools.net) Copyright (C) Valerio Proietti
|
2811
2982
|
*
|
2812
|
-
* Copyright (C) 2009 Nikolay V. Nemshilov
|
2983
|
+
* Copyright (C) 2009-2010 Nikolay V. Nemshilov
|
2813
2984
|
*/
|
2814
2985
|
[window, document].each(function(object) {
|
2815
2986
|
Observer.createShortcuts(object, ['ready']);
|
2816
2987
|
var ready = object.fire.bind(object, 'ready');
|
2817
2988
|
|
2818
2989
|
// IE and Konqueror browsers
|
2819
|
-
if (document.readyState !== undefined) {
|
2990
|
+
if (typeof(document.readyState) !== 'undefined') {
|
2820
2991
|
(function() {
|
2821
2992
|
['loaded','complete'].includes(document.readyState) ? ready() : arguments.callee.delay(50);
|
2822
2993
|
})();
|
@@ -2833,9 +3004,9 @@ return {
|
|
2833
3004
|
* The basic principles of the module are inspired by
|
2834
3005
|
* - Prototype (http://prototypejs.org) Copyright (C) Sam Stephenson
|
2835
3006
|
*
|
2836
|
-
* Copyright (C) 2009-2010 Nikolay V. Nemshilov
|
3007
|
+
* Copyright (C) 2009-2010 Nikolay V. Nemshilov
|
2837
3008
|
*/
|
2838
|
-
|
3009
|
+
function Form(options) {
|
2839
3010
|
var options = options || {}, remote = options.remote,
|
2840
3011
|
form = new Element('form', Object.without(options, 'remote'));
|
2841
3012
|
|
@@ -2872,7 +3043,6 @@ $ext(Form, {
|
|
2872
3043
|
}
|
2873
3044
|
});
|
2874
3045
|
|
2875
|
-
Form.addMethods = Form.include;
|
2876
3046
|
Form.include({
|
2877
3047
|
/**
|
2878
3048
|
* returns the form elements as an array of extended units
|
@@ -2880,7 +3050,7 @@ Form.include({
|
|
2880
3050
|
* @return Array of elements
|
2881
3051
|
*/
|
2882
3052
|
getElements: function() {
|
2883
|
-
return this.
|
3053
|
+
return $A(this.elements).map($);
|
2884
3054
|
},
|
2885
3055
|
|
2886
3056
|
/**
|
@@ -2973,7 +3143,7 @@ Form.include(Observer.createShortcuts({}, $w('submit reset focus')), true);
|
|
2973
3143
|
* The basic ideas are taken from
|
2974
3144
|
* - Prototype (http://prototypejs.org) Copyright (C) Sam Stephenson
|
2975
3145
|
*
|
2976
|
-
* Copyright (C) 2009-2010 Nikolay V. Nemshilov
|
3146
|
+
* Copyright (C) 2009-2010 Nikolay V. Nemshilov
|
2977
3147
|
*/
|
2978
3148
|
(function() {
|
2979
3149
|
// trying to get the input element classes list
|
@@ -3024,7 +3194,7 @@ Form.include(Observer.createShortcuts({}, $w('submit reset focus')), true);
|
|
3024
3194
|
});
|
3025
3195
|
});
|
3026
3196
|
})();
|
3027
|
-
|
3197
|
+
|
3028
3198
|
Form.Element.include({
|
3029
3199
|
/**
|
3030
3200
|
* uniform access to the element values
|
@@ -3049,7 +3219,7 @@ Form.Element.include({
|
|
3049
3219
|
*/
|
3050
3220
|
setValue: function(value) {
|
3051
3221
|
if (this.type == 'select-multiple') {
|
3052
|
-
value = (isArray(value) ? value : [value]).map(String);
|
3222
|
+
value = $A(isArray(value) ? value : [value]).map(String);
|
3053
3223
|
$A(this.getElementsByTagName('option')).each(function(option) {
|
3054
3224
|
option.selected = value.includes(option.value);
|
3055
3225
|
});
|
@@ -3128,9 +3298,9 @@ Form.Element.include(Observer.createShortcuts({}, $w('disable enable focus blur
|
|
3128
3298
|
* Most things in the unit are take from
|
3129
3299
|
* - MooTools (http://mootools.net) Copyright (C) Valerio Proietti
|
3130
3300
|
*
|
3131
|
-
* Copyright (C) 2008-
|
3301
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
3132
3302
|
*/
|
3133
|
-
|
3303
|
+
Cookie = new Class({
|
3134
3304
|
include: Options,
|
3135
3305
|
|
3136
3306
|
extend: {
|
@@ -3221,9 +3391,9 @@ var Cookie = new Class({
|
|
3221
3391
|
* - MooTools (http://mootools.net) Copyright (C) Valerio Proietti
|
3222
3392
|
* - jQuery (http://jquery.com) Copyright (C) John Resig
|
3223
3393
|
*
|
3224
|
-
* Copyright (C) 2008-
|
3394
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
3225
3395
|
*/
|
3226
|
-
|
3396
|
+
Xhr = new Class(Observer, {
|
3227
3397
|
extend: {
|
3228
3398
|
// supported events list
|
3229
3399
|
EVENTS: $w('success failure complete request cancel create'),
|
@@ -3318,7 +3488,7 @@ var Xhr = new Class(Observer, {
|
|
3318
3488
|
* @return Xhr self
|
3319
3489
|
*/
|
3320
3490
|
send: function(params) {
|
3321
|
-
var add_params = {}, url = this.url, method = this.method.toLowerCase();
|
3491
|
+
var add_params = {}, url = this.url, method = this.method.toLowerCase(), key;
|
3322
3492
|
|
3323
3493
|
if (method == 'put' || method == 'delete') {
|
3324
3494
|
add_params['_method'] = method;
|
@@ -3332,7 +3502,7 @@ var Xhr = new Class(Observer, {
|
|
3332
3502
|
}
|
3333
3503
|
|
3334
3504
|
if (method == 'get') {
|
3335
|
-
url += (url.includes('?') ? '&' : '?') + data;
|
3505
|
+
if (data) url += (url.includes('?') ? '&' : '?') + data;
|
3336
3506
|
data = null;
|
3337
3507
|
}
|
3338
3508
|
|
@@ -3343,7 +3513,7 @@ var Xhr = new Class(Observer, {
|
|
3343
3513
|
|
3344
3514
|
this.xhr.onreadystatechange = this.stateChanged.bind(this);
|
3345
3515
|
|
3346
|
-
for (
|
3516
|
+
for (key in this.headers) {
|
3347
3517
|
this.xhr.setRequestHeader(key, this.headers[key]);
|
3348
3518
|
}
|
3349
3519
|
|
@@ -3448,7 +3618,7 @@ var Xhr = new Class(Observer, {
|
|
3448
3618
|
return JSON.parse(this.text);
|
3449
3619
|
} catch(e) {
|
3450
3620
|
// manual json consistancy check
|
3451
|
-
if (
|
3621
|
+
if (window.JSON || !(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(this.text.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''))) {
|
3452
3622
|
if (this.secureJSON) {
|
3453
3623
|
throw "JSON parse error: "+this.text;
|
3454
3624
|
} else {
|
@@ -3524,7 +3694,7 @@ Xhr.onCreate(function() {
|
|
3524
3694
|
* - Prototype (http://prototypejs.org) Copyright (C) Sam Stephenson
|
3525
3695
|
* - jQuery (http://jquery.com) Copyright (C) John Resig
|
3526
3696
|
*
|
3527
|
-
* Copyright (C) 2009-2010 Nikolay V. Nemshilov
|
3697
|
+
* Copyright (C) 2009-2010 Nikolay V. Nemshilov
|
3528
3698
|
*/
|
3529
3699
|
Form.include({
|
3530
3700
|
/**
|
@@ -3580,7 +3750,7 @@ Form.include({
|
|
3580
3750
|
* Credits:
|
3581
3751
|
* - jQuery (http://jquery.com) Copyright (C) John Resig
|
3582
3752
|
*
|
3583
|
-
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
3753
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
3584
3754
|
*/
|
3585
3755
|
Element.include({
|
3586
3756
|
/**
|
@@ -3601,7 +3771,7 @@ Element.include({
|
|
3601
3771
|
* This unit presents a fake drop in replacement for the XmlHTTPRequest unit
|
3602
3772
|
* but works with an iframe targeting in the background
|
3603
3773
|
*
|
3604
|
-
* Copyright (C) 2008-
|
3774
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
3605
3775
|
*/
|
3606
3776
|
Xhr.IFramed = new Class({
|
3607
3777
|
/**
|
@@ -3638,8 +3808,9 @@ Xhr.IFramed = new Class({
|
|
3638
3808
|
this.status = 200;
|
3639
3809
|
this.readyState = 4;
|
3640
3810
|
|
3641
|
-
|
3642
|
-
|
3811
|
+
try {
|
3812
|
+
this.responseText = window[this.iframe.id].document.documentElement.innerHTML;
|
3813
|
+
} catch(e) { }
|
3643
3814
|
|
3644
3815
|
this.onreadystatechange();
|
3645
3816
|
},
|
@@ -3658,9 +3829,9 @@ Xhr.IFramed = new Class({
|
|
3658
3829
|
* The basic principles, structures and naming system are inspired by
|
3659
3830
|
* - MooTools (http://mootools.net) Copyright (C) Valerio Proietti
|
3660
3831
|
*
|
3661
|
-
* Copyright (C) 2008-
|
3832
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
3662
3833
|
*/
|
3663
|
-
|
3834
|
+
Fx = new Class(Observer, {
|
3664
3835
|
extend: {
|
3665
3836
|
EVENTS: $w('start finish cancel'),
|
3666
3837
|
|
@@ -3700,7 +3871,10 @@ var Fx = new Class(Observer, {
|
|
3700
3871
|
Lin: function(i) {
|
3701
3872
|
return i;
|
3702
3873
|
}
|
3703
|
-
}
|
3874
|
+
},
|
3875
|
+
|
3876
|
+
ch: [], // scheduled effects registries
|
3877
|
+
cr: [] // currently running effects registries
|
3704
3878
|
},
|
3705
3879
|
|
3706
3880
|
/**
|
@@ -3710,7 +3884,12 @@ var Fx = new Class(Observer, {
|
|
3710
3884
|
*/
|
3711
3885
|
initialize: function(element, options) {
|
3712
3886
|
this.$super(options);
|
3713
|
-
|
3887
|
+
|
3888
|
+
if (this.element = element = $(element)) {
|
3889
|
+
var uid = $uid(element);
|
3890
|
+
this.ch = (Fx.ch[uid] = Fx.ch[uid] || []);
|
3891
|
+
this.cr = (Fx.cr[uid] = Fx.cr[uid] || []);
|
3892
|
+
}
|
3714
3893
|
},
|
3715
3894
|
|
3716
3895
|
/**
|
@@ -3729,6 +3908,8 @@ var Fx = new Class(Observer, {
|
|
3729
3908
|
this.steps = (duration / 1000 * this.options.fps).ceil();
|
3730
3909
|
this.number = 1;
|
3731
3910
|
|
3911
|
+
if (this.cr) this.cr.push(this); // adding this effect to the list of currently active
|
3912
|
+
|
3732
3913
|
return this.fire('start', this).startTimer();
|
3733
3914
|
},
|
3734
3915
|
|
@@ -3738,16 +3919,21 @@ var Fx = new Class(Observer, {
|
|
3738
3919
|
* @return Fx this
|
3739
3920
|
*/
|
3740
3921
|
finish: function() {
|
3741
|
-
return this.stopTimer().fire('finish').next();
|
3922
|
+
return this.stopTimer().unreg().fire('finish').next();
|
3742
3923
|
},
|
3743
3924
|
|
3744
3925
|
/**
|
3745
3926
|
* interrupts the transition
|
3746
3927
|
*
|
3928
|
+
* NOTE:
|
3929
|
+
* this method cancels all the scheduled effects
|
3930
|
+
* in the element chain
|
3931
|
+
*
|
3747
3932
|
* @return Fx this
|
3748
3933
|
*/
|
3749
3934
|
cancel: function() {
|
3750
|
-
|
3935
|
+
this.ch.clean();
|
3936
|
+
return this.stopTimer().unreg().fire('cancel');
|
3751
3937
|
},
|
3752
3938
|
|
3753
3939
|
/**
|
@@ -3788,12 +3974,14 @@ var Fx = new Class(Observer, {
|
|
3788
3974
|
that.number ++;
|
3789
3975
|
}
|
3790
3976
|
},
|
3791
|
-
|
3977
|
+
|
3978
|
+
// starts the effect timer
|
3792
3979
|
startTimer: function() {
|
3793
3980
|
this.timer = this.step.periodical((1000 / this.options.fps).round(), this);
|
3794
3981
|
return this;
|
3795
3982
|
},
|
3796
3983
|
|
3984
|
+
// stops the effect timer
|
3797
3985
|
stopTimer: function() {
|
3798
3986
|
if (this.timer) {
|
3799
3987
|
this.timer.stop();
|
@@ -3804,39 +3992,40 @@ var Fx = new Class(Observer, {
|
|
3804
3992
|
// handles effects queing
|
3805
3993
|
// should return false if there's no queue and true if there is a queue
|
3806
3994
|
queue: function(args) {
|
3807
|
-
|
3808
|
-
|
3809
|
-
|
3810
|
-
|
3811
|
-
Fx.$ch = Fx.$ch || [];
|
3812
|
-
chain = (Fx.$ch[uid] = Fx.$ch[uid] || []);
|
3995
|
+
var chain = this.ch, queue = this.options.queue;
|
3996
|
+
|
3997
|
+
if (!chain || this.$ch)
|
3998
|
+
return this.$ch = false;
|
3813
3999
|
|
3814
|
-
if (
|
4000
|
+
if (queue)
|
3815
4001
|
chain.push([args, this]);
|
3816
4002
|
|
3817
|
-
|
3818
|
-
var next = chain.shift(); next = chain[0];
|
3819
|
-
if (next) {
|
3820
|
-
next[1].$ch = true;
|
3821
|
-
next[1].start.apply(next[1], next[0]);
|
3822
|
-
}
|
3823
|
-
return this;
|
3824
|
-
};
|
3825
|
-
|
3826
|
-
return this.options.queue && chain[0][1] !== this;
|
4003
|
+
return queue && chain[0][1] !== this;
|
3827
4004
|
},
|
3828
4005
|
|
4006
|
+
// calls for the next effect in the queue
|
3829
4007
|
next: function() {
|
4008
|
+
var chain = this.ch, next = chain.shift(), next = chain[0];
|
4009
|
+
if (next) {
|
4010
|
+
next[1].$ch = true;
|
4011
|
+
next[1].start.apply(next[1], next[0]);
|
4012
|
+
}
|
3830
4013
|
return this;
|
3831
|
-
}
|
4014
|
+
},
|
3832
4015
|
|
4016
|
+
// unregisters this effect out of the currently running list
|
4017
|
+
unreg: function() {
|
4018
|
+
var currents = this.cr;
|
4019
|
+
if (currents) currents.splice(currents.indexOf(this), 1);
|
4020
|
+
return this;
|
4021
|
+
}
|
3833
4022
|
|
3834
4023
|
});
|
3835
4024
|
|
3836
4025
|
/**
|
3837
4026
|
* There are the String unit extensions for the effects library
|
3838
4027
|
*
|
3839
|
-
* Copyright (C) 2008-2009 Nikolay V. Nemshilov
|
4028
|
+
* Copyright (C) 2008-2009 Nikolay V. Nemshilov
|
3840
4029
|
*/
|
3841
4030
|
String.COLORS = {
|
3842
4031
|
maroon: '#800000',
|
@@ -3859,7 +4048,7 @@ String.COLORS = {
|
|
3859
4048
|
brown: '#a52a2a'
|
3860
4049
|
};
|
3861
4050
|
|
3862
|
-
|
4051
|
+
String.include({
|
3863
4052
|
/**
|
3864
4053
|
* converts a #XXX or rgb(X, X, X) sring into standard #XXXXXX color string
|
3865
4054
|
*
|
@@ -3907,7 +4096,7 @@ $ext(String.prototype, {
|
|
3907
4096
|
* The idea is inspired by the Morph effect from
|
3908
4097
|
* - MooTools (http://mootools.net) Copyright (C) Valerio Proietti
|
3909
4098
|
*
|
3910
|
-
* Copyright (C) 2008-
|
4099
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
3911
4100
|
*/
|
3912
4101
|
Fx.Morph = new Class(Fx, (function() {
|
3913
4102
|
// a list of common style names to compact the code a bit
|
@@ -3917,13 +4106,13 @@ Fx.Morph = new Class(Fx, (function() {
|
|
3917
4106
|
|
3918
4107
|
|
3919
4108
|
// adds variants to the style names list
|
3920
|
-
|
4109
|
+
function add_variants(keys, key, variants) {
|
3921
4110
|
for (var i=0; i < variants.length; i++)
|
3922
4111
|
keys.push(key + variants[i]);
|
3923
4112
|
};
|
3924
4113
|
|
3925
4114
|
// adjusts the border-styles
|
3926
|
-
|
4115
|
+
function check_border_styles(before, after) {
|
3927
4116
|
for (var i=0; i < 4; i++) {
|
3928
4117
|
var direction = directions[i],
|
3929
4118
|
bd_style = Border + direction + Style,
|
@@ -3946,17 +4135,19 @@ Fx.Morph = new Class(Fx, (function() {
|
|
3946
4135
|
};
|
3947
4136
|
|
3948
4137
|
// parses the style hash into a processable format
|
3949
|
-
|
3950
|
-
var result = {}, re = /[\d\.\-]+/g, m;
|
4138
|
+
function parse_style(values) {
|
4139
|
+
var result = {}, re = /[\d\.\-]+/g, m, key, value, i;
|
3951
4140
|
|
3952
|
-
for (
|
4141
|
+
for (key in values) {
|
3953
4142
|
m = values[key].match(re);
|
3954
|
-
|
4143
|
+
value = m.map('toFloat');
|
3955
4144
|
value.t = values[key].split(re);
|
3956
4145
|
value.r = value.t[0] === 'rgb(';
|
3957
|
-
|
3958
|
-
|
3959
|
-
|
4146
|
+
|
4147
|
+
if (value.t.length == 1) value.t.unshift('');
|
4148
|
+
|
4149
|
+
for (i=0; i < value.length; i++) {
|
4150
|
+
value.t.splice(i*2 + 1, 0, value[i]);
|
3960
4151
|
}
|
3961
4152
|
result[key] = value;
|
3962
4153
|
}
|
@@ -3981,19 +4172,18 @@ return {
|
|
3981
4172
|
},
|
3982
4173
|
|
3983
4174
|
render: function(delta) {
|
3984
|
-
var before, after, value, style = this.element.style;
|
3985
|
-
for (
|
4175
|
+
var before, after, value, style = this.element.style, key, i;
|
4176
|
+
for (key in this.after) {
|
3986
4177
|
before = this.before[key];
|
3987
4178
|
after = this.after[key];
|
3988
4179
|
|
3989
|
-
for (
|
4180
|
+
for (i=0; i < after.length; i++) {
|
3990
4181
|
value = before[i] + (after[i] - before[i]) * delta;
|
3991
4182
|
if (after.r) value = Math.round(value);
|
3992
|
-
after.t[i*2] = value;
|
4183
|
+
after.t[i*2 + 1] = value;
|
3993
4184
|
}
|
3994
|
-
|
3995
|
-
|
3996
|
-
style[key] = value;
|
4185
|
+
|
4186
|
+
style[key] = after.t.join('');
|
3997
4187
|
}
|
3998
4188
|
},
|
3999
4189
|
|
@@ -4008,9 +4198,9 @@ return {
|
|
4008
4198
|
.setStyle('position:absolute;z-index:-1;visibility:hidden')
|
4009
4199
|
.insertTo(this.element, 'before')
|
4010
4200
|
.setWidth(this.element.sizes().x)
|
4011
|
-
.setStyle(style)
|
4201
|
+
.setStyle(style),
|
4012
4202
|
|
4013
|
-
|
4203
|
+
after = this._cloneStyle(dummy, keys);
|
4014
4204
|
|
4015
4205
|
dummy.remove();
|
4016
4206
|
|
@@ -4038,12 +4228,12 @@ return {
|
|
4038
4228
|
* @return Array of clean style keys list
|
4039
4229
|
*/
|
4040
4230
|
_styleKeys: function(style) {
|
4041
|
-
var keys = [], border_types = [Style, Color, Width];
|
4231
|
+
var keys = [], border_types = [Style, Color, Width], key, i, j;
|
4042
4232
|
|
4043
|
-
for (
|
4233
|
+
for (key in style) {
|
4044
4234
|
if (key.startsWith(Border))
|
4045
|
-
for (
|
4046
|
-
for (
|
4235
|
+
for (i=0; i < border_types.length; i++)
|
4236
|
+
for (j=0; j < directions.length; j++)
|
4047
4237
|
keys.push(Border + directions[j] + border_types[i]);
|
4048
4238
|
else if (key == 'margin' || key == 'padding')
|
4049
4239
|
add_variants(keys, key, directions);
|
@@ -4066,9 +4256,9 @@ return {
|
|
4066
4256
|
* @return void
|
4067
4257
|
*/
|
4068
4258
|
_cleanStyles: function(before, after) {
|
4069
|
-
var remove = [];
|
4259
|
+
var remove = [], key;
|
4070
4260
|
|
4071
|
-
for (
|
4261
|
+
for (key in after) {
|
4072
4262
|
// checking the height/width options
|
4073
4263
|
if ((key == 'width' || key == 'height') && before[key] == 'auto') {
|
4074
4264
|
before[key] = this.element['offset'+key.capitalize()] + 'px';
|
@@ -4082,7 +4272,7 @@ return {
|
|
4082
4272
|
check_border_styles.call(this, before, after);
|
4083
4273
|
|
4084
4274
|
// cleaing up the list
|
4085
|
-
for (
|
4275
|
+
for (key in after) {
|
4086
4276
|
// proprocessing colors
|
4087
4277
|
if (after[key] !== before[key] && !remove.includes(key) && /color/i.test(key)) {
|
4088
4278
|
if (Browser.Opera) {
|
@@ -4128,7 +4318,7 @@ return {
|
|
4128
4318
|
/**
|
4129
4319
|
* the elements hightlighting effect
|
4130
4320
|
*
|
4131
|
-
* Copyright (C) 2008-
|
4321
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
4132
4322
|
*/
|
4133
4323
|
Fx.Highlight = new Class(Fx.Morph, {
|
4134
4324
|
extend: {
|
@@ -4164,7 +4354,7 @@ Fx.Highlight = new Class(Fx.Morph, {
|
|
4164
4354
|
/**
|
4165
4355
|
* this is a superclass for the bidirectional effects
|
4166
4356
|
*
|
4167
|
-
* Copyright (C) 2008-
|
4357
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
4168
4358
|
*/
|
4169
4359
|
Fx.Twin = new Class(Fx.Morph, {
|
4170
4360
|
|
@@ -4199,7 +4389,7 @@ Fx.Twin = new Class(Fx.Morph, {
|
|
4199
4389
|
/**
|
4200
4390
|
* the slide effects wrapper
|
4201
4391
|
*
|
4202
|
-
* Copyright (C) 2008-
|
4392
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
4203
4393
|
*/
|
4204
4394
|
Fx.Slide = new Class(Fx.Twin, {
|
4205
4395
|
extend: {
|
@@ -4275,7 +4465,7 @@ Fx.Slide = new Class(Fx.Twin, {
|
|
4275
4465
|
/**
|
4276
4466
|
* The opacity effects wrapper
|
4277
4467
|
*
|
4278
|
-
* Copyright (C) 2008-
|
4468
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
4279
4469
|
*/
|
4280
4470
|
Fx.Fade = new Class(Fx.Twin, {
|
4281
4471
|
prepare: function(how) {
|
@@ -4291,9 +4481,15 @@ Fx.Fade = new Class(Fx.Twin, {
|
|
4291
4481
|
/**
|
4292
4482
|
* A smooth scrolling visual effect
|
4293
4483
|
*
|
4294
|
-
* Copyright (C) 2009 Nikolay V. Nemshilov
|
4484
|
+
* Copyright (C) 2009-2010 Nikolay V. Nemshilov
|
4295
4485
|
*/
|
4296
4486
|
Fx.Scroll = new Class(Fx, {
|
4487
|
+
|
4488
|
+
initialize: function(element, options) {
|
4489
|
+
// swapping the actual scrollable when it's the window
|
4490
|
+
this.$super(element.prompt ? element.document[Browser.WebKit ? 'body' : 'documentElement'] : element, options);
|
4491
|
+
},
|
4492
|
+
|
4297
4493
|
prepare: function(value) {
|
4298
4494
|
this.before = {};
|
4299
4495
|
this.after = value;
|
@@ -4303,8 +4499,8 @@ Fx.Scroll = new Class(Fx, {
|
|
4303
4499
|
},
|
4304
4500
|
|
4305
4501
|
render: function(delta) {
|
4306
|
-
var before = this.before;
|
4307
|
-
for (
|
4502
|
+
var before = this.before, key;
|
4503
|
+
for (key in before) {
|
4308
4504
|
this.element['scroll' + (key == 'x' ? 'Left' : 'Top')] = before[key] + (this.after[key] - before[key]) * delta;
|
4309
4505
|
}
|
4310
4506
|
}
|
@@ -4317,7 +4513,7 @@ Fx.Scroll = new Class(Fx, {
|
|
4317
4513
|
* Some ideas are inspired by
|
4318
4514
|
* - MooTools (http://mootools.net) Copyright (C) Valerio Proietti
|
4319
4515
|
*
|
4320
|
-
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
4516
|
+
* Copyright (C) 2008-2010 Nikolay V. Nemshilov
|
4321
4517
|
*/
|
4322
4518
|
Element.include((function(methods) {
|
4323
4519
|
var old_hide = methods.hide,
|
@@ -4325,12 +4521,22 @@ Element.include((function(methods) {
|
|
4325
4521
|
old_scroll = methods.scrollTo;
|
4326
4522
|
|
4327
4523
|
return {
|
4524
|
+
/**
|
4525
|
+
* Stops all the visual effects on the element
|
4526
|
+
*
|
4527
|
+
* @return Element this
|
4528
|
+
*/
|
4529
|
+
stop: function() {
|
4530
|
+
(Fx.cr[$uid(this)] || []).each('cancel');
|
4531
|
+
return this;
|
4532
|
+
},
|
4328
4533
|
|
4329
4534
|
/**
|
4330
4535
|
* hides the element with given visual effect
|
4331
4536
|
*
|
4332
4537
|
* @param String fx name
|
4333
4538
|
* @param Object fx options
|
4539
|
+
* @return Element this
|
4334
4540
|
*/
|
4335
4541
|
hide: function(fx, options) {
|
4336
4542
|
return fx ? this.fx(fx, ['out', options]) : old_hide.call(this);
|
@@ -4341,6 +4547,7 @@ return {
|
|
4341
4547
|
*
|
4342
4548
|
* @param String fx name
|
4343
4549
|
* @param Object fx options
|
4550
|
+
* @return Element this
|
4344
4551
|
*/
|
4345
4552
|
show: function(fx, options) {
|
4346
4553
|
return fx ? this.fx(fx, ['in', options]) : old_show.call(this);
|
@@ -4437,14 +4644,14 @@ return {
|
|
4437
4644
|
* finds the core inclusion tag and uses it's src attribute
|
4438
4645
|
* to dynamically load the olds patch
|
4439
4646
|
*
|
4440
|
-
* Copyright (C) 2009 Nikolay V. Nemshilov
|
4647
|
+
* Copyright (C) 2009-2010 Nikolay V. Nemshilov
|
4441
4648
|
*/
|
4442
4649
|
if (!document.querySelector) {
|
4443
4650
|
(function() {
|
4444
|
-
var rigth_src_re = /(
|
4445
|
-
|
4651
|
+
var rigth_src_re = /(^|\/)(right)([^\/]+)$/,
|
4652
|
+
core_src = $A(document.getElementsByTagName('script')).map('src').compact().first('match', rigth_src_re);
|
4446
4653
|
if (core_src)
|
4447
|
-
document.write('<scr'+'ipt src="'+core_src.replace(rigth_src_re, '$1-olds$
|
4654
|
+
document.write('<scr'+'ipt src="'+core_src.replace(rigth_src_re, '$1$2-olds$3')+'"></scr'+'ipt>');
|
4448
4655
|
})();
|
4449
4656
|
}
|
4450
4657
|
|