From: Matt Brown Date: Sat, 7 May 2011 15:53:23 +0000 (+0000) Subject: Moved ricoLocale_xx files to their parent directory (ricoClient/js). Moved files... X-Git-Url: https://git.infodrom.org/?p=infodrom%2Frico3;a=commitdiff_plain;h=0b9703734c4812333ddd6452545249f142b14c28 Moved ricoLocale_xx files to their parent directory (ricoClient/js). Moved files in minsrc/baselibs to minsrc. Added Windows batch files for compressing the files in minsrc. git-svn-id: svn://svn.code.sf.net/p/openrico/code/trunk/rico3@77 53df2df2-7ab5-4331-af62-ea79255fa4e2 --- diff --git a/examples/html/LoadRicoClient.js b/examples/html/LoadRicoClient.js index 54833ff..9525adb 100644 --- a/examples/html/LoadRicoClient.js +++ b/examples/html/LoadRicoClient.js @@ -9,7 +9,7 @@ Rico_CONFIG = { jQuery_theme_path: "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/", initialize: function(checkQueryString) { - this.transDir=this.jsDir+"translations/"; + this.transDir=this.jsDir; var theme,lib,aParm,log; if (checkQueryString) { var s=location.search; @@ -45,6 +45,11 @@ Rico_CONFIG = { this.requireRicoJS("2" + baseLib.substr(0,3)); this.requireRicoJS("_min"); this.requireRicoCSS("rico"); + + // load locale based on browser language (not accept-language) + var lang2=window.navigator.language.substr(0,2); + var SupportedLangs = "de,es,fr,it,ja,ko,pt,ru,uk,zh"; + if (SupportedLangs.indexOf(lang2) >= 0) this.requireRicoJS("Locale_"+lang2); }, // set theme diff --git a/examples/php/LoadRicoClient.php b/examples/php/LoadRicoClient.php index c24db98..f8b990b 100644 --- a/examples/php/LoadRicoClient.php +++ b/examples/php/LoadRicoClient.php @@ -3,7 +3,7 @@ $jsDir="../../ricoClient/js/"; // directory containing Rico's javascript files $cssDir="../../ricoClient/css/"; // directory containing Rico's css files $imgDir="../../ricoClient/images/"; // directory containing Rico's image files -$transDir=$jsDir."translations/"; +$transDir=$jsDir; $grid_striping=true; // apply row striping to LiveGrids? $checkQueryString = true; // load settings from QueryString? true for demo, false for production $LoadBaseLib = true; // load base Javascript library (prototype, jQuery, etc)? diff --git a/minsrc/README.TXT b/minsrc/README.TXT new file mode 100644 index 0000000..c2721df --- /dev/null +++ b/minsrc/README.TXT @@ -0,0 +1,5 @@ +prototype.js and glow.core-1.7.js are included in the Rico distribution +for the purpose of demonstrating the examples. Each of these libraries +has licensing terms that are different from Rico itself. Make sure you +understand the terms before deploying any library into a production +environment. \ No newline at end of file diff --git a/minsrc/baselibs/README.TXT b/minsrc/baselibs/README.TXT deleted file mode 100644 index 32689cb..0000000 --- a/minsrc/baselibs/README.TXT +++ /dev/null @@ -1,5 +0,0 @@ -The files in this directory are included in the Rico distribution -for the purpose of demonstrating the examples. Each of these libraries -has licensing terms that are different from Rico itself. Make sure you -understand the terms before deploying any library into a production -environment. \ No newline at end of file diff --git a/minsrc/baselibs/glow.core-1.7.js b/minsrc/baselibs/glow.core-1.7.js deleted file mode 100644 index e6d6e0e..0000000 --- a/minsrc/baselibs/glow.core-1.7.js +++ /dev/null @@ -1,20 +0,0 @@ -/* - Copyright 2009 British Broadcasting Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ -(function(){var f={glow:true},b=/([$^\\\/()|?+*\[\]{}.-])/g,a=navigator.userAgent.toLowerCase(),k="1.7.3",r=0,g=[],m=0,q=[],o=0,s=false,n={VERSION:k,UID:"glow"+Math.floor(Math.random()*(1<<30)),isDomReady:window.gloader&&gloader.isReady,isReady:window.gloader&&gloader.isReady,env:function(){var u=[0,NaN],d=(/opera[\s\/]([\w\.]+)/.exec(a)||u)[1],v=d?NaN:(/msie ([\w\.]+)/.exec(a)||u)[1],x=(/rv:([\w\.]+).*gecko\//.exec(a)||u)[1],e=(/applewebkit\/([\w\.]+)/.exec(a)||u)[1],t=(/khtml\/([\w\.]+)/.exec(a)||u)[1],w=parseFloat;return{gecko:w(x),ie:w(v),opera:w(d),webkit:w(e),khtml:w(t),version:v||x||e||d||t,standardsMode:document.compatMode!="BackCompat"&&(!v||v>=6)};}(),module:function(u){var t=2,w=u.depends[0]||[],d=w.length,e=u.name,v=window.glow;if(u.library[1]!=n.VERSION){throw new Error("Cannot register "+e+": Version mismatch");}if(w[2]){for(;t");}if(u.delimiter==undefined){d=/\{[^{}]+\}/g;}else{v=u.delimiter.substr(0,1).replace(b,"\\$1");e=u.delimiter.substr(1,1).replace(b,"\\$1")||v;d=new RegExp(v+"[^"+v+e+"]+"+e,"g");}return t.replace(d,function(D){var A=D.slice(1,-1),C=A.split("."),B,z=0,y=C.length;if(A in w){B=w[A];}else{B=w;for(;z 5.5)@*/ -(window.gloader||glow).module({name:"glow.i18n",library:["glow","1.7.3"],depends:[["glow","1.7.3"]],builder:function(r){var A;var t={l:/^[a-z]$/,lv:/^[a-z]{2,3}$/,s:/^[A-Z][a-z]{3}$/,r:/^[A-Z]{2}|[0-9]{3}$/,v:/^[a-z0-9]{4,}$/};var s=1,k=2,l=4,j=8,p=s+k+l+j,f=s+l+j,x=s+k+j,c=s+j,y=s+k+l,e=s+l,d=s+k;var m={l:s,s:k,r:l,v:j},I=["l","s","r","v"],F={l:0,s:1,r:2,v:3};var C={};var b={};var o=w(document.documentElement.lang||"en")||w("en");function D(K){for(var J in t){if(t[J].test(K)){return J;}}return"";}function w(V){if(!V.split){V="";}var N=V.split("-"),Q=N.length,R=[],K={l:"",s:"",r:"",v:""},J=0,O=J,U=0,P,S;for(var M=0,T=I.length;M]?)\s*/,classNameOrId:(n.webkit<417)?new RegExp("^([\\.#])((?:(?![\\.#\\[:\\s\\\\]).|\\\\.)+)"):/^([\.#])((?:[^\.#\[:\\\s]+|\\.)+)/},X=/([$^\\\/()|?+*\[\]{}.-])/g,B={},R={checked:"checked","class":"className",disabled:"disabled","for":"htmlFor",maxlength:"maxLength"},c={checked:true,disabled:true},ah={maxlength:function(r){return r.toString()=="2147483647"?undefined:r;}},ad=1,x="_unique"+u.UID,ai="_uniqueData"+u.UID,ag=1,L=[],I={black:0,silver:12632256,gray:8421504,white:16777215,maroon:8388608,red:16711680,purple:8388736,fuchsia:16711935,green:32768,lime:65280,olive:8421376,yellow:16776960,navy:128,blue:255,teal:32896,aqua:65535,orange:16753920},D=/height|top/,t=/^rgb\(([\d\.]+)(%?),\s*([\d\.]+)(%?),\s*([\d\.]+)(%?)/i,A=/^(?:(width|height)|(border-(top|bottom|left|right)-width))$/,C=/width|height|top$|bottom$|left$|right$|spacing$|indent$|font-size/,T,d,K,H,aa=window,l=document,V,G,w,P=l.createElement("div"),y=[1,"","
"],ab=[0,"",""],O=n.webkit<526?[0,"","",true]:[1,"b
","
"],a=[3,"","
"],E={caption:y,thead:y,th:a,colgroup:y,tbody:y,tr:[2,"","
"],td:a,tfoot:y,option:[1,""],legend:[1,"
","
"],link:O,script:O,style:O};if(n.ie){window.attachEvent("onunload",function(){P=null;});}u.ready(function(){V=l.body;G=l.documentElement;});(function(){var r=l.createElement("div");r.a=1;w=!!r.cloneNode(true).a;})();function af(r){for(var aj=r.firstChild;aj;aj=aj.nextSibling){if(aj.nodeType==1){return aj;}}return null;}function v(r){return new RegExp(["(^|\\s)",r.replace(X,"\\$1"),"($|\\s)"].join(""),"g");}function N(ap){var ao=[],al=(/^\s*<([^\s>]+)/.exec(ap)||[,"div"])[1],aj=E[al]||ab,am,ak,an=0;P.innerHTML=(aj[1]+ap+aj[2]);ak=P;am=aj[0];while(am--){ak=ak.lastChild;}while(ak.firstChild){ao[an++]=ak.removeChild(ak.firstChild);}ak=null;return ao;}function p(al){var ak=[],aj=0;for(;al[aj];aj++){ak[aj]=al[aj];}return ak;}function e(am,aj){for(var al=this,r=0,ak=al.length;r500&&n.webkit<526&&al=="margin-right"&&an.getPropertyValue("position")!="absolute"){al="margin-left";}ak=an.getPropertyValue(al);}}else{if(am){if(al=="opacity"){aq=/alpha\(opacity=([^\)]+)\)/.exec(am.filter);return aq?String(parseInt(aq[1],10)/100):"1";}ak=String(am[W(al)]);if(/^-?[\d\.]+(?!px)[%a-z]+$/i.test(ak)&&al!="font-size"){ak=J(ar,ak,D.test(al))+"px";}}}}}if(al.indexOf("color")!=-1){ak=S(ak).toString();}else{if(ak.indexOf("url")==0){ak=ak.replace(/\"/g,"");}}return ak;}function J(ao,aq,am){var ak=am?"top":"left",an=am?"Top":"Left",ar=ao.style,al=ar[ak],ap=ao.runtimeStyle[ak],aj;ao.runtimeStyle[ak]=ao.currentStyle[ak];ar[ak]=aq;aj=ar["pixel"+an];ar[ak]=al;ao.runtimeStyle[ak]=ap;return aj;}function S(ak){if(/^(transparent|rgba\(0, ?0, ?0, ?0\))$/.test(ak)){return"transparent";}var ao,aj,ap,aq,al,an=Math.round,ar=parseInt,am=parseFloat;if(ao=t.exec(ak)){aj=ao[2]?an(((am(ao[1])/100)*255)):ar(ao[1]);ap=ao[4]?an(((am(ao[3])/100)*255)):ar(ao[3]);aq=ao[6]?an(((am(ao[5])/100)*255)):ar(ao[5]);}else{if(typeof ak=="number"){al=ak;}else{if(ak.charAt(0)=="#"){if(ak.length=="4"){ak="#"+ak.charAt(1)+ak.charAt(1)+ak.charAt(2)+ak.charAt(2)+ak.charAt(3)+ak.charAt(3);}al=ar(ak.slice(1),16);}else{al=I[ak];}}aj=(al)>>16;ap=(al&65280)>>8;aq=(al&255);}ak=new String("rgb("+aj+", "+ap+", "+aq+")");ak.r=aj;ak.g=ap;ak.b=aq;return ak;}function m(an){var am="",ak=an.childNodes,al=0,aj=ak.length;for(;al=521){for(;r1?am:undefined;}if(typeof ak=="object"){for(al in ak){if(k.hasOwnProperty(ak,al)){am.attr(al,ak[al]);}}return am;}if(n.ie&&R[ak]){if(r>1){e.call(am,aj[1],function(ao){this[R[ak]]=ao;});return am;}an=am[0][R[ak]];if(c[ak]){return an?ak:undefined;}else{if(ah[ak]){return ah[ak](an);}}return an;}if(r>1){e.call(am,aj[1],function(ao){this.setAttribute(ak,ao);});return am;}return M(am[0])?am[0].getAttribute(ak):am[0].getAttribute(ak,2);},removeAttr:function(aj){var r=n.ie&&R[aj],am=this,ak=0,al=am.length;for(;ak-1?ap.options[ap.selectedIndex].value:"";}else{if(am=="select-multiple"){for(var aq=ap.options.length;ao0){for(;aj500){r+=parseInt(Z(an,"border-left-width"))||0;ao+=parseInt(Z(an,"border-top-width"))||0;}if(an.nodeName.toLowerCase()!="body"){ak=an;}}an=aj;while((an=an.parentNode)&&(an!=V)&&(an!=G)){r-=an.scrollLeft;ao-=an.scrollTop;if(n.gecko&&Z(an,"overflow")!="visible"){r+=parseInt(Z(an,"border-left-width"));ao+=parseInt(Z(an,"border-top-width"));}}if(am){r+=al.x;ao+=al.y;}if((n.webkit<500&&(am||Z(ak,"position")=="absolute"))||(n.gecko&&Z(ak,"position")!="absolute")){r-=V.offsetLeft;ao-=V.offsetTop;}return{left:r,top:ao};}},position:function(){var aj=Y.get(F(this[0])),ao=!!aj[0],an=parseInt(this.css("margin-left"))||0,am=parseInt(this.css("margin-top"))||0,al=(ao&&parseInt(aj.css("border-left-width")))||0,r=(ao&&parseInt(aj.css("border-top-width")))||0,ap=this.offset(),ak=ao?aj.offset():{top:0,left:0};return{left:ap.left-ak.left-an-al,top:ap.top-ak.top-am-r};},append:function(an){var am=this,aj=0,ak=1,al=am.length,r;if(al==0){return am;}r=typeof an=="string"?p(N(an)):an.nodeType?[an]:p(an);for(;r[aj];aj++){am[0].appendChild(r[aj]);}for(;ak=0;al--){ao[0].parentNode.insertBefore(ak[al],ao[0].nextSibling);}for(;am=0;al--){ao[am].parentNode.insertBefore(r[al],ao[am].nextSibling);}}return ao;},before:function(ap){var ao=this,an=ao.length,al=0,am=1,ak,aj,r;if(an==0){return ao;}ak=typeof ap=="string"?Y.create(ap):ap instanceof Y.NodeList?ap:Y.get(ap);aj=ak.length;for(;al"){ar[aC++]=[al,[null]];if(av){ar[aC++]=[ap,[av.replace(/\\/g,""),null]];}if(aA&&aA!="*"){ar[aC++]=[aq,[aA,null]];}}}aB=true;while(aB){if(az.charAt(0)=="#"||az.charAt(0)=="."){if(ax=s.classNameOrId.exec(az)){if(az.charAt(0)=="#"){ar[aC++]=[ap,[ax[2].replace(/\\/g,""),null]];}else{ar[aC++]=[ao,[ax[2].replace(/\\/g,""),null]];}az=az.slice(ax[0].length);}else{throw new Error("Invalid Selector "+aw);}}else{aB=false;}}au=false;}if(az!==""){throw new Error("Invalid Selector "+aw);}return B[az]=ar;}function an(ar,av){var au=av;for(var at=0,aw=ar.length;at');u.dom=Y;}});(window.gloader||glow).module({name:"glow.events",library:["glow","1.7.3"],depends:[["glow","1.7.3","glow.dom"]],builder:function(o){var k=o.dom.get;var C={};var x=1;var m=1;var n={};var b={};var p={};var l="__eventId"+o.UID;var g=l+"PreventDefault";var u=l+"StopPropagation";var E={};var f=1;var B={};var z={};var G=1;var d=2;var s=4;var h={TAB:"\t",SPACE:" ",ENTER:"\n",BACKTICK:"`"};var K={"96":223};var t={CAPSLOCK:20,NUMLOCK:144,SCROLLLOCK:145,BREAK:19,BACKTICK:223,BACKSPACE:8,PRINTSCREEN:44,MENU:93,SPACE:32,SHIFT:16,CTRL:17,ALT:18,ESC:27,TAB:9,META:91,RIGHTMETA:92,ENTER:13,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,INS:45,HOME:36,PAGEUP:33,DEL:46,END:35,PAGEDOWN:34,LEFT:37,UP:38,RIGHT:39,DOWN:40};var I={};for(var H in t){I[""+t[H]]=H;}var y="0123456789=;'\\/#,.-";function D(O){var N=z[O];if(!N){return false;}var M=B[N];if(!M){return false;}for(var L=0,r=M.length;L418)){if((N=="focus"||N=="blur")&&(o.env.opera)){O.parentNode.addEventListener(N,function(){},true);}O.addEventListener(N.toLowerCase()=="mousewheel"&&o.env.gecko?"DOMMouseScroll":N,Q,L);}else{var M="on"+N;var P=O[M];if(P){O[M]=function(){var R=P.apply(this,arguments),S=Q.apply(this,arguments);return(R!==false)&&(S!==false);};}else{O[M]=Q;}}O=null;}function a(M,N){var O=k(M),r=N?"mouseout":"mouseover",L=N?"mouseleave":"mouseenter";C.addListener(M,r,function(Q){var P=k(Q.relatedTarget);if(!P.eq(O)&&!P.isWithin(O)){return !C.fire(O[0],L,Q).defaultPrevented();}});}C._copyListeners=function(R,Q){var M=R.length,P,r,L,O,N;while(M--){if(R[M][l]){P=n[R[M][l]];for(r in P){L=0;O=P[r].length;for(;L").text(html).html();}};}});(window.gloader||glow).module({name:"glow.net",library:["glow","1.7.3"],depends:[["glow","1.7.3","glow.data","glow.events"]],builder:function(h){var t={XML_ERR:"Cannot get response as XML, check the mime type of the data",POST_DEFAULT_CONTENT_TYPE:"application/x-www-form-urlencoded;"},u=/\+xml$/,p=[],e="c",o="_"+h.UID+"loadScriptCbs",g=h.dom.get,c=h.events,f=function(){},k=1;function s(){if(window.ActiveXObject){return(s=function(){return new ActiveXObject("Microsoft.XMLHTTP");})();}else{return(s=function(){return new XMLHttpRequest();})();}}function d(w){var r=h.lang.apply({onLoad:f,onError:f,onAbort:f,headers:{},async:true,useCache:false,data:null,defer:false,forceXml:false},w||{});if(!("X-Requested-With" in r.headers)){r.headers["X-Requested-With"]="XMLHttpRequest";}return r;}function v(r){return[r,(/\?/.test(r)?"&":"?"),"a",new Date().getTime(),parseInt(Math.random()*100000)].join("");}function j(C,r,z){var y=s(),A=z.data&&(typeof z.data=="string"?z.data:h.data.encodeUrl(z.data)),w,x=new q(y,z);if(!z.useCache){r=v(r);}y.open(C,r,z.async);for(w in z.headers){y.setRequestHeader(w,z.headers[w]);}function B(){x.send=f;if(z.async){if(z.timeout){x._timeout=setTimeout(function(){a(x);var E=new b(y,true,x);c.fire(x,"error",E);},z.timeout*1000);}y.onreadystatechange=function(){if(y.readyState==4){x._timeout&&clearTimeout(x._timeout);x.completed=true;var E=new b(y,false,x);if(E.wasSuccessful){c.fire(x,"load",E);}else{c.fire(x,"error",E);}y.onreadystatechange=new Function();}};y.send(A);return x;}else{y.send(A);x.completed=true;var D=new b(y,false,x);if(D.wasSuccessful){c.fire(x,"load",D);}else{c.fire(x,"error",D);}return D;}}x.send=B;return z.defer?x:B();}var m={};m.get=function(r,w){w=d(w);return j("GET",r,w);};m.post=function(r,w,x){x=d(x);x.data=w;if(!x.headers["Content-Type"]){x.headers["Content-Type"]=t.POST_DEFAULT_CONTENT_TYPE;}return j("POST",r,x);};m.send=function(y,r,w,x){w=w||"";x=d(x);x.data=w;return j(y,r,x);};m.put=function(r,w,x){x=d(x);x.data=w;if(!x.headers["Content-Type"]){x.headers["Content-Type"]=t.POST_DEFAULT_CONTENT_TYPE;}return j("PUT",r,x);};m.del=function(r,w){w=d(w);return j("DELETE",r,w);};m.loadScript=function(w,z){var x=p.length,r,A=e+x,z=d(z),y=new q(x,z),w=z.useCache?w:v(w),B=window[o]||(window[o]={});if(z.onLoad!=f){B[A]=function(){y._timeout&&clearTimeout(y._timeout);y.completed=true;z.onLoad.apply(this,arguments);y.destroy();r=B[A]=undefined;delete B[A];};w=h.lang.interpolate(w,{callback:o+"."+A});}r=p[x]=document.createElement("script");if(z.charset){r.charset=z.charset;}c.addListener(y,"abort",z.onAbort);h.ready(function(){if(z.timeout){y._timeout=setTimeout(function(){a(y);z.onError();},z.timeout*1000);}if(h.env.opera){setTimeout(function(){if(r){r.src=w;}},0);}else{r.src=w;}document.body.appendChild(r);});return y;};function a(w){var r=w.nativeRequest,x=w._callbackIndex;w._timeout&&clearTimeout(w._timeout);if(r){r.onreadystatechange=new Function();r.abort();}else{if(x){window[o][e+x]=f;h.dom.get(p[x]).destroy();}}}function q(y,w){this._timeout=null;this._forceXml=w.forceXml;if(w.forceXml&&y.overrideMimeType){y.overrideMimeType("application/xml");}this.complete=false;if(typeof y=="number"){this._callbackIndex=y;}else{this.nativeRequest=y;}var x=["Load","Error","Abort"],r=0;for(;r<3;r++){c.addListener(this,x[r].toLowerCase(),w["on"+x[r]]);}}q.prototype={send:function(){},abort:function(){if(!this.completed&&!c.fire(this,"abort").defaultPrevented()){a(this);}return this;},destroy:function(){var r=this;if(this._callbackIndex!==undefined){setTimeout(function(){g(p[r._callbackIndex]).destroy();p[r._callbackIndex]=undefined;delete p[r._callbackIndex];},0);}return this;}};function b(x,r,w){c.Event.call(this);this._request=w;this.nativeResponse=x;this.status=r?408:x.status==1223?204:x.status;this.timedOut=!!r;this.wasSuccessful=(this.status>=200&&this.status<300)||this.status==304||(this.status==0&&x.responseText);}function l(){var r=this.header("Content-Type");return u.test(r)||r==="";}h.lang.extend(b,c.Event,{text:function(){return this.nativeResponse.responseText;},xml:function(){var w=this.nativeResponse;if((h.env.ie&&l.call(this))||(this._request._forceXml&&!this._request.nativeRequest.overrideMimeType&&window.ActiveXObject)){var r=new ActiveXObject("Microsoft.XMLDOM");r.loadXML(w.responseText);return r;}else{if(!w.responseXML){throw new Error(t.XML_ERR);}return w.responseXML;}},json:function(r){return h.data.decodeJson(this.text(),{safeMode:r});},header:function(r){return this.nativeResponse.getResponseHeader(r);},statusText:function(){return this.timedOut?"Request Timeout":this.nativeResponse.statusText;}});var n=function(r,x,y,w){this.url=r;this.data=x;this.isGet=y;this.opts=w;};n.prototype={_send:function(){this._addIframe();this._addForm();this._addTimeout();this.onLoad=this._handleResponse;this._submitForm();},_addIframe:function(){this.iframe=h.dom.create('');var r=this.iframe[0],w=this,x=function(){if(w.onLoad){w.onLoad();}};if(r.attachEvent){r.attachEvent("onload",x);}else{r.onload=x;}g("body").append(this.iframe);},_addForm:function(){var x=this._window().document;if(h.env.ie){x.open();x.write("");x.close();}var w=this.form=x.createElement("form");w.setAttribute("action",this.url);w.setAttribute("method",this.isGet?"GET":"POST");var r=x.getElementsByTagName("body")[0];r.appendChild(w);this._addFormData();},_addFormData:function(){for(var x in this.data){if(!this.data.hasOwnProperty(x)){continue;}if(this.data[x] instanceof Array){var r=this.data[x].length;for(var w=0;w');function addEventsFromOpts(instance,opts,eventProps){for(var i=0,len=eventProps.length;ianim.duration){anim.position=anim.duration;}}else{anim.position++;}anim.value=anim.tween(anim.position/anim.duration);events.fire(anim,"frame");}}};})();function convertCssUnit(element,fromValue,toUnit,axis){var elmStyle=testElement[0].style,axisProp=(axis=="x")?"width":"height",startPixelValue,toUnitPixelValue;elmStyle.margin=elmStyle.padding=elmStyle.border="0";startPixelValue=testElement.css(axisProp,fromValue).insertAfter(element)[axisProp]();toUnitPixelValue=testElement.css(axisProp,10+toUnit)[axisProp]()/10;testElement.remove();return startPixelValue/toUnitPixelValue;}function keepWithinRange(num,start,end){if(start!==undefined&&numend){return end;}return num;}function buildAnimFunction(element,spec){var cssProp,r=["a=(function(){"],rLen=1,fromUnit,unitDefault=[0,"px"],to,from,unit,a;for(cssProp in spec){r[rLen++]='element.css("'+cssProp+'", ';if(typeof spec[cssProp]!="object"){to=spec[cssProp];}else{to=spec[cssProp].to;}if((from=spec[cssProp].from)===undefined){if(cssProp=="font-size"||cssProp=="background-position"){throw new Error("From value must be set for "+cssProp);}from=element.css(cssProp);}if(hasUnits.test(cssProp)){unit=(getUnit.exec(to)||unitDefault)[1];fromUnit=(getUnit.exec(from)||unitDefault)[1];from=parseFloat(from)||0;to=parseFloat(to)||0;if(from&&unit!=fromUnit){if(cssProp=="font-size"){throw new Error("Units must be the same for font-size");}from=convertCssUnit(element,from+fromUnit,unit,usesYAxis.test(cssProp)?"y":"x");}if(noNegatives.test(cssProp)){r[rLen++]="keepWithinRange(("+(to-from)+" * this.value) + "+from+', 0) + "'+unit+'"';}else{r[rLen++]="("+(to-from)+" * this.value) + "+from+' + "'+unit+'"';}}else{if(!(isNaN(from)||isNaN(to))){from=Number(from);to=Number(to);r[rLen++]="("+(to-from)+" * this.value) + "+from;}else{if(cssProp.indexOf("color")!=-1){to=dom.parseCssColor(to);if(!glow.lang.hasOwnProperty(from,"r")){from=dom.parseCssColor(from);}r[rLen++]='"rgb(" + keepWithinRange(Math.round('+(to.r-from.r)+" * this.value + "+from.r+'), 0, 255) + "," + keepWithinRange(Math.round('+(to.g-from.g)+" * this.value + "+from.g+'), 0, 255) + "," + keepWithinRange(Math.round('+(to.b-from.b)+" * this.value + "+from.b+'), 0, 255) + ")"';}else{if(cssProp=="background-position"){var vals={},fromTo=["from","to"],unit=(getUnit.exec(from)||unitDefault)[1];vals.fromOrig=from.toString().split(/\s/);vals.toOrig=to.toString().split(/\s/);if(vals.fromOrig[1]===undefined){vals.fromOrig[1]="50%";}if(vals.toOrig[1]===undefined){vals.toOrig[1]="50%";}for(var i=0;i<2;i++){vals[fromTo[i]+"X"]=parseFloat(vals[fromTo[i]+"Orig"][0]);vals[fromTo[i]+"Y"]=parseFloat(vals[fromTo[i]+"Orig"][1]);vals[fromTo[i]+"XUnit"]=(getUnit.exec(vals[fromTo[i]+"Orig"][0])||unitDefault)[1];vals[fromTo[i]+"YUnit"]=(getUnit.exec(vals[fromTo[i]+"Orig"][1])||unitDefault)[1];}if((vals.fromXUnit!==vals.toXUnit)||(vals.fromYUnit!==vals.toYUnit)){throw new Error("Mismatched axis units cannot be used for "+cssProp);}r[rLen++]="("+(vals.toX-vals.fromX)+" * this.value + "+vals.fromX+') + "'+vals.fromXUnit+' " + ('+(vals.toY-vals.fromY)+" * this.value + "+vals.fromY+') + "'+vals.fromYUnit+'"';}}}}r[rLen++]=");";}r[rLen++]="})";return eval(r.join(""));}var r={};r.css=function(element,duration,spec,opts){element=get(element);var anim=new r.Animation(duration,opts);if(element[0]){events.addListener(anim,"frame",buildAnimFunction(element,spec));}return anim;};slideElement=function slideElement(element,duration,action,opts){duration=duration||0.5;element=$(element);opts=glow.lang.apply({tween:glow.tweens.easeBoth(),onStart:function(){},onComplete:function(){}},opts);var i=0,thatlength=element.length,completeHeight,fromHeight,channels=[],timeline;for(;i0)){element[i].style.overflow="hidden";if(glow.env.ie<8){element[i].style.zoom=1;}completeHeight=0;fromHeight=element.slice(i,i+1).height();}else{if(action=="down"||(action=="toggle"&&element.slice(i,i+1).height()==0)){fromHeight=element.slice(i,i+1).height();element[i].style.height="";completeHeight=element.slice(i,i+1).height();if(completeHeight===0){element[i].style.height="auto";completeHeight=element.slice(i,i+1).height();}element[i].style.height=fromHeight+"px";}}channels[i]=[glow.anim.css(element[i],duration,{height:{from:fromHeight,to:completeHeight}},{tween:opts.tween})];}timeline=new glow.anim.Timeline(channels,{destroyOnComplete:true});events.addListener(timeline,"complete",function(){element.each(function(){if(this.style.height.slice(0,1)!="0"){this.style.height="";if(glow.dom.get(this).height()===0){this.style.height="auto";}}});});events.addListener(timeline,"start",opts.onStart);events.addListener(timeline,"complete",opts.onComplete);return timeline.start();};r.slideDown=function(element,duration,opts){return slideElement(element,duration,"down",opts);};r.slideUp=function(element,duration,opts){return slideElement(element,duration,"up",opts);};r.slideToggle=function(element,duration,opts){return slideElement(element,duration,"toggle",opts);};r.fadeOut=function(element,duration,opts){return r.fadeTo(element,0,duration,opts);};r.fadeIn=function(element,duration,opts){return r.fadeTo(element,1,duration,opts);};r.fadeTo=function(element,opacity,duration,opts){duration=duration||0.5;element=$(element);opts=glow.lang.apply({tween:glow.tweens.easeBoth(),onStart:function(){},onComplete:function(){}},opts);var i=0,thatlength=element.length,channels=[],timeline;for(;ianim.duration){anim.position=anim.duration;}anim.value=anim.tween(anim.position/anim.duration);events.fire(anim,"frame");if(anim.position==anim.duration){this._advanceChannel(i);}}},start:function(){var e=events.fire(this,"start");if(e.defaultPrevented()){return this;}var i,iLen,j,jLen,anim;this._playing=true;for(i=0,iLen=this._channels.length;ithis.duration){if(this.loop){pos=pos%this.duration;}else{pos=this.duration;}}this._controlAnim.goTo(pos);for(i=0;ipos){this._channelPos[i]=j;anim.goTo(pos-runningDuration);break;}anim.goTo(anim.duration);runningDuration+=anim.duration;}}for(k=channelLen;k>j;k--){anim.goTo(0);}}}else{for(i=0;i=this._fields[this._fieldCur]._tests.length){if(!d.call(this)){return;}}var j=this._fields[this._fieldCur]._tests[this._testCur];var h;if(j.opts.field){h=this.formNode.val()[j.opts.field]||"";j.isConditional=true;}else{h=this.formNode.val()[this._fields[this._fieldCur].name]||"";}if(!h.join){h=[h];}var k=function(l){return function(){e.apply(l,arguments);};}(this);j.opts.on=j.opts.on||"submit";if(this._result.eventName&&(" "+j.opts.on+" ").indexOf(" "+this._result.eventName+" ")!=-1){if(this._fieldName&&this._fieldName!=j.name){c.call(this);return;}if(typeof g.forms.tests[j.type]!="function"){throw"Unimplemented test: no test exists of type '"+j.type+"'.";}j.opts._localeModule=this._localeModule;g.forms.tests[j.type](h,j.opts,k,this.formNode.val());}else{c.call(this);}};var d=function(){this._fieldCur++;this._testCur=0;if(this._fieldCur>=this._fields.length){this._fieldCur=0;g.events.fire(this,"validate",this._result);if(this.eventName=="submit"&&this._result&&!this._result.defaultPrevented()){try{this.formNode[0].submit();}catch(h){throw new Error("Glow can't submit the form because the submit function can't be called. Perhaps that form's submit was replaced by an input element named 'submit'?");}}return false;}return true;};var e=function(h,j){if(typeof h=="boolean"){h=(h)?g.forms.PASS:g.forms.FAIL;}if(this._fields[this._fieldCur]._tests[this._testCur].isConditional&&h===g.forms.FAIL){h=g.forms.SKIP;}this._result.fields.push({name:this._fields[this._fieldCur].name,result:h,message:j});if(h!==g.forms.PASS){if(h===g.forms.FAIL){this._result.errorCount++;}this._testCur=this._fields[this._fieldCur]._tests.length;}c.call(this);};g.forms.Form.prototype.addTests=function(r){var q={name:r,_tests:[]};var j=function(s){return function(){s.validate.apply(s,["change",r]);};}(this);var n=function(s){return function(){s.validate.apply(s,["click",r]);};}(this);var o=function(s){return function(){s.validate.apply(s,["idle",r]);};}(this);for(var l=1;l1)?arguments[l][1]:{};q._tests.push({name:r,type:k,opts:p});if(!j.added&&(" "+p.on+" ").indexOf(" change ")!=-1){var m=this.formNode.get("*").each(function(s){if(this.name==r){g.events.addListener(this,"change",j);j.added=true;}});}if(!n.added&&(" "+p.on+" ").indexOf(" click ")!=-1){var m=this.formNode.get("*").each(function(s){if(this.name==r){g.events.addListener(this,"click",n);n.added=true;}});}if(!o.added&&(" "+p.on+" ").indexOf(" idle ")!=-1){var h=(typeof p.delay!="undefined")?parseInt(p.delay):1000;var m=this.formNode.get("*").each(function(s){if(this.name==r){g.events.addListener(this,"keyup",function(u){return function(){window.clearTimeout(this.idleTimeoutID);if(this.value){this.idleTimeoutID=window.setTimeout(o,u);}};}(h));g.events.addListener(this,"blur",function(){window.clearTimeout(this.idleTimeoutID);});o.added=true;}});}}this._fields.push(q);return this;};g.forms.ValidateResult=function(h){g.events.Event.apply(this);this.eventName=h;this.errorCount=0;this.value=undefined;this.fields=[];};g.lang.extend(g.forms.ValidateResult,g.events.Event);g.forms.PASS=1;g.forms.FAIL=0;g.forms.SKIP=-1;g.forms.tests={required:function(j,m,n){var l=m.message||m._localeModule.TEST_MESSAGE_REQUIRED;for(var k=0,h=j.length;kNumber(m.arg)){n(g.forms.FAIL,l);return;}}n(g.forms.PASS,l);},range:function(k,o,p){var n=o.arg.split("..");if(typeof n[0]=="undefined"||typeof n[1]=="undefined"){throw"Range test requires a parameter like 0..10.";}var m=o.message||f(o._localeModule.TEST_MESSAGE_RANGE,{min:n[0],max:n[1]});n[0]*=1;n[1]*=1;if(n[0]>n[1]){var j=n[0];n[0]=n[1];n[1]=j;}for(var l=0,h=k.length;ln[1]){p(g.forms.FAIL,m);return;}}p(g.forms.PASS,m);},minCount:function(h,m,n){var l=m.message||f(m._localeModule.TEST_MESSAGE_MIN_COUNT,{arg:m.arg});var k=0;for(var j=0;jm.arg){n(g.forms.FAIL,l);return;}n(g.forms.PASS,l);},count:function(h,m,n){var l=m.message||f(m._localeModule.TEST_MESSAGE_COUNT,{arg:m.arg});var k=0;for(var j=0;jm.arg){n(g.forms.FAIL,l);return;}}n(g.forms.PASS,l);},isEmail:function(j,m,n){var l=m.message||m._localeModule.TEST_MESSAGE_IS_EMAIL;for(var k=0,h=j.length;k').appendTo(document.body);}h[0].value++;}function k(o){var n=o.fields,r,q,s,p,m;for(p=0,m=n.length;p')));}s.text(n[p].message);r.addClass("glow-invalid");}}}}function j(p){var s=p.fields,v,n,o,r,m,q,t;p.form.formNode.get("div.glow-errorSummary").remove();n=g.dom.create('
    ');o=n.get("ul");for(q=0,t=s.length;q").text(m+": "+s[q].message));}}p.form.formNode.prepend(n.css("opacity","0"));g.anim.css(n,"0.5",{opacity:{from:0,to:1}},{tween:g.tweens.easeOut()}).start();try{n[0].focus();}catch(u){}l();}return function(m){if(m.eventName=="submit"){if(!m.errorCount){m.form.formNode.get("div.glow-errorSummary").remove();return;}j(m);}setTimeout(function(){k(m);},0);return false;};}());}});(window.gloader||glow).module({name:"glow.embed",library:["glow","1.7.3"],depends:[["glow","1.7.3","glow.dom","glow.data","glow.i18n"]],builder:function(n){var o=n.i18n;o.addLocaleModule("GLOW_EMBED","en",{FLASH_MESSAGE:"This content requires Flash Player version {min} (installed version: {installed})",NO_PLAYER_MESSAGE:"No Flash Flayer installed, or version is pre 6.0.0"});function b(s){var r="";for(var t in s){if(t.toLowerCase()=="flashvars"&&typeof s[t]=="object"){r+=' FlashVars="'+n.data.encodeUrl(s[t])+'"';}else{r+=" "+t+'="'+s[t]+'"';}}return r;}function q(s){var u="",t,v;for(t in s){if(t.toLowerCase()=="flashvars"&&typeof s[t]=="object"){v=n.data.encodeUrl(s[t]);}else{v=s[t];}u+='\n';}return u;}function h(s,r){s=s||{};for(var t in r){if(typeof s[t]=="undefined"){s[t]=r[t];}else{if(typeof r[t]=="object"){s[t]=h(s[t],r[t]);}}}return s;}function c(){var r=(navigator.platform||navigator.userAgent);return r.match(/win/i)?"win":r.match(/mac/i)?"mac":"other";}function l(r){var t=/^WIN (\d+),(\d+),(\d+),\d+$/;var s=r.GetVariable("$version");if($match=t.exec(s)){return{major:parseInt($match[1]),minor:parseInt($match[2]),release:parseInt($match[3]),actual:s};}else{}}function k(){var s,u,v={major:0,minor:0,release:0},r=v;if(n.env.ie){try{u=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");r=l(u);}catch(w){try{u=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");try{u.AllowScriptAccess="always";r=l(u);}catch(w){r={major:6,minor:0,release:29};}}catch(w){}}}else{var t=/^Shockwave Flash\s*(\d+)\.(\d+)\s*\w(\d+)$/;if((u=navigator.plugins["Shockwave Flash"])&&(s=t.exec(u.description))){r={major:parseInt(s[1]),minor:parseInt(s[2]),release:parseInt(s[3]),actual:u.description};}}r.toString=function(){return this.major?[this.major,this.minor,this.release].join("."):o.getLocaleModule("GLOW_EMBED").NO_PLAYER_MESSAGE;};return r;}var m=k();function f(t){if(typeof t!="object"){var s=String(t).match(/^(\d+)(?:\.(\d+)(?:\.(\d+))?)?$/);if(!s){throw new Error('glow.embed._meetsVersionRequirements: invalid format for version string, require "n.n.n" or "n.n" or simply "n" where n is a numeric value');}t={major:parseInt(s[1],10),minor:parseInt(s[2]||0,10),release:parseInt(s[3]||0,10)};}var r=m,u=t;return(r.major>u.major||(r.major==u.major&&r.minor>u.minor)||(r.major==u.major&&r.minor==u.minor&&r.release>=u.release));}var e=n.env.ie?j:g;function g(t,r,s){return'";}function j(t,r,s){return''+q(s)+"";}var a={},p=0;function d(){return n.UID+"FlashEmbed"+(p++);}a.Flash=function(x,r,w,v){v=h(v,{width:"100%",height:"100%",params:{allowscriptaccess:"always",allowfullscreen:"true",quality:"high"},attributes:{},message:n.lang.interpolate(o.getLocaleModule("GLOW_EMBED").FLASH_MESSAGE,{min:w,installed:m}),id:(v&&v.attributes&&v.attributes.id)||d()});r=n.dom.get(r);if(!r.length){throw new Error("glow.embed.Flash unable to locate container");}this.container=r;this.movie=null;this._displayErrorMessage=typeof v.message=="function"?v.message:function(){return v.message;};this.isSupported;if(this.isSupported=f(w)){var s=v.attributes,u=["id","width","height"],t=u.length;while(t--){if(v[u[t]]){s[u[t]]=v[u[t]];}}if(v.className){s["class"]=v.className;}this._embed_tag=e(x,s,v.params);}};a.Flash.version=function(){return m;};a.Flash.prototype.embed=function(){var s=this.container[0];if(this.isSupported){s.innerHTML=this._embed_tag;this.movie=s.firstChild;}else{var r=this._displayErrorMessage();if(r){s.innerHTML=r;}}return this;};n.embed=a;}});(window.gloader||glow).module({name:"glow.dragdrop",library:["glow","1.7.3"],depends:[["glow","1.7.3","glow.tweens","glow.events","glow.dom","glow.anim"]],builder:function(j){var c=j.events,k=c.addListener,v=c.fire,g=c.removeListener,q=j.dom,h=q.get,m=q.create;var n={},w=1000,a=(document.compatMode=="CSS1Compat"&&j.env.ie>=5)?true:false,x=(document.compatMode!="CSS1Compat"&&j.env.ie>=5)?true:false,d=j.env.ie>=5,s=["top","right","bottom","left"];function b(r,z){var A=r.prototype[z];var y="cached_"+z;r.prototype[z]=function(){if(y in this){return this[y];}return this[y]=A.apply(this,arguments);};}function u(A,z){var r=s.length,y;while(r--){y="margin-"+s[r];A.css(y,z.css(y));}}function f(r,y){var A=r.prototype[y];var z="cached_"+y;r.prototype[y]=function(B){if(!this[z]){this[z]={};}if(B in this[z]){return this[z][B];}return this[z][B]=A.apply(this,arguments);};}function t(A,z){for(var y=0,r=z.length;y=y[0]&&A<=y[1]&&B<=y[2]&&A>=y[3];},containsPoint:function(y){var r=this.el.offset();return y.x>=r.left&&y.y>=r.top&&y.x<=r.left+this.borderWidth()&&y.y<=r.top+this.borderHeight();},positionedAncestorBox:function(){var r=this.el.parent(),y;while(r[0]){y=r.css("position")||"static";if(y=="relative"||y=="absolute"||y=="fixed"){return new o(r);}r=r.parent();}return null;}});function e(y){var r=y[0].tagName.toLowerCase()=="li"?"li":"div";var z=m("<"+r+">");if(r=="li"){z.css("list-style-type","none");}return z;}n.Draggable=function(A,B){this.element=h(A);this._opts=B=j.lang.apply({dragPrevention:["input","textarea","button","select","option","a"],placeholder:"spacer",placeholderClass:"glow-dragdrop-placeholder",step:{x:1,y:1}},B||{});if(typeof B.step=="number"){B.step={x:B.step,y:B.step};}else{B.step.x=B.step.x||1;B.step.y=B.step.y||1;}this._preventDrag=[];for(var y=0,r=B.dragPrevention.length;yA[1]?A[1]:D;}if(y!="x"){B=BA[2]?A[2]:B;}}r[0].style.left=D+"px";r[0].style.top=B+"px";if(this.dropTargets){this._mousePos={x:C.pageX,y:C.pageY};}if(d&&C.nativeEvent.button==0){this._releaseElement(C);return false;}return false;},_testForDropTargets:function(H){if(!this._lock){this._lock=0;}if(H){this._lock--;}else{if(this.lock){return;}}if(this._dragging!=1){return;}var z=this.activeTarget,y,R=this.dropTargets,S,C,F=this._box,K=this._mousePos;F.resetPosition();var D=0;for(var L=0,J=R.length;LD){D=M;y=S;}}}}this.activeTarget=y;if(y!==z){if(y){var I=new c.Event();I.draggable=this;v(y,"enter",I);var r=new c.Event();r.dropTarget=y;v(this,"enter",r);}if(z){var E=new c.Event();E.draggable=this;v(z,"leave",E);var G=new c.Event();G.dropTarget=z;v(this,"leave",G);}}if(y&&y._opts.dropIndicator!="none"){var P,N=y._childBoxes,A=y._children;F.resetPosition();var Q=y._box.innerTopPos();var T=K.y-F.offsetParentPageTop();var O=0;for(var L=0,J=N.length;L1){throw"more than one element passed into DropTarget constructor";}this._id=++l;this._opts=y=j.lang.apply({dropIndicator:"none",dropIndicatorClass:"glow-dragdrop-dropindicator",tolerance:"intersect"},y||{});if(y.onActive){k(this,"active",y.onActive);}if(y.onInactive){k(this,"inactive",y.onInactive);}if(y.onEnter){k(this,"enter",y.onEnter);}if(y.onLeave){k(this,"leave",y.onLeave);}if(y.onDrop){k(this,"drop",y.onDrop);}k(this,"active",this._onActive);k(this,"inactive",this._onInactive);return this;};n.DropTarget.prototype={setLogicalBottom:function(r){this._logicalBottom=r;},_onActive:function(A){var y=A.draggable;this._box=new o(this.element);if(this._logicalBottom){this._box.setLogicalBottom(this._logicalBottom);}if(this._opts.dropIndicator=="none"){return;}this._onEnterListener=k(this,"enter",this._onEnter);this._onLeaveListener=k(this,"leave",this._onLeave);this._dropIndicator=e(y.element);if(this._opts.dropIndicatorClass){this._dropIndicator.addClass(this._opts.dropIndicatorClass);}y._box.sizePlaceholder(this._dropIndicator,"relative",0,0);var z=this._children=h(this.element.children()).filter(function(){var B=h(this);return(!A.draggable._placeholder||!B.eq(A.draggable._placeholder))&&(!this._dropIndicator||!B.eq(this._dropIndicator));});var r=this._childBoxes=[];z.each(function(B){r[B]=new o(h(z[B]));});},_onInactive:function(r){g(this._onEnterListener);g(this._onLeaveListener);delete this._box;if(this._opts.dropIndicator=="none"){return;}if(!r.droppedOnThis&&this._dropIndicator){this._dropIndicator.remove();delete this._dropIndicator;}delete this._childBoxes;delete this._children;},_onEnter:function(){this._dropIndicatorAt=-1;},_onLeave:function(){this._dropIndicator.remove();},moveToPosition:function(y){var C=this._dropIndicator,z=new o(C);var B=parseInt(C.css("margin-left"))||0,A=parseInt(C.css("margin-top"))||0,r=z.el.position();y._startOffset={x:r.left,y:r.top};y._dropIndicator=C;delete this._dropIndicator;}};j.dragdrop=n;}}); -/*@end @*/ diff --git a/minsrc/baselibs/prototype.js b/minsrc/baselibs/prototype.js deleted file mode 100644 index 474b223..0000000 --- a/minsrc/baselibs/prototype.js +++ /dev/null @@ -1,6082 +0,0 @@ -/* Prototype JavaScript framework, version 1.7 - * (c) 2005-2010 Sam Stephenson - * - * Prototype is freely distributable under the terms of an MIT-style license. - * For details, see the Prototype web site: http://www.prototypejs.org/ - * - *--------------------------------------------------------------------------*/ - -var Prototype = { - - Version: '1.7', - - Browser: (function(){ - var ua = navigator.userAgent; - var isOpera = Object.prototype.toString.call(window.opera) == '[object Opera]'; - return { - IE: !!window.attachEvent && !isOpera, - Opera: isOpera, - WebKit: ua.indexOf('AppleWebKit/') > -1, - Gecko: ua.indexOf('Gecko') > -1 && ua.indexOf('KHTML') === -1, - MobileSafari: /Apple.*Mobile/.test(ua) - } - })(), - - BrowserFeatures: { - XPath: !!document.evaluate, - - SelectorsAPI: !!document.querySelector, - - ElementExtensions: (function() { - var constructor = window.Element || window.HTMLElement; - return !!(constructor && constructor.prototype); - })(), - SpecificElementExtensions: (function() { - if (typeof window.HTMLDivElement !== 'undefined') - return true; - - var div = document.createElement('div'), - form = document.createElement('form'), - isSupported = false; - - if (div['__proto__'] && (div['__proto__'] !== form['__proto__'])) { - isSupported = true; - } - - div = form = null; - - return isSupported; - })() - }, - - ScriptFragment: ']*>([\\S\\s]*?)<\/script>', - JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, - - emptyFunction: function() { }, - - K: function(x) { return x } -}; - -if (Prototype.Browser.MobileSafari) - Prototype.BrowserFeatures.SpecificElementExtensions = false; - - -var Abstract = { }; - - -var Try = { - these: function() { - var returnValue; - - for (var i = 0, length = arguments.length; i < length; i++) { - var lambda = arguments[i]; - try { - returnValue = lambda(); - break; - } catch (e) { } - } - - return returnValue; - } -}; - -/* Based on Alex Arnell's inheritance implementation. */ - -var Class = (function() { - - var IS_DONTENUM_BUGGY = (function(){ - for (var p in { toString: 1 }) { - if (p === 'toString') return false; - } - return true; - })(); - - function subclass() {}; - function create() { - var parent = null, properties = $A(arguments); - if (Object.isFunction(properties[0])) - parent = properties.shift(); - - function klass() { - this.initialize.apply(this, arguments); - } - - Object.extend(klass, Class.Methods); - klass.superclass = parent; - klass.subclasses = []; - - if (parent) { - subclass.prototype = parent.prototype; - klass.prototype = new subclass; - parent.subclasses.push(klass); - } - - for (var i = 0, length = properties.length; i < length; i++) - klass.addMethods(properties[i]); - - if (!klass.prototype.initialize) - klass.prototype.initialize = Prototype.emptyFunction; - - klass.prototype.constructor = klass; - return klass; - } - - function addMethods(source) { - var ancestor = this.superclass && this.superclass.prototype, - properties = Object.keys(source); - - if (IS_DONTENUM_BUGGY) { - if (source.toString != Object.prototype.toString) - properties.push("toString"); - if (source.valueOf != Object.prototype.valueOf) - properties.push("valueOf"); - } - - for (var i = 0, length = properties.length; i < length; i++) { - var property = properties[i], value = source[property]; - if (ancestor && Object.isFunction(value) && - value.argumentNames()[0] == "$super") { - var method = value; - value = (function(m) { - return function() { return ancestor[m].apply(this, arguments); }; - })(property).wrap(method); - - value.valueOf = method.valueOf.bind(method); - value.toString = method.toString.bind(method); - } - this.prototype[property] = value; - } - - return this; - } - - return { - create: create, - Methods: { - addMethods: addMethods - } - }; -})(); -(function() { - - var _toString = Object.prototype.toString, - NULL_TYPE = 'Null', - UNDEFINED_TYPE = 'Undefined', - BOOLEAN_TYPE = 'Boolean', - NUMBER_TYPE = 'Number', - STRING_TYPE = 'String', - OBJECT_TYPE = 'Object', - FUNCTION_CLASS = '[object Function]', - BOOLEAN_CLASS = '[object Boolean]', - NUMBER_CLASS = '[object Number]', - STRING_CLASS = '[object String]', - ARRAY_CLASS = '[object Array]', - DATE_CLASS = '[object Date]', - NATIVE_JSON_STRINGIFY_SUPPORT = window.JSON && - typeof JSON.stringify === 'function' && - JSON.stringify(0) === '0' && - typeof JSON.stringify(Prototype.K) === 'undefined'; - - function Type(o) { - switch(o) { - case null: return NULL_TYPE; - case (void 0): return UNDEFINED_TYPE; - } - var type = typeof o; - switch(type) { - case 'boolean': return BOOLEAN_TYPE; - case 'number': return NUMBER_TYPE; - case 'string': return STRING_TYPE; - } - return OBJECT_TYPE; - } - - function extend(destination, source) { - for (var property in source) - destination[property] = source[property]; - return destination; - } - - function inspect(object) { - try { - if (isUndefined(object)) return 'undefined'; - if (object === null) return 'null'; - return object.inspect ? object.inspect() : String(object); - } catch (e) { - if (e instanceof RangeError) return '...'; - throw e; - } - } - - function toJSON(value) { - return Str('', { '': value }, []); - } - - function Str(key, holder, stack) { - var value = holder[key], - type = typeof value; - - if (Type(value) === OBJECT_TYPE && typeof value.toJSON === 'function') { - value = value.toJSON(key); - } - - var _class = _toString.call(value); - - switch (_class) { - case NUMBER_CLASS: - case BOOLEAN_CLASS: - case STRING_CLASS: - value = value.valueOf(); - } - - switch (value) { - case null: return 'null'; - case true: return 'true'; - case false: return 'false'; - } - - type = typeof value; - switch (type) { - case 'string': - return value.inspect(true); - case 'number': - return isFinite(value) ? String(value) : 'null'; - case 'object': - - for (var i = 0, length = stack.length; i < length; i++) { - if (stack[i] === value) { throw new TypeError(); } - } - stack.push(value); - - var partial = []; - if (_class === ARRAY_CLASS) { - for (var i = 0, length = value.length; i < length; i++) { - var str = Str(i, value, stack); - partial.push(typeof str === 'undefined' ? 'null' : str); - } - partial = '[' + partial.join(',') + ']'; - } else { - var keys = Object.keys(value); - for (var i = 0, length = keys.length; i < length; i++) { - var key = keys[i], str = Str(key, value, stack); - if (typeof str !== "undefined") { - partial.push(key.inspect(true)+ ':' + str); - } - } - partial = '{' + partial.join(',') + '}'; - } - stack.pop(); - return partial; - } - } - - function stringify(object) { - return JSON.stringify(object); - } - - function toQueryString(object) { - return $H(object).toQueryString(); - } - - function toHTML(object) { - return object && object.toHTML ? object.toHTML() : String.interpret(object); - } - - function keys(object) { - if (Type(object) !== OBJECT_TYPE) { throw new TypeError(); } - var results = []; - for (var property in object) { - if (object.hasOwnProperty(property)) { - results.push(property); - } - } - return results; - } - - function values(object) { - var results = []; - for (var property in object) - results.push(object[property]); - return results; - } - - function clone(object) { - return extend({ }, object); - } - - function isElement(object) { - return !!(object && object.nodeType == 1); - } - - function isArray(object) { - return _toString.call(object) === ARRAY_CLASS; - } - - var hasNativeIsArray = (typeof Array.isArray == 'function') - && Array.isArray([]) && !Array.isArray({}); - - if (hasNativeIsArray) { - isArray = Array.isArray; - } - - function isHash(object) { - return object instanceof Hash; - } - - function isFunction(object) { - return _toString.call(object) === FUNCTION_CLASS; - } - - function isString(object) { - return _toString.call(object) === STRING_CLASS; - } - - function isNumber(object) { - return _toString.call(object) === NUMBER_CLASS; - } - - function isDate(object) { - return _toString.call(object) === DATE_CLASS; - } - - function isUndefined(object) { - return typeof object === "undefined"; - } - - extend(Object, { - extend: extend, - inspect: inspect, - toJSON: NATIVE_JSON_STRINGIFY_SUPPORT ? stringify : toJSON, - toQueryString: toQueryString, - toHTML: toHTML, - keys: Object.keys || keys, - values: values, - clone: clone, - isElement: isElement, - isArray: isArray, - isHash: isHash, - isFunction: isFunction, - isString: isString, - isNumber: isNumber, - isDate: isDate, - isUndefined: isUndefined - }); -})(); -Object.extend(Function.prototype, (function() { - var slice = Array.prototype.slice; - - function update(array, args) { - var arrayLength = array.length, length = args.length; - while (length--) array[arrayLength + length] = args[length]; - return array; - } - - function merge(array, args) { - array = slice.call(array, 0); - return update(array, args); - } - - function argumentNames() { - var names = this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1] - .replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '') - .replace(/\s+/g, '').split(','); - return names.length == 1 && !names[0] ? [] : names; - } - - function bind(context) { - if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this; - var __method = this, args = slice.call(arguments, 1); - return function() { - var a = merge(args, arguments); - return __method.apply(context, a); - } - } - - function bindAsEventListener(context) { - var __method = this, args = slice.call(arguments, 1); - return function(event) { - var a = update([event || window.event], args); - return __method.apply(context, a); - } - } - - function curry() { - if (!arguments.length) return this; - var __method = this, args = slice.call(arguments, 0); - return function() { - var a = merge(args, arguments); - return __method.apply(this, a); - } - } - - function delay(timeout) { - var __method = this, args = slice.call(arguments, 1); - timeout = timeout * 1000; - return window.setTimeout(function() { - return __method.apply(__method, args); - }, timeout); - } - - function defer() { - var args = update([0.01], arguments); - return this.delay.apply(this, args); - } - - function wrap(wrapper) { - var __method = this; - return function() { - var a = update([__method.bind(this)], arguments); - return wrapper.apply(this, a); - } - } - - function methodize() { - if (this._methodized) return this._methodized; - var __method = this; - return this._methodized = function() { - var a = update([this], arguments); - return __method.apply(null, a); - }; - } - - return { - argumentNames: argumentNames, - bind: bind, - bindAsEventListener: bindAsEventListener, - curry: curry, - delay: delay, - defer: defer, - wrap: wrap, - methodize: methodize - } -})()); - - - -(function(proto) { - - - function toISOString() { - return this.getUTCFullYear() + '-' + - (this.getUTCMonth() + 1).toPaddedString(2) + '-' + - this.getUTCDate().toPaddedString(2) + 'T' + - this.getUTCHours().toPaddedString(2) + ':' + - this.getUTCMinutes().toPaddedString(2) + ':' + - this.getUTCSeconds().toPaddedString(2) + 'Z'; - } - - - function toJSON() { - return this.toISOString(); - } - - if (!proto.toISOString) proto.toISOString = toISOString; - if (!proto.toJSON) proto.toJSON = toJSON; - -})(Date.prototype); - - -RegExp.prototype.match = RegExp.prototype.test; - -RegExp.escape = function(str) { - return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); -}; -var PeriodicalExecuter = Class.create({ - initialize: function(callback, frequency) { - this.callback = callback; - this.frequency = frequency; - this.currentlyExecuting = false; - - this.registerCallback(); - }, - - registerCallback: function() { - this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); - }, - - execute: function() { - this.callback(this); - }, - - stop: function() { - if (!this.timer) return; - clearInterval(this.timer); - this.timer = null; - }, - - onTimerEvent: function() { - if (!this.currentlyExecuting) { - try { - this.currentlyExecuting = true; - this.execute(); - this.currentlyExecuting = false; - } catch(e) { - this.currentlyExecuting = false; - throw e; - } - } - } -}); -Object.extend(String, { - interpret: function(value) { - return value == null ? '' : String(value); - }, - specialChar: { - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '\\': '\\\\' - } -}); - -Object.extend(String.prototype, (function() { - var NATIVE_JSON_PARSE_SUPPORT = window.JSON && - typeof JSON.parse === 'function' && - JSON.parse('{"test": true}').test; - - function prepareReplacement(replacement) { - if (Object.isFunction(replacement)) return replacement; - var template = new Template(replacement); - return function(match) { return template.evaluate(match) }; - } - - function gsub(pattern, replacement) { - var result = '', source = this, match; - replacement = prepareReplacement(replacement); - - if (Object.isString(pattern)) - pattern = RegExp.escape(pattern); - - if (!(pattern.length || pattern.source)) { - replacement = replacement(''); - return replacement + source.split('').join(replacement) + replacement; - } - - while (source.length > 0) { - if (match = source.match(pattern)) { - result += source.slice(0, match.index); - result += String.interpret(replacement(match)); - source = source.slice(match.index + match[0].length); - } else { - result += source, source = ''; - } - } - return result; - } - - function sub(pattern, replacement, count) { - replacement = prepareReplacement(replacement); - count = Object.isUndefined(count) ? 1 : count; - - return this.gsub(pattern, function(match) { - if (--count < 0) return match[0]; - return replacement(match); - }); - } - - function scan(pattern, iterator) { - this.gsub(pattern, iterator); - return String(this); - } - - function truncate(length, truncation) { - length = length || 30; - truncation = Object.isUndefined(truncation) ? '...' : truncation; - return this.length > length ? - this.slice(0, length - truncation.length) + truncation : String(this); - } - - function strip() { - return this.replace(/^\s+/, '').replace(/\s+$/, ''); - } - - function stripTags() { - return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi, ''); - } - - function stripScripts() { - return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); - } - - function extractScripts() { - var matchAll = new RegExp(Prototype.ScriptFragment, 'img'), - matchOne = new RegExp(Prototype.ScriptFragment, 'im'); - return (this.match(matchAll) || []).map(function(scriptTag) { - return (scriptTag.match(matchOne) || ['', ''])[1]; - }); - } - - function evalScripts() { - return this.extractScripts().map(function(script) { return eval(script) }); - } - - function escapeHTML() { - return this.replace(/&/g,'&').replace(//g,'>'); - } - - function unescapeHTML() { - return this.stripTags().replace(/</g,'<').replace(/>/g,'>').replace(/&/g,'&'); - } - - - function toQueryParams(separator) { - var match = this.strip().match(/([^?#]*)(#.*)?$/); - if (!match) return { }; - - return match[1].split(separator || '&').inject({ }, function(hash, pair) { - if ((pair = pair.split('='))[0]) { - var key = decodeURIComponent(pair.shift()), - value = pair.length > 1 ? pair.join('=') : pair[0]; - - if (value != undefined) value = decodeURIComponent(value); - - if (key in hash) { - if (!Object.isArray(hash[key])) hash[key] = [hash[key]]; - hash[key].push(value); - } - else hash[key] = value; - } - return hash; - }); - } - - function toArray() { - return this.split(''); - } - - function succ() { - return this.slice(0, this.length - 1) + - String.fromCharCode(this.charCodeAt(this.length - 1) + 1); - } - - function times(count) { - return count < 1 ? '' : new Array(count + 1).join(this); - } - - function camelize() { - return this.replace(/-+(.)?/g, function(match, chr) { - return chr ? chr.toUpperCase() : ''; - }); - } - - function capitalize() { - return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); - } - - function underscore() { - return this.replace(/::/g, '/') - .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2') - .replace(/([a-z\d])([A-Z])/g, '$1_$2') - .replace(/-/g, '_') - .toLowerCase(); - } - - function dasherize() { - return this.replace(/_/g, '-'); - } - - function inspect(useDoubleQuotes) { - var escapedString = this.replace(/[\x00-\x1f\\]/g, function(character) { - if (character in String.specialChar) { - return String.specialChar[character]; - } - return '\\u00' + character.charCodeAt().toPaddedString(2, 16); - }); - if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"'; - return "'" + escapedString.replace(/'/g, '\\\'') + "'"; - } - - function unfilterJSON(filter) { - return this.replace(filter || Prototype.JSONFilter, '$1'); - } - - function isJSON() { - var str = this; - if (str.blank()) return false; - str = str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@'); - str = str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']'); - str = str.replace(/(?:^|:|,)(?:\s*\[)+/g, ''); - return (/^[\],:{}\s]*$/).test(str); - } - - function evalJSON(sanitize) { - var json = this.unfilterJSON(), - cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; - if (cx.test(json)) { - json = json.replace(cx, function (a) { - return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }); - } - try { - if (!sanitize || json.isJSON()) return eval('(' + json + ')'); - } catch (e) { } - throw new SyntaxError('Badly formed JSON string: ' + this.inspect()); - } - - function parseJSON() { - var json = this.unfilterJSON(); - return JSON.parse(json); - } - - function include(pattern) { - return this.indexOf(pattern) > -1; - } - - function startsWith(pattern) { - return this.lastIndexOf(pattern, 0) === 0; - } - - function endsWith(pattern) { - var d = this.length - pattern.length; - return d >= 0 && this.indexOf(pattern, d) === d; - } - - function empty() { - return this == ''; - } - - function blank() { - return /^\s*$/.test(this); - } - - function interpolate(object, pattern) { - return new Template(this, pattern).evaluate(object); - } - - return { - gsub: gsub, - sub: sub, - scan: scan, - truncate: truncate, - strip: String.prototype.trim || strip, - stripTags: stripTags, - stripScripts: stripScripts, - extractScripts: extractScripts, - evalScripts: evalScripts, - escapeHTML: escapeHTML, - unescapeHTML: unescapeHTML, - toQueryParams: toQueryParams, - parseQuery: toQueryParams, - toArray: toArray, - succ: succ, - times: times, - camelize: camelize, - capitalize: capitalize, - underscore: underscore, - dasherize: dasherize, - inspect: inspect, - unfilterJSON: unfilterJSON, - isJSON: isJSON, - evalJSON: NATIVE_JSON_PARSE_SUPPORT ? parseJSON : evalJSON, - include: include, - startsWith: startsWith, - endsWith: endsWith, - empty: empty, - blank: blank, - interpolate: interpolate - }; -})()); - -var Template = Class.create({ - initialize: function(template, pattern) { - this.template = template.toString(); - this.pattern = pattern || Template.Pattern; - }, - - evaluate: function(object) { - if (object && Object.isFunction(object.toTemplateReplacements)) - object = object.toTemplateReplacements(); - - return this.template.gsub(this.pattern, function(match) { - if (object == null) return (match[1] + ''); - - var before = match[1] || ''; - if (before == '\\') return match[2]; - - var ctx = object, expr = match[3], - pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/; - - match = pattern.exec(expr); - if (match == null) return before; - - while (match != null) { - var comp = match[1].startsWith('[') ? match[2].replace(/\\\\]/g, ']') : match[1]; - ctx = ctx[comp]; - if (null == ctx || '' == match[3]) break; - expr = expr.substring('[' == match[3] ? match[1].length : match[0].length); - match = pattern.exec(expr); - } - - return before + String.interpret(ctx); - }); - } -}); -Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; - -var $break = { }; - -var Enumerable = (function() { - function each(iterator, context) { - var index = 0; - try { - this._each(function(value) { - iterator.call(context, value, index++); - }); - } catch (e) { - if (e != $break) throw e; - } - return this; - } - - function eachSlice(number, iterator, context) { - var index = -number, slices = [], array = this.toArray(); - if (number < 1) return array; - while ((index += number) < array.length) - slices.push(array.slice(index, index+number)); - return slices.collect(iterator, context); - } - - function all(iterator, context) { - iterator = iterator || Prototype.K; - var result = true; - this.each(function(value, index) { - result = result && !!iterator.call(context, value, index); - if (!result) throw $break; - }); - return result; - } - - function any(iterator, context) { - iterator = iterator || Prototype.K; - var result = false; - this.each(function(value, index) { - if (result = !!iterator.call(context, value, index)) - throw $break; - }); - return result; - } - - function collect(iterator, context) { - iterator = iterator || Prototype.K; - var results = []; - this.each(function(value, index) { - results.push(iterator.call(context, value, index)); - }); - return results; - } - - function detect(iterator, context) { - var result; - this.each(function(value, index) { - if (iterator.call(context, value, index)) { - result = value; - throw $break; - } - }); - return result; - } - - function findAll(iterator, context) { - var results = []; - this.each(function(value, index) { - if (iterator.call(context, value, index)) - results.push(value); - }); - return results; - } - - function grep(filter, iterator, context) { - iterator = iterator || Prototype.K; - var results = []; - - if (Object.isString(filter)) - filter = new RegExp(RegExp.escape(filter)); - - this.each(function(value, index) { - if (filter.match(value)) - results.push(iterator.call(context, value, index)); - }); - return results; - } - - function include(object) { - if (Object.isFunction(this.indexOf)) - if (this.indexOf(object) != -1) return true; - - var found = false; - this.each(function(value) { - if (value == object) { - found = true; - throw $break; - } - }); - return found; - } - - function inGroupsOf(number, fillWith) { - fillWith = Object.isUndefined(fillWith) ? null : fillWith; - return this.eachSlice(number, function(slice) { - while(slice.length < number) slice.push(fillWith); - return slice; - }); - } - - function inject(memo, iterator, context) { - this.each(function(value, index) { - memo = iterator.call(context, memo, value, index); - }); - return memo; - } - - function invoke(method) { - var args = $A(arguments).slice(1); - return this.map(function(value) { - return value[method].apply(value, args); - }); - } - - function max(iterator, context) { - iterator = iterator || Prototype.K; - var result; - this.each(function(value, index) { - value = iterator.call(context, value, index); - if (result == null || value >= result) - result = value; - }); - return result; - } - - function min(iterator, context) { - iterator = iterator || Prototype.K; - var result; - this.each(function(value, index) { - value = iterator.call(context, value, index); - if (result == null || value < result) - result = value; - }); - return result; - } - - function partition(iterator, context) { - iterator = iterator || Prototype.K; - var trues = [], falses = []; - this.each(function(value, index) { - (iterator.call(context, value, index) ? - trues : falses).push(value); - }); - return [trues, falses]; - } - - function pluck(property) { - var results = []; - this.each(function(value) { - results.push(value[property]); - }); - return results; - } - - function reject(iterator, context) { - var results = []; - this.each(function(value, index) { - if (!iterator.call(context, value, index)) - results.push(value); - }); - return results; - } - - function sortBy(iterator, context) { - return this.map(function(value, index) { - return { - value: value, - criteria: iterator.call(context, value, index) - }; - }).sort(function(left, right) { - var a = left.criteria, b = right.criteria; - return a < b ? -1 : a > b ? 1 : 0; - }).pluck('value'); - } - - function toArray() { - return this.map(); - } - - function zip() { - var iterator = Prototype.K, args = $A(arguments); - if (Object.isFunction(args.last())) - iterator = args.pop(); - - var collections = [this].concat(args).map($A); - return this.map(function(value, index) { - return iterator(collections.pluck(index)); - }); - } - - function size() { - return this.toArray().length; - } - - function inspect() { - return '#'; - } - - - - - - - - - - return { - each: each, - eachSlice: eachSlice, - all: all, - every: all, - any: any, - some: any, - collect: collect, - map: collect, - detect: detect, - findAll: findAll, - select: findAll, - filter: findAll, - grep: grep, - include: include, - member: include, - inGroupsOf: inGroupsOf, - inject: inject, - invoke: invoke, - max: max, - min: min, - partition: partition, - pluck: pluck, - reject: reject, - sortBy: sortBy, - toArray: toArray, - entries: toArray, - zip: zip, - size: size, - inspect: inspect, - find: detect - }; -})(); - -function $A(iterable) { - if (!iterable) return []; - if ('toArray' in Object(iterable)) return iterable.toArray(); - var length = iterable.length || 0, results = new Array(length); - while (length--) results[length] = iterable[length]; - return results; -} - - -function $w(string) { - if (!Object.isString(string)) return []; - string = string.strip(); - return string ? string.split(/\s+/) : []; -} - -Array.from = $A; - - -(function() { - var arrayProto = Array.prototype, - slice = arrayProto.slice, - _each = arrayProto.forEach; // use native browser JS 1.6 implementation if available - - function each(iterator, context) { - for (var i = 0, length = this.length >>> 0; i < length; i++) { - if (i in this) iterator.call(context, this[i], i, this); - } - } - if (!_each) _each = each; - - function clear() { - this.length = 0; - return this; - } - - function first() { - return this[0]; - } - - function last() { - return this[this.length - 1]; - } - - function compact() { - return this.select(function(value) { - return value != null; - }); - } - - function flatten() { - return this.inject([], function(array, value) { - if (Object.isArray(value)) - return array.concat(value.flatten()); - array.push(value); - return array; - }); - } - - function without() { - var values = slice.call(arguments, 0); - return this.select(function(value) { - return !values.include(value); - }); - } - - function reverse(inline) { - return (inline === false ? this.toArray() : this)._reverse(); - } - - function uniq(sorted) { - return this.inject([], function(array, value, index) { - if (0 == index || (sorted ? array.last() != value : !array.include(value))) - array.push(value); - return array; - }); - } - - function intersect(array) { - return this.uniq().findAll(function(item) { - return array.detect(function(value) { return item === value }); - }); - } - - - function clone() { - return slice.call(this, 0); - } - - function size() { - return this.length; - } - - function inspect() { - return '[' + this.map(Object.inspect).join(', ') + ']'; - } - - function indexOf(item, i) { - i || (i = 0); - var length = this.length; - if (i < 0) i = length + i; - for (; i < length; i++) - if (this[i] === item) return i; - return -1; - } - - function lastIndexOf(item, i) { - i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1; - var n = this.slice(0, i).reverse().indexOf(item); - return (n < 0) ? n : i - n - 1; - } - - function concat() { - var array = slice.call(this, 0), item; - for (var i = 0, length = arguments.length; i < length; i++) { - item = arguments[i]; - if (Object.isArray(item) && !('callee' in item)) { - for (var j = 0, arrayLength = item.length; j < arrayLength; j++) - array.push(item[j]); - } else { - array.push(item); - } - } - return array; - } - - Object.extend(arrayProto, Enumerable); - - if (!arrayProto._reverse) - arrayProto._reverse = arrayProto.reverse; - - Object.extend(arrayProto, { - _each: _each, - clear: clear, - first: first, - last: last, - compact: compact, - flatten: flatten, - without: without, - reverse: reverse, - uniq: uniq, - intersect: intersect, - clone: clone, - toArray: clone, - size: size, - inspect: inspect - }); - - var CONCAT_ARGUMENTS_BUGGY = (function() { - return [].concat(arguments)[0][0] !== 1; - })(1,2) - - if (CONCAT_ARGUMENTS_BUGGY) arrayProto.concat = concat; - - if (!arrayProto.indexOf) arrayProto.indexOf = indexOf; - if (!arrayProto.lastIndexOf) arrayProto.lastIndexOf = lastIndexOf; -})(); -function $H(object) { - return new Hash(object); -}; - -var Hash = Class.create(Enumerable, (function() { - function initialize(object) { - this._object = Object.isHash(object) ? object.toObject() : Object.clone(object); - } - - - function _each(iterator) { - for (var key in this._object) { - var value = this._object[key], pair = [key, value]; - pair.key = key; - pair.value = value; - iterator(pair); - } - } - - function set(key, value) { - return this._object[key] = value; - } - - function get(key) { - if (this._object[key] !== Object.prototype[key]) - return this._object[key]; - } - - function unset(key) { - var value = this._object[key]; - delete this._object[key]; - return value; - } - - function toObject() { - return Object.clone(this._object); - } - - - - function keys() { - return this.pluck('key'); - } - - function values() { - return this.pluck('value'); - } - - function index(value) { - var match = this.detect(function(pair) { - return pair.value === value; - }); - return match && match.key; - } - - function merge(object) { - return this.clone().update(object); - } - - function update(object) { - return new Hash(object).inject(this, function(result, pair) { - result.set(pair.key, pair.value); - return result; - }); - } - - function toQueryPair(key, value) { - if (Object.isUndefined(value)) return key; - return key + '=' + encodeURIComponent(String.interpret(value)); - } - - function toQueryString() { - return this.inject([], function(results, pair) { - var key = encodeURIComponent(pair.key), values = pair.value; - - if (values && typeof values == 'object') { - if (Object.isArray(values)) { - var queryValues = []; - for (var i = 0, len = values.length, value; i < len; i++) { - value = values[i]; - queryValues.push(toQueryPair(key, value)); - } - return results.concat(queryValues); - } - } else results.push(toQueryPair(key, values)); - return results; - }).join('&'); - } - - function inspect() { - return '#'; - } - - function clone() { - return new Hash(this); - } - - return { - initialize: initialize, - _each: _each, - set: set, - get: get, - unset: unset, - toObject: toObject, - toTemplateReplacements: toObject, - keys: keys, - values: values, - index: index, - merge: merge, - update: update, - toQueryString: toQueryString, - inspect: inspect, - toJSON: toObject, - clone: clone - }; -})()); - -Hash.from = $H; -Object.extend(Number.prototype, (function() { - function toColorPart() { - return this.toPaddedString(2, 16); - } - - function succ() { - return this + 1; - } - - function times(iterator, context) { - $R(0, this, true).each(iterator, context); - return this; - } - - function toPaddedString(length, radix) { - var string = this.toString(radix || 10); - return '0'.times(length - string.length) + string; - } - - function abs() { - return Math.abs(this); - } - - function round() { - return Math.round(this); - } - - function ceil() { - return Math.ceil(this); - } - - function floor() { - return Math.floor(this); - } - - return { - toColorPart: toColorPart, - succ: succ, - times: times, - toPaddedString: toPaddedString, - abs: abs, - round: round, - ceil: ceil, - floor: floor - }; -})()); - -function $R(start, end, exclusive) { - return new ObjectRange(start, end, exclusive); -} - -var ObjectRange = Class.create(Enumerable, (function() { - function initialize(start, end, exclusive) { - this.start = start; - this.end = end; - this.exclusive = exclusive; - } - - function _each(iterator) { - var value = this.start; - while (this.include(value)) { - iterator(value); - value = value.succ(); - } - } - - function include(value) { - if (value < this.start) - return false; - if (this.exclusive) - return value < this.end; - return value <= this.end; - } - - return { - initialize: initialize, - _each: _each, - include: include - }; -})()); - - - -var Ajax = { - getTransport: function() { - return Try.these( - function() {return new XMLHttpRequest()}, - function() {return new ActiveXObject('Msxml2.XMLHTTP')}, - function() {return new ActiveXObject('Microsoft.XMLHTTP')} - ) || false; - }, - - activeRequestCount: 0 -}; - -Ajax.Responders = { - responders: [], - - _each: function(iterator) { - this.responders._each(iterator); - }, - - register: function(responder) { - if (!this.include(responder)) - this.responders.push(responder); - }, - - unregister: function(responder) { - this.responders = this.responders.without(responder); - }, - - dispatch: function(callback, request, transport, json) { - this.each(function(responder) { - if (Object.isFunction(responder[callback])) { - try { - responder[callback].apply(responder, [request, transport, json]); - } catch (e) { } - } - }); - } -}; - -Object.extend(Ajax.Responders, Enumerable); - -Ajax.Responders.register({ - onCreate: function() { Ajax.activeRequestCount++ }, - onComplete: function() { Ajax.activeRequestCount-- } -}); -Ajax.Base = Class.create({ - initialize: function(options) { - this.options = { - method: 'post', - asynchronous: true, - contentType: 'application/x-www-form-urlencoded', - encoding: 'UTF-8', - parameters: '', - evalJSON: true, - evalJS: true - }; - Object.extend(this.options, options || { }); - - this.options.method = this.options.method.toLowerCase(); - - if (Object.isHash(this.options.parameters)) - this.options.parameters = this.options.parameters.toObject(); - } -}); -Ajax.Request = Class.create(Ajax.Base, { - _complete: false, - - initialize: function($super, url, options) { - $super(options); - this.transport = Ajax.getTransport(); - this.request(url); - }, - - request: function(url) { - this.url = url; - this.method = this.options.method; - var params = Object.isString(this.options.parameters) ? - this.options.parameters : - Object.toQueryString(this.options.parameters); - - if (!['get', 'post'].include(this.method)) { - params += (params ? '&' : '') + "_method=" + this.method; - this.method = 'post'; - } - - if (params && this.method === 'get') { - this.url += (this.url.include('?') ? '&' : '?') + params; - } - - this.parameters = params.toQueryParams(); - - try { - var response = new Ajax.Response(this); - if (this.options.onCreate) this.options.onCreate(response); - Ajax.Responders.dispatch('onCreate', this, response); - - this.transport.open(this.method.toUpperCase(), this.url, - this.options.asynchronous); - - if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1); - - this.transport.onreadystatechange = this.onStateChange.bind(this); - this.setRequestHeaders(); - - this.body = this.method == 'post' ? (this.options.postBody || params) : null; - this.transport.send(this.body); - - /* Force Firefox to handle ready state 4 for synchronous requests */ - if (!this.options.asynchronous && this.transport.overrideMimeType) - this.onStateChange(); - - } - catch (e) { - this.dispatchException(e); - } - }, - - onStateChange: function() { - var readyState = this.transport.readyState; - if (readyState > 1 && !((readyState == 4) && this._complete)) - this.respondToReadyState(this.transport.readyState); - }, - - setRequestHeaders: function() { - var headers = { - 'X-Requested-With': 'XMLHttpRequest', - 'X-Prototype-Version': Prototype.Version, - 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' - }; - - if (this.method == 'post') { - headers['Content-type'] = this.options.contentType + - (this.options.encoding ? '; charset=' + this.options.encoding : ''); - - /* Force "Connection: close" for older Mozilla browsers to work - * around a bug where XMLHttpRequest sends an incorrect - * Content-length header. See Mozilla Bugzilla #246651. - */ - if (this.transport.overrideMimeType && - (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005) - headers['Connection'] = 'close'; - } - - if (typeof this.options.requestHeaders == 'object') { - var extras = this.options.requestHeaders; - - if (Object.isFunction(extras.push)) - for (var i = 0, length = extras.length; i < length; i += 2) - headers[extras[i]] = extras[i+1]; - else - $H(extras).each(function(pair) { headers[pair.key] = pair.value }); - } - - for (var name in headers) - this.transport.setRequestHeader(name, headers[name]); - }, - - success: function() { - var status = this.getStatus(); - return !status || (status >= 200 && status < 300) || status == 304; - }, - - getStatus: function() { - try { - if (this.transport.status === 1223) return 204; - return this.transport.status || 0; - } catch (e) { return 0 } - }, - - respondToReadyState: function(readyState) { - var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this); - - if (state == 'Complete') { - try { - this._complete = true; - (this.options['on' + response.status] - || this.options['on' + (this.success() ? 'Success' : 'Failure')] - || Prototype.emptyFunction)(response, response.headerJSON); - } catch (e) { - this.dispatchException(e); - } - - var contentType = response.getHeader('Content-type'); - if (this.options.evalJS == 'force' - || (this.options.evalJS && this.isSameOrigin() && contentType - && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))) - this.evalResponse(); - } - - try { - (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON); - Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON); - } catch (e) { - this.dispatchException(e); - } - - if (state == 'Complete') { - this.transport.onreadystatechange = Prototype.emptyFunction; - } - }, - - isSameOrigin: function() { - var m = this.url.match(/^\s*https?:\/\/[^\/]*/); - return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({ - protocol: location.protocol, - domain: document.domain, - port: location.port ? ':' + location.port : '' - })); - }, - - getHeader: function(name) { - try { - return this.transport.getResponseHeader(name) || null; - } catch (e) { return null; } - }, - - evalResponse: function() { - try { - return eval((this.transport.responseText || '').unfilterJSON()); - } catch (e) { - this.dispatchException(e); - } - }, - - dispatchException: function(exception) { - (this.options.onException || Prototype.emptyFunction)(this, exception); - Ajax.Responders.dispatch('onException', this, exception); - } -}); - -Ajax.Request.Events = - ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; - - - - - - - - -Ajax.Response = Class.create({ - initialize: function(request){ - this.request = request; - var transport = this.transport = request.transport, - readyState = this.readyState = transport.readyState; - - if ((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) { - this.status = this.getStatus(); - this.statusText = this.getStatusText(); - this.responseText = String.interpret(transport.responseText); - this.headerJSON = this._getHeaderJSON(); - } - - if (readyState == 4) { - var xml = transport.responseXML; - this.responseXML = Object.isUndefined(xml) ? null : xml; - this.responseJSON = this._getResponseJSON(); - } - }, - - status: 0, - - statusText: '', - - getStatus: Ajax.Request.prototype.getStatus, - - getStatusText: function() { - try { - return this.transport.statusText || ''; - } catch (e) { return '' } - }, - - getHeader: Ajax.Request.prototype.getHeader, - - getAllHeaders: function() { - try { - return this.getAllResponseHeaders(); - } catch (e) { return null } - }, - - getResponseHeader: function(name) { - return this.transport.getResponseHeader(name); - }, - - getAllResponseHeaders: function() { - return this.transport.getAllResponseHeaders(); - }, - - _getHeaderJSON: function() { - var json = this.getHeader('X-JSON'); - if (!json) return null; - json = decodeURIComponent(escape(json)); - try { - return json.evalJSON(this.request.options.sanitizeJSON || - !this.request.isSameOrigin()); - } catch (e) { - this.request.dispatchException(e); - } - }, - - _getResponseJSON: function() { - var options = this.request.options; - if (!options.evalJSON || (options.evalJSON != 'force' && - !(this.getHeader('Content-type') || '').include('application/json')) || - this.responseText.blank()) - return null; - try { - return this.responseText.evalJSON(options.sanitizeJSON || - !this.request.isSameOrigin()); - } catch (e) { - this.request.dispatchException(e); - } - } -}); - -Ajax.Updater = Class.create(Ajax.Request, { - initialize: function($super, container, url, options) { - this.container = { - success: (container.success || container), - failure: (container.failure || (container.success ? null : container)) - }; - - options = Object.clone(options); - var onComplete = options.onComplete; - options.onComplete = (function(response, json) { - this.updateContent(response.responseText); - if (Object.isFunction(onComplete)) onComplete(response, json); - }).bind(this); - - $super(url, options); - }, - - updateContent: function(responseText) { - var receiver = this.container[this.success() ? 'success' : 'failure'], - options = this.options; - - if (!options.evalScripts) responseText = responseText.stripScripts(); - - if (receiver = $(receiver)) { - if (options.insertion) { - if (Object.isString(options.insertion)) { - var insertion = { }; insertion[options.insertion] = responseText; - receiver.insert(insertion); - } - else options.insertion(receiver, responseText); - } - else receiver.update(responseText); - } - } -}); - -Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { - initialize: function($super, container, url, options) { - $super(options); - this.onComplete = this.options.onComplete; - - this.frequency = (this.options.frequency || 2); - this.decay = (this.options.decay || 1); - - this.updater = { }; - this.container = container; - this.url = url; - - this.start(); - }, - - start: function() { - this.options.onComplete = this.updateComplete.bind(this); - this.onTimerEvent(); - }, - - stop: function() { - this.updater.options.onComplete = undefined; - clearTimeout(this.timer); - (this.onComplete || Prototype.emptyFunction).apply(this, arguments); - }, - - updateComplete: function(response) { - if (this.options.decay) { - this.decay = (response.responseText == this.lastText ? - this.decay * this.options.decay : 1); - - this.lastText = response.responseText; - } - this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency); - }, - - onTimerEvent: function() { - this.updater = new Ajax.Updater(this.container, this.url, this.options); - } -}); - - -function $(element) { - if (arguments.length > 1) { - for (var i = 0, elements = [], length = arguments.length; i < length; i++) - elements.push($(arguments[i])); - return elements; - } - if (Object.isString(element)) - element = document.getElementById(element); - return Element.extend(element); -} - -if (Prototype.BrowserFeatures.XPath) { - document._getElementsByXPath = function(expression, parentElement) { - var results = []; - var query = document.evaluate(expression, $(parentElement) || document, - null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); - for (var i = 0, length = query.snapshotLength; i < length; i++) - results.push(Element.extend(query.snapshotItem(i))); - return results; - }; -} - -/*--------------------------------------------------------------------------*/ - -if (!Node) var Node = { }; - -if (!Node.ELEMENT_NODE) { - Object.extend(Node, { - ELEMENT_NODE: 1, - ATTRIBUTE_NODE: 2, - TEXT_NODE: 3, - CDATA_SECTION_NODE: 4, - ENTITY_REFERENCE_NODE: 5, - ENTITY_NODE: 6, - PROCESSING_INSTRUCTION_NODE: 7, - COMMENT_NODE: 8, - DOCUMENT_NODE: 9, - DOCUMENT_TYPE_NODE: 10, - DOCUMENT_FRAGMENT_NODE: 11, - NOTATION_NODE: 12 - }); -} - - - -(function(global) { - function shouldUseCache(tagName, attributes) { - if (tagName === 'select') return false; - if ('type' in attributes) return false; - return true; - } - - var HAS_EXTENDED_CREATE_ELEMENT_SYNTAX = (function(){ - try { - var el = document.createElement(''); - return el.tagName.toLowerCase() === 'input' && el.name === 'x'; - } - catch(err) { - return false; - } - })(); - - var element = global.Element; - - global.Element = function(tagName, attributes) { - attributes = attributes || { }; - tagName = tagName.toLowerCase(); - var cache = Element.cache; - - if (HAS_EXTENDED_CREATE_ELEMENT_SYNTAX && attributes.name) { - tagName = '<' + tagName + ' name="' + attributes.name + '">'; - delete attributes.name; - return Element.writeAttribute(document.createElement(tagName), attributes); - } - - if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName)); - - var node = shouldUseCache(tagName, attributes) ? - cache[tagName].cloneNode(false) : document.createElement(tagName); - - return Element.writeAttribute(node, attributes); - }; - - Object.extend(global.Element, element || { }); - if (element) global.Element.prototype = element.prototype; - -})(this); - -Element.idCounter = 1; -Element.cache = { }; - -Element._purgeElement = function(element) { - var uid = element._prototypeUID; - if (uid) { - Element.stopObserving(element); - element._prototypeUID = void 0; - delete Element.Storage[uid]; - } -} - -Element.Methods = { - visible: function(element) { - return $(element).style.display != 'none'; - }, - - toggle: function(element) { - element = $(element); - Element[Element.visible(element) ? 'hide' : 'show'](element); - return element; - }, - - hide: function(element) { - element = $(element); - element.style.display = 'none'; - return element; - }, - - show: function(element) { - element = $(element); - element.style.display = ''; - return element; - }, - - remove: function(element) { - element = $(element); - element.parentNode.removeChild(element); - return element; - }, - - update: (function(){ - - var SELECT_ELEMENT_INNERHTML_BUGGY = (function(){ - var el = document.createElement("select"), - isBuggy = true; - el.innerHTML = ""; - if (el.options && el.options[0]) { - isBuggy = el.options[0].nodeName.toUpperCase() !== "OPTION"; - } - el = null; - return isBuggy; - })(); - - var TABLE_ELEMENT_INNERHTML_BUGGY = (function(){ - try { - var el = document.createElement("table"); - if (el && el.tBodies) { - el.innerHTML = "test"; - var isBuggy = typeof el.tBodies[0] == "undefined"; - el = null; - return isBuggy; - } - } catch (e) { - return true; - } - })(); - - var LINK_ELEMENT_INNERHTML_BUGGY = (function() { - try { - var el = document.createElement('div'); - el.innerHTML = ""; - var isBuggy = (el.childNodes.length === 0); - el = null; - return isBuggy; - } catch(e) { - return true; - } - })(); - - var ANY_INNERHTML_BUGGY = SELECT_ELEMENT_INNERHTML_BUGGY || - TABLE_ELEMENT_INNERHTML_BUGGY || LINK_ELEMENT_INNERHTML_BUGGY; - - var SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING = (function () { - var s = document.createElement("script"), - isBuggy = false; - try { - s.appendChild(document.createTextNode("")); - isBuggy = !s.firstChild || - s.firstChild && s.firstChild.nodeType !== 3; - } catch (e) { - isBuggy = true; - } - s = null; - return isBuggy; - })(); - - - function update(element, content) { - element = $(element); - var purgeElement = Element._purgeElement; - - var descendants = element.getElementsByTagName('*'), - i = descendants.length; - while (i--) purgeElement(descendants[i]); - - if (content && content.toElement) - content = content.toElement(); - - if (Object.isElement(content)) - return element.update().insert(content); - - content = Object.toHTML(content); - - var tagName = element.tagName.toUpperCase(); - - if (tagName === 'SCRIPT' && SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING) { - element.text = content; - return element; - } - - if (ANY_INNERHTML_BUGGY) { - if (tagName in Element._insertionTranslations.tags) { - while (element.firstChild) { - element.removeChild(element.firstChild); - } - Element._getContentFromAnonymousElement(tagName, content.stripScripts()) - .each(function(node) { - element.appendChild(node) - }); - } else if (LINK_ELEMENT_INNERHTML_BUGGY && Object.isString(content) && content.indexOf(' -1) { - while (element.firstChild) { - element.removeChild(element.firstChild); - } - var nodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts(), true); - nodes.each(function(node) { element.appendChild(node) }); - } - else { - element.innerHTML = content.stripScripts(); - } - } - else { - element.innerHTML = content.stripScripts(); - } - - content.evalScripts.bind(content).defer(); - return element; - } - - return update; - })(), - - replace: function(element, content) { - element = $(element); - if (content && content.toElement) content = content.toElement(); - else if (!Object.isElement(content)) { - content = Object.toHTML(content); - var range = element.ownerDocument.createRange(); - range.selectNode(element); - content.evalScripts.bind(content).defer(); - content = range.createContextualFragment(content.stripScripts()); - } - element.parentNode.replaceChild(content, element); - return element; - }, - - insert: function(element, insertions) { - element = $(element); - - if (Object.isString(insertions) || Object.isNumber(insertions) || - Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML))) - insertions = {bottom:insertions}; - - var content, insert, tagName, childNodes; - - for (var position in insertions) { - content = insertions[position]; - position = position.toLowerCase(); - insert = Element._insertionTranslations[position]; - - if (content && content.toElement) content = content.toElement(); - if (Object.isElement(content)) { - insert(element, content); - continue; - } - - content = Object.toHTML(content); - - tagName = ((position == 'before' || position == 'after') - ? element.parentNode : element).tagName.toUpperCase(); - - childNodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); - - if (position == 'top' || position == 'after') childNodes.reverse(); - childNodes.each(insert.curry(element)); - - content.evalScripts.bind(content).defer(); - } - - return element; - }, - - wrap: function(element, wrapper, attributes) { - element = $(element); - if (Object.isElement(wrapper)) - $(wrapper).writeAttribute(attributes || { }); - else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes); - else wrapper = new Element('div', wrapper); - if (element.parentNode) - element.parentNode.replaceChild(wrapper, element); - wrapper.appendChild(element); - return wrapper; - }, - - inspect: function(element) { - element = $(element); - var result = '<' + element.tagName.toLowerCase(); - $H({'id': 'id', 'className': 'class'}).each(function(pair) { - var property = pair.first(), - attribute = pair.last(), - value = (element[property] || '').toString(); - if (value) result += ' ' + attribute + '=' + value.inspect(true); - }); - return result + '>'; - }, - - recursivelyCollect: function(element, property, maximumLength) { - element = $(element); - maximumLength = maximumLength || -1; - var elements = []; - - while (element = element[property]) { - if (element.nodeType == 1) - elements.push(Element.extend(element)); - if (elements.length == maximumLength) - break; - } - - return elements; - }, - - ancestors: function(element) { - return Element.recursivelyCollect(element, 'parentNode'); - }, - - descendants: function(element) { - return Element.select(element, "*"); - }, - - firstDescendant: function(element) { - element = $(element).firstChild; - while (element && element.nodeType != 1) element = element.nextSibling; - return $(element); - }, - - immediateDescendants: function(element) { - var results = [], child = $(element).firstChild; - while (child) { - if (child.nodeType === 1) { - results.push(Element.extend(child)); - } - child = child.nextSibling; - } - return results; - }, - - previousSiblings: function(element, maximumLength) { - return Element.recursivelyCollect(element, 'previousSibling'); - }, - - nextSiblings: function(element) { - return Element.recursivelyCollect(element, 'nextSibling'); - }, - - siblings: function(element) { - element = $(element); - return Element.previousSiblings(element).reverse() - .concat(Element.nextSiblings(element)); - }, - - match: function(element, selector) { - element = $(element); - if (Object.isString(selector)) - return Prototype.Selector.match(element, selector); - return selector.match(element); - }, - - up: function(element, expression, index) { - element = $(element); - if (arguments.length == 1) return $(element.parentNode); - var ancestors = Element.ancestors(element); - return Object.isNumber(expression) ? ancestors[expression] : - Prototype.Selector.find(ancestors, expression, index); - }, - - down: function(element, expression, index) { - element = $(element); - if (arguments.length == 1) return Element.firstDescendant(element); - return Object.isNumber(expression) ? Element.descendants(element)[expression] : - Element.select(element, expression)[index || 0]; - }, - - previous: function(element, expression, index) { - element = $(element); - if (Object.isNumber(expression)) index = expression, expression = false; - if (!Object.isNumber(index)) index = 0; - - if (expression) { - return Prototype.Selector.find(element.previousSiblings(), expression, index); - } else { - return element.recursivelyCollect("previousSibling", index + 1)[index]; - } - }, - - next: function(element, expression, index) { - element = $(element); - if (Object.isNumber(expression)) index = expression, expression = false; - if (!Object.isNumber(index)) index = 0; - - if (expression) { - return Prototype.Selector.find(element.nextSiblings(), expression, index); - } else { - var maximumLength = Object.isNumber(index) ? index + 1 : 1; - return element.recursivelyCollect("nextSibling", index + 1)[index]; - } - }, - - - select: function(element) { - element = $(element); - var expressions = Array.prototype.slice.call(arguments, 1).join(', '); - return Prototype.Selector.select(expressions, element); - }, - - adjacent: function(element) { - element = $(element); - var expressions = Array.prototype.slice.call(arguments, 1).join(', '); - return Prototype.Selector.select(expressions, element.parentNode).without(element); - }, - - identify: function(element) { - element = $(element); - var id = Element.readAttribute(element, 'id'); - if (id) return id; - do { id = 'anonymous_element_' + Element.idCounter++ } while ($(id)); - Element.writeAttribute(element, 'id', id); - return id; - }, - - readAttribute: function(element, name) { - element = $(element); - if (Prototype.Browser.IE) { - var t = Element._attributeTranslations.read; - if (t.values[name]) return t.values[name](element, name); - if (t.names[name]) name = t.names[name]; - if (name.include(':')) { - return (!element.attributes || !element.attributes[name]) ? null : - element.attributes[name].value; - } - } - return element.getAttribute(name); - }, - - writeAttribute: function(element, name, value) { - element = $(element); - var attributes = { }, t = Element._attributeTranslations.write; - - if (typeof name == 'object') attributes = name; - else attributes[name] = Object.isUndefined(value) ? true : value; - - for (var attr in attributes) { - name = t.names[attr] || attr; - value = attributes[attr]; - if (t.values[attr]) name = t.values[attr](element, value); - if (value === false || value === null) - element.removeAttribute(name); - else if (value === true) - element.setAttribute(name, name); - else element.setAttribute(name, value); - } - return element; - }, - - getHeight: function(element) { - return Element.getDimensions(element).height; - }, - - getWidth: function(element) { - return Element.getDimensions(element).width; - }, - - classNames: function(element) { - return new Element.ClassNames(element); - }, - - hasClassName: function(element, className) { - if (!(element = $(element))) return; - var elementClassName = element.className; - return (elementClassName.length > 0 && (elementClassName == className || - new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName))); - }, - - addClassName: function(element, className) { - if (!(element = $(element))) return; - if (!Element.hasClassName(element, className)) - element.className += (element.className ? ' ' : '') + className; - return element; - }, - - removeClassName: function(element, className) { - if (!(element = $(element))) return; - element.className = element.className.replace( - new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip(); - return element; - }, - - toggleClassName: function(element, className) { - if (!(element = $(element))) return; - return Element[Element.hasClassName(element, className) ? - 'removeClassName' : 'addClassName'](element, className); - }, - - cleanWhitespace: function(element) { - element = $(element); - var node = element.firstChild; - while (node) { - var nextNode = node.nextSibling; - if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) - element.removeChild(node); - node = nextNode; - } - return element; - }, - - empty: function(element) { - return $(element).innerHTML.blank(); - }, - - descendantOf: function(element, ancestor) { - element = $(element), ancestor = $(ancestor); - - if (element.compareDocumentPosition) - return (element.compareDocumentPosition(ancestor) & 8) === 8; - - if (ancestor.contains) - return ancestor.contains(element) && ancestor !== element; - - while (element = element.parentNode) - if (element == ancestor) return true; - - return false; - }, - - scrollTo: function(element) { - element = $(element); - var pos = Element.cumulativeOffset(element); - window.scrollTo(pos[0], pos[1]); - return element; - }, - - getStyle: function(element, style) { - element = $(element); - style = style == 'float' ? 'cssFloat' : style.camelize(); - var value = element.style[style]; - if (!value || value == 'auto') { - var css = document.defaultView.getComputedStyle(element, null); - value = css ? css[style] : null; - } - if (style == 'opacity') return value ? parseFloat(value) : 1.0; - return value == 'auto' ? null : value; - }, - - getOpacity: function(element) { - return $(element).getStyle('opacity'); - }, - - setStyle: function(element, styles) { - element = $(element); - var elementStyle = element.style, match; - if (Object.isString(styles)) { - element.style.cssText += ';' + styles; - return styles.include('opacity') ? - element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element; - } - for (var property in styles) - if (property == 'opacity') element.setOpacity(styles[property]); - else - elementStyle[(property == 'float' || property == 'cssFloat') ? - (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') : - property] = styles[property]; - - return element; - }, - - setOpacity: function(element, value) { - element = $(element); - element.style.opacity = (value == 1 || value === '') ? '' : - (value < 0.00001) ? 0 : value; - return element; - }, - - makePositioned: function(element) { - element = $(element); - var pos = Element.getStyle(element, 'position'); - if (pos == 'static' || !pos) { - element._madePositioned = true; - element.style.position = 'relative'; - if (Prototype.Browser.Opera) { - element.style.top = 0; - element.style.left = 0; - } - } - return element; - }, - - undoPositioned: function(element) { - element = $(element); - if (element._madePositioned) { - element._madePositioned = undefined; - element.style.position = - element.style.top = - element.style.left = - element.style.bottom = - element.style.right = ''; - } - return element; - }, - - makeClipping: function(element) { - element = $(element); - if (element._overflow) return element; - element._overflow = Element.getStyle(element, 'overflow') || 'auto'; - if (element._overflow !== 'hidden') - element.style.overflow = 'hidden'; - return element; - }, - - undoClipping: function(element) { - element = $(element); - if (!element._overflow) return element; - element.style.overflow = element._overflow == 'auto' ? '' : element._overflow; - element._overflow = null; - return element; - }, - - clonePosition: function(element, source) { - var options = Object.extend({ - setLeft: true, - setTop: true, - setWidth: true, - setHeight: true, - offsetTop: 0, - offsetLeft: 0 - }, arguments[2] || { }); - - source = $(source); - var p = Element.viewportOffset(source), delta = [0, 0], parent = null; - - element = $(element); - - if (Element.getStyle(element, 'position') == 'absolute') { - parent = Element.getOffsetParent(element); - delta = Element.viewportOffset(parent); - } - - if (parent == document.body) { - delta[0] -= document.body.offsetLeft; - delta[1] -= document.body.offsetTop; - } - - if (options.setLeft) element.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; - if (options.setTop) element.style.top = (p[1] - delta[1] + options.offsetTop) + 'px'; - if (options.setWidth) element.style.width = source.offsetWidth + 'px'; - if (options.setHeight) element.style.height = source.offsetHeight + 'px'; - return element; - } -}; - -Object.extend(Element.Methods, { - getElementsBySelector: Element.Methods.select, - - childElements: Element.Methods.immediateDescendants -}); - -Element._attributeTranslations = { - write: { - names: { - className: 'class', - htmlFor: 'for' - }, - values: { } - } -}; - -if (Prototype.Browser.Opera) { - Element.Methods.getStyle = Element.Methods.getStyle.wrap( - function(proceed, element, style) { - switch (style) { - case 'height': case 'width': - if (!Element.visible(element)) return null; - - var dim = parseInt(proceed(element, style), 10); - - if (dim !== element['offset' + style.capitalize()]) - return dim + 'px'; - - var properties; - if (style === 'height') { - properties = ['border-top-width', 'padding-top', - 'padding-bottom', 'border-bottom-width']; - } - else { - properties = ['border-left-width', 'padding-left', - 'padding-right', 'border-right-width']; - } - return properties.inject(dim, function(memo, property) { - var val = proceed(element, property); - return val === null ? memo : memo - parseInt(val, 10); - }) + 'px'; - default: return proceed(element, style); - } - } - ); - - Element.Methods.readAttribute = Element.Methods.readAttribute.wrap( - function(proceed, element, attribute) { - if (attribute === 'title') return element.title; - return proceed(element, attribute); - } - ); -} - -else if (Prototype.Browser.IE) { - Element.Methods.getStyle = function(element, style) { - element = $(element); - style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize(); - var value = element.style[style]; - if (!value && element.currentStyle) value = element.currentStyle[style]; - - if (style == 'opacity') { - if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/)) - if (value[1]) return parseFloat(value[1]) / 100; - return 1.0; - } - - if (value == 'auto') { - if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none')) - return element['offset' + style.capitalize()] + 'px'; - return null; - } - return value; - }; - - Element.Methods.setOpacity = function(element, value) { - function stripAlpha(filter){ - return filter.replace(/alpha\([^\)]*\)/gi,''); - } - element = $(element); - var currentStyle = element.currentStyle; - if ((currentStyle && !currentStyle.hasLayout) || - (!currentStyle && element.style.zoom == 'normal')) - element.style.zoom = 1; - - var filter = element.getStyle('filter'), style = element.style; - if (value == 1 || value === '') { - (filter = stripAlpha(filter)) ? - style.filter = filter : style.removeAttribute('filter'); - return element; - } else if (value < 0.00001) value = 0; - style.filter = stripAlpha(filter) + - 'alpha(opacity=' + (value * 100) + ')'; - return element; - }; - - Element._attributeTranslations = (function(){ - - var classProp = 'className', - forProp = 'for', - el = document.createElement('div'); - - el.setAttribute(classProp, 'x'); - - if (el.className !== 'x') { - el.setAttribute('class', 'x'); - if (el.className === 'x') { - classProp = 'class'; - } - } - el = null; - - el = document.createElement('label'); - el.setAttribute(forProp, 'x'); - if (el.htmlFor !== 'x') { - el.setAttribute('htmlFor', 'x'); - if (el.htmlFor === 'x') { - forProp = 'htmlFor'; - } - } - el = null; - - return { - read: { - names: { - 'class': classProp, - 'className': classProp, - 'for': forProp, - 'htmlFor': forProp - }, - values: { - _getAttr: function(element, attribute) { - return element.getAttribute(attribute); - }, - _getAttr2: function(element, attribute) { - return element.getAttribute(attribute, 2); - }, - _getAttrNode: function(element, attribute) { - var node = element.getAttributeNode(attribute); - return node ? node.value : ""; - }, - _getEv: (function(){ - - var el = document.createElement('div'), f; - el.onclick = Prototype.emptyFunction; - var value = el.getAttribute('onclick'); - - if (String(value).indexOf('{') > -1) { - f = function(element, attribute) { - attribute = element.getAttribute(attribute); - if (!attribute) return null; - attribute = attribute.toString(); - attribute = attribute.split('{')[1]; - attribute = attribute.split('}')[0]; - return attribute.strip(); - }; - } - else if (value === '') { - f = function(element, attribute) { - attribute = element.getAttribute(attribute); - if (!attribute) return null; - return attribute.strip(); - }; - } - el = null; - return f; - })(), - _flag: function(element, attribute) { - return $(element).hasAttribute(attribute) ? attribute : null; - }, - style: function(element) { - return element.style.cssText.toLowerCase(); - }, - title: function(element) { - return element.title; - } - } - } - } - })(); - - Element._attributeTranslations.write = { - names: Object.extend({ - cellpadding: 'cellPadding', - cellspacing: 'cellSpacing' - }, Element._attributeTranslations.read.names), - values: { - checked: function(element, value) { - element.checked = !!value; - }, - - style: function(element, value) { - element.style.cssText = value ? value : ''; - } - } - }; - - Element._attributeTranslations.has = {}; - - $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' + - 'encType maxLength readOnly longDesc frameBorder').each(function(attr) { - Element._attributeTranslations.write.names[attr.toLowerCase()] = attr; - Element._attributeTranslations.has[attr.toLowerCase()] = attr; - }); - - (function(v) { - Object.extend(v, { - href: v._getAttr2, - src: v._getAttr2, - type: v._getAttr, - action: v._getAttrNode, - disabled: v._flag, - checked: v._flag, - readonly: v._flag, - multiple: v._flag, - onload: v._getEv, - onunload: v._getEv, - onclick: v._getEv, - ondblclick: v._getEv, - onmousedown: v._getEv, - onmouseup: v._getEv, - onmouseover: v._getEv, - onmousemove: v._getEv, - onmouseout: v._getEv, - onfocus: v._getEv, - onblur: v._getEv, - onkeypress: v._getEv, - onkeydown: v._getEv, - onkeyup: v._getEv, - onsubmit: v._getEv, - onreset: v._getEv, - onselect: v._getEv, - onchange: v._getEv - }); - })(Element._attributeTranslations.read.values); - - if (Prototype.BrowserFeatures.ElementExtensions) { - (function() { - function _descendants(element) { - var nodes = element.getElementsByTagName('*'), results = []; - for (var i = 0, node; node = nodes[i]; i++) - if (node.tagName !== "!") // Filter out comment nodes. - results.push(node); - return results; - } - - Element.Methods.down = function(element, expression, index) { - element = $(element); - if (arguments.length == 1) return element.firstDescendant(); - return Object.isNumber(expression) ? _descendants(element)[expression] : - Element.select(element, expression)[index || 0]; - } - })(); - } - -} - -else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) { - Element.Methods.setOpacity = function(element, value) { - element = $(element); - element.style.opacity = (value == 1) ? 0.999999 : - (value === '') ? '' : (value < 0.00001) ? 0 : value; - return element; - }; -} - -else if (Prototype.Browser.WebKit) { - Element.Methods.setOpacity = function(element, value) { - element = $(element); - element.style.opacity = (value == 1 || value === '') ? '' : - (value < 0.00001) ? 0 : value; - - if (value == 1) - if (element.tagName.toUpperCase() == 'IMG' && element.width) { - element.width++; element.width--; - } else try { - var n = document.createTextNode(' '); - element.appendChild(n); - element.removeChild(n); - } catch (e) { } - - return element; - }; -} - -if ('outerHTML' in document.documentElement) { - Element.Methods.replace = function(element, content) { - element = $(element); - - if (content && content.toElement) content = content.toElement(); - if (Object.isElement(content)) { - element.parentNode.replaceChild(content, element); - return element; - } - - content = Object.toHTML(content); - var parent = element.parentNode, tagName = parent.tagName.toUpperCase(); - - if (Element._insertionTranslations.tags[tagName]) { - var nextSibling = element.next(), - fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); - parent.removeChild(element); - if (nextSibling) - fragments.each(function(node) { parent.insertBefore(node, nextSibling) }); - else - fragments.each(function(node) { parent.appendChild(node) }); - } - else element.outerHTML = content.stripScripts(); - - content.evalScripts.bind(content).defer(); - return element; - }; -} - -Element._returnOffset = function(l, t) { - var result = [l, t]; - result.left = l; - result.top = t; - return result; -}; - -Element._getContentFromAnonymousElement = function(tagName, html, force) { - var div = new Element('div'), - t = Element._insertionTranslations.tags[tagName]; - - var workaround = false; - if (t) workaround = true; - else if (force) { - workaround = true; - t = ['', '', 0]; - } - - if (workaround) { - div.innerHTML = ' ' + t[0] + html + t[1]; - div.removeChild(div.firstChild); - for (var i = t[2]; i--; ) { - div = div.firstChild; - } - } - else { - div.innerHTML = html; - } - return $A(div.childNodes); -}; - -Element._insertionTranslations = { - before: function(element, node) { - element.parentNode.insertBefore(node, element); - }, - top: function(element, node) { - element.insertBefore(node, element.firstChild); - }, - bottom: function(element, node) { - element.appendChild(node); - }, - after: function(element, node) { - element.parentNode.insertBefore(node, element.nextSibling); - }, - tags: { - TABLE: ['', '
    ', 1], - TBODY: ['', '
    ', 2], - TR: ['', '
    ', 3], - TD: ['
    ', '
    ', 4], - SELECT: ['', 1] - } -}; - -(function() { - var tags = Element._insertionTranslations.tags; - Object.extend(tags, { - THEAD: tags.TBODY, - TFOOT: tags.TBODY, - TH: tags.TD - }); -})(); - -Element.Methods.Simulated = { - hasAttribute: function(element, attribute) { - attribute = Element._attributeTranslations.has[attribute] || attribute; - var node = $(element).getAttributeNode(attribute); - return !!(node && node.specified); - } -}; - -Element.Methods.ByTag = { }; - -Object.extend(Element, Element.Methods); - -(function(div) { - - if (!Prototype.BrowserFeatures.ElementExtensions && div['__proto__']) { - window.HTMLElement = { }; - window.HTMLElement.prototype = div['__proto__']; - Prototype.BrowserFeatures.ElementExtensions = true; - } - - div = null; - -})(document.createElement('div')); - -Element.extend = (function() { - - function checkDeficiency(tagName) { - if (typeof window.Element != 'undefined') { - var proto = window.Element.prototype; - if (proto) { - var id = '_' + (Math.random()+'').slice(2), - el = document.createElement(tagName); - proto[id] = 'x'; - var isBuggy = (el[id] !== 'x'); - delete proto[id]; - el = null; - return isBuggy; - } - } - return false; - } - - function extendElementWith(element, methods) { - for (var property in methods) { - var value = methods[property]; - if (Object.isFunction(value) && !(property in element)) - element[property] = value.methodize(); - } - } - - var HTMLOBJECTELEMENT_PROTOTYPE_BUGGY = checkDeficiency('object'); - - if (Prototype.BrowserFeatures.SpecificElementExtensions) { - if (HTMLOBJECTELEMENT_PROTOTYPE_BUGGY) { - return function(element) { - if (element && typeof element._extendedByPrototype == 'undefined') { - var t = element.tagName; - if (t && (/^(?:object|applet|embed)$/i.test(t))) { - extendElementWith(element, Element.Methods); - extendElementWith(element, Element.Methods.Simulated); - extendElementWith(element, Element.Methods.ByTag[t.toUpperCase()]); - } - } - return element; - } - } - return Prototype.K; - } - - var Methods = { }, ByTag = Element.Methods.ByTag; - - var extend = Object.extend(function(element) { - if (!element || typeof element._extendedByPrototype != 'undefined' || - element.nodeType != 1 || element == window) return element; - - var methods = Object.clone(Methods), - tagName = element.tagName.toUpperCase(); - - if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]); - - extendElementWith(element, methods); - - element._extendedByPrototype = Prototype.emptyFunction; - return element; - - }, { - refresh: function() { - if (!Prototype.BrowserFeatures.ElementExtensions) { - Object.extend(Methods, Element.Methods); - Object.extend(Methods, Element.Methods.Simulated); - } - } - }); - - extend.refresh(); - return extend; -})(); - -if (document.documentElement.hasAttribute) { - Element.hasAttribute = function(element, attribute) { - return element.hasAttribute(attribute); - }; -} -else { - Element.hasAttribute = Element.Methods.Simulated.hasAttribute; -} - -Element.addMethods = function(methods) { - var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag; - - if (!methods) { - Object.extend(Form, Form.Methods); - Object.extend(Form.Element, Form.Element.Methods); - Object.extend(Element.Methods.ByTag, { - "FORM": Object.clone(Form.Methods), - "INPUT": Object.clone(Form.Element.Methods), - "SELECT": Object.clone(Form.Element.Methods), - "TEXTAREA": Object.clone(Form.Element.Methods), - "BUTTON": Object.clone(Form.Element.Methods) - }); - } - - if (arguments.length == 2) { - var tagName = methods; - methods = arguments[1]; - } - - if (!tagName) Object.extend(Element.Methods, methods || { }); - else { - if (Object.isArray(tagName)) tagName.each(extend); - else extend(tagName); - } - - function extend(tagName) { - tagName = tagName.toUpperCase(); - if (!Element.Methods.ByTag[tagName]) - Element.Methods.ByTag[tagName] = { }; - Object.extend(Element.Methods.ByTag[tagName], methods); - } - - function copy(methods, destination, onlyIfAbsent) { - onlyIfAbsent = onlyIfAbsent || false; - for (var property in methods) { - var value = methods[property]; - if (!Object.isFunction(value)) continue; - if (!onlyIfAbsent || !(property in destination)) - destination[property] = value.methodize(); - } - } - - function findDOMClass(tagName) { - var klass; - var trans = { - "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph", - "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList", - "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading", - "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote", - "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION": - "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD": - "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR": - "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET": - "FrameSet", "IFRAME": "IFrame" - }; - if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element'; - if (window[klass]) return window[klass]; - klass = 'HTML' + tagName + 'Element'; - if (window[klass]) return window[klass]; - klass = 'HTML' + tagName.capitalize() + 'Element'; - if (window[klass]) return window[klass]; - - var element = document.createElement(tagName), - proto = element['__proto__'] || element.constructor.prototype; - - element = null; - return proto; - } - - var elementPrototype = window.HTMLElement ? HTMLElement.prototype : - Element.prototype; - - if (F.ElementExtensions) { - copy(Element.Methods, elementPrototype); - copy(Element.Methods.Simulated, elementPrototype, true); - } - - if (F.SpecificElementExtensions) { - for (var tag in Element.Methods.ByTag) { - var klass = findDOMClass(tag); - if (Object.isUndefined(klass)) continue; - copy(T[tag], klass.prototype); - } - } - - Object.extend(Element, Element.Methods); - delete Element.ByTag; - - if (Element.extend.refresh) Element.extend.refresh(); - Element.cache = { }; -}; - - -document.viewport = { - - getDimensions: function() { - return { width: this.getWidth(), height: this.getHeight() }; - }, - - getScrollOffsets: function() { - return Element._returnOffset( - window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft, - window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop); - } -}; - -(function(viewport) { - var B = Prototype.Browser, doc = document, element, property = {}; - - function getRootElement() { - if (B.WebKit && !doc.evaluate) - return document; - - if (B.Opera && window.parseFloat(window.opera.version()) < 9.5) - return document.body; - - return document.documentElement; - } - - function define(D) { - if (!element) element = getRootElement(); - - property[D] = 'client' + D; - - viewport['get' + D] = function() { return element[property[D]] }; - return viewport['get' + D](); - } - - viewport.getWidth = define.curry('Width'); - - viewport.getHeight = define.curry('Height'); -})(document.viewport); - - -Element.Storage = { - UID: 1 -}; - -Element.addMethods({ - getStorage: function(element) { - if (!(element = $(element))) return; - - var uid; - if (element === window) { - uid = 0; - } else { - if (typeof element._prototypeUID === "undefined") - element._prototypeUID = Element.Storage.UID++; - uid = element._prototypeUID; - } - - if (!Element.Storage[uid]) - Element.Storage[uid] = $H(); - - return Element.Storage[uid]; - }, - - store: function(element, key, value) { - if (!(element = $(element))) return; - - if (arguments.length === 2) { - Element.getStorage(element).update(key); - } else { - Element.getStorage(element).set(key, value); - } - - return element; - }, - - retrieve: function(element, key, defaultValue) { - if (!(element = $(element))) return; - var hash = Element.getStorage(element), value = hash.get(key); - - if (Object.isUndefined(value)) { - hash.set(key, defaultValue); - value = defaultValue; - } - - return value; - }, - - clone: function(element, deep) { - if (!(element = $(element))) return; - var clone = element.cloneNode(deep); - clone._prototypeUID = void 0; - if (deep) { - var descendants = Element.select(clone, '*'), - i = descendants.length; - while (i--) { - descendants[i]._prototypeUID = void 0; - } - } - return Element.extend(clone); - }, - - purge: function(element) { - if (!(element = $(element))) return; - var purgeElement = Element._purgeElement; - - purgeElement(element); - - var descendants = element.getElementsByTagName('*'), - i = descendants.length; - - while (i--) purgeElement(descendants[i]); - - return null; - } -}); - -(function() { - - function toDecimal(pctString) { - var match = pctString.match(/^(\d+)%?$/i); - if (!match) return null; - return (Number(match[1]) / 100); - } - - function getPixelValue(value, property, context) { - var element = null; - if (Object.isElement(value)) { - element = value; - value = element.getStyle(property); - } - - if (value === null) { - return null; - } - - if ((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(value)) { - return window.parseFloat(value); - } - - var isPercentage = value.include('%'), isViewport = (context === document.viewport); - - if (/\d/.test(value) && element && element.runtimeStyle && !(isPercentage && isViewport)) { - var style = element.style.left, rStyle = element.runtimeStyle.left; - element.runtimeStyle.left = element.currentStyle.left; - element.style.left = value || 0; - value = element.style.pixelLeft; - element.style.left = style; - element.runtimeStyle.left = rStyle; - - return value; - } - - if (element && isPercentage) { - context = context || element.parentNode; - var decimal = toDecimal(value); - var whole = null; - var position = element.getStyle('position'); - - var isHorizontal = property.include('left') || property.include('right') || - property.include('width'); - - var isVertical = property.include('top') || property.include('bottom') || - property.include('height'); - - if (context === document.viewport) { - if (isHorizontal) { - whole = document.viewport.getWidth(); - } else if (isVertical) { - whole = document.viewport.getHeight(); - } - } else { - if (isHorizontal) { - whole = $(context).measure('width'); - } else if (isVertical) { - whole = $(context).measure('height'); - } - } - - return (whole === null) ? 0 : whole * decimal; - } - - return 0; - } - - function toCSSPixels(number) { - if (Object.isString(number) && number.endsWith('px')) { - return number; - } - return number + 'px'; - } - - function isDisplayed(element) { - var originalElement = element; - while (element && element.parentNode) { - var display = element.getStyle('display'); - if (display === 'none') { - return false; - } - element = $(element.parentNode); - } - return true; - } - - var hasLayout = Prototype.K; - if ('currentStyle' in document.documentElement) { - hasLayout = function(element) { - if (!element.currentStyle.hasLayout) { - element.style.zoom = 1; - } - return element; - }; - } - - function cssNameFor(key) { - if (key.include('border')) key = key + '-width'; - return key.camelize(); - } - - Element.Layout = Class.create(Hash, { - initialize: function($super, element, preCompute) { - $super(); - this.element = $(element); - - Element.Layout.PROPERTIES.each( function(property) { - this._set(property, null); - }, this); - - if (preCompute) { - this._preComputing = true; - this._begin(); - Element.Layout.PROPERTIES.each( this._compute, this ); - this._end(); - this._preComputing = false; - } - }, - - _set: function(property, value) { - return Hash.prototype.set.call(this, property, value); - }, - - set: function(property, value) { - throw "Properties of Element.Layout are read-only."; - }, - - get: function($super, property) { - var value = $super(property); - return value === null ? this._compute(property) : value; - }, - - _begin: function() { - if (this._prepared) return; - - var element = this.element; - if (isDisplayed(element)) { - this._prepared = true; - return; - } - - var originalStyles = { - position: element.style.position || '', - width: element.style.width || '', - visibility: element.style.visibility || '', - display: element.style.display || '' - }; - - element.store('prototype_original_styles', originalStyles); - - var position = element.getStyle('position'), - width = element.getStyle('width'); - - if (width === "0px" || width === null) { - element.style.display = 'block'; - width = element.getStyle('width'); - } - - var context = (position === 'fixed') ? document.viewport : - element.parentNode; - - element.setStyle({ - position: 'absolute', - visibility: 'hidden', - display: 'block' - }); - - var positionedWidth = element.getStyle('width'); - - var newWidth; - if (width && (positionedWidth === width)) { - newWidth = getPixelValue(element, 'width', context); - } else if (position === 'absolute' || position === 'fixed') { - newWidth = getPixelValue(element, 'width', context); - } else { - var parent = element.parentNode, pLayout = $(parent).getLayout(); - - newWidth = pLayout.get('width') - - this.get('margin-left') - - this.get('border-left') - - this.get('padding-left') - - this.get('padding-right') - - this.get('border-right') - - this.get('margin-right'); - } - - element.setStyle({ width: newWidth + 'px' }); - - this._prepared = true; - }, - - _end: function() { - var element = this.element; - var originalStyles = element.retrieve('prototype_original_styles'); - element.store('prototype_original_styles', null); - element.setStyle(originalStyles); - this._prepared = false; - }, - - _compute: function(property) { - var COMPUTATIONS = Element.Layout.COMPUTATIONS; - if (!(property in COMPUTATIONS)) { - throw "Property not found."; - } - - return this._set(property, COMPUTATIONS[property].call(this, this.element)); - }, - - toObject: function() { - var args = $A(arguments); - var keys = (args.length === 0) ? Element.Layout.PROPERTIES : - args.join(' ').split(' '); - var obj = {}; - keys.each( function(key) { - if (!Element.Layout.PROPERTIES.include(key)) return; - var value = this.get(key); - if (value != null) obj[key] = value; - }, this); - return obj; - }, - - toHash: function() { - var obj = this.toObject.apply(this, arguments); - return new Hash(obj); - }, - - toCSS: function() { - var args = $A(arguments); - var keys = (args.length === 0) ? Element.Layout.PROPERTIES : - args.join(' ').split(' '); - var css = {}; - - keys.each( function(key) { - if (!Element.Layout.PROPERTIES.include(key)) return; - if (Element.Layout.COMPOSITE_PROPERTIES.include(key)) return; - - var value = this.get(key); - if (value != null) css[cssNameFor(key)] = value + 'px'; - }, this); - return css; - }, - - inspect: function() { - return "#"; - } - }); - - Object.extend(Element.Layout, { - PROPERTIES: $w('height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height'), - - COMPOSITE_PROPERTIES: $w('padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height'), - - COMPUTATIONS: { - 'height': function(element) { - if (!this._preComputing) this._begin(); - - var bHeight = this.get('border-box-height'); - if (bHeight <= 0) { - if (!this._preComputing) this._end(); - return 0; - } - - var bTop = this.get('border-top'), - bBottom = this.get('border-bottom'); - - var pTop = this.get('padding-top'), - pBottom = this.get('padding-bottom'); - - if (!this._preComputing) this._end(); - - return bHeight - bTop - bBottom - pTop - pBottom; - }, - - 'width': function(element) { - if (!this._preComputing) this._begin(); - - var bWidth = this.get('border-box-width'); - if (bWidth <= 0) { - if (!this._preComputing) this._end(); - return 0; - } - - var bLeft = this.get('border-left'), - bRight = this.get('border-right'); - - var pLeft = this.get('padding-left'), - pRight = this.get('padding-right'); - - if (!this._preComputing) this._end(); - - return bWidth - bLeft - bRight - pLeft - pRight; - }, - - 'padding-box-height': function(element) { - var height = this.get('height'), - pTop = this.get('padding-top'), - pBottom = this.get('padding-bottom'); - - return height + pTop + pBottom; - }, - - 'padding-box-width': function(element) { - var width = this.get('width'), - pLeft = this.get('padding-left'), - pRight = this.get('padding-right'); - - return width + pLeft + pRight; - }, - - 'border-box-height': function(element) { - if (!this._preComputing) this._begin(); - var height = element.offsetHeight; - if (!this._preComputing) this._end(); - return height; - }, - - 'border-box-width': function(element) { - if (!this._preComputing) this._begin(); - var width = element.offsetWidth; - if (!this._preComputing) this._end(); - return width; - }, - - 'margin-box-height': function(element) { - var bHeight = this.get('border-box-height'), - mTop = this.get('margin-top'), - mBottom = this.get('margin-bottom'); - - if (bHeight <= 0) return 0; - - return bHeight + mTop + mBottom; - }, - - 'margin-box-width': function(element) { - var bWidth = this.get('border-box-width'), - mLeft = this.get('margin-left'), - mRight = this.get('margin-right'); - - if (bWidth <= 0) return 0; - - return bWidth + mLeft + mRight; - }, - - 'top': function(element) { - var offset = element.positionedOffset(); - return offset.top; - }, - - 'bottom': function(element) { - var offset = element.positionedOffset(), - parent = element.getOffsetParent(), - pHeight = parent.measure('height'); - - var mHeight = this.get('border-box-height'); - - return pHeight - mHeight - offset.top; - }, - - 'left': function(element) { - var offset = element.positionedOffset(); - return offset.left; - }, - - 'right': function(element) { - var offset = element.positionedOffset(), - parent = element.getOffsetParent(), - pWidth = parent.measure('width'); - - var mWidth = this.get('border-box-width'); - - return pWidth - mWidth - offset.left; - }, - - 'padding-top': function(element) { - return getPixelValue(element, 'paddingTop'); - }, - - 'padding-bottom': function(element) { - return getPixelValue(element, 'paddingBottom'); - }, - - 'padding-left': function(element) { - return getPixelValue(element, 'paddingLeft'); - }, - - 'padding-right': function(element) { - return getPixelValue(element, 'paddingRight'); - }, - - 'border-top': function(element) { - return getPixelValue(element, 'borderTopWidth'); - }, - - 'border-bottom': function(element) { - return getPixelValue(element, 'borderBottomWidth'); - }, - - 'border-left': function(element) { - return getPixelValue(element, 'borderLeftWidth'); - }, - - 'border-right': function(element) { - return getPixelValue(element, 'borderRightWidth'); - }, - - 'margin-top': function(element) { - return getPixelValue(element, 'marginTop'); - }, - - 'margin-bottom': function(element) { - return getPixelValue(element, 'marginBottom'); - }, - - 'margin-left': function(element) { - return getPixelValue(element, 'marginLeft'); - }, - - 'margin-right': function(element) { - return getPixelValue(element, 'marginRight'); - } - } - }); - - if ('getBoundingClientRect' in document.documentElement) { - Object.extend(Element.Layout.COMPUTATIONS, { - 'right': function(element) { - var parent = hasLayout(element.getOffsetParent()); - var rect = element.getBoundingClientRect(), - pRect = parent.getBoundingClientRect(); - - return (pRect.right - rect.right).round(); - }, - - 'bottom': function(element) { - var parent = hasLayout(element.getOffsetParent()); - var rect = element.getBoundingClientRect(), - pRect = parent.getBoundingClientRect(); - - return (pRect.bottom - rect.bottom).round(); - } - }); - } - - Element.Offset = Class.create({ - initialize: function(left, top) { - this.left = left.round(); - this.top = top.round(); - - this[0] = this.left; - this[1] = this.top; - }, - - relativeTo: function(offset) { - return new Element.Offset( - this.left - offset.left, - this.top - offset.top - ); - }, - - inspect: function() { - return "#".interpolate(this); - }, - - toString: function() { - return "[#{left}, #{top}]".interpolate(this); - }, - - toArray: function() { - return [this.left, this.top]; - } - }); - - function getLayout(element, preCompute) { - return new Element.Layout(element, preCompute); - } - - function measure(element, property) { - return $(element).getLayout().get(property); - } - - function getDimensions(element) { - element = $(element); - var display = Element.getStyle(element, 'display'); - - if (display && display !== 'none') { - return { width: element.offsetWidth, height: element.offsetHeight }; - } - - var style = element.style; - var originalStyles = { - visibility: style.visibility, - position: style.position, - display: style.display - }; - - var newStyles = { - visibility: 'hidden', - display: 'block' - }; - - if (originalStyles.position !== 'fixed') - newStyles.position = 'absolute'; - - Element.setStyle(element, newStyles); - - var dimensions = { - width: element.offsetWidth, - height: element.offsetHeight - }; - - Element.setStyle(element, originalStyles); - - return dimensions; - } - - function getOffsetParent(element) { - element = $(element); - - if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element)) - return $(document.body); - - var isInline = (Element.getStyle(element, 'display') === 'inline'); - if (!isInline && element.offsetParent) return $(element.offsetParent); - - while ((element = element.parentNode) && element !== document.body) { - if (Element.getStyle(element, 'position') !== 'static') { - return isHtml(element) ? $(document.body) : $(element); - } - } - - return $(document.body); - } - - - function cumulativeOffset(element) { - element = $(element); - var valueT = 0, valueL = 0; - if (element.parentNode) { - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - element = element.offsetParent; - } while (element); - } - return new Element.Offset(valueL, valueT); - } - - function positionedOffset(element) { - element = $(element); - - var layout = element.getLayout(); - - var valueT = 0, valueL = 0; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - element = element.offsetParent; - if (element) { - if (isBody(element)) break; - var p = Element.getStyle(element, 'position'); - if (p !== 'static') break; - } - } while (element); - - valueL -= layout.get('margin-top'); - valueT -= layout.get('margin-left'); - - return new Element.Offset(valueL, valueT); - } - - function cumulativeScrollOffset(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.scrollTop || 0; - valueL += element.scrollLeft || 0; - element = element.parentNode; - } while (element); - return new Element.Offset(valueL, valueT); - } - - function viewportOffset(forElement) { - element = $(element); - var valueT = 0, valueL = 0, docBody = document.body; - - var element = forElement; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - if (element.offsetParent == docBody && - Element.getStyle(element, 'position') == 'absolute') break; - } while (element = element.offsetParent); - - element = forElement; - do { - if (element != docBody) { - valueT -= element.scrollTop || 0; - valueL -= element.scrollLeft || 0; - } - } while (element = element.parentNode); - return new Element.Offset(valueL, valueT); - } - - function absolutize(element) { - element = $(element); - - if (Element.getStyle(element, 'position') === 'absolute') { - return element; - } - - var offsetParent = getOffsetParent(element); - var eOffset = element.viewportOffset(), - pOffset = offsetParent.viewportOffset(); - - var offset = eOffset.relativeTo(pOffset); - var layout = element.getLayout(); - - element.store('prototype_absolutize_original_styles', { - left: element.getStyle('left'), - top: element.getStyle('top'), - width: element.getStyle('width'), - height: element.getStyle('height') - }); - - element.setStyle({ - position: 'absolute', - top: offset.top + 'px', - left: offset.left + 'px', - width: layout.get('width') + 'px', - height: layout.get('height') + 'px' - }); - - return element; - } - - function relativize(element) { - element = $(element); - if (Element.getStyle(element, 'position') === 'relative') { - return element; - } - - var originalStyles = - element.retrieve('prototype_absolutize_original_styles'); - - if (originalStyles) element.setStyle(originalStyles); - return element; - } - - if (Prototype.Browser.IE) { - getOffsetParent = getOffsetParent.wrap( - function(proceed, element) { - element = $(element); - - if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element)) - return $(document.body); - - var position = element.getStyle('position'); - if (position !== 'static') return proceed(element); - - element.setStyle({ position: 'relative' }); - var value = proceed(element); - element.setStyle({ position: position }); - return value; - } - ); - - positionedOffset = positionedOffset.wrap(function(proceed, element) { - element = $(element); - if (!element.parentNode) return new Element.Offset(0, 0); - var position = element.getStyle('position'); - if (position !== 'static') return proceed(element); - - var offsetParent = element.getOffsetParent(); - if (offsetParent && offsetParent.getStyle('position') === 'fixed') - hasLayout(offsetParent); - - element.setStyle({ position: 'relative' }); - var value = proceed(element); - element.setStyle({ position: position }); - return value; - }); - } else if (Prototype.Browser.Webkit) { - cumulativeOffset = function(element) { - element = $(element); - var valueT = 0, valueL = 0; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - if (element.offsetParent == document.body) - if (Element.getStyle(element, 'position') == 'absolute') break; - - element = element.offsetParent; - } while (element); - - return new Element.Offset(valueL, valueT); - }; - } - - - Element.addMethods({ - getLayout: getLayout, - measure: measure, - getDimensions: getDimensions, - getOffsetParent: getOffsetParent, - cumulativeOffset: cumulativeOffset, - positionedOffset: positionedOffset, - cumulativeScrollOffset: cumulativeScrollOffset, - viewportOffset: viewportOffset, - absolutize: absolutize, - relativize: relativize - }); - - function isBody(element) { - return element.nodeName.toUpperCase() === 'BODY'; - } - - function isHtml(element) { - return element.nodeName.toUpperCase() === 'HTML'; - } - - function isDocument(element) { - return element.nodeType === Node.DOCUMENT_NODE; - } - - function isDetached(element) { - return element !== document.body && - !Element.descendantOf(element, document.body); - } - - if ('getBoundingClientRect' in document.documentElement) { - Element.addMethods({ - viewportOffset: function(element) { - element = $(element); - if (isDetached(element)) return new Element.Offset(0, 0); - - var rect = element.getBoundingClientRect(), - docEl = document.documentElement; - return new Element.Offset(rect.left - docEl.clientLeft, - rect.top - docEl.clientTop); - } - }); - } -})(); -window.$$ = function() { - var expression = $A(arguments).join(', '); - return Prototype.Selector.select(expression, document); -}; - -Prototype.Selector = (function() { - - function select() { - throw new Error('Method "Prototype.Selector.select" must be defined.'); - } - - function match() { - throw new Error('Method "Prototype.Selector.match" must be defined.'); - } - - function find(elements, expression, index) { - index = index || 0; - var match = Prototype.Selector.match, length = elements.length, matchIndex = 0, i; - - for (i = 0; i < length; i++) { - if (match(elements[i], expression) && index == matchIndex++) { - return Element.extend(elements[i]); - } - } - } - - function extendElements(elements) { - for (var i = 0, length = elements.length; i < length; i++) { - Element.extend(elements[i]); - } - return elements; - } - - - var K = Prototype.K; - - return { - select: select, - match: match, - find: find, - extendElements: (Element.extend === K) ? K : extendElements, - extendElement: Element.extend - }; -})(); -Prototype._original_property = window.Sizzle; -/*! - * Sizzle CSS Selector Engine - v1.0 - * Copyright 2009, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -(function(){ - -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, - done = 0, - toString = Object.prototype.toString, - hasDuplicate = false, - baseHasDuplicate = true; - -[0, 0].sort(function(){ - baseHasDuplicate = false; - return 0; -}); - -var Sizzle = function(selector, context, results, seed) { - results = results || []; - var origContext = context = context || document; - - if ( context.nodeType !== 1 && context.nodeType !== 9 ) { - return []; - } - - if ( !selector || typeof selector !== "string" ) { - return results; - } - - var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context), - soFar = selector; - - while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) { - soFar = m[3]; - - parts.push( m[1] ); - - if ( m[2] ) { - extra = m[3]; - break; - } - } - - if ( parts.length > 1 && origPOS.exec( selector ) ) { - if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { - set = posProcess( parts[0] + parts[1], context ); - } else { - set = Expr.relative[ parts[0] ] ? - [ context ] : - Sizzle( parts.shift(), context ); - - while ( parts.length ) { - selector = parts.shift(); - - if ( Expr.relative[ selector ] ) - selector += parts.shift(); - - set = posProcess( selector, set ); - } - } - } else { - if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && - Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { - var ret = Sizzle.find( parts.shift(), context, contextXML ); - context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0]; - } - - if ( context ) { - var ret = seed ? - { expr: parts.pop(), set: makeArray(seed) } : - Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); - set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set; - - if ( parts.length > 0 ) { - checkSet = makeArray(set); - } else { - prune = false; - } - - while ( parts.length ) { - var cur = parts.pop(), pop = cur; - - if ( !Expr.relative[ cur ] ) { - cur = ""; - } else { - pop = parts.pop(); - } - - if ( pop == null ) { - pop = context; - } - - Expr.relative[ cur ]( checkSet, pop, contextXML ); - } - } else { - checkSet = parts = []; - } - } - - if ( !checkSet ) { - checkSet = set; - } - - if ( !checkSet ) { - throw "Syntax error, unrecognized expression: " + (cur || selector); - } - - if ( toString.call(checkSet) === "[object Array]" ) { - if ( !prune ) { - results.push.apply( results, checkSet ); - } else if ( context && context.nodeType === 1 ) { - for ( var i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) { - results.push( set[i] ); - } - } - } else { - for ( var i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && checkSet[i].nodeType === 1 ) { - results.push( set[i] ); - } - } - } - } else { - makeArray( checkSet, results ); - } - - if ( extra ) { - Sizzle( extra, origContext, results, seed ); - Sizzle.uniqueSort( results ); - } - - return results; -}; - -Sizzle.uniqueSort = function(results){ - if ( sortOrder ) { - hasDuplicate = baseHasDuplicate; - results.sort(sortOrder); - - if ( hasDuplicate ) { - for ( var i = 1; i < results.length; i++ ) { - if ( results[i] === results[i-1] ) { - results.splice(i--, 1); - } - } - } - } - - return results; -}; - -Sizzle.matches = function(expr, set){ - return Sizzle(expr, null, null, set); -}; - -Sizzle.find = function(expr, context, isXML){ - var set, match; - - if ( !expr ) { - return []; - } - - for ( var i = 0, l = Expr.order.length; i < l; i++ ) { - var type = Expr.order[i], match; - - if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { - var left = match[1]; - match.splice(1,1); - - if ( left.substr( left.length - 1 ) !== "\\" ) { - match[1] = (match[1] || "").replace(/\\/g, ""); - set = Expr.find[ type ]( match, context, isXML ); - if ( set != null ) { - expr = expr.replace( Expr.match[ type ], "" ); - break; - } - } - } - } - - if ( !set ) { - set = context.getElementsByTagName("*"); - } - - return {set: set, expr: expr}; -}; - -Sizzle.filter = function(expr, set, inplace, not){ - var old = expr, result = [], curLoop = set, match, anyFound, - isXMLFilter = set && set[0] && isXML(set[0]); - - while ( expr && set.length ) { - for ( var type in Expr.filter ) { - if ( (match = Expr.match[ type ].exec( expr )) != null ) { - var filter = Expr.filter[ type ], found, item; - anyFound = false; - - if ( curLoop == result ) { - result = []; - } - - if ( Expr.preFilter[ type ] ) { - match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); - - if ( !match ) { - anyFound = found = true; - } else if ( match === true ) { - continue; - } - } - - if ( match ) { - for ( var i = 0; (item = curLoop[i]) != null; i++ ) { - if ( item ) { - found = filter( item, match, i, curLoop ); - var pass = not ^ !!found; - - if ( inplace && found != null ) { - if ( pass ) { - anyFound = true; - } else { - curLoop[i] = false; - } - } else if ( pass ) { - result.push( item ); - anyFound = true; - } - } - } - } - - if ( found !== undefined ) { - if ( !inplace ) { - curLoop = result; - } - - expr = expr.replace( Expr.match[ type ], "" ); - - if ( !anyFound ) { - return []; - } - - break; - } - } - } - - if ( expr == old ) { - if ( anyFound == null ) { - throw "Syntax error, unrecognized expression: " + expr; - } else { - break; - } - } - - old = expr; - } - - return curLoop; -}; - -var Expr = Sizzle.selectors = { - order: [ "ID", "NAME", "TAG" ], - match: { - ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, - CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/, - NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/, - ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/, - TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/, - CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/, - POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/, - PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/ - }, - leftMatch: {}, - attrMap: { - "class": "className", - "for": "htmlFor" - }, - attrHandle: { - href: function(elem){ - return elem.getAttribute("href"); - } - }, - relative: { - "+": function(checkSet, part, isXML){ - var isPartStr = typeof part === "string", - isTag = isPartStr && !/\W/.test(part), - isPartStrNotTag = isPartStr && !isTag; - - if ( isTag && !isXML ) { - part = part.toUpperCase(); - } - - for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { - if ( (elem = checkSet[i]) ) { - while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} - - checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ? - elem || false : - elem === part; - } - } - - if ( isPartStrNotTag ) { - Sizzle.filter( part, checkSet, true ); - } - }, - ">": function(checkSet, part, isXML){ - var isPartStr = typeof part === "string"; - - if ( isPartStr && !/\W/.test(part) ) { - part = isXML ? part : part.toUpperCase(); - - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - var parent = elem.parentNode; - checkSet[i] = parent.nodeName === part ? parent : false; - } - } - } else { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - checkSet[i] = isPartStr ? - elem.parentNode : - elem.parentNode === part; - } - } - - if ( isPartStr ) { - Sizzle.filter( part, checkSet, true ); - } - } - }, - "": function(checkSet, part, isXML){ - var doneName = done++, checkFn = dirCheck; - - if ( !/\W/.test(part) ) { - var nodeCheck = part = isXML ? part : part.toUpperCase(); - checkFn = dirNodeCheck; - } - - checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML); - }, - "~": function(checkSet, part, isXML){ - var doneName = done++, checkFn = dirCheck; - - if ( typeof part === "string" && !/\W/.test(part) ) { - var nodeCheck = part = isXML ? part : part.toUpperCase(); - checkFn = dirNodeCheck; - } - - checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML); - } - }, - find: { - ID: function(match, context, isXML){ - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - return m ? [m] : []; - } - }, - NAME: function(match, context, isXML){ - if ( typeof context.getElementsByName !== "undefined" ) { - var ret = [], results = context.getElementsByName(match[1]); - - for ( var i = 0, l = results.length; i < l; i++ ) { - if ( results[i].getAttribute("name") === match[1] ) { - ret.push( results[i] ); - } - } - - return ret.length === 0 ? null : ret; - } - }, - TAG: function(match, context){ - return context.getElementsByTagName(match[1]); - } - }, - preFilter: { - CLASS: function(match, curLoop, inplace, result, not, isXML){ - match = " " + match[1].replace(/\\/g, "") + " "; - - if ( isXML ) { - return match; - } - - for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { - if ( elem ) { - if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) { - if ( !inplace ) - result.push( elem ); - } else if ( inplace ) { - curLoop[i] = false; - } - } - } - - return false; - }, - ID: function(match){ - return match[1].replace(/\\/g, ""); - }, - TAG: function(match, curLoop){ - for ( var i = 0; curLoop[i] === false; i++ ){} - return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase(); - }, - CHILD: function(match){ - if ( match[1] == "nth" ) { - var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec( - match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" || - !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); - - match[2] = (test[1] + (test[2] || 1)) - 0; - match[3] = test[3] - 0; - } - - match[0] = done++; - - return match; - }, - ATTR: function(match, curLoop, inplace, result, not, isXML){ - var name = match[1].replace(/\\/g, ""); - - if ( !isXML && Expr.attrMap[name] ) { - match[1] = Expr.attrMap[name]; - } - - if ( match[2] === "~=" ) { - match[4] = " " + match[4] + " "; - } - - return match; - }, - PSEUDO: function(match, curLoop, inplace, result, not){ - if ( match[1] === "not" ) { - if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { - match[3] = Sizzle(match[3], null, null, curLoop); - } else { - var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); - if ( !inplace ) { - result.push.apply( result, ret ); - } - return false; - } - } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { - return true; - } - - return match; - }, - POS: function(match){ - match.unshift( true ); - return match; - } - }, - filters: { - enabled: function(elem){ - return elem.disabled === false && elem.type !== "hidden"; - }, - disabled: function(elem){ - return elem.disabled === true; - }, - checked: function(elem){ - return elem.checked === true; - }, - selected: function(elem){ - elem.parentNode.selectedIndex; - return elem.selected === true; - }, - parent: function(elem){ - return !!elem.firstChild; - }, - empty: function(elem){ - return !elem.firstChild; - }, - has: function(elem, i, match){ - return !!Sizzle( match[3], elem ).length; - }, - header: function(elem){ - return /h\d/i.test( elem.nodeName ); - }, - text: function(elem){ - return "text" === elem.type; - }, - radio: function(elem){ - return "radio" === elem.type; - }, - checkbox: function(elem){ - return "checkbox" === elem.type; - }, - file: function(elem){ - return "file" === elem.type; - }, - password: function(elem){ - return "password" === elem.type; - }, - submit: function(elem){ - return "submit" === elem.type; - }, - image: function(elem){ - return "image" === elem.type; - }, - reset: function(elem){ - return "reset" === elem.type; - }, - button: function(elem){ - return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON"; - }, - input: function(elem){ - return /input|select|textarea|button/i.test(elem.nodeName); - } - }, - setFilters: { - first: function(elem, i){ - return i === 0; - }, - last: function(elem, i, match, array){ - return i === array.length - 1; - }, - even: function(elem, i){ - return i % 2 === 0; - }, - odd: function(elem, i){ - return i % 2 === 1; - }, - lt: function(elem, i, match){ - return i < match[3] - 0; - }, - gt: function(elem, i, match){ - return i > match[3] - 0; - }, - nth: function(elem, i, match){ - return match[3] - 0 == i; - }, - eq: function(elem, i, match){ - return match[3] - 0 == i; - } - }, - filter: { - PSEUDO: function(elem, match, i, array){ - var name = match[1], filter = Expr.filters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } else if ( name === "contains" ) { - return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0; - } else if ( name === "not" ) { - var not = match[3]; - - for ( var i = 0, l = not.length; i < l; i++ ) { - if ( not[i] === elem ) { - return false; - } - } - - return true; - } - }, - CHILD: function(elem, match){ - var type = match[1], node = elem; - switch (type) { - case 'only': - case 'first': - while ( (node = node.previousSibling) ) { - if ( node.nodeType === 1 ) return false; - } - if ( type == 'first') return true; - node = elem; - case 'last': - while ( (node = node.nextSibling) ) { - if ( node.nodeType === 1 ) return false; - } - return true; - case 'nth': - var first = match[2], last = match[3]; - - if ( first == 1 && last == 0 ) { - return true; - } - - var doneName = match[0], - parent = elem.parentNode; - - if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { - var count = 0; - for ( node = parent.firstChild; node; node = node.nextSibling ) { - if ( node.nodeType === 1 ) { - node.nodeIndex = ++count; - } - } - parent.sizcache = doneName; - } - - var diff = elem.nodeIndex - last; - if ( first == 0 ) { - return diff == 0; - } else { - return ( diff % first == 0 && diff / first >= 0 ); - } - } - }, - ID: function(elem, match){ - return elem.nodeType === 1 && elem.getAttribute("id") === match; - }, - TAG: function(elem, match){ - return (match === "*" && elem.nodeType === 1) || elem.nodeName === match; - }, - CLASS: function(elem, match){ - return (" " + (elem.className || elem.getAttribute("class")) + " ") - .indexOf( match ) > -1; - }, - ATTR: function(elem, match){ - var name = match[1], - result = Expr.attrHandle[ name ] ? - Expr.attrHandle[ name ]( elem ) : - elem[ name ] != null ? - elem[ name ] : - elem.getAttribute( name ), - value = result + "", - type = match[2], - check = match[4]; - - return result == null ? - type === "!=" : - type === "=" ? - value === check : - type === "*=" ? - value.indexOf(check) >= 0 : - type === "~=" ? - (" " + value + " ").indexOf(check) >= 0 : - !check ? - value && result !== false : - type === "!=" ? - value != check : - type === "^=" ? - value.indexOf(check) === 0 : - type === "$=" ? - value.substr(value.length - check.length) === check : - type === "|=" ? - value === check || value.substr(0, check.length + 1) === check + "-" : - false; - }, - POS: function(elem, match, i, array){ - var name = match[2], filter = Expr.setFilters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } - } - } -}; - -var origPOS = Expr.match.POS; - -for ( var type in Expr.match ) { - Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source ); - Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source ); -} - -var makeArray = function(array, results) { - array = Array.prototype.slice.call( array, 0 ); - - if ( results ) { - results.push.apply( results, array ); - return results; - } - - return array; -}; - -try { - Array.prototype.slice.call( document.documentElement.childNodes, 0 ); - -} catch(e){ - makeArray = function(array, results) { - var ret = results || []; - - if ( toString.call(array) === "[object Array]" ) { - Array.prototype.push.apply( ret, array ); - } else { - if ( typeof array.length === "number" ) { - for ( var i = 0, l = array.length; i < l; i++ ) { - ret.push( array[i] ); - } - } else { - for ( var i = 0; array[i]; i++ ) { - ret.push( array[i] ); - } - } - } - - return ret; - }; -} - -var sortOrder; - -if ( document.documentElement.compareDocumentPosition ) { - sortOrder = function( a, b ) { - if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { - if ( a == b ) { - hasDuplicate = true; - } - return 0; - } - - var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1; - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} else if ( "sourceIndex" in document.documentElement ) { - sortOrder = function( a, b ) { - if ( !a.sourceIndex || !b.sourceIndex ) { - if ( a == b ) { - hasDuplicate = true; - } - return 0; - } - - var ret = a.sourceIndex - b.sourceIndex; - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} else if ( document.createRange ) { - sortOrder = function( a, b ) { - if ( !a.ownerDocument || !b.ownerDocument ) { - if ( a == b ) { - hasDuplicate = true; - } - return 0; - } - - var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange(); - aRange.setStart(a, 0); - aRange.setEnd(a, 0); - bRange.setStart(b, 0); - bRange.setEnd(b, 0); - var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange); - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} - -(function(){ - var form = document.createElement("div"), - id = "script" + (new Date).getTime(); - form.innerHTML = ""; - - var root = document.documentElement; - root.insertBefore( form, root.firstChild ); - - if ( !!document.getElementById( id ) ) { - Expr.find.ID = function(match, context, isXML){ - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []; - } - }; - - Expr.filter.ID = function(elem, match){ - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); - return elem.nodeType === 1 && node && node.nodeValue === match; - }; - } - - root.removeChild( form ); - root = form = null; // release memory in IE -})(); - -(function(){ - - var div = document.createElement("div"); - div.appendChild( document.createComment("") ); - - if ( div.getElementsByTagName("*").length > 0 ) { - Expr.find.TAG = function(match, context){ - var results = context.getElementsByTagName(match[1]); - - if ( match[1] === "*" ) { - var tmp = []; - - for ( var i = 0; results[i]; i++ ) { - if ( results[i].nodeType === 1 ) { - tmp.push( results[i] ); - } - } - - results = tmp; - } - - return results; - }; - } - - div.innerHTML = ""; - if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && - div.firstChild.getAttribute("href") !== "#" ) { - Expr.attrHandle.href = function(elem){ - return elem.getAttribute("href", 2); - }; - } - - div = null; // release memory in IE -})(); - -if ( document.querySelectorAll ) (function(){ - var oldSizzle = Sizzle, div = document.createElement("div"); - div.innerHTML = "

    "; - - if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { - return; - } - - Sizzle = function(query, context, extra, seed){ - context = context || document; - - if ( !seed && context.nodeType === 9 && !isXML(context) ) { - try { - return makeArray( context.querySelectorAll(query), extra ); - } catch(e){} - } - - return oldSizzle(query, context, extra, seed); - }; - - for ( var prop in oldSizzle ) { - Sizzle[ prop ] = oldSizzle[ prop ]; - } - - div = null; // release memory in IE -})(); - -if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){ - var div = document.createElement("div"); - div.innerHTML = "
    "; - - if ( div.getElementsByClassName("e").length === 0 ) - return; - - div.lastChild.className = "e"; - - if ( div.getElementsByClassName("e").length === 1 ) - return; - - Expr.order.splice(1, 0, "CLASS"); - Expr.find.CLASS = function(match, context, isXML) { - if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { - return context.getElementsByClassName(match[1]); - } - }; - - div = null; // release memory in IE -})(); - -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - var sibDir = dir == "previousSibling" && !isXML; - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - if ( sibDir && elem.nodeType === 1 ){ - elem.sizcache = doneName; - elem.sizset = i; - } - elem = elem[dir]; - var match = false; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 && !isXML ){ - elem.sizcache = doneName; - elem.sizset = i; - } - - if ( elem.nodeName === cur ) { - match = elem; - break; - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - var sibDir = dir == "previousSibling" && !isXML; - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - if ( sibDir && elem.nodeType === 1 ) { - elem.sizcache = doneName; - elem.sizset = i; - } - elem = elem[dir]; - var match = false; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 ) { - if ( !isXML ) { - elem.sizcache = doneName; - elem.sizset = i; - } - if ( typeof cur !== "string" ) { - if ( elem === cur ) { - match = true; - break; - } - - } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { - match = elem; - break; - } - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -var contains = document.compareDocumentPosition ? function(a, b){ - return a.compareDocumentPosition(b) & 16; -} : function(a, b){ - return a !== b && (a.contains ? a.contains(b) : true); -}; - -var isXML = function(elem){ - return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" || - !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML"; -}; - -var posProcess = function(selector, context){ - var tmpSet = [], later = "", match, - root = context.nodeType ? [context] : context; - - while ( (match = Expr.match.PSEUDO.exec( selector )) ) { - later += match[0]; - selector = selector.replace( Expr.match.PSEUDO, "" ); - } - - selector = Expr.relative[selector] ? selector + "*" : selector; - - for ( var i = 0, l = root.length; i < l; i++ ) { - Sizzle( selector, root[i], tmpSet ); - } - - return Sizzle.filter( later, tmpSet ); -}; - - -window.Sizzle = Sizzle; - -})(); - -;(function(engine) { - var extendElements = Prototype.Selector.extendElements; - - function select(selector, scope) { - return extendElements(engine(selector, scope || document)); - } - - function match(element, selector) { - return engine.matches(selector, [element]).length == 1; - } - - Prototype.Selector.engine = engine; - Prototype.Selector.select = select; - Prototype.Selector.match = match; -})(Sizzle); - -window.Sizzle = Prototype._original_property; -delete Prototype._original_property; - -var Form = { - reset: function(form) { - form = $(form); - form.reset(); - return form; - }, - - serializeElements: function(elements, options) { - if (typeof options != 'object') options = { hash: !!options }; - else if (Object.isUndefined(options.hash)) options.hash = true; - var key, value, submitted = false, submit = options.submit, accumulator, initial; - - if (options.hash) { - initial = {}; - accumulator = function(result, key, value) { - if (key in result) { - if (!Object.isArray(result[key])) result[key] = [result[key]]; - result[key].push(value); - } else result[key] = value; - return result; - }; - } else { - initial = ''; - accumulator = function(result, key, value) { - return result + (result ? '&' : '') + encodeURIComponent(key) + '=' + encodeURIComponent(value); - } - } - - return elements.inject(initial, function(result, element) { - if (!element.disabled && element.name) { - key = element.name; value = $(element).getValue(); - if (value != null && element.type != 'file' && (element.type != 'submit' || (!submitted && - submit !== false && (!submit || key == submit) && (submitted = true)))) { - result = accumulator(result, key, value); - } - } - return result; - }); - } -}; - -Form.Methods = { - serialize: function(form, options) { - return Form.serializeElements(Form.getElements(form), options); - }, - - getElements: function(form) { - var elements = $(form).getElementsByTagName('*'), - element, - arr = [ ], - serializers = Form.Element.Serializers; - for (var i = 0; element = elements[i]; i++) { - arr.push(element); - } - return arr.inject([], function(elements, child) { - if (serializers[child.tagName.toLowerCase()]) - elements.push(Element.extend(child)); - return elements; - }) - }, - - getInputs: function(form, typeName, name) { - form = $(form); - var inputs = form.getElementsByTagName('input'); - - if (!typeName && !name) return $A(inputs).map(Element.extend); - - for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) { - var input = inputs[i]; - if ((typeName && input.type != typeName) || (name && input.name != name)) - continue; - matchingInputs.push(Element.extend(input)); - } - - return matchingInputs; - }, - - disable: function(form) { - form = $(form); - Form.getElements(form).invoke('disable'); - return form; - }, - - enable: function(form) { - form = $(form); - Form.getElements(form).invoke('enable'); - return form; - }, - - findFirstElement: function(form) { - var elements = $(form).getElements().findAll(function(element) { - return 'hidden' != element.type && !element.disabled; - }); - var firstByIndex = elements.findAll(function(element) { - return element.hasAttribute('tabIndex') && element.tabIndex >= 0; - }).sortBy(function(element) { return element.tabIndex }).first(); - - return firstByIndex ? firstByIndex : elements.find(function(element) { - return /^(?:input|select|textarea)$/i.test(element.tagName); - }); - }, - - focusFirstElement: function(form) { - form = $(form); - var element = form.findFirstElement(); - if (element) element.activate(); - return form; - }, - - request: function(form, options) { - form = $(form), options = Object.clone(options || { }); - - var params = options.parameters, action = form.readAttribute('action') || ''; - if (action.blank()) action = window.location.href; - options.parameters = form.serialize(true); - - if (params) { - if (Object.isString(params)) params = params.toQueryParams(); - Object.extend(options.parameters, params); - } - - if (form.hasAttribute('method') && !options.method) - options.method = form.method; - - return new Ajax.Request(action, options); - } -}; - -/*--------------------------------------------------------------------------*/ - - -Form.Element = { - focus: function(element) { - $(element).focus(); - return element; - }, - - select: function(element) { - $(element).select(); - return element; - } -}; - -Form.Element.Methods = { - - serialize: function(element) { - element = $(element); - if (!element.disabled && element.name) { - var value = element.getValue(); - if (value != undefined) { - var pair = { }; - pair[element.name] = value; - return Object.toQueryString(pair); - } - } - return ''; - }, - - getValue: function(element) { - element = $(element); - var method = element.tagName.toLowerCase(); - return Form.Element.Serializers[method](element); - }, - - setValue: function(element, value) { - element = $(element); - var method = element.tagName.toLowerCase(); - Form.Element.Serializers[method](element, value); - return element; - }, - - clear: function(element) { - $(element).value = ''; - return element; - }, - - present: function(element) { - return $(element).value != ''; - }, - - activate: function(element) { - element = $(element); - try { - element.focus(); - if (element.select && (element.tagName.toLowerCase() != 'input' || - !(/^(?:button|reset|submit)$/i.test(element.type)))) - element.select(); - } catch (e) { } - return element; - }, - - disable: function(element) { - element = $(element); - element.disabled = true; - return element; - }, - - enable: function(element) { - element = $(element); - element.disabled = false; - return element; - } -}; - -/*--------------------------------------------------------------------------*/ - -var Field = Form.Element; - -var $F = Form.Element.Methods.getValue; - -/*--------------------------------------------------------------------------*/ - -Form.Element.Serializers = (function() { - function input(element, value) { - switch (element.type.toLowerCase()) { - case 'checkbox': - case 'radio': - return inputSelector(element, value); - default: - return valueSelector(element, value); - } - } - - function inputSelector(element, value) { - if (Object.isUndefined(value)) - return element.checked ? element.value : null; - else element.checked = !!value; - } - - function valueSelector(element, value) { - if (Object.isUndefined(value)) return element.value; - else element.value = value; - } - - function select(element, value) { - if (Object.isUndefined(value)) - return (element.type === 'select-one' ? selectOne : selectMany)(element); - - var opt, currentValue, single = !Object.isArray(value); - for (var i = 0, length = element.length; i < length; i++) { - opt = element.options[i]; - currentValue = this.optionValue(opt); - if (single) { - if (currentValue == value) { - opt.selected = true; - return; - } - } - else opt.selected = value.include(currentValue); - } - } - - function selectOne(element) { - var index = element.selectedIndex; - return index >= 0 ? optionValue(element.options[index]) : null; - } - - function selectMany(element) { - var values, length = element.length; - if (!length) return null; - - for (var i = 0, values = []; i < length; i++) { - var opt = element.options[i]; - if (opt.selected) values.push(optionValue(opt)); - } - return values; - } - - function optionValue(opt) { - return Element.hasAttribute(opt, 'value') ? opt.value : opt.text; - } - - return { - input: input, - inputSelector: inputSelector, - textarea: valueSelector, - select: select, - selectOne: selectOne, - selectMany: selectMany, - optionValue: optionValue, - button: valueSelector - }; -})(); - -/*--------------------------------------------------------------------------*/ - - -Abstract.TimedObserver = Class.create(PeriodicalExecuter, { - initialize: function($super, element, frequency, callback) { - $super(callback, frequency); - this.element = $(element); - this.lastValue = this.getValue(); - }, - - execute: function() { - var value = this.getValue(); - if (Object.isString(this.lastValue) && Object.isString(value) ? - this.lastValue != value : String(this.lastValue) != String(value)) { - this.callback(this.element, value); - this.lastValue = value; - } - } -}); - -Form.Element.Observer = Class.create(Abstract.TimedObserver, { - getValue: function() { - return Form.Element.getValue(this.element); - } -}); - -Form.Observer = Class.create(Abstract.TimedObserver, { - getValue: function() { - return Form.serialize(this.element); - } -}); - -/*--------------------------------------------------------------------------*/ - -Abstract.EventObserver = Class.create({ - initialize: function(element, callback) { - this.element = $(element); - this.callback = callback; - - this.lastValue = this.getValue(); - if (this.element.tagName.toLowerCase() == 'form') - this.registerFormCallbacks(); - else - this.registerCallback(this.element); - }, - - onElementEvent: function() { - var value = this.getValue(); - if (this.lastValue != value) { - this.callback(this.element, value); - this.lastValue = value; - } - }, - - registerFormCallbacks: function() { - Form.getElements(this.element).each(this.registerCallback, this); - }, - - registerCallback: function(element) { - if (element.type) { - switch (element.type.toLowerCase()) { - case 'checkbox': - case 'radio': - Event.observe(element, 'click', this.onElementEvent.bind(this)); - break; - default: - Event.observe(element, 'change', this.onElementEvent.bind(this)); - break; - } - } - } -}); - -Form.Element.EventObserver = Class.create(Abstract.EventObserver, { - getValue: function() { - return Form.Element.getValue(this.element); - } -}); - -Form.EventObserver = Class.create(Abstract.EventObserver, { - getValue: function() { - return Form.serialize(this.element); - } -}); -(function() { - - var Event = { - KEY_BACKSPACE: 8, - KEY_TAB: 9, - KEY_RETURN: 13, - KEY_ESC: 27, - KEY_LEFT: 37, - KEY_UP: 38, - KEY_RIGHT: 39, - KEY_DOWN: 40, - KEY_DELETE: 46, - KEY_HOME: 36, - KEY_END: 35, - KEY_PAGEUP: 33, - KEY_PAGEDOWN: 34, - KEY_INSERT: 45, - - cache: {} - }; - - var docEl = document.documentElement; - var MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED = 'onmouseenter' in docEl - && 'onmouseleave' in docEl; - - - - var isIELegacyEvent = function(event) { return false; }; - - if (window.attachEvent) { - if (window.addEventListener) { - isIELegacyEvent = function(event) { - return !(event instanceof window.Event); - }; - } else { - isIELegacyEvent = function(event) { return true; }; - } - } - - var _isButton; - - function _isButtonForDOMEvents(event, code) { - return event.which ? (event.which === code + 1) : (event.button === code); - } - - var legacyButtonMap = { 0: 1, 1: 4, 2: 2 }; - function _isButtonForLegacyEvents(event, code) { - return event.button === legacyButtonMap[code]; - } - - function _isButtonForWebKit(event, code) { - switch (code) { - case 0: return event.which == 1 && !event.metaKey; - case 1: return event.which == 2 || (event.which == 1 && event.metaKey); - case 2: return event.which == 3; - default: return false; - } - } - - if (window.attachEvent) { - if (!window.addEventListener) { - _isButton = _isButtonForLegacyEvents; - } else { - _isButton = function(event, code) { - return isIELegacyEvent(event) ? _isButtonForLegacyEvents(event, code) : - _isButtonForDOMEvents(event, code); - } - } - } else if (Prototype.Browser.WebKit) { - _isButton = _isButtonForWebKit; - } else { - _isButton = _isButtonForDOMEvents; - } - - function isLeftClick(event) { return _isButton(event, 0) } - - function isMiddleClick(event) { return _isButton(event, 1) } - - function isRightClick(event) { return _isButton(event, 2) } - - function element(event) { - event = Event.extend(event); - - var node = event.target, type = event.type, - currentTarget = event.currentTarget; - - if (currentTarget && currentTarget.tagName) { - if (type === 'load' || type === 'error' || - (type === 'click' && currentTarget.tagName.toLowerCase() === 'input' - && currentTarget.type === 'radio')) - node = currentTarget; - } - - if (node.nodeType == Node.TEXT_NODE) - node = node.parentNode; - - return Element.extend(node); - } - - function findElement(event, expression) { - var element = Event.element(event); - - if (!expression) return element; - while (element) { - if (Object.isElement(element) && Prototype.Selector.match(element, expression)) { - return Element.extend(element); - } - element = element.parentNode; - } - } - - function pointer(event) { - return { x: pointerX(event), y: pointerY(event) }; - } - - function pointerX(event) { - var docElement = document.documentElement, - body = document.body || { scrollLeft: 0 }; - - return event.pageX || (event.clientX + - (docElement.scrollLeft || body.scrollLeft) - - (docElement.clientLeft || 0)); - } - - function pointerY(event) { - var docElement = document.documentElement, - body = document.body || { scrollTop: 0 }; - - return event.pageY || (event.clientY + - (docElement.scrollTop || body.scrollTop) - - (docElement.clientTop || 0)); - } - - - function stop(event) { - Event.extend(event); - event.preventDefault(); - event.stopPropagation(); - - event.stopped = true; - } - - - Event.Methods = { - isLeftClick: isLeftClick, - isMiddleClick: isMiddleClick, - isRightClick: isRightClick, - - element: element, - findElement: findElement, - - pointer: pointer, - pointerX: pointerX, - pointerY: pointerY, - - stop: stop - }; - - var methods = Object.keys(Event.Methods).inject({ }, function(m, name) { - m[name] = Event.Methods[name].methodize(); - return m; - }); - - if (window.attachEvent) { - function _relatedTarget(event) { - var element; - switch (event.type) { - case 'mouseover': - case 'mouseenter': - element = event.fromElement; - break; - case 'mouseout': - case 'mouseleave': - element = event.toElement; - break; - default: - return null; - } - return Element.extend(element); - } - - var additionalMethods = { - stopPropagation: function() { this.cancelBubble = true }, - preventDefault: function() { this.returnValue = false }, - inspect: function() { return '[object Event]' } - }; - - Event.extend = function(event, element) { - if (!event) return false; - - if (!isIELegacyEvent(event)) return event; - - if (event._extendedByPrototype) return event; - event._extendedByPrototype = Prototype.emptyFunction; - - var pointer = Event.pointer(event); - - Object.extend(event, { - target: event.srcElement || element, - relatedTarget: _relatedTarget(event), - pageX: pointer.x, - pageY: pointer.y - }); - - Object.extend(event, methods); - Object.extend(event, additionalMethods); - - return event; - }; - } else { - Event.extend = Prototype.K; - } - - if (window.addEventListener) { - Event.prototype = window.Event.prototype || document.createEvent('HTMLEvents').__proto__; - Object.extend(Event.prototype, methods); - } - - function _createResponder(element, eventName, handler) { - var registry = Element.retrieve(element, 'prototype_event_registry'); - - if (Object.isUndefined(registry)) { - CACHE.push(element); - registry = Element.retrieve(element, 'prototype_event_registry', $H()); - } - - var respondersForEvent = registry.get(eventName); - if (Object.isUndefined(respondersForEvent)) { - respondersForEvent = []; - registry.set(eventName, respondersForEvent); - } - - if (respondersForEvent.pluck('handler').include(handler)) return false; - - var responder; - if (eventName.include(":")) { - responder = function(event) { - if (Object.isUndefined(event.eventName)) - return false; - - if (event.eventName !== eventName) - return false; - - Event.extend(event, element); - handler.call(element, event); - }; - } else { - if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED && - (eventName === "mouseenter" || eventName === "mouseleave")) { - if (eventName === "mouseenter" || eventName === "mouseleave") { - responder = function(event) { - Event.extend(event, element); - - var parent = event.relatedTarget; - while (parent && parent !== element) { - try { parent = parent.parentNode; } - catch(e) { parent = element; } - } - - if (parent === element) return; - - handler.call(element, event); - }; - } - } else { - responder = function(event) { - Event.extend(event, element); - handler.call(element, event); - }; - } - } - - responder.handler = handler; - respondersForEvent.push(responder); - return responder; - } - - function _destroyCache() { - for (var i = 0, length = CACHE.length; i < length; i++) { - Event.stopObserving(CACHE[i]); - CACHE[i] = null; - } - } - - var CACHE = []; - - if (Prototype.Browser.IE) - window.attachEvent('onunload', _destroyCache); - - if (Prototype.Browser.WebKit) - window.addEventListener('unload', Prototype.emptyFunction, false); - - - var _getDOMEventName = Prototype.K, - translations = { mouseenter: "mouseover", mouseleave: "mouseout" }; - - if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED) { - _getDOMEventName = function(eventName) { - return (translations[eventName] || eventName); - }; - } - - function observe(element, eventName, handler) { - element = $(element); - - var responder = _createResponder(element, eventName, handler); - - if (!responder) return element; - - if (eventName.include(':')) { - if (element.addEventListener) - element.addEventListener("dataavailable", responder, false); - else { - element.attachEvent("ondataavailable", responder); - element.attachEvent("onlosecapture", responder); - } - } else { - var actualEventName = _getDOMEventName(eventName); - - if (element.addEventListener) - element.addEventListener(actualEventName, responder, false); - else - element.attachEvent("on" + actualEventName, responder); - } - - return element; - } - - function stopObserving(element, eventName, handler) { - element = $(element); - - var registry = Element.retrieve(element, 'prototype_event_registry'); - if (!registry) return element; - - if (!eventName) { - registry.each( function(pair) { - var eventName = pair.key; - stopObserving(element, eventName); - }); - return element; - } - - var responders = registry.get(eventName); - if (!responders) return element; - - if (!handler) { - responders.each(function(r) { - stopObserving(element, eventName, r.handler); - }); - return element; - } - - var i = responders.length, responder; - while (i--) { - if (responders[i].handler === handler) { - responder = responders[i]; - break; - } - } - if (!responder) return element; - - if (eventName.include(':')) { - if (element.removeEventListener) - element.removeEventListener("dataavailable", responder, false); - else { - element.detachEvent("ondataavailable", responder); - element.detachEvent("onlosecapture", responder); - } - } else { - var actualEventName = _getDOMEventName(eventName); - if (element.removeEventListener) - element.removeEventListener(actualEventName, responder, false); - else - element.detachEvent('on' + actualEventName, responder); - } - - registry.set(eventName, responders.without(responder)); - - return element; - } - - function fire(element, eventName, memo, bubble) { - element = $(element); - - if (Object.isUndefined(bubble)) - bubble = true; - - if (element == document && document.createEvent && !element.dispatchEvent) - element = document.documentElement; - - var event; - if (document.createEvent) { - event = document.createEvent('HTMLEvents'); - event.initEvent('dataavailable', bubble, true); - } else { - event = document.createEventObject(); - event.eventType = bubble ? 'ondataavailable' : 'onlosecapture'; - } - - event.eventName = eventName; - event.memo = memo || { }; - - if (document.createEvent) - element.dispatchEvent(event); - else - element.fireEvent(event.eventType, event); - - return Event.extend(event); - } - - Event.Handler = Class.create({ - initialize: function(element, eventName, selector, callback) { - this.element = $(element); - this.eventName = eventName; - this.selector = selector; - this.callback = callback; - this.handler = this.handleEvent.bind(this); - }, - - start: function() { - Event.observe(this.element, this.eventName, this.handler); - return this; - }, - - stop: function() { - Event.stopObserving(this.element, this.eventName, this.handler); - return this; - }, - - handleEvent: function(event) { - var element = Event.findElement(event, this.selector); - if (element) this.callback.call(this.element, event, element); - } - }); - - function on(element, eventName, selector, callback) { - element = $(element); - if (Object.isFunction(selector) && Object.isUndefined(callback)) { - callback = selector, selector = null; - } - - return new Event.Handler(element, eventName, selector, callback).start(); - } - - Object.extend(Event, Event.Methods); - - Object.extend(Event, { - fire: fire, - observe: observe, - stopObserving: stopObserving, - on: on - }); - - Element.addMethods({ - fire: fire, - - observe: observe, - - stopObserving: stopObserving, - - on: on - }); - - Object.extend(document, { - fire: fire.methodize(), - - observe: observe.methodize(), - - stopObserving: stopObserving.methodize(), - - on: on.methodize(), - - loaded: false - }); - - if (window.Event) Object.extend(window.Event, Event); - else window.Event = Event; -})(); - -(function() { - /* Support for the DOMContentLoaded event is based on work by Dan Webb, - Matthias Miller, Dean Edwards, John Resig, and Diego Perini. */ - - var timer; - - function fireContentLoadedEvent() { - if (document.loaded) return; - if (timer) window.clearTimeout(timer); - document.loaded = true; - document.fire('dom:loaded'); - } - - function checkReadyState() { - if (document.readyState === 'complete') { - document.stopObserving('readystatechange', checkReadyState); - fireContentLoadedEvent(); - } - } - - function pollDoScroll() { - try { document.documentElement.doScroll('left'); } - catch(e) { - timer = pollDoScroll.defer(); - return; - } - fireContentLoadedEvent(); - } - - if (document.addEventListener) { - document.addEventListener('DOMContentLoaded', fireContentLoadedEvent, false); - } else { - document.observe('readystatechange', checkReadyState); - if (window == top) - timer = pollDoScroll.defer(); - } - - Event.observe(window, 'load', fireContentLoadedEvent); -})(); - -Element.addMethods(); - -/*------------------------------- DEPRECATED -------------------------------*/ - -Hash.toQueryString = Object.toQueryString; - -var Toggle = { display: Element.toggle }; - -Element.Methods.childOf = Element.Methods.descendantOf; - -var Insertion = { - Before: function(element, content) { - return Element.insert(element, {before:content}); - }, - - Top: function(element, content) { - return Element.insert(element, {top:content}); - }, - - Bottom: function(element, content) { - return Element.insert(element, {bottom:content}); - }, - - After: function(element, content) { - return Element.insert(element, {after:content}); - } -}; - -var $continue = new Error('"throw $continue" is deprecated, use "return" instead'); - -var Position = { - includeScrollOffsets: false, - - prepare: function() { - this.deltaX = window.pageXOffset - || document.documentElement.scrollLeft - || document.body.scrollLeft - || 0; - this.deltaY = window.pageYOffset - || document.documentElement.scrollTop - || document.body.scrollTop - || 0; - }, - - within: function(element, x, y) { - if (this.includeScrollOffsets) - return this.withinIncludingScrolloffsets(element, x, y); - this.xcomp = x; - this.ycomp = y; - this.offset = Element.cumulativeOffset(element); - - return (y >= this.offset[1] && - y < this.offset[1] + element.offsetHeight && - x >= this.offset[0] && - x < this.offset[0] + element.offsetWidth); - }, - - withinIncludingScrolloffsets: function(element, x, y) { - var offsetcache = Element.cumulativeScrollOffset(element); - - this.xcomp = x + offsetcache[0] - this.deltaX; - this.ycomp = y + offsetcache[1] - this.deltaY; - this.offset = Element.cumulativeOffset(element); - - return (this.ycomp >= this.offset[1] && - this.ycomp < this.offset[1] + element.offsetHeight && - this.xcomp >= this.offset[0] && - this.xcomp < this.offset[0] + element.offsetWidth); - }, - - overlap: function(mode, element) { - if (!mode) return 0; - if (mode == 'vertical') - return ((this.offset[1] + element.offsetHeight) - this.ycomp) / - element.offsetHeight; - if (mode == 'horizontal') - return ((this.offset[0] + element.offsetWidth) - this.xcomp) / - element.offsetWidth; - }, - - - cumulativeOffset: Element.Methods.cumulativeOffset, - - positionedOffset: Element.Methods.positionedOffset, - - absolutize: function(element) { - Position.prepare(); - return Element.absolutize(element); - }, - - relativize: function(element) { - Position.prepare(); - return Element.relativize(element); - }, - - realOffset: Element.Methods.cumulativeScrollOffset, - - offsetParent: Element.Methods.getOffsetParent, - - page: Element.Methods.viewportOffset, - - clone: function(source, target, options) { - options = options || { }; - return Element.clonePosition(target, source, options); - } -}; - -/*--------------------------------------------------------------------------*/ - -if (!document.getElementsByClassName) document.getElementsByClassName = function(instanceMethods){ - function iter(name) { - return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' " + name + " ')]"; - } - - instanceMethods.getElementsByClassName = Prototype.BrowserFeatures.XPath ? - function(element, className) { - className = className.toString().strip(); - var cond = /\s/.test(className) ? $w(className).map(iter).join('') : iter(className); - return cond ? document._getElementsByXPath('.//*' + cond, element) : []; - } : function(element, className) { - className = className.toString().strip(); - var elements = [], classNames = (/\s/.test(className) ? $w(className) : null); - if (!classNames && !className) return elements; - - var nodes = $(element).getElementsByTagName('*'); - className = ' ' + className + ' '; - - for (var i = 0, child, cn; child = nodes[i]; i++) { - if (child.className && (cn = ' ' + child.className + ' ') && (cn.include(className) || - (classNames && classNames.all(function(name) { - return !name.toString().blank() && cn.include(' ' + name + ' '); - })))) - elements.push(Element.extend(child)); - } - return elements; - }; - - return function(className, parentElement) { - return $(parentElement || document.body).getElementsByClassName(className); - }; -}(Element.Methods); - -/*--------------------------------------------------------------------------*/ - -Element.ClassNames = Class.create(); -Element.ClassNames.prototype = { - initialize: function(element) { - this.element = $(element); - }, - - _each: function(iterator) { - this.element.className.split(/\s+/).select(function(name) { - return name.length > 0; - })._each(iterator); - }, - - set: function(className) { - this.element.className = className; - }, - - add: function(classNameToAdd) { - if (this.include(classNameToAdd)) return; - this.set($A(this).concat(classNameToAdd).join(' ')); - }, - - remove: function(classNameToRemove) { - if (!this.include(classNameToRemove)) return; - this.set($A(this).without(classNameToRemove).join(' ')); - }, - - toString: function() { - return $A(this).join(' '); - } -}; - -Object.extend(Element.ClassNames.prototype, Enumerable); - -/*--------------------------------------------------------------------------*/ - -(function() { - window.Selector = Class.create({ - initialize: function(expression) { - this.expression = expression.strip(); - }, - - findElements: function(rootElement) { - return Prototype.Selector.select(this.expression, rootElement); - }, - - match: function(element) { - return Prototype.Selector.match(element, this.expression); - }, - - toString: function() { - return this.expression; - }, - - inspect: function() { - return "#"; - } - }); - - Object.extend(Selector, { - matchElements: function(elements, expression) { - var match = Prototype.Selector.match, - results = []; - - for (var i = 0, length = elements.length; i < length; i++) { - var element = elements[i]; - if (match(element, expression)) { - results.push(Element.extend(element)); - } - } - return results; - }, - - findElement: function(elements, expression, index) { - index = index || 0; - var matchIndex = 0, element; - for (var i = 0, length = elements.length; i < length; i++) { - element = elements[i]; - if (Prototype.Selector.match(element, expression) && index === matchIndex++) { - return Element.extend(element); - } - } - }, - - findChildElements: function(element, expressions) { - var selector = expressions.toArray().join(', '); - return Prototype.Selector.select(selector, element || document); - } - }); -})(); diff --git a/minsrc/glow.core-1.7.js b/minsrc/glow.core-1.7.js new file mode 100644 index 0000000..e6d6e0e --- /dev/null +++ b/minsrc/glow.core-1.7.js @@ -0,0 +1,20 @@ +/* + Copyright 2009 British Broadcasting Corporation + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +(function(){var f={glow:true},b=/([$^\\\/()|?+*\[\]{}.-])/g,a=navigator.userAgent.toLowerCase(),k="1.7.3",r=0,g=[],m=0,q=[],o=0,s=false,n={VERSION:k,UID:"glow"+Math.floor(Math.random()*(1<<30)),isDomReady:window.gloader&&gloader.isReady,isReady:window.gloader&&gloader.isReady,env:function(){var u=[0,NaN],d=(/opera[\s\/]([\w\.]+)/.exec(a)||u)[1],v=d?NaN:(/msie ([\w\.]+)/.exec(a)||u)[1],x=(/rv:([\w\.]+).*gecko\//.exec(a)||u)[1],e=(/applewebkit\/([\w\.]+)/.exec(a)||u)[1],t=(/khtml\/([\w\.]+)/.exec(a)||u)[1],w=parseFloat;return{gecko:w(x),ie:w(v),opera:w(d),webkit:w(e),khtml:w(t),version:v||x||e||d||t,standardsMode:document.compatMode!="BackCompat"&&(!v||v>=6)};}(),module:function(u){var t=2,w=u.depends[0]||[],d=w.length,e=u.name,v=window.glow;if(u.library[1]!=n.VERSION){throw new Error("Cannot register "+e+": Version mismatch");}if(w[2]){for(;t");}if(u.delimiter==undefined){d=/\{[^{}]+\}/g;}else{v=u.delimiter.substr(0,1).replace(b,"\\$1");e=u.delimiter.substr(1,1).replace(b,"\\$1")||v;d=new RegExp(v+"[^"+v+e+"]+"+e,"g");}return t.replace(d,function(D){var A=D.slice(1,-1),C=A.split("."),B,z=0,y=C.length;if(A in w){B=w[A];}else{B=w;for(;z 5.5)@*/ +(window.gloader||glow).module({name:"glow.i18n",library:["glow","1.7.3"],depends:[["glow","1.7.3"]],builder:function(r){var A;var t={l:/^[a-z]$/,lv:/^[a-z]{2,3}$/,s:/^[A-Z][a-z]{3}$/,r:/^[A-Z]{2}|[0-9]{3}$/,v:/^[a-z0-9]{4,}$/};var s=1,k=2,l=4,j=8,p=s+k+l+j,f=s+l+j,x=s+k+j,c=s+j,y=s+k+l,e=s+l,d=s+k;var m={l:s,s:k,r:l,v:j},I=["l","s","r","v"],F={l:0,s:1,r:2,v:3};var C={};var b={};var o=w(document.documentElement.lang||"en")||w("en");function D(K){for(var J in t){if(t[J].test(K)){return J;}}return"";}function w(V){if(!V.split){V="";}var N=V.split("-"),Q=N.length,R=[],K={l:"",s:"",r:"",v:""},J=0,O=J,U=0,P,S;for(var M=0,T=I.length;M]?)\s*/,classNameOrId:(n.webkit<417)?new RegExp("^([\\.#])((?:(?![\\.#\\[:\\s\\\\]).|\\\\.)+)"):/^([\.#])((?:[^\.#\[:\\\s]+|\\.)+)/},X=/([$^\\\/()|?+*\[\]{}.-])/g,B={},R={checked:"checked","class":"className",disabled:"disabled","for":"htmlFor",maxlength:"maxLength"},c={checked:true,disabled:true},ah={maxlength:function(r){return r.toString()=="2147483647"?undefined:r;}},ad=1,x="_unique"+u.UID,ai="_uniqueData"+u.UID,ag=1,L=[],I={black:0,silver:12632256,gray:8421504,white:16777215,maroon:8388608,red:16711680,purple:8388736,fuchsia:16711935,green:32768,lime:65280,olive:8421376,yellow:16776960,navy:128,blue:255,teal:32896,aqua:65535,orange:16753920},D=/height|top/,t=/^rgb\(([\d\.]+)(%?),\s*([\d\.]+)(%?),\s*([\d\.]+)(%?)/i,A=/^(?:(width|height)|(border-(top|bottom|left|right)-width))$/,C=/width|height|top$|bottom$|left$|right$|spacing$|indent$|font-size/,T,d,K,H,aa=window,l=document,V,G,w,P=l.createElement("div"),y=[1,"","
    "],ab=[0,"",""],O=n.webkit<526?[0,"","",true]:[1,"b
    ","
    "],a=[3,"","
    "],E={caption:y,thead:y,th:a,colgroup:y,tbody:y,tr:[2,"","
    "],td:a,tfoot:y,option:[1,""],legend:[1,"
    ","
    "],link:O,script:O,style:O};if(n.ie){window.attachEvent("onunload",function(){P=null;});}u.ready(function(){V=l.body;G=l.documentElement;});(function(){var r=l.createElement("div");r.a=1;w=!!r.cloneNode(true).a;})();function af(r){for(var aj=r.firstChild;aj;aj=aj.nextSibling){if(aj.nodeType==1){return aj;}}return null;}function v(r){return new RegExp(["(^|\\s)",r.replace(X,"\\$1"),"($|\\s)"].join(""),"g");}function N(ap){var ao=[],al=(/^\s*<([^\s>]+)/.exec(ap)||[,"div"])[1],aj=E[al]||ab,am,ak,an=0;P.innerHTML=(aj[1]+ap+aj[2]);ak=P;am=aj[0];while(am--){ak=ak.lastChild;}while(ak.firstChild){ao[an++]=ak.removeChild(ak.firstChild);}ak=null;return ao;}function p(al){var ak=[],aj=0;for(;al[aj];aj++){ak[aj]=al[aj];}return ak;}function e(am,aj){for(var al=this,r=0,ak=al.length;r500&&n.webkit<526&&al=="margin-right"&&an.getPropertyValue("position")!="absolute"){al="margin-left";}ak=an.getPropertyValue(al);}}else{if(am){if(al=="opacity"){aq=/alpha\(opacity=([^\)]+)\)/.exec(am.filter);return aq?String(parseInt(aq[1],10)/100):"1";}ak=String(am[W(al)]);if(/^-?[\d\.]+(?!px)[%a-z]+$/i.test(ak)&&al!="font-size"){ak=J(ar,ak,D.test(al))+"px";}}}}}if(al.indexOf("color")!=-1){ak=S(ak).toString();}else{if(ak.indexOf("url")==0){ak=ak.replace(/\"/g,"");}}return ak;}function J(ao,aq,am){var ak=am?"top":"left",an=am?"Top":"Left",ar=ao.style,al=ar[ak],ap=ao.runtimeStyle[ak],aj;ao.runtimeStyle[ak]=ao.currentStyle[ak];ar[ak]=aq;aj=ar["pixel"+an];ar[ak]=al;ao.runtimeStyle[ak]=ap;return aj;}function S(ak){if(/^(transparent|rgba\(0, ?0, ?0, ?0\))$/.test(ak)){return"transparent";}var ao,aj,ap,aq,al,an=Math.round,ar=parseInt,am=parseFloat;if(ao=t.exec(ak)){aj=ao[2]?an(((am(ao[1])/100)*255)):ar(ao[1]);ap=ao[4]?an(((am(ao[3])/100)*255)):ar(ao[3]);aq=ao[6]?an(((am(ao[5])/100)*255)):ar(ao[5]);}else{if(typeof ak=="number"){al=ak;}else{if(ak.charAt(0)=="#"){if(ak.length=="4"){ak="#"+ak.charAt(1)+ak.charAt(1)+ak.charAt(2)+ak.charAt(2)+ak.charAt(3)+ak.charAt(3);}al=ar(ak.slice(1),16);}else{al=I[ak];}}aj=(al)>>16;ap=(al&65280)>>8;aq=(al&255);}ak=new String("rgb("+aj+", "+ap+", "+aq+")");ak.r=aj;ak.g=ap;ak.b=aq;return ak;}function m(an){var am="",ak=an.childNodes,al=0,aj=ak.length;for(;al=521){for(;r1?am:undefined;}if(typeof ak=="object"){for(al in ak){if(k.hasOwnProperty(ak,al)){am.attr(al,ak[al]);}}return am;}if(n.ie&&R[ak]){if(r>1){e.call(am,aj[1],function(ao){this[R[ak]]=ao;});return am;}an=am[0][R[ak]];if(c[ak]){return an?ak:undefined;}else{if(ah[ak]){return ah[ak](an);}}return an;}if(r>1){e.call(am,aj[1],function(ao){this.setAttribute(ak,ao);});return am;}return M(am[0])?am[0].getAttribute(ak):am[0].getAttribute(ak,2);},removeAttr:function(aj){var r=n.ie&&R[aj],am=this,ak=0,al=am.length;for(;ak-1?ap.options[ap.selectedIndex].value:"";}else{if(am=="select-multiple"){for(var aq=ap.options.length;ao0){for(;aj500){r+=parseInt(Z(an,"border-left-width"))||0;ao+=parseInt(Z(an,"border-top-width"))||0;}if(an.nodeName.toLowerCase()!="body"){ak=an;}}an=aj;while((an=an.parentNode)&&(an!=V)&&(an!=G)){r-=an.scrollLeft;ao-=an.scrollTop;if(n.gecko&&Z(an,"overflow")!="visible"){r+=parseInt(Z(an,"border-left-width"));ao+=parseInt(Z(an,"border-top-width"));}}if(am){r+=al.x;ao+=al.y;}if((n.webkit<500&&(am||Z(ak,"position")=="absolute"))||(n.gecko&&Z(ak,"position")!="absolute")){r-=V.offsetLeft;ao-=V.offsetTop;}return{left:r,top:ao};}},position:function(){var aj=Y.get(F(this[0])),ao=!!aj[0],an=parseInt(this.css("margin-left"))||0,am=parseInt(this.css("margin-top"))||0,al=(ao&&parseInt(aj.css("border-left-width")))||0,r=(ao&&parseInt(aj.css("border-top-width")))||0,ap=this.offset(),ak=ao?aj.offset():{top:0,left:0};return{left:ap.left-ak.left-an-al,top:ap.top-ak.top-am-r};},append:function(an){var am=this,aj=0,ak=1,al=am.length,r;if(al==0){return am;}r=typeof an=="string"?p(N(an)):an.nodeType?[an]:p(an);for(;r[aj];aj++){am[0].appendChild(r[aj]);}for(;ak=0;al--){ao[0].parentNode.insertBefore(ak[al],ao[0].nextSibling);}for(;am=0;al--){ao[am].parentNode.insertBefore(r[al],ao[am].nextSibling);}}return ao;},before:function(ap){var ao=this,an=ao.length,al=0,am=1,ak,aj,r;if(an==0){return ao;}ak=typeof ap=="string"?Y.create(ap):ap instanceof Y.NodeList?ap:Y.get(ap);aj=ak.length;for(;al"){ar[aC++]=[al,[null]];if(av){ar[aC++]=[ap,[av.replace(/\\/g,""),null]];}if(aA&&aA!="*"){ar[aC++]=[aq,[aA,null]];}}}aB=true;while(aB){if(az.charAt(0)=="#"||az.charAt(0)=="."){if(ax=s.classNameOrId.exec(az)){if(az.charAt(0)=="#"){ar[aC++]=[ap,[ax[2].replace(/\\/g,""),null]];}else{ar[aC++]=[ao,[ax[2].replace(/\\/g,""),null]];}az=az.slice(ax[0].length);}else{throw new Error("Invalid Selector "+aw);}}else{aB=false;}}au=false;}if(az!==""){throw new Error("Invalid Selector "+aw);}return B[az]=ar;}function an(ar,av){var au=av;for(var at=0,aw=ar.length;at');u.dom=Y;}});(window.gloader||glow).module({name:"glow.events",library:["glow","1.7.3"],depends:[["glow","1.7.3","glow.dom"]],builder:function(o){var k=o.dom.get;var C={};var x=1;var m=1;var n={};var b={};var p={};var l="__eventId"+o.UID;var g=l+"PreventDefault";var u=l+"StopPropagation";var E={};var f=1;var B={};var z={};var G=1;var d=2;var s=4;var h={TAB:"\t",SPACE:" ",ENTER:"\n",BACKTICK:"`"};var K={"96":223};var t={CAPSLOCK:20,NUMLOCK:144,SCROLLLOCK:145,BREAK:19,BACKTICK:223,BACKSPACE:8,PRINTSCREEN:44,MENU:93,SPACE:32,SHIFT:16,CTRL:17,ALT:18,ESC:27,TAB:9,META:91,RIGHTMETA:92,ENTER:13,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,INS:45,HOME:36,PAGEUP:33,DEL:46,END:35,PAGEDOWN:34,LEFT:37,UP:38,RIGHT:39,DOWN:40};var I={};for(var H in t){I[""+t[H]]=H;}var y="0123456789=;'\\/#,.-";function D(O){var N=z[O];if(!N){return false;}var M=B[N];if(!M){return false;}for(var L=0,r=M.length;L418)){if((N=="focus"||N=="blur")&&(o.env.opera)){O.parentNode.addEventListener(N,function(){},true);}O.addEventListener(N.toLowerCase()=="mousewheel"&&o.env.gecko?"DOMMouseScroll":N,Q,L);}else{var M="on"+N;var P=O[M];if(P){O[M]=function(){var R=P.apply(this,arguments),S=Q.apply(this,arguments);return(R!==false)&&(S!==false);};}else{O[M]=Q;}}O=null;}function a(M,N){var O=k(M),r=N?"mouseout":"mouseover",L=N?"mouseleave":"mouseenter";C.addListener(M,r,function(Q){var P=k(Q.relatedTarget);if(!P.eq(O)&&!P.isWithin(O)){return !C.fire(O[0],L,Q).defaultPrevented();}});}C._copyListeners=function(R,Q){var M=R.length,P,r,L,O,N;while(M--){if(R[M][l]){P=n[R[M][l]];for(r in P){L=0;O=P[r].length;for(;L").text(html).html();}};}});(window.gloader||glow).module({name:"glow.net",library:["glow","1.7.3"],depends:[["glow","1.7.3","glow.data","glow.events"]],builder:function(h){var t={XML_ERR:"Cannot get response as XML, check the mime type of the data",POST_DEFAULT_CONTENT_TYPE:"application/x-www-form-urlencoded;"},u=/\+xml$/,p=[],e="c",o="_"+h.UID+"loadScriptCbs",g=h.dom.get,c=h.events,f=function(){},k=1;function s(){if(window.ActiveXObject){return(s=function(){return new ActiveXObject("Microsoft.XMLHTTP");})();}else{return(s=function(){return new XMLHttpRequest();})();}}function d(w){var r=h.lang.apply({onLoad:f,onError:f,onAbort:f,headers:{},async:true,useCache:false,data:null,defer:false,forceXml:false},w||{});if(!("X-Requested-With" in r.headers)){r.headers["X-Requested-With"]="XMLHttpRequest";}return r;}function v(r){return[r,(/\?/.test(r)?"&":"?"),"a",new Date().getTime(),parseInt(Math.random()*100000)].join("");}function j(C,r,z){var y=s(),A=z.data&&(typeof z.data=="string"?z.data:h.data.encodeUrl(z.data)),w,x=new q(y,z);if(!z.useCache){r=v(r);}y.open(C,r,z.async);for(w in z.headers){y.setRequestHeader(w,z.headers[w]);}function B(){x.send=f;if(z.async){if(z.timeout){x._timeout=setTimeout(function(){a(x);var E=new b(y,true,x);c.fire(x,"error",E);},z.timeout*1000);}y.onreadystatechange=function(){if(y.readyState==4){x._timeout&&clearTimeout(x._timeout);x.completed=true;var E=new b(y,false,x);if(E.wasSuccessful){c.fire(x,"load",E);}else{c.fire(x,"error",E);}y.onreadystatechange=new Function();}};y.send(A);return x;}else{y.send(A);x.completed=true;var D=new b(y,false,x);if(D.wasSuccessful){c.fire(x,"load",D);}else{c.fire(x,"error",D);}return D;}}x.send=B;return z.defer?x:B();}var m={};m.get=function(r,w){w=d(w);return j("GET",r,w);};m.post=function(r,w,x){x=d(x);x.data=w;if(!x.headers["Content-Type"]){x.headers["Content-Type"]=t.POST_DEFAULT_CONTENT_TYPE;}return j("POST",r,x);};m.send=function(y,r,w,x){w=w||"";x=d(x);x.data=w;return j(y,r,x);};m.put=function(r,w,x){x=d(x);x.data=w;if(!x.headers["Content-Type"]){x.headers["Content-Type"]=t.POST_DEFAULT_CONTENT_TYPE;}return j("PUT",r,x);};m.del=function(r,w){w=d(w);return j("DELETE",r,w);};m.loadScript=function(w,z){var x=p.length,r,A=e+x,z=d(z),y=new q(x,z),w=z.useCache?w:v(w),B=window[o]||(window[o]={});if(z.onLoad!=f){B[A]=function(){y._timeout&&clearTimeout(y._timeout);y.completed=true;z.onLoad.apply(this,arguments);y.destroy();r=B[A]=undefined;delete B[A];};w=h.lang.interpolate(w,{callback:o+"."+A});}r=p[x]=document.createElement("script");if(z.charset){r.charset=z.charset;}c.addListener(y,"abort",z.onAbort);h.ready(function(){if(z.timeout){y._timeout=setTimeout(function(){a(y);z.onError();},z.timeout*1000);}if(h.env.opera){setTimeout(function(){if(r){r.src=w;}},0);}else{r.src=w;}document.body.appendChild(r);});return y;};function a(w){var r=w.nativeRequest,x=w._callbackIndex;w._timeout&&clearTimeout(w._timeout);if(r){r.onreadystatechange=new Function();r.abort();}else{if(x){window[o][e+x]=f;h.dom.get(p[x]).destroy();}}}function q(y,w){this._timeout=null;this._forceXml=w.forceXml;if(w.forceXml&&y.overrideMimeType){y.overrideMimeType("application/xml");}this.complete=false;if(typeof y=="number"){this._callbackIndex=y;}else{this.nativeRequest=y;}var x=["Load","Error","Abort"],r=0;for(;r<3;r++){c.addListener(this,x[r].toLowerCase(),w["on"+x[r]]);}}q.prototype={send:function(){},abort:function(){if(!this.completed&&!c.fire(this,"abort").defaultPrevented()){a(this);}return this;},destroy:function(){var r=this;if(this._callbackIndex!==undefined){setTimeout(function(){g(p[r._callbackIndex]).destroy();p[r._callbackIndex]=undefined;delete p[r._callbackIndex];},0);}return this;}};function b(x,r,w){c.Event.call(this);this._request=w;this.nativeResponse=x;this.status=r?408:x.status==1223?204:x.status;this.timedOut=!!r;this.wasSuccessful=(this.status>=200&&this.status<300)||this.status==304||(this.status==0&&x.responseText);}function l(){var r=this.header("Content-Type");return u.test(r)||r==="";}h.lang.extend(b,c.Event,{text:function(){return this.nativeResponse.responseText;},xml:function(){var w=this.nativeResponse;if((h.env.ie&&l.call(this))||(this._request._forceXml&&!this._request.nativeRequest.overrideMimeType&&window.ActiveXObject)){var r=new ActiveXObject("Microsoft.XMLDOM");r.loadXML(w.responseText);return r;}else{if(!w.responseXML){throw new Error(t.XML_ERR);}return w.responseXML;}},json:function(r){return h.data.decodeJson(this.text(),{safeMode:r});},header:function(r){return this.nativeResponse.getResponseHeader(r);},statusText:function(){return this.timedOut?"Request Timeout":this.nativeResponse.statusText;}});var n=function(r,x,y,w){this.url=r;this.data=x;this.isGet=y;this.opts=w;};n.prototype={_send:function(){this._addIframe();this._addForm();this._addTimeout();this.onLoad=this._handleResponse;this._submitForm();},_addIframe:function(){this.iframe=h.dom.create('');var r=this.iframe[0],w=this,x=function(){if(w.onLoad){w.onLoad();}};if(r.attachEvent){r.attachEvent("onload",x);}else{r.onload=x;}g("body").append(this.iframe);},_addForm:function(){var x=this._window().document;if(h.env.ie){x.open();x.write("");x.close();}var w=this.form=x.createElement("form");w.setAttribute("action",this.url);w.setAttribute("method",this.isGet?"GET":"POST");var r=x.getElementsByTagName("body")[0];r.appendChild(w);this._addFormData();},_addFormData:function(){for(var x in this.data){if(!this.data.hasOwnProperty(x)){continue;}if(this.data[x] instanceof Array){var r=this.data[x].length;for(var w=0;w');function addEventsFromOpts(instance,opts,eventProps){for(var i=0,len=eventProps.length;ianim.duration){anim.position=anim.duration;}}else{anim.position++;}anim.value=anim.tween(anim.position/anim.duration);events.fire(anim,"frame");}}};})();function convertCssUnit(element,fromValue,toUnit,axis){var elmStyle=testElement[0].style,axisProp=(axis=="x")?"width":"height",startPixelValue,toUnitPixelValue;elmStyle.margin=elmStyle.padding=elmStyle.border="0";startPixelValue=testElement.css(axisProp,fromValue).insertAfter(element)[axisProp]();toUnitPixelValue=testElement.css(axisProp,10+toUnit)[axisProp]()/10;testElement.remove();return startPixelValue/toUnitPixelValue;}function keepWithinRange(num,start,end){if(start!==undefined&&numend){return end;}return num;}function buildAnimFunction(element,spec){var cssProp,r=["a=(function(){"],rLen=1,fromUnit,unitDefault=[0,"px"],to,from,unit,a;for(cssProp in spec){r[rLen++]='element.css("'+cssProp+'", ';if(typeof spec[cssProp]!="object"){to=spec[cssProp];}else{to=spec[cssProp].to;}if((from=spec[cssProp].from)===undefined){if(cssProp=="font-size"||cssProp=="background-position"){throw new Error("From value must be set for "+cssProp);}from=element.css(cssProp);}if(hasUnits.test(cssProp)){unit=(getUnit.exec(to)||unitDefault)[1];fromUnit=(getUnit.exec(from)||unitDefault)[1];from=parseFloat(from)||0;to=parseFloat(to)||0;if(from&&unit!=fromUnit){if(cssProp=="font-size"){throw new Error("Units must be the same for font-size");}from=convertCssUnit(element,from+fromUnit,unit,usesYAxis.test(cssProp)?"y":"x");}if(noNegatives.test(cssProp)){r[rLen++]="keepWithinRange(("+(to-from)+" * this.value) + "+from+', 0) + "'+unit+'"';}else{r[rLen++]="("+(to-from)+" * this.value) + "+from+' + "'+unit+'"';}}else{if(!(isNaN(from)||isNaN(to))){from=Number(from);to=Number(to);r[rLen++]="("+(to-from)+" * this.value) + "+from;}else{if(cssProp.indexOf("color")!=-1){to=dom.parseCssColor(to);if(!glow.lang.hasOwnProperty(from,"r")){from=dom.parseCssColor(from);}r[rLen++]='"rgb(" + keepWithinRange(Math.round('+(to.r-from.r)+" * this.value + "+from.r+'), 0, 255) + "," + keepWithinRange(Math.round('+(to.g-from.g)+" * this.value + "+from.g+'), 0, 255) + "," + keepWithinRange(Math.round('+(to.b-from.b)+" * this.value + "+from.b+'), 0, 255) + ")"';}else{if(cssProp=="background-position"){var vals={},fromTo=["from","to"],unit=(getUnit.exec(from)||unitDefault)[1];vals.fromOrig=from.toString().split(/\s/);vals.toOrig=to.toString().split(/\s/);if(vals.fromOrig[1]===undefined){vals.fromOrig[1]="50%";}if(vals.toOrig[1]===undefined){vals.toOrig[1]="50%";}for(var i=0;i<2;i++){vals[fromTo[i]+"X"]=parseFloat(vals[fromTo[i]+"Orig"][0]);vals[fromTo[i]+"Y"]=parseFloat(vals[fromTo[i]+"Orig"][1]);vals[fromTo[i]+"XUnit"]=(getUnit.exec(vals[fromTo[i]+"Orig"][0])||unitDefault)[1];vals[fromTo[i]+"YUnit"]=(getUnit.exec(vals[fromTo[i]+"Orig"][1])||unitDefault)[1];}if((vals.fromXUnit!==vals.toXUnit)||(vals.fromYUnit!==vals.toYUnit)){throw new Error("Mismatched axis units cannot be used for "+cssProp);}r[rLen++]="("+(vals.toX-vals.fromX)+" * this.value + "+vals.fromX+') + "'+vals.fromXUnit+' " + ('+(vals.toY-vals.fromY)+" * this.value + "+vals.fromY+') + "'+vals.fromYUnit+'"';}}}}r[rLen++]=");";}r[rLen++]="})";return eval(r.join(""));}var r={};r.css=function(element,duration,spec,opts){element=get(element);var anim=new r.Animation(duration,opts);if(element[0]){events.addListener(anim,"frame",buildAnimFunction(element,spec));}return anim;};slideElement=function slideElement(element,duration,action,opts){duration=duration||0.5;element=$(element);opts=glow.lang.apply({tween:glow.tweens.easeBoth(),onStart:function(){},onComplete:function(){}},opts);var i=0,thatlength=element.length,completeHeight,fromHeight,channels=[],timeline;for(;i0)){element[i].style.overflow="hidden";if(glow.env.ie<8){element[i].style.zoom=1;}completeHeight=0;fromHeight=element.slice(i,i+1).height();}else{if(action=="down"||(action=="toggle"&&element.slice(i,i+1).height()==0)){fromHeight=element.slice(i,i+1).height();element[i].style.height="";completeHeight=element.slice(i,i+1).height();if(completeHeight===0){element[i].style.height="auto";completeHeight=element.slice(i,i+1).height();}element[i].style.height=fromHeight+"px";}}channels[i]=[glow.anim.css(element[i],duration,{height:{from:fromHeight,to:completeHeight}},{tween:opts.tween})];}timeline=new glow.anim.Timeline(channels,{destroyOnComplete:true});events.addListener(timeline,"complete",function(){element.each(function(){if(this.style.height.slice(0,1)!="0"){this.style.height="";if(glow.dom.get(this).height()===0){this.style.height="auto";}}});});events.addListener(timeline,"start",opts.onStart);events.addListener(timeline,"complete",opts.onComplete);return timeline.start();};r.slideDown=function(element,duration,opts){return slideElement(element,duration,"down",opts);};r.slideUp=function(element,duration,opts){return slideElement(element,duration,"up",opts);};r.slideToggle=function(element,duration,opts){return slideElement(element,duration,"toggle",opts);};r.fadeOut=function(element,duration,opts){return r.fadeTo(element,0,duration,opts);};r.fadeIn=function(element,duration,opts){return r.fadeTo(element,1,duration,opts);};r.fadeTo=function(element,opacity,duration,opts){duration=duration||0.5;element=$(element);opts=glow.lang.apply({tween:glow.tweens.easeBoth(),onStart:function(){},onComplete:function(){}},opts);var i=0,thatlength=element.length,channels=[],timeline;for(;ianim.duration){anim.position=anim.duration;}anim.value=anim.tween(anim.position/anim.duration);events.fire(anim,"frame");if(anim.position==anim.duration){this._advanceChannel(i);}}},start:function(){var e=events.fire(this,"start");if(e.defaultPrevented()){return this;}var i,iLen,j,jLen,anim;this._playing=true;for(i=0,iLen=this._channels.length;ithis.duration){if(this.loop){pos=pos%this.duration;}else{pos=this.duration;}}this._controlAnim.goTo(pos);for(i=0;ipos){this._channelPos[i]=j;anim.goTo(pos-runningDuration);break;}anim.goTo(anim.duration);runningDuration+=anim.duration;}}for(k=channelLen;k>j;k--){anim.goTo(0);}}}else{for(i=0;i=this._fields[this._fieldCur]._tests.length){if(!d.call(this)){return;}}var j=this._fields[this._fieldCur]._tests[this._testCur];var h;if(j.opts.field){h=this.formNode.val()[j.opts.field]||"";j.isConditional=true;}else{h=this.formNode.val()[this._fields[this._fieldCur].name]||"";}if(!h.join){h=[h];}var k=function(l){return function(){e.apply(l,arguments);};}(this);j.opts.on=j.opts.on||"submit";if(this._result.eventName&&(" "+j.opts.on+" ").indexOf(" "+this._result.eventName+" ")!=-1){if(this._fieldName&&this._fieldName!=j.name){c.call(this);return;}if(typeof g.forms.tests[j.type]!="function"){throw"Unimplemented test: no test exists of type '"+j.type+"'.";}j.opts._localeModule=this._localeModule;g.forms.tests[j.type](h,j.opts,k,this.formNode.val());}else{c.call(this);}};var d=function(){this._fieldCur++;this._testCur=0;if(this._fieldCur>=this._fields.length){this._fieldCur=0;g.events.fire(this,"validate",this._result);if(this.eventName=="submit"&&this._result&&!this._result.defaultPrevented()){try{this.formNode[0].submit();}catch(h){throw new Error("Glow can't submit the form because the submit function can't be called. Perhaps that form's submit was replaced by an input element named 'submit'?");}}return false;}return true;};var e=function(h,j){if(typeof h=="boolean"){h=(h)?g.forms.PASS:g.forms.FAIL;}if(this._fields[this._fieldCur]._tests[this._testCur].isConditional&&h===g.forms.FAIL){h=g.forms.SKIP;}this._result.fields.push({name:this._fields[this._fieldCur].name,result:h,message:j});if(h!==g.forms.PASS){if(h===g.forms.FAIL){this._result.errorCount++;}this._testCur=this._fields[this._fieldCur]._tests.length;}c.call(this);};g.forms.Form.prototype.addTests=function(r){var q={name:r,_tests:[]};var j=function(s){return function(){s.validate.apply(s,["change",r]);};}(this);var n=function(s){return function(){s.validate.apply(s,["click",r]);};}(this);var o=function(s){return function(){s.validate.apply(s,["idle",r]);};}(this);for(var l=1;l1)?arguments[l][1]:{};q._tests.push({name:r,type:k,opts:p});if(!j.added&&(" "+p.on+" ").indexOf(" change ")!=-1){var m=this.formNode.get("*").each(function(s){if(this.name==r){g.events.addListener(this,"change",j);j.added=true;}});}if(!n.added&&(" "+p.on+" ").indexOf(" click ")!=-1){var m=this.formNode.get("*").each(function(s){if(this.name==r){g.events.addListener(this,"click",n);n.added=true;}});}if(!o.added&&(" "+p.on+" ").indexOf(" idle ")!=-1){var h=(typeof p.delay!="undefined")?parseInt(p.delay):1000;var m=this.formNode.get("*").each(function(s){if(this.name==r){g.events.addListener(this,"keyup",function(u){return function(){window.clearTimeout(this.idleTimeoutID);if(this.value){this.idleTimeoutID=window.setTimeout(o,u);}};}(h));g.events.addListener(this,"blur",function(){window.clearTimeout(this.idleTimeoutID);});o.added=true;}});}}this._fields.push(q);return this;};g.forms.ValidateResult=function(h){g.events.Event.apply(this);this.eventName=h;this.errorCount=0;this.value=undefined;this.fields=[];};g.lang.extend(g.forms.ValidateResult,g.events.Event);g.forms.PASS=1;g.forms.FAIL=0;g.forms.SKIP=-1;g.forms.tests={required:function(j,m,n){var l=m.message||m._localeModule.TEST_MESSAGE_REQUIRED;for(var k=0,h=j.length;kNumber(m.arg)){n(g.forms.FAIL,l);return;}}n(g.forms.PASS,l);},range:function(k,o,p){var n=o.arg.split("..");if(typeof n[0]=="undefined"||typeof n[1]=="undefined"){throw"Range test requires a parameter like 0..10.";}var m=o.message||f(o._localeModule.TEST_MESSAGE_RANGE,{min:n[0],max:n[1]});n[0]*=1;n[1]*=1;if(n[0]>n[1]){var j=n[0];n[0]=n[1];n[1]=j;}for(var l=0,h=k.length;ln[1]){p(g.forms.FAIL,m);return;}}p(g.forms.PASS,m);},minCount:function(h,m,n){var l=m.message||f(m._localeModule.TEST_MESSAGE_MIN_COUNT,{arg:m.arg});var k=0;for(var j=0;jm.arg){n(g.forms.FAIL,l);return;}n(g.forms.PASS,l);},count:function(h,m,n){var l=m.message||f(m._localeModule.TEST_MESSAGE_COUNT,{arg:m.arg});var k=0;for(var j=0;jm.arg){n(g.forms.FAIL,l);return;}}n(g.forms.PASS,l);},isEmail:function(j,m,n){var l=m.message||m._localeModule.TEST_MESSAGE_IS_EMAIL;for(var k=0,h=j.length;k').appendTo(document.body);}h[0].value++;}function k(o){var n=o.fields,r,q,s,p,m;for(p=0,m=n.length;p')));}s.text(n[p].message);r.addClass("glow-invalid");}}}}function j(p){var s=p.fields,v,n,o,r,m,q,t;p.form.formNode.get("div.glow-errorSummary").remove();n=g.dom.create('
      ');o=n.get("ul");for(q=0,t=s.length;q").text(m+": "+s[q].message));}}p.form.formNode.prepend(n.css("opacity","0"));g.anim.css(n,"0.5",{opacity:{from:0,to:1}},{tween:g.tweens.easeOut()}).start();try{n[0].focus();}catch(u){}l();}return function(m){if(m.eventName=="submit"){if(!m.errorCount){m.form.formNode.get("div.glow-errorSummary").remove();return;}j(m);}setTimeout(function(){k(m);},0);return false;};}());}});(window.gloader||glow).module({name:"glow.embed",library:["glow","1.7.3"],depends:[["glow","1.7.3","glow.dom","glow.data","glow.i18n"]],builder:function(n){var o=n.i18n;o.addLocaleModule("GLOW_EMBED","en",{FLASH_MESSAGE:"This content requires Flash Player version {min} (installed version: {installed})",NO_PLAYER_MESSAGE:"No Flash Flayer installed, or version is pre 6.0.0"});function b(s){var r="";for(var t in s){if(t.toLowerCase()=="flashvars"&&typeof s[t]=="object"){r+=' FlashVars="'+n.data.encodeUrl(s[t])+'"';}else{r+=" "+t+'="'+s[t]+'"';}}return r;}function q(s){var u="",t,v;for(t in s){if(t.toLowerCase()=="flashvars"&&typeof s[t]=="object"){v=n.data.encodeUrl(s[t]);}else{v=s[t];}u+='\n';}return u;}function h(s,r){s=s||{};for(var t in r){if(typeof s[t]=="undefined"){s[t]=r[t];}else{if(typeof r[t]=="object"){s[t]=h(s[t],r[t]);}}}return s;}function c(){var r=(navigator.platform||navigator.userAgent);return r.match(/win/i)?"win":r.match(/mac/i)?"mac":"other";}function l(r){var t=/^WIN (\d+),(\d+),(\d+),\d+$/;var s=r.GetVariable("$version");if($match=t.exec(s)){return{major:parseInt($match[1]),minor:parseInt($match[2]),release:parseInt($match[3]),actual:s};}else{}}function k(){var s,u,v={major:0,minor:0,release:0},r=v;if(n.env.ie){try{u=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");r=l(u);}catch(w){try{u=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");try{u.AllowScriptAccess="always";r=l(u);}catch(w){r={major:6,minor:0,release:29};}}catch(w){}}}else{var t=/^Shockwave Flash\s*(\d+)\.(\d+)\s*\w(\d+)$/;if((u=navigator.plugins["Shockwave Flash"])&&(s=t.exec(u.description))){r={major:parseInt(s[1]),minor:parseInt(s[2]),release:parseInt(s[3]),actual:u.description};}}r.toString=function(){return this.major?[this.major,this.minor,this.release].join("."):o.getLocaleModule("GLOW_EMBED").NO_PLAYER_MESSAGE;};return r;}var m=k();function f(t){if(typeof t!="object"){var s=String(t).match(/^(\d+)(?:\.(\d+)(?:\.(\d+))?)?$/);if(!s){throw new Error('glow.embed._meetsVersionRequirements: invalid format for version string, require "n.n.n" or "n.n" or simply "n" where n is a numeric value');}t={major:parseInt(s[1],10),minor:parseInt(s[2]||0,10),release:parseInt(s[3]||0,10)};}var r=m,u=t;return(r.major>u.major||(r.major==u.major&&r.minor>u.minor)||(r.major==u.major&&r.minor==u.minor&&r.release>=u.release));}var e=n.env.ie?j:g;function g(t,r,s){return'";}function j(t,r,s){return''+q(s)+"";}var a={},p=0;function d(){return n.UID+"FlashEmbed"+(p++);}a.Flash=function(x,r,w,v){v=h(v,{width:"100%",height:"100%",params:{allowscriptaccess:"always",allowfullscreen:"true",quality:"high"},attributes:{},message:n.lang.interpolate(o.getLocaleModule("GLOW_EMBED").FLASH_MESSAGE,{min:w,installed:m}),id:(v&&v.attributes&&v.attributes.id)||d()});r=n.dom.get(r);if(!r.length){throw new Error("glow.embed.Flash unable to locate container");}this.container=r;this.movie=null;this._displayErrorMessage=typeof v.message=="function"?v.message:function(){return v.message;};this.isSupported;if(this.isSupported=f(w)){var s=v.attributes,u=["id","width","height"],t=u.length;while(t--){if(v[u[t]]){s[u[t]]=v[u[t]];}}if(v.className){s["class"]=v.className;}this._embed_tag=e(x,s,v.params);}};a.Flash.version=function(){return m;};a.Flash.prototype.embed=function(){var s=this.container[0];if(this.isSupported){s.innerHTML=this._embed_tag;this.movie=s.firstChild;}else{var r=this._displayErrorMessage();if(r){s.innerHTML=r;}}return this;};n.embed=a;}});(window.gloader||glow).module({name:"glow.dragdrop",library:["glow","1.7.3"],depends:[["glow","1.7.3","glow.tweens","glow.events","glow.dom","glow.anim"]],builder:function(j){var c=j.events,k=c.addListener,v=c.fire,g=c.removeListener,q=j.dom,h=q.get,m=q.create;var n={},w=1000,a=(document.compatMode=="CSS1Compat"&&j.env.ie>=5)?true:false,x=(document.compatMode!="CSS1Compat"&&j.env.ie>=5)?true:false,d=j.env.ie>=5,s=["top","right","bottom","left"];function b(r,z){var A=r.prototype[z];var y="cached_"+z;r.prototype[z]=function(){if(y in this){return this[y];}return this[y]=A.apply(this,arguments);};}function u(A,z){var r=s.length,y;while(r--){y="margin-"+s[r];A.css(y,z.css(y));}}function f(r,y){var A=r.prototype[y];var z="cached_"+y;r.prototype[y]=function(B){if(!this[z]){this[z]={};}if(B in this[z]){return this[z][B];}return this[z][B]=A.apply(this,arguments);};}function t(A,z){for(var y=0,r=z.length;y=y[0]&&A<=y[1]&&B<=y[2]&&A>=y[3];},containsPoint:function(y){var r=this.el.offset();return y.x>=r.left&&y.y>=r.top&&y.x<=r.left+this.borderWidth()&&y.y<=r.top+this.borderHeight();},positionedAncestorBox:function(){var r=this.el.parent(),y;while(r[0]){y=r.css("position")||"static";if(y=="relative"||y=="absolute"||y=="fixed"){return new o(r);}r=r.parent();}return null;}});function e(y){var r=y[0].tagName.toLowerCase()=="li"?"li":"div";var z=m("<"+r+">");if(r=="li"){z.css("list-style-type","none");}return z;}n.Draggable=function(A,B){this.element=h(A);this._opts=B=j.lang.apply({dragPrevention:["input","textarea","button","select","option","a"],placeholder:"spacer",placeholderClass:"glow-dragdrop-placeholder",step:{x:1,y:1}},B||{});if(typeof B.step=="number"){B.step={x:B.step,y:B.step};}else{B.step.x=B.step.x||1;B.step.y=B.step.y||1;}this._preventDrag=[];for(var y=0,r=B.dragPrevention.length;yA[1]?A[1]:D;}if(y!="x"){B=BA[2]?A[2]:B;}}r[0].style.left=D+"px";r[0].style.top=B+"px";if(this.dropTargets){this._mousePos={x:C.pageX,y:C.pageY};}if(d&&C.nativeEvent.button==0){this._releaseElement(C);return false;}return false;},_testForDropTargets:function(H){if(!this._lock){this._lock=0;}if(H){this._lock--;}else{if(this.lock){return;}}if(this._dragging!=1){return;}var z=this.activeTarget,y,R=this.dropTargets,S,C,F=this._box,K=this._mousePos;F.resetPosition();var D=0;for(var L=0,J=R.length;LD){D=M;y=S;}}}}this.activeTarget=y;if(y!==z){if(y){var I=new c.Event();I.draggable=this;v(y,"enter",I);var r=new c.Event();r.dropTarget=y;v(this,"enter",r);}if(z){var E=new c.Event();E.draggable=this;v(z,"leave",E);var G=new c.Event();G.dropTarget=z;v(this,"leave",G);}}if(y&&y._opts.dropIndicator!="none"){var P,N=y._childBoxes,A=y._children;F.resetPosition();var Q=y._box.innerTopPos();var T=K.y-F.offsetParentPageTop();var O=0;for(var L=0,J=N.length;L1){throw"more than one element passed into DropTarget constructor";}this._id=++l;this._opts=y=j.lang.apply({dropIndicator:"none",dropIndicatorClass:"glow-dragdrop-dropindicator",tolerance:"intersect"},y||{});if(y.onActive){k(this,"active",y.onActive);}if(y.onInactive){k(this,"inactive",y.onInactive);}if(y.onEnter){k(this,"enter",y.onEnter);}if(y.onLeave){k(this,"leave",y.onLeave);}if(y.onDrop){k(this,"drop",y.onDrop);}k(this,"active",this._onActive);k(this,"inactive",this._onInactive);return this;};n.DropTarget.prototype={setLogicalBottom:function(r){this._logicalBottom=r;},_onActive:function(A){var y=A.draggable;this._box=new o(this.element);if(this._logicalBottom){this._box.setLogicalBottom(this._logicalBottom);}if(this._opts.dropIndicator=="none"){return;}this._onEnterListener=k(this,"enter",this._onEnter);this._onLeaveListener=k(this,"leave",this._onLeave);this._dropIndicator=e(y.element);if(this._opts.dropIndicatorClass){this._dropIndicator.addClass(this._opts.dropIndicatorClass);}y._box.sizePlaceholder(this._dropIndicator,"relative",0,0);var z=this._children=h(this.element.children()).filter(function(){var B=h(this);return(!A.draggable._placeholder||!B.eq(A.draggable._placeholder))&&(!this._dropIndicator||!B.eq(this._dropIndicator));});var r=this._childBoxes=[];z.each(function(B){r[B]=new o(h(z[B]));});},_onInactive:function(r){g(this._onEnterListener);g(this._onLeaveListener);delete this._box;if(this._opts.dropIndicator=="none"){return;}if(!r.droppedOnThis&&this._dropIndicator){this._dropIndicator.remove();delete this._dropIndicator;}delete this._childBoxes;delete this._children;},_onEnter:function(){this._dropIndicatorAt=-1;},_onLeave:function(){this._dropIndicator.remove();},moveToPosition:function(y){var C=this._dropIndicator,z=new o(C);var B=parseInt(C.css("margin-left"))||0,A=parseInt(C.css("margin-top"))||0,r=z.el.position();y._startOffset={x:r.left,y:r.top};y._dropIndicator=C;delete this._dropIndicator;}};j.dragdrop=n;}}); +/*@end @*/ diff --git a/minsrc/protoMin.bat b/minsrc/protoMin.bat new file mode 100644 index 0000000..202adf2 --- /dev/null +++ b/minsrc/protoMin.bat @@ -0,0 +1,23 @@ +@echo off + +rem ************************************************************************************* +rem Windows batch script to compress the prototype library using the YUI compressor +rem Prototype is Copyright 2005-2010 by Sam Stephenson +rem For details, see the Prototype web site at http://www.prototypejs.org/ +rem ************************************************************************************* + +set dest=..\ricoClient\js + +if exist yuicompressor-2.4.6.jar goto compress +echo This script requires Java and the YUI compressor +echo yuicompressor-2.4.6.jar should be placed in this directory before running the script. +echo Download it from http://developer.yahoo.com/yui/compressor/ +goto done + +rem *** Compress Javascript *** +:compress + +java -jar yuicompressor-2.4.6.jar -o %dest%\proto_min.js prototype.js + +:done +pause diff --git a/minsrc/prototype.js b/minsrc/prototype.js new file mode 100644 index 0000000..474b223 --- /dev/null +++ b/minsrc/prototype.js @@ -0,0 +1,6082 @@ +/* Prototype JavaScript framework, version 1.7 + * (c) 2005-2010 Sam Stephenson + * + * Prototype is freely distributable under the terms of an MIT-style license. + * For details, see the Prototype web site: http://www.prototypejs.org/ + * + *--------------------------------------------------------------------------*/ + +var Prototype = { + + Version: '1.7', + + Browser: (function(){ + var ua = navigator.userAgent; + var isOpera = Object.prototype.toString.call(window.opera) == '[object Opera]'; + return { + IE: !!window.attachEvent && !isOpera, + Opera: isOpera, + WebKit: ua.indexOf('AppleWebKit/') > -1, + Gecko: ua.indexOf('Gecko') > -1 && ua.indexOf('KHTML') === -1, + MobileSafari: /Apple.*Mobile/.test(ua) + } + })(), + + BrowserFeatures: { + XPath: !!document.evaluate, + + SelectorsAPI: !!document.querySelector, + + ElementExtensions: (function() { + var constructor = window.Element || window.HTMLElement; + return !!(constructor && constructor.prototype); + })(), + SpecificElementExtensions: (function() { + if (typeof window.HTMLDivElement !== 'undefined') + return true; + + var div = document.createElement('div'), + form = document.createElement('form'), + isSupported = false; + + if (div['__proto__'] && (div['__proto__'] !== form['__proto__'])) { + isSupported = true; + } + + div = form = null; + + return isSupported; + })() + }, + + ScriptFragment: ']*>([\\S\\s]*?)<\/script>', + JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, + + emptyFunction: function() { }, + + K: function(x) { return x } +}; + +if (Prototype.Browser.MobileSafari) + Prototype.BrowserFeatures.SpecificElementExtensions = false; + + +var Abstract = { }; + + +var Try = { + these: function() { + var returnValue; + + for (var i = 0, length = arguments.length; i < length; i++) { + var lambda = arguments[i]; + try { + returnValue = lambda(); + break; + } catch (e) { } + } + + return returnValue; + } +}; + +/* Based on Alex Arnell's inheritance implementation. */ + +var Class = (function() { + + var IS_DONTENUM_BUGGY = (function(){ + for (var p in { toString: 1 }) { + if (p === 'toString') return false; + } + return true; + })(); + + function subclass() {}; + function create() { + var parent = null, properties = $A(arguments); + if (Object.isFunction(properties[0])) + parent = properties.shift(); + + function klass() { + this.initialize.apply(this, arguments); + } + + Object.extend(klass, Class.Methods); + klass.superclass = parent; + klass.subclasses = []; + + if (parent) { + subclass.prototype = parent.prototype; + klass.prototype = new subclass; + parent.subclasses.push(klass); + } + + for (var i = 0, length = properties.length; i < length; i++) + klass.addMethods(properties[i]); + + if (!klass.prototype.initialize) + klass.prototype.initialize = Prototype.emptyFunction; + + klass.prototype.constructor = klass; + return klass; + } + + function addMethods(source) { + var ancestor = this.superclass && this.superclass.prototype, + properties = Object.keys(source); + + if (IS_DONTENUM_BUGGY) { + if (source.toString != Object.prototype.toString) + properties.push("toString"); + if (source.valueOf != Object.prototype.valueOf) + properties.push("valueOf"); + } + + for (var i = 0, length = properties.length; i < length; i++) { + var property = properties[i], value = source[property]; + if (ancestor && Object.isFunction(value) && + value.argumentNames()[0] == "$super") { + var method = value; + value = (function(m) { + return function() { return ancestor[m].apply(this, arguments); }; + })(property).wrap(method); + + value.valueOf = method.valueOf.bind(method); + value.toString = method.toString.bind(method); + } + this.prototype[property] = value; + } + + return this; + } + + return { + create: create, + Methods: { + addMethods: addMethods + } + }; +})(); +(function() { + + var _toString = Object.prototype.toString, + NULL_TYPE = 'Null', + UNDEFINED_TYPE = 'Undefined', + BOOLEAN_TYPE = 'Boolean', + NUMBER_TYPE = 'Number', + STRING_TYPE = 'String', + OBJECT_TYPE = 'Object', + FUNCTION_CLASS = '[object Function]', + BOOLEAN_CLASS = '[object Boolean]', + NUMBER_CLASS = '[object Number]', + STRING_CLASS = '[object String]', + ARRAY_CLASS = '[object Array]', + DATE_CLASS = '[object Date]', + NATIVE_JSON_STRINGIFY_SUPPORT = window.JSON && + typeof JSON.stringify === 'function' && + JSON.stringify(0) === '0' && + typeof JSON.stringify(Prototype.K) === 'undefined'; + + function Type(o) { + switch(o) { + case null: return NULL_TYPE; + case (void 0): return UNDEFINED_TYPE; + } + var type = typeof o; + switch(type) { + case 'boolean': return BOOLEAN_TYPE; + case 'number': return NUMBER_TYPE; + case 'string': return STRING_TYPE; + } + return OBJECT_TYPE; + } + + function extend(destination, source) { + for (var property in source) + destination[property] = source[property]; + return destination; + } + + function inspect(object) { + try { + if (isUndefined(object)) return 'undefined'; + if (object === null) return 'null'; + return object.inspect ? object.inspect() : String(object); + } catch (e) { + if (e instanceof RangeError) return '...'; + throw e; + } + } + + function toJSON(value) { + return Str('', { '': value }, []); + } + + function Str(key, holder, stack) { + var value = holder[key], + type = typeof value; + + if (Type(value) === OBJECT_TYPE && typeof value.toJSON === 'function') { + value = value.toJSON(key); + } + + var _class = _toString.call(value); + + switch (_class) { + case NUMBER_CLASS: + case BOOLEAN_CLASS: + case STRING_CLASS: + value = value.valueOf(); + } + + switch (value) { + case null: return 'null'; + case true: return 'true'; + case false: return 'false'; + } + + type = typeof value; + switch (type) { + case 'string': + return value.inspect(true); + case 'number': + return isFinite(value) ? String(value) : 'null'; + case 'object': + + for (var i = 0, length = stack.length; i < length; i++) { + if (stack[i] === value) { throw new TypeError(); } + } + stack.push(value); + + var partial = []; + if (_class === ARRAY_CLASS) { + for (var i = 0, length = value.length; i < length; i++) { + var str = Str(i, value, stack); + partial.push(typeof str === 'undefined' ? 'null' : str); + } + partial = '[' + partial.join(',') + ']'; + } else { + var keys = Object.keys(value); + for (var i = 0, length = keys.length; i < length; i++) { + var key = keys[i], str = Str(key, value, stack); + if (typeof str !== "undefined") { + partial.push(key.inspect(true)+ ':' + str); + } + } + partial = '{' + partial.join(',') + '}'; + } + stack.pop(); + return partial; + } + } + + function stringify(object) { + return JSON.stringify(object); + } + + function toQueryString(object) { + return $H(object).toQueryString(); + } + + function toHTML(object) { + return object && object.toHTML ? object.toHTML() : String.interpret(object); + } + + function keys(object) { + if (Type(object) !== OBJECT_TYPE) { throw new TypeError(); } + var results = []; + for (var property in object) { + if (object.hasOwnProperty(property)) { + results.push(property); + } + } + return results; + } + + function values(object) { + var results = []; + for (var property in object) + results.push(object[property]); + return results; + } + + function clone(object) { + return extend({ }, object); + } + + function isElement(object) { + return !!(object && object.nodeType == 1); + } + + function isArray(object) { + return _toString.call(object) === ARRAY_CLASS; + } + + var hasNativeIsArray = (typeof Array.isArray == 'function') + && Array.isArray([]) && !Array.isArray({}); + + if (hasNativeIsArray) { + isArray = Array.isArray; + } + + function isHash(object) { + return object instanceof Hash; + } + + function isFunction(object) { + return _toString.call(object) === FUNCTION_CLASS; + } + + function isString(object) { + return _toString.call(object) === STRING_CLASS; + } + + function isNumber(object) { + return _toString.call(object) === NUMBER_CLASS; + } + + function isDate(object) { + return _toString.call(object) === DATE_CLASS; + } + + function isUndefined(object) { + return typeof object === "undefined"; + } + + extend(Object, { + extend: extend, + inspect: inspect, + toJSON: NATIVE_JSON_STRINGIFY_SUPPORT ? stringify : toJSON, + toQueryString: toQueryString, + toHTML: toHTML, + keys: Object.keys || keys, + values: values, + clone: clone, + isElement: isElement, + isArray: isArray, + isHash: isHash, + isFunction: isFunction, + isString: isString, + isNumber: isNumber, + isDate: isDate, + isUndefined: isUndefined + }); +})(); +Object.extend(Function.prototype, (function() { + var slice = Array.prototype.slice; + + function update(array, args) { + var arrayLength = array.length, length = args.length; + while (length--) array[arrayLength + length] = args[length]; + return array; + } + + function merge(array, args) { + array = slice.call(array, 0); + return update(array, args); + } + + function argumentNames() { + var names = this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1] + .replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '') + .replace(/\s+/g, '').split(','); + return names.length == 1 && !names[0] ? [] : names; + } + + function bind(context) { + if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this; + var __method = this, args = slice.call(arguments, 1); + return function() { + var a = merge(args, arguments); + return __method.apply(context, a); + } + } + + function bindAsEventListener(context) { + var __method = this, args = slice.call(arguments, 1); + return function(event) { + var a = update([event || window.event], args); + return __method.apply(context, a); + } + } + + function curry() { + if (!arguments.length) return this; + var __method = this, args = slice.call(arguments, 0); + return function() { + var a = merge(args, arguments); + return __method.apply(this, a); + } + } + + function delay(timeout) { + var __method = this, args = slice.call(arguments, 1); + timeout = timeout * 1000; + return window.setTimeout(function() { + return __method.apply(__method, args); + }, timeout); + } + + function defer() { + var args = update([0.01], arguments); + return this.delay.apply(this, args); + } + + function wrap(wrapper) { + var __method = this; + return function() { + var a = update([__method.bind(this)], arguments); + return wrapper.apply(this, a); + } + } + + function methodize() { + if (this._methodized) return this._methodized; + var __method = this; + return this._methodized = function() { + var a = update([this], arguments); + return __method.apply(null, a); + }; + } + + return { + argumentNames: argumentNames, + bind: bind, + bindAsEventListener: bindAsEventListener, + curry: curry, + delay: delay, + defer: defer, + wrap: wrap, + methodize: methodize + } +})()); + + + +(function(proto) { + + + function toISOString() { + return this.getUTCFullYear() + '-' + + (this.getUTCMonth() + 1).toPaddedString(2) + '-' + + this.getUTCDate().toPaddedString(2) + 'T' + + this.getUTCHours().toPaddedString(2) + ':' + + this.getUTCMinutes().toPaddedString(2) + ':' + + this.getUTCSeconds().toPaddedString(2) + 'Z'; + } + + + function toJSON() { + return this.toISOString(); + } + + if (!proto.toISOString) proto.toISOString = toISOString; + if (!proto.toJSON) proto.toJSON = toJSON; + +})(Date.prototype); + + +RegExp.prototype.match = RegExp.prototype.test; + +RegExp.escape = function(str) { + return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); +}; +var PeriodicalExecuter = Class.create({ + initialize: function(callback, frequency) { + this.callback = callback; + this.frequency = frequency; + this.currentlyExecuting = false; + + this.registerCallback(); + }, + + registerCallback: function() { + this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); + }, + + execute: function() { + this.callback(this); + }, + + stop: function() { + if (!this.timer) return; + clearInterval(this.timer); + this.timer = null; + }, + + onTimerEvent: function() { + if (!this.currentlyExecuting) { + try { + this.currentlyExecuting = true; + this.execute(); + this.currentlyExecuting = false; + } catch(e) { + this.currentlyExecuting = false; + throw e; + } + } + } +}); +Object.extend(String, { + interpret: function(value) { + return value == null ? '' : String(value); + }, + specialChar: { + '\b': '\\b', + '\t': '\\t', + '\n': '\\n', + '\f': '\\f', + '\r': '\\r', + '\\': '\\\\' + } +}); + +Object.extend(String.prototype, (function() { + var NATIVE_JSON_PARSE_SUPPORT = window.JSON && + typeof JSON.parse === 'function' && + JSON.parse('{"test": true}').test; + + function prepareReplacement(replacement) { + if (Object.isFunction(replacement)) return replacement; + var template = new Template(replacement); + return function(match) { return template.evaluate(match) }; + } + + function gsub(pattern, replacement) { + var result = '', source = this, match; + replacement = prepareReplacement(replacement); + + if (Object.isString(pattern)) + pattern = RegExp.escape(pattern); + + if (!(pattern.length || pattern.source)) { + replacement = replacement(''); + return replacement + source.split('').join(replacement) + replacement; + } + + while (source.length > 0) { + if (match = source.match(pattern)) { + result += source.slice(0, match.index); + result += String.interpret(replacement(match)); + source = source.slice(match.index + match[0].length); + } else { + result += source, source = ''; + } + } + return result; + } + + function sub(pattern, replacement, count) { + replacement = prepareReplacement(replacement); + count = Object.isUndefined(count) ? 1 : count; + + return this.gsub(pattern, function(match) { + if (--count < 0) return match[0]; + return replacement(match); + }); + } + + function scan(pattern, iterator) { + this.gsub(pattern, iterator); + return String(this); + } + + function truncate(length, truncation) { + length = length || 30; + truncation = Object.isUndefined(truncation) ? '...' : truncation; + return this.length > length ? + this.slice(0, length - truncation.length) + truncation : String(this); + } + + function strip() { + return this.replace(/^\s+/, '').replace(/\s+$/, ''); + } + + function stripTags() { + return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi, ''); + } + + function stripScripts() { + return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); + } + + function extractScripts() { + var matchAll = new RegExp(Prototype.ScriptFragment, 'img'), + matchOne = new RegExp(Prototype.ScriptFragment, 'im'); + return (this.match(matchAll) || []).map(function(scriptTag) { + return (scriptTag.match(matchOne) || ['', ''])[1]; + }); + } + + function evalScripts() { + return this.extractScripts().map(function(script) { return eval(script) }); + } + + function escapeHTML() { + return this.replace(/&/g,'&').replace(//g,'>'); + } + + function unescapeHTML() { + return this.stripTags().replace(/</g,'<').replace(/>/g,'>').replace(/&/g,'&'); + } + + + function toQueryParams(separator) { + var match = this.strip().match(/([^?#]*)(#.*)?$/); + if (!match) return { }; + + return match[1].split(separator || '&').inject({ }, function(hash, pair) { + if ((pair = pair.split('='))[0]) { + var key = decodeURIComponent(pair.shift()), + value = pair.length > 1 ? pair.join('=') : pair[0]; + + if (value != undefined) value = decodeURIComponent(value); + + if (key in hash) { + if (!Object.isArray(hash[key])) hash[key] = [hash[key]]; + hash[key].push(value); + } + else hash[key] = value; + } + return hash; + }); + } + + function toArray() { + return this.split(''); + } + + function succ() { + return this.slice(0, this.length - 1) + + String.fromCharCode(this.charCodeAt(this.length - 1) + 1); + } + + function times(count) { + return count < 1 ? '' : new Array(count + 1).join(this); + } + + function camelize() { + return this.replace(/-+(.)?/g, function(match, chr) { + return chr ? chr.toUpperCase() : ''; + }); + } + + function capitalize() { + return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); + } + + function underscore() { + return this.replace(/::/g, '/') + .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2') + .replace(/([a-z\d])([A-Z])/g, '$1_$2') + .replace(/-/g, '_') + .toLowerCase(); + } + + function dasherize() { + return this.replace(/_/g, '-'); + } + + function inspect(useDoubleQuotes) { + var escapedString = this.replace(/[\x00-\x1f\\]/g, function(character) { + if (character in String.specialChar) { + return String.specialChar[character]; + } + return '\\u00' + character.charCodeAt().toPaddedString(2, 16); + }); + if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"'; + return "'" + escapedString.replace(/'/g, '\\\'') + "'"; + } + + function unfilterJSON(filter) { + return this.replace(filter || Prototype.JSONFilter, '$1'); + } + + function isJSON() { + var str = this; + if (str.blank()) return false; + str = str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@'); + str = str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']'); + str = str.replace(/(?:^|:|,)(?:\s*\[)+/g, ''); + return (/^[\],:{}\s]*$/).test(str); + } + + function evalJSON(sanitize) { + var json = this.unfilterJSON(), + cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; + if (cx.test(json)) { + json = json.replace(cx, function (a) { + return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }); + } + try { + if (!sanitize || json.isJSON()) return eval('(' + json + ')'); + } catch (e) { } + throw new SyntaxError('Badly formed JSON string: ' + this.inspect()); + } + + function parseJSON() { + var json = this.unfilterJSON(); + return JSON.parse(json); + } + + function include(pattern) { + return this.indexOf(pattern) > -1; + } + + function startsWith(pattern) { + return this.lastIndexOf(pattern, 0) === 0; + } + + function endsWith(pattern) { + var d = this.length - pattern.length; + return d >= 0 && this.indexOf(pattern, d) === d; + } + + function empty() { + return this == ''; + } + + function blank() { + return /^\s*$/.test(this); + } + + function interpolate(object, pattern) { + return new Template(this, pattern).evaluate(object); + } + + return { + gsub: gsub, + sub: sub, + scan: scan, + truncate: truncate, + strip: String.prototype.trim || strip, + stripTags: stripTags, + stripScripts: stripScripts, + extractScripts: extractScripts, + evalScripts: evalScripts, + escapeHTML: escapeHTML, + unescapeHTML: unescapeHTML, + toQueryParams: toQueryParams, + parseQuery: toQueryParams, + toArray: toArray, + succ: succ, + times: times, + camelize: camelize, + capitalize: capitalize, + underscore: underscore, + dasherize: dasherize, + inspect: inspect, + unfilterJSON: unfilterJSON, + isJSON: isJSON, + evalJSON: NATIVE_JSON_PARSE_SUPPORT ? parseJSON : evalJSON, + include: include, + startsWith: startsWith, + endsWith: endsWith, + empty: empty, + blank: blank, + interpolate: interpolate + }; +})()); + +var Template = Class.create({ + initialize: function(template, pattern) { + this.template = template.toString(); + this.pattern = pattern || Template.Pattern; + }, + + evaluate: function(object) { + if (object && Object.isFunction(object.toTemplateReplacements)) + object = object.toTemplateReplacements(); + + return this.template.gsub(this.pattern, function(match) { + if (object == null) return (match[1] + ''); + + var before = match[1] || ''; + if (before == '\\') return match[2]; + + var ctx = object, expr = match[3], + pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/; + + match = pattern.exec(expr); + if (match == null) return before; + + while (match != null) { + var comp = match[1].startsWith('[') ? match[2].replace(/\\\\]/g, ']') : match[1]; + ctx = ctx[comp]; + if (null == ctx || '' == match[3]) break; + expr = expr.substring('[' == match[3] ? match[1].length : match[0].length); + match = pattern.exec(expr); + } + + return before + String.interpret(ctx); + }); + } +}); +Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; + +var $break = { }; + +var Enumerable = (function() { + function each(iterator, context) { + var index = 0; + try { + this._each(function(value) { + iterator.call(context, value, index++); + }); + } catch (e) { + if (e != $break) throw e; + } + return this; + } + + function eachSlice(number, iterator, context) { + var index = -number, slices = [], array = this.toArray(); + if (number < 1) return array; + while ((index += number) < array.length) + slices.push(array.slice(index, index+number)); + return slices.collect(iterator, context); + } + + function all(iterator, context) { + iterator = iterator || Prototype.K; + var result = true; + this.each(function(value, index) { + result = result && !!iterator.call(context, value, index); + if (!result) throw $break; + }); + return result; + } + + function any(iterator, context) { + iterator = iterator || Prototype.K; + var result = false; + this.each(function(value, index) { + if (result = !!iterator.call(context, value, index)) + throw $break; + }); + return result; + } + + function collect(iterator, context) { + iterator = iterator || Prototype.K; + var results = []; + this.each(function(value, index) { + results.push(iterator.call(context, value, index)); + }); + return results; + } + + function detect(iterator, context) { + var result; + this.each(function(value, index) { + if (iterator.call(context, value, index)) { + result = value; + throw $break; + } + }); + return result; + } + + function findAll(iterator, context) { + var results = []; + this.each(function(value, index) { + if (iterator.call(context, value, index)) + results.push(value); + }); + return results; + } + + function grep(filter, iterator, context) { + iterator = iterator || Prototype.K; + var results = []; + + if (Object.isString(filter)) + filter = new RegExp(RegExp.escape(filter)); + + this.each(function(value, index) { + if (filter.match(value)) + results.push(iterator.call(context, value, index)); + }); + return results; + } + + function include(object) { + if (Object.isFunction(this.indexOf)) + if (this.indexOf(object) != -1) return true; + + var found = false; + this.each(function(value) { + if (value == object) { + found = true; + throw $break; + } + }); + return found; + } + + function inGroupsOf(number, fillWith) { + fillWith = Object.isUndefined(fillWith) ? null : fillWith; + return this.eachSlice(number, function(slice) { + while(slice.length < number) slice.push(fillWith); + return slice; + }); + } + + function inject(memo, iterator, context) { + this.each(function(value, index) { + memo = iterator.call(context, memo, value, index); + }); + return memo; + } + + function invoke(method) { + var args = $A(arguments).slice(1); + return this.map(function(value) { + return value[method].apply(value, args); + }); + } + + function max(iterator, context) { + iterator = iterator || Prototype.K; + var result; + this.each(function(value, index) { + value = iterator.call(context, value, index); + if (result == null || value >= result) + result = value; + }); + return result; + } + + function min(iterator, context) { + iterator = iterator || Prototype.K; + var result; + this.each(function(value, index) { + value = iterator.call(context, value, index); + if (result == null || value < result) + result = value; + }); + return result; + } + + function partition(iterator, context) { + iterator = iterator || Prototype.K; + var trues = [], falses = []; + this.each(function(value, index) { + (iterator.call(context, value, index) ? + trues : falses).push(value); + }); + return [trues, falses]; + } + + function pluck(property) { + var results = []; + this.each(function(value) { + results.push(value[property]); + }); + return results; + } + + function reject(iterator, context) { + var results = []; + this.each(function(value, index) { + if (!iterator.call(context, value, index)) + results.push(value); + }); + return results; + } + + function sortBy(iterator, context) { + return this.map(function(value, index) { + return { + value: value, + criteria: iterator.call(context, value, index) + }; + }).sort(function(left, right) { + var a = left.criteria, b = right.criteria; + return a < b ? -1 : a > b ? 1 : 0; + }).pluck('value'); + } + + function toArray() { + return this.map(); + } + + function zip() { + var iterator = Prototype.K, args = $A(arguments); + if (Object.isFunction(args.last())) + iterator = args.pop(); + + var collections = [this].concat(args).map($A); + return this.map(function(value, index) { + return iterator(collections.pluck(index)); + }); + } + + function size() { + return this.toArray().length; + } + + function inspect() { + return '#'; + } + + + + + + + + + + return { + each: each, + eachSlice: eachSlice, + all: all, + every: all, + any: any, + some: any, + collect: collect, + map: collect, + detect: detect, + findAll: findAll, + select: findAll, + filter: findAll, + grep: grep, + include: include, + member: include, + inGroupsOf: inGroupsOf, + inject: inject, + invoke: invoke, + max: max, + min: min, + partition: partition, + pluck: pluck, + reject: reject, + sortBy: sortBy, + toArray: toArray, + entries: toArray, + zip: zip, + size: size, + inspect: inspect, + find: detect + }; +})(); + +function $A(iterable) { + if (!iterable) return []; + if ('toArray' in Object(iterable)) return iterable.toArray(); + var length = iterable.length || 0, results = new Array(length); + while (length--) results[length] = iterable[length]; + return results; +} + + +function $w(string) { + if (!Object.isString(string)) return []; + string = string.strip(); + return string ? string.split(/\s+/) : []; +} + +Array.from = $A; + + +(function() { + var arrayProto = Array.prototype, + slice = arrayProto.slice, + _each = arrayProto.forEach; // use native browser JS 1.6 implementation if available + + function each(iterator, context) { + for (var i = 0, length = this.length >>> 0; i < length; i++) { + if (i in this) iterator.call(context, this[i], i, this); + } + } + if (!_each) _each = each; + + function clear() { + this.length = 0; + return this; + } + + function first() { + return this[0]; + } + + function last() { + return this[this.length - 1]; + } + + function compact() { + return this.select(function(value) { + return value != null; + }); + } + + function flatten() { + return this.inject([], function(array, value) { + if (Object.isArray(value)) + return array.concat(value.flatten()); + array.push(value); + return array; + }); + } + + function without() { + var values = slice.call(arguments, 0); + return this.select(function(value) { + return !values.include(value); + }); + } + + function reverse(inline) { + return (inline === false ? this.toArray() : this)._reverse(); + } + + function uniq(sorted) { + return this.inject([], function(array, value, index) { + if (0 == index || (sorted ? array.last() != value : !array.include(value))) + array.push(value); + return array; + }); + } + + function intersect(array) { + return this.uniq().findAll(function(item) { + return array.detect(function(value) { return item === value }); + }); + } + + + function clone() { + return slice.call(this, 0); + } + + function size() { + return this.length; + } + + function inspect() { + return '[' + this.map(Object.inspect).join(', ') + ']'; + } + + function indexOf(item, i) { + i || (i = 0); + var length = this.length; + if (i < 0) i = length + i; + for (; i < length; i++) + if (this[i] === item) return i; + return -1; + } + + function lastIndexOf(item, i) { + i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1; + var n = this.slice(0, i).reverse().indexOf(item); + return (n < 0) ? n : i - n - 1; + } + + function concat() { + var array = slice.call(this, 0), item; + for (var i = 0, length = arguments.length; i < length; i++) { + item = arguments[i]; + if (Object.isArray(item) && !('callee' in item)) { + for (var j = 0, arrayLength = item.length; j < arrayLength; j++) + array.push(item[j]); + } else { + array.push(item); + } + } + return array; + } + + Object.extend(arrayProto, Enumerable); + + if (!arrayProto._reverse) + arrayProto._reverse = arrayProto.reverse; + + Object.extend(arrayProto, { + _each: _each, + clear: clear, + first: first, + last: last, + compact: compact, + flatten: flatten, + without: without, + reverse: reverse, + uniq: uniq, + intersect: intersect, + clone: clone, + toArray: clone, + size: size, + inspect: inspect + }); + + var CONCAT_ARGUMENTS_BUGGY = (function() { + return [].concat(arguments)[0][0] !== 1; + })(1,2) + + if (CONCAT_ARGUMENTS_BUGGY) arrayProto.concat = concat; + + if (!arrayProto.indexOf) arrayProto.indexOf = indexOf; + if (!arrayProto.lastIndexOf) arrayProto.lastIndexOf = lastIndexOf; +})(); +function $H(object) { + return new Hash(object); +}; + +var Hash = Class.create(Enumerable, (function() { + function initialize(object) { + this._object = Object.isHash(object) ? object.toObject() : Object.clone(object); + } + + + function _each(iterator) { + for (var key in this._object) { + var value = this._object[key], pair = [key, value]; + pair.key = key; + pair.value = value; + iterator(pair); + } + } + + function set(key, value) { + return this._object[key] = value; + } + + function get(key) { + if (this._object[key] !== Object.prototype[key]) + return this._object[key]; + } + + function unset(key) { + var value = this._object[key]; + delete this._object[key]; + return value; + } + + function toObject() { + return Object.clone(this._object); + } + + + + function keys() { + return this.pluck('key'); + } + + function values() { + return this.pluck('value'); + } + + function index(value) { + var match = this.detect(function(pair) { + return pair.value === value; + }); + return match && match.key; + } + + function merge(object) { + return this.clone().update(object); + } + + function update(object) { + return new Hash(object).inject(this, function(result, pair) { + result.set(pair.key, pair.value); + return result; + }); + } + + function toQueryPair(key, value) { + if (Object.isUndefined(value)) return key; + return key + '=' + encodeURIComponent(String.interpret(value)); + } + + function toQueryString() { + return this.inject([], function(results, pair) { + var key = encodeURIComponent(pair.key), values = pair.value; + + if (values && typeof values == 'object') { + if (Object.isArray(values)) { + var queryValues = []; + for (var i = 0, len = values.length, value; i < len; i++) { + value = values[i]; + queryValues.push(toQueryPair(key, value)); + } + return results.concat(queryValues); + } + } else results.push(toQueryPair(key, values)); + return results; + }).join('&'); + } + + function inspect() { + return '#'; + } + + function clone() { + return new Hash(this); + } + + return { + initialize: initialize, + _each: _each, + set: set, + get: get, + unset: unset, + toObject: toObject, + toTemplateReplacements: toObject, + keys: keys, + values: values, + index: index, + merge: merge, + update: update, + toQueryString: toQueryString, + inspect: inspect, + toJSON: toObject, + clone: clone + }; +})()); + +Hash.from = $H; +Object.extend(Number.prototype, (function() { + function toColorPart() { + return this.toPaddedString(2, 16); + } + + function succ() { + return this + 1; + } + + function times(iterator, context) { + $R(0, this, true).each(iterator, context); + return this; + } + + function toPaddedString(length, radix) { + var string = this.toString(radix || 10); + return '0'.times(length - string.length) + string; + } + + function abs() { + return Math.abs(this); + } + + function round() { + return Math.round(this); + } + + function ceil() { + return Math.ceil(this); + } + + function floor() { + return Math.floor(this); + } + + return { + toColorPart: toColorPart, + succ: succ, + times: times, + toPaddedString: toPaddedString, + abs: abs, + round: round, + ceil: ceil, + floor: floor + }; +})()); + +function $R(start, end, exclusive) { + return new ObjectRange(start, end, exclusive); +} + +var ObjectRange = Class.create(Enumerable, (function() { + function initialize(start, end, exclusive) { + this.start = start; + this.end = end; + this.exclusive = exclusive; + } + + function _each(iterator) { + var value = this.start; + while (this.include(value)) { + iterator(value); + value = value.succ(); + } + } + + function include(value) { + if (value < this.start) + return false; + if (this.exclusive) + return value < this.end; + return value <= this.end; + } + + return { + initialize: initialize, + _each: _each, + include: include + }; +})()); + + + +var Ajax = { + getTransport: function() { + return Try.these( + function() {return new XMLHttpRequest()}, + function() {return new ActiveXObject('Msxml2.XMLHTTP')}, + function() {return new ActiveXObject('Microsoft.XMLHTTP')} + ) || false; + }, + + activeRequestCount: 0 +}; + +Ajax.Responders = { + responders: [], + + _each: function(iterator) { + this.responders._each(iterator); + }, + + register: function(responder) { + if (!this.include(responder)) + this.responders.push(responder); + }, + + unregister: function(responder) { + this.responders = this.responders.without(responder); + }, + + dispatch: function(callback, request, transport, json) { + this.each(function(responder) { + if (Object.isFunction(responder[callback])) { + try { + responder[callback].apply(responder, [request, transport, json]); + } catch (e) { } + } + }); + } +}; + +Object.extend(Ajax.Responders, Enumerable); + +Ajax.Responders.register({ + onCreate: function() { Ajax.activeRequestCount++ }, + onComplete: function() { Ajax.activeRequestCount-- } +}); +Ajax.Base = Class.create({ + initialize: function(options) { + this.options = { + method: 'post', + asynchronous: true, + contentType: 'application/x-www-form-urlencoded', + encoding: 'UTF-8', + parameters: '', + evalJSON: true, + evalJS: true + }; + Object.extend(this.options, options || { }); + + this.options.method = this.options.method.toLowerCase(); + + if (Object.isHash(this.options.parameters)) + this.options.parameters = this.options.parameters.toObject(); + } +}); +Ajax.Request = Class.create(Ajax.Base, { + _complete: false, + + initialize: function($super, url, options) { + $super(options); + this.transport = Ajax.getTransport(); + this.request(url); + }, + + request: function(url) { + this.url = url; + this.method = this.options.method; + var params = Object.isString(this.options.parameters) ? + this.options.parameters : + Object.toQueryString(this.options.parameters); + + if (!['get', 'post'].include(this.method)) { + params += (params ? '&' : '') + "_method=" + this.method; + this.method = 'post'; + } + + if (params && this.method === 'get') { + this.url += (this.url.include('?') ? '&' : '?') + params; + } + + this.parameters = params.toQueryParams(); + + try { + var response = new Ajax.Response(this); + if (this.options.onCreate) this.options.onCreate(response); + Ajax.Responders.dispatch('onCreate', this, response); + + this.transport.open(this.method.toUpperCase(), this.url, + this.options.asynchronous); + + if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1); + + this.transport.onreadystatechange = this.onStateChange.bind(this); + this.setRequestHeaders(); + + this.body = this.method == 'post' ? (this.options.postBody || params) : null; + this.transport.send(this.body); + + /* Force Firefox to handle ready state 4 for synchronous requests */ + if (!this.options.asynchronous && this.transport.overrideMimeType) + this.onStateChange(); + + } + catch (e) { + this.dispatchException(e); + } + }, + + onStateChange: function() { + var readyState = this.transport.readyState; + if (readyState > 1 && !((readyState == 4) && this._complete)) + this.respondToReadyState(this.transport.readyState); + }, + + setRequestHeaders: function() { + var headers = { + 'X-Requested-With': 'XMLHttpRequest', + 'X-Prototype-Version': Prototype.Version, + 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' + }; + + if (this.method == 'post') { + headers['Content-type'] = this.options.contentType + + (this.options.encoding ? '; charset=' + this.options.encoding : ''); + + /* Force "Connection: close" for older Mozilla browsers to work + * around a bug where XMLHttpRequest sends an incorrect + * Content-length header. See Mozilla Bugzilla #246651. + */ + if (this.transport.overrideMimeType && + (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005) + headers['Connection'] = 'close'; + } + + if (typeof this.options.requestHeaders == 'object') { + var extras = this.options.requestHeaders; + + if (Object.isFunction(extras.push)) + for (var i = 0, length = extras.length; i < length; i += 2) + headers[extras[i]] = extras[i+1]; + else + $H(extras).each(function(pair) { headers[pair.key] = pair.value }); + } + + for (var name in headers) + this.transport.setRequestHeader(name, headers[name]); + }, + + success: function() { + var status = this.getStatus(); + return !status || (status >= 200 && status < 300) || status == 304; + }, + + getStatus: function() { + try { + if (this.transport.status === 1223) return 204; + return this.transport.status || 0; + } catch (e) { return 0 } + }, + + respondToReadyState: function(readyState) { + var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this); + + if (state == 'Complete') { + try { + this._complete = true; + (this.options['on' + response.status] + || this.options['on' + (this.success() ? 'Success' : 'Failure')] + || Prototype.emptyFunction)(response, response.headerJSON); + } catch (e) { + this.dispatchException(e); + } + + var contentType = response.getHeader('Content-type'); + if (this.options.evalJS == 'force' + || (this.options.evalJS && this.isSameOrigin() && contentType + && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))) + this.evalResponse(); + } + + try { + (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON); + Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON); + } catch (e) { + this.dispatchException(e); + } + + if (state == 'Complete') { + this.transport.onreadystatechange = Prototype.emptyFunction; + } + }, + + isSameOrigin: function() { + var m = this.url.match(/^\s*https?:\/\/[^\/]*/); + return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({ + protocol: location.protocol, + domain: document.domain, + port: location.port ? ':' + location.port : '' + })); + }, + + getHeader: function(name) { + try { + return this.transport.getResponseHeader(name) || null; + } catch (e) { return null; } + }, + + evalResponse: function() { + try { + return eval((this.transport.responseText || '').unfilterJSON()); + } catch (e) { + this.dispatchException(e); + } + }, + + dispatchException: function(exception) { + (this.options.onException || Prototype.emptyFunction)(this, exception); + Ajax.Responders.dispatch('onException', this, exception); + } +}); + +Ajax.Request.Events = + ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; + + + + + + + + +Ajax.Response = Class.create({ + initialize: function(request){ + this.request = request; + var transport = this.transport = request.transport, + readyState = this.readyState = transport.readyState; + + if ((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) { + this.status = this.getStatus(); + this.statusText = this.getStatusText(); + this.responseText = String.interpret(transport.responseText); + this.headerJSON = this._getHeaderJSON(); + } + + if (readyState == 4) { + var xml = transport.responseXML; + this.responseXML = Object.isUndefined(xml) ? null : xml; + this.responseJSON = this._getResponseJSON(); + } + }, + + status: 0, + + statusText: '', + + getStatus: Ajax.Request.prototype.getStatus, + + getStatusText: function() { + try { + return this.transport.statusText || ''; + } catch (e) { return '' } + }, + + getHeader: Ajax.Request.prototype.getHeader, + + getAllHeaders: function() { + try { + return this.getAllResponseHeaders(); + } catch (e) { return null } + }, + + getResponseHeader: function(name) { + return this.transport.getResponseHeader(name); + }, + + getAllResponseHeaders: function() { + return this.transport.getAllResponseHeaders(); + }, + + _getHeaderJSON: function() { + var json = this.getHeader('X-JSON'); + if (!json) return null; + json = decodeURIComponent(escape(json)); + try { + return json.evalJSON(this.request.options.sanitizeJSON || + !this.request.isSameOrigin()); + } catch (e) { + this.request.dispatchException(e); + } + }, + + _getResponseJSON: function() { + var options = this.request.options; + if (!options.evalJSON || (options.evalJSON != 'force' && + !(this.getHeader('Content-type') || '').include('application/json')) || + this.responseText.blank()) + return null; + try { + return this.responseText.evalJSON(options.sanitizeJSON || + !this.request.isSameOrigin()); + } catch (e) { + this.request.dispatchException(e); + } + } +}); + +Ajax.Updater = Class.create(Ajax.Request, { + initialize: function($super, container, url, options) { + this.container = { + success: (container.success || container), + failure: (container.failure || (container.success ? null : container)) + }; + + options = Object.clone(options); + var onComplete = options.onComplete; + options.onComplete = (function(response, json) { + this.updateContent(response.responseText); + if (Object.isFunction(onComplete)) onComplete(response, json); + }).bind(this); + + $super(url, options); + }, + + updateContent: function(responseText) { + var receiver = this.container[this.success() ? 'success' : 'failure'], + options = this.options; + + if (!options.evalScripts) responseText = responseText.stripScripts(); + + if (receiver = $(receiver)) { + if (options.insertion) { + if (Object.isString(options.insertion)) { + var insertion = { }; insertion[options.insertion] = responseText; + receiver.insert(insertion); + } + else options.insertion(receiver, responseText); + } + else receiver.update(responseText); + } + } +}); + +Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { + initialize: function($super, container, url, options) { + $super(options); + this.onComplete = this.options.onComplete; + + this.frequency = (this.options.frequency || 2); + this.decay = (this.options.decay || 1); + + this.updater = { }; + this.container = container; + this.url = url; + + this.start(); + }, + + start: function() { + this.options.onComplete = this.updateComplete.bind(this); + this.onTimerEvent(); + }, + + stop: function() { + this.updater.options.onComplete = undefined; + clearTimeout(this.timer); + (this.onComplete || Prototype.emptyFunction).apply(this, arguments); + }, + + updateComplete: function(response) { + if (this.options.decay) { + this.decay = (response.responseText == this.lastText ? + this.decay * this.options.decay : 1); + + this.lastText = response.responseText; + } + this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency); + }, + + onTimerEvent: function() { + this.updater = new Ajax.Updater(this.container, this.url, this.options); + } +}); + + +function $(element) { + if (arguments.length > 1) { + for (var i = 0, elements = [], length = arguments.length; i < length; i++) + elements.push($(arguments[i])); + return elements; + } + if (Object.isString(element)) + element = document.getElementById(element); + return Element.extend(element); +} + +if (Prototype.BrowserFeatures.XPath) { + document._getElementsByXPath = function(expression, parentElement) { + var results = []; + var query = document.evaluate(expression, $(parentElement) || document, + null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); + for (var i = 0, length = query.snapshotLength; i < length; i++) + results.push(Element.extend(query.snapshotItem(i))); + return results; + }; +} + +/*--------------------------------------------------------------------------*/ + +if (!Node) var Node = { }; + +if (!Node.ELEMENT_NODE) { + Object.extend(Node, { + ELEMENT_NODE: 1, + ATTRIBUTE_NODE: 2, + TEXT_NODE: 3, + CDATA_SECTION_NODE: 4, + ENTITY_REFERENCE_NODE: 5, + ENTITY_NODE: 6, + PROCESSING_INSTRUCTION_NODE: 7, + COMMENT_NODE: 8, + DOCUMENT_NODE: 9, + DOCUMENT_TYPE_NODE: 10, + DOCUMENT_FRAGMENT_NODE: 11, + NOTATION_NODE: 12 + }); +} + + + +(function(global) { + function shouldUseCache(tagName, attributes) { + if (tagName === 'select') return false; + if ('type' in attributes) return false; + return true; + } + + var HAS_EXTENDED_CREATE_ELEMENT_SYNTAX = (function(){ + try { + var el = document.createElement(''); + return el.tagName.toLowerCase() === 'input' && el.name === 'x'; + } + catch(err) { + return false; + } + })(); + + var element = global.Element; + + global.Element = function(tagName, attributes) { + attributes = attributes || { }; + tagName = tagName.toLowerCase(); + var cache = Element.cache; + + if (HAS_EXTENDED_CREATE_ELEMENT_SYNTAX && attributes.name) { + tagName = '<' + tagName + ' name="' + attributes.name + '">'; + delete attributes.name; + return Element.writeAttribute(document.createElement(tagName), attributes); + } + + if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName)); + + var node = shouldUseCache(tagName, attributes) ? + cache[tagName].cloneNode(false) : document.createElement(tagName); + + return Element.writeAttribute(node, attributes); + }; + + Object.extend(global.Element, element || { }); + if (element) global.Element.prototype = element.prototype; + +})(this); + +Element.idCounter = 1; +Element.cache = { }; + +Element._purgeElement = function(element) { + var uid = element._prototypeUID; + if (uid) { + Element.stopObserving(element); + element._prototypeUID = void 0; + delete Element.Storage[uid]; + } +} + +Element.Methods = { + visible: function(element) { + return $(element).style.display != 'none'; + }, + + toggle: function(element) { + element = $(element); + Element[Element.visible(element) ? 'hide' : 'show'](element); + return element; + }, + + hide: function(element) { + element = $(element); + element.style.display = 'none'; + return element; + }, + + show: function(element) { + element = $(element); + element.style.display = ''; + return element; + }, + + remove: function(element) { + element = $(element); + element.parentNode.removeChild(element); + return element; + }, + + update: (function(){ + + var SELECT_ELEMENT_INNERHTML_BUGGY = (function(){ + var el = document.createElement("select"), + isBuggy = true; + el.innerHTML = ""; + if (el.options && el.options[0]) { + isBuggy = el.options[0].nodeName.toUpperCase() !== "OPTION"; + } + el = null; + return isBuggy; + })(); + + var TABLE_ELEMENT_INNERHTML_BUGGY = (function(){ + try { + var el = document.createElement("table"); + if (el && el.tBodies) { + el.innerHTML = "test"; + var isBuggy = typeof el.tBodies[0] == "undefined"; + el = null; + return isBuggy; + } + } catch (e) { + return true; + } + })(); + + var LINK_ELEMENT_INNERHTML_BUGGY = (function() { + try { + var el = document.createElement('div'); + el.innerHTML = ""; + var isBuggy = (el.childNodes.length === 0); + el = null; + return isBuggy; + } catch(e) { + return true; + } + })(); + + var ANY_INNERHTML_BUGGY = SELECT_ELEMENT_INNERHTML_BUGGY || + TABLE_ELEMENT_INNERHTML_BUGGY || LINK_ELEMENT_INNERHTML_BUGGY; + + var SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING = (function () { + var s = document.createElement("script"), + isBuggy = false; + try { + s.appendChild(document.createTextNode("")); + isBuggy = !s.firstChild || + s.firstChild && s.firstChild.nodeType !== 3; + } catch (e) { + isBuggy = true; + } + s = null; + return isBuggy; + })(); + + + function update(element, content) { + element = $(element); + var purgeElement = Element._purgeElement; + + var descendants = element.getElementsByTagName('*'), + i = descendants.length; + while (i--) purgeElement(descendants[i]); + + if (content && content.toElement) + content = content.toElement(); + + if (Object.isElement(content)) + return element.update().insert(content); + + content = Object.toHTML(content); + + var tagName = element.tagName.toUpperCase(); + + if (tagName === 'SCRIPT' && SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING) { + element.text = content; + return element; + } + + if (ANY_INNERHTML_BUGGY) { + if (tagName in Element._insertionTranslations.tags) { + while (element.firstChild) { + element.removeChild(element.firstChild); + } + Element._getContentFromAnonymousElement(tagName, content.stripScripts()) + .each(function(node) { + element.appendChild(node) + }); + } else if (LINK_ELEMENT_INNERHTML_BUGGY && Object.isString(content) && content.indexOf(' -1) { + while (element.firstChild) { + element.removeChild(element.firstChild); + } + var nodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts(), true); + nodes.each(function(node) { element.appendChild(node) }); + } + else { + element.innerHTML = content.stripScripts(); + } + } + else { + element.innerHTML = content.stripScripts(); + } + + content.evalScripts.bind(content).defer(); + return element; + } + + return update; + })(), + + replace: function(element, content) { + element = $(element); + if (content && content.toElement) content = content.toElement(); + else if (!Object.isElement(content)) { + content = Object.toHTML(content); + var range = element.ownerDocument.createRange(); + range.selectNode(element); + content.evalScripts.bind(content).defer(); + content = range.createContextualFragment(content.stripScripts()); + } + element.parentNode.replaceChild(content, element); + return element; + }, + + insert: function(element, insertions) { + element = $(element); + + if (Object.isString(insertions) || Object.isNumber(insertions) || + Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML))) + insertions = {bottom:insertions}; + + var content, insert, tagName, childNodes; + + for (var position in insertions) { + content = insertions[position]; + position = position.toLowerCase(); + insert = Element._insertionTranslations[position]; + + if (content && content.toElement) content = content.toElement(); + if (Object.isElement(content)) { + insert(element, content); + continue; + } + + content = Object.toHTML(content); + + tagName = ((position == 'before' || position == 'after') + ? element.parentNode : element).tagName.toUpperCase(); + + childNodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); + + if (position == 'top' || position == 'after') childNodes.reverse(); + childNodes.each(insert.curry(element)); + + content.evalScripts.bind(content).defer(); + } + + return element; + }, + + wrap: function(element, wrapper, attributes) { + element = $(element); + if (Object.isElement(wrapper)) + $(wrapper).writeAttribute(attributes || { }); + else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes); + else wrapper = new Element('div', wrapper); + if (element.parentNode) + element.parentNode.replaceChild(wrapper, element); + wrapper.appendChild(element); + return wrapper; + }, + + inspect: function(element) { + element = $(element); + var result = '<' + element.tagName.toLowerCase(); + $H({'id': 'id', 'className': 'class'}).each(function(pair) { + var property = pair.first(), + attribute = pair.last(), + value = (element[property] || '').toString(); + if (value) result += ' ' + attribute + '=' + value.inspect(true); + }); + return result + '>'; + }, + + recursivelyCollect: function(element, property, maximumLength) { + element = $(element); + maximumLength = maximumLength || -1; + var elements = []; + + while (element = element[property]) { + if (element.nodeType == 1) + elements.push(Element.extend(element)); + if (elements.length == maximumLength) + break; + } + + return elements; + }, + + ancestors: function(element) { + return Element.recursivelyCollect(element, 'parentNode'); + }, + + descendants: function(element) { + return Element.select(element, "*"); + }, + + firstDescendant: function(element) { + element = $(element).firstChild; + while (element && element.nodeType != 1) element = element.nextSibling; + return $(element); + }, + + immediateDescendants: function(element) { + var results = [], child = $(element).firstChild; + while (child) { + if (child.nodeType === 1) { + results.push(Element.extend(child)); + } + child = child.nextSibling; + } + return results; + }, + + previousSiblings: function(element, maximumLength) { + return Element.recursivelyCollect(element, 'previousSibling'); + }, + + nextSiblings: function(element) { + return Element.recursivelyCollect(element, 'nextSibling'); + }, + + siblings: function(element) { + element = $(element); + return Element.previousSiblings(element).reverse() + .concat(Element.nextSiblings(element)); + }, + + match: function(element, selector) { + element = $(element); + if (Object.isString(selector)) + return Prototype.Selector.match(element, selector); + return selector.match(element); + }, + + up: function(element, expression, index) { + element = $(element); + if (arguments.length == 1) return $(element.parentNode); + var ancestors = Element.ancestors(element); + return Object.isNumber(expression) ? ancestors[expression] : + Prototype.Selector.find(ancestors, expression, index); + }, + + down: function(element, expression, index) { + element = $(element); + if (arguments.length == 1) return Element.firstDescendant(element); + return Object.isNumber(expression) ? Element.descendants(element)[expression] : + Element.select(element, expression)[index || 0]; + }, + + previous: function(element, expression, index) { + element = $(element); + if (Object.isNumber(expression)) index = expression, expression = false; + if (!Object.isNumber(index)) index = 0; + + if (expression) { + return Prototype.Selector.find(element.previousSiblings(), expression, index); + } else { + return element.recursivelyCollect("previousSibling", index + 1)[index]; + } + }, + + next: function(element, expression, index) { + element = $(element); + if (Object.isNumber(expression)) index = expression, expression = false; + if (!Object.isNumber(index)) index = 0; + + if (expression) { + return Prototype.Selector.find(element.nextSiblings(), expression, index); + } else { + var maximumLength = Object.isNumber(index) ? index + 1 : 1; + return element.recursivelyCollect("nextSibling", index + 1)[index]; + } + }, + + + select: function(element) { + element = $(element); + var expressions = Array.prototype.slice.call(arguments, 1).join(', '); + return Prototype.Selector.select(expressions, element); + }, + + adjacent: function(element) { + element = $(element); + var expressions = Array.prototype.slice.call(arguments, 1).join(', '); + return Prototype.Selector.select(expressions, element.parentNode).without(element); + }, + + identify: function(element) { + element = $(element); + var id = Element.readAttribute(element, 'id'); + if (id) return id; + do { id = 'anonymous_element_' + Element.idCounter++ } while ($(id)); + Element.writeAttribute(element, 'id', id); + return id; + }, + + readAttribute: function(element, name) { + element = $(element); + if (Prototype.Browser.IE) { + var t = Element._attributeTranslations.read; + if (t.values[name]) return t.values[name](element, name); + if (t.names[name]) name = t.names[name]; + if (name.include(':')) { + return (!element.attributes || !element.attributes[name]) ? null : + element.attributes[name].value; + } + } + return element.getAttribute(name); + }, + + writeAttribute: function(element, name, value) { + element = $(element); + var attributes = { }, t = Element._attributeTranslations.write; + + if (typeof name == 'object') attributes = name; + else attributes[name] = Object.isUndefined(value) ? true : value; + + for (var attr in attributes) { + name = t.names[attr] || attr; + value = attributes[attr]; + if (t.values[attr]) name = t.values[attr](element, value); + if (value === false || value === null) + element.removeAttribute(name); + else if (value === true) + element.setAttribute(name, name); + else element.setAttribute(name, value); + } + return element; + }, + + getHeight: function(element) { + return Element.getDimensions(element).height; + }, + + getWidth: function(element) { + return Element.getDimensions(element).width; + }, + + classNames: function(element) { + return new Element.ClassNames(element); + }, + + hasClassName: function(element, className) { + if (!(element = $(element))) return; + var elementClassName = element.className; + return (elementClassName.length > 0 && (elementClassName == className || + new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName))); + }, + + addClassName: function(element, className) { + if (!(element = $(element))) return; + if (!Element.hasClassName(element, className)) + element.className += (element.className ? ' ' : '') + className; + return element; + }, + + removeClassName: function(element, className) { + if (!(element = $(element))) return; + element.className = element.className.replace( + new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip(); + return element; + }, + + toggleClassName: function(element, className) { + if (!(element = $(element))) return; + return Element[Element.hasClassName(element, className) ? + 'removeClassName' : 'addClassName'](element, className); + }, + + cleanWhitespace: function(element) { + element = $(element); + var node = element.firstChild; + while (node) { + var nextNode = node.nextSibling; + if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) + element.removeChild(node); + node = nextNode; + } + return element; + }, + + empty: function(element) { + return $(element).innerHTML.blank(); + }, + + descendantOf: function(element, ancestor) { + element = $(element), ancestor = $(ancestor); + + if (element.compareDocumentPosition) + return (element.compareDocumentPosition(ancestor) & 8) === 8; + + if (ancestor.contains) + return ancestor.contains(element) && ancestor !== element; + + while (element = element.parentNode) + if (element == ancestor) return true; + + return false; + }, + + scrollTo: function(element) { + element = $(element); + var pos = Element.cumulativeOffset(element); + window.scrollTo(pos[0], pos[1]); + return element; + }, + + getStyle: function(element, style) { + element = $(element); + style = style == 'float' ? 'cssFloat' : style.camelize(); + var value = element.style[style]; + if (!value || value == 'auto') { + var css = document.defaultView.getComputedStyle(element, null); + value = css ? css[style] : null; + } + if (style == 'opacity') return value ? parseFloat(value) : 1.0; + return value == 'auto' ? null : value; + }, + + getOpacity: function(element) { + return $(element).getStyle('opacity'); + }, + + setStyle: function(element, styles) { + element = $(element); + var elementStyle = element.style, match; + if (Object.isString(styles)) { + element.style.cssText += ';' + styles; + return styles.include('opacity') ? + element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element; + } + for (var property in styles) + if (property == 'opacity') element.setOpacity(styles[property]); + else + elementStyle[(property == 'float' || property == 'cssFloat') ? + (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') : + property] = styles[property]; + + return element; + }, + + setOpacity: function(element, value) { + element = $(element); + element.style.opacity = (value == 1 || value === '') ? '' : + (value < 0.00001) ? 0 : value; + return element; + }, + + makePositioned: function(element) { + element = $(element); + var pos = Element.getStyle(element, 'position'); + if (pos == 'static' || !pos) { + element._madePositioned = true; + element.style.position = 'relative'; + if (Prototype.Browser.Opera) { + element.style.top = 0; + element.style.left = 0; + } + } + return element; + }, + + undoPositioned: function(element) { + element = $(element); + if (element._madePositioned) { + element._madePositioned = undefined; + element.style.position = + element.style.top = + element.style.left = + element.style.bottom = + element.style.right = ''; + } + return element; + }, + + makeClipping: function(element) { + element = $(element); + if (element._overflow) return element; + element._overflow = Element.getStyle(element, 'overflow') || 'auto'; + if (element._overflow !== 'hidden') + element.style.overflow = 'hidden'; + return element; + }, + + undoClipping: function(element) { + element = $(element); + if (!element._overflow) return element; + element.style.overflow = element._overflow == 'auto' ? '' : element._overflow; + element._overflow = null; + return element; + }, + + clonePosition: function(element, source) { + var options = Object.extend({ + setLeft: true, + setTop: true, + setWidth: true, + setHeight: true, + offsetTop: 0, + offsetLeft: 0 + }, arguments[2] || { }); + + source = $(source); + var p = Element.viewportOffset(source), delta = [0, 0], parent = null; + + element = $(element); + + if (Element.getStyle(element, 'position') == 'absolute') { + parent = Element.getOffsetParent(element); + delta = Element.viewportOffset(parent); + } + + if (parent == document.body) { + delta[0] -= document.body.offsetLeft; + delta[1] -= document.body.offsetTop; + } + + if (options.setLeft) element.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; + if (options.setTop) element.style.top = (p[1] - delta[1] + options.offsetTop) + 'px'; + if (options.setWidth) element.style.width = source.offsetWidth + 'px'; + if (options.setHeight) element.style.height = source.offsetHeight + 'px'; + return element; + } +}; + +Object.extend(Element.Methods, { + getElementsBySelector: Element.Methods.select, + + childElements: Element.Methods.immediateDescendants +}); + +Element._attributeTranslations = { + write: { + names: { + className: 'class', + htmlFor: 'for' + }, + values: { } + } +}; + +if (Prototype.Browser.Opera) { + Element.Methods.getStyle = Element.Methods.getStyle.wrap( + function(proceed, element, style) { + switch (style) { + case 'height': case 'width': + if (!Element.visible(element)) return null; + + var dim = parseInt(proceed(element, style), 10); + + if (dim !== element['offset' + style.capitalize()]) + return dim + 'px'; + + var properties; + if (style === 'height') { + properties = ['border-top-width', 'padding-top', + 'padding-bottom', 'border-bottom-width']; + } + else { + properties = ['border-left-width', 'padding-left', + 'padding-right', 'border-right-width']; + } + return properties.inject(dim, function(memo, property) { + var val = proceed(element, property); + return val === null ? memo : memo - parseInt(val, 10); + }) + 'px'; + default: return proceed(element, style); + } + } + ); + + Element.Methods.readAttribute = Element.Methods.readAttribute.wrap( + function(proceed, element, attribute) { + if (attribute === 'title') return element.title; + return proceed(element, attribute); + } + ); +} + +else if (Prototype.Browser.IE) { + Element.Methods.getStyle = function(element, style) { + element = $(element); + style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize(); + var value = element.style[style]; + if (!value && element.currentStyle) value = element.currentStyle[style]; + + if (style == 'opacity') { + if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/)) + if (value[1]) return parseFloat(value[1]) / 100; + return 1.0; + } + + if (value == 'auto') { + if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none')) + return element['offset' + style.capitalize()] + 'px'; + return null; + } + return value; + }; + + Element.Methods.setOpacity = function(element, value) { + function stripAlpha(filter){ + return filter.replace(/alpha\([^\)]*\)/gi,''); + } + element = $(element); + var currentStyle = element.currentStyle; + if ((currentStyle && !currentStyle.hasLayout) || + (!currentStyle && element.style.zoom == 'normal')) + element.style.zoom = 1; + + var filter = element.getStyle('filter'), style = element.style; + if (value == 1 || value === '') { + (filter = stripAlpha(filter)) ? + style.filter = filter : style.removeAttribute('filter'); + return element; + } else if (value < 0.00001) value = 0; + style.filter = stripAlpha(filter) + + 'alpha(opacity=' + (value * 100) + ')'; + return element; + }; + + Element._attributeTranslations = (function(){ + + var classProp = 'className', + forProp = 'for', + el = document.createElement('div'); + + el.setAttribute(classProp, 'x'); + + if (el.className !== 'x') { + el.setAttribute('class', 'x'); + if (el.className === 'x') { + classProp = 'class'; + } + } + el = null; + + el = document.createElement('label'); + el.setAttribute(forProp, 'x'); + if (el.htmlFor !== 'x') { + el.setAttribute('htmlFor', 'x'); + if (el.htmlFor === 'x') { + forProp = 'htmlFor'; + } + } + el = null; + + return { + read: { + names: { + 'class': classProp, + 'className': classProp, + 'for': forProp, + 'htmlFor': forProp + }, + values: { + _getAttr: function(element, attribute) { + return element.getAttribute(attribute); + }, + _getAttr2: function(element, attribute) { + return element.getAttribute(attribute, 2); + }, + _getAttrNode: function(element, attribute) { + var node = element.getAttributeNode(attribute); + return node ? node.value : ""; + }, + _getEv: (function(){ + + var el = document.createElement('div'), f; + el.onclick = Prototype.emptyFunction; + var value = el.getAttribute('onclick'); + + if (String(value).indexOf('{') > -1) { + f = function(element, attribute) { + attribute = element.getAttribute(attribute); + if (!attribute) return null; + attribute = attribute.toString(); + attribute = attribute.split('{')[1]; + attribute = attribute.split('}')[0]; + return attribute.strip(); + }; + } + else if (value === '') { + f = function(element, attribute) { + attribute = element.getAttribute(attribute); + if (!attribute) return null; + return attribute.strip(); + }; + } + el = null; + return f; + })(), + _flag: function(element, attribute) { + return $(element).hasAttribute(attribute) ? attribute : null; + }, + style: function(element) { + return element.style.cssText.toLowerCase(); + }, + title: function(element) { + return element.title; + } + } + } + } + })(); + + Element._attributeTranslations.write = { + names: Object.extend({ + cellpadding: 'cellPadding', + cellspacing: 'cellSpacing' + }, Element._attributeTranslations.read.names), + values: { + checked: function(element, value) { + element.checked = !!value; + }, + + style: function(element, value) { + element.style.cssText = value ? value : ''; + } + } + }; + + Element._attributeTranslations.has = {}; + + $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' + + 'encType maxLength readOnly longDesc frameBorder').each(function(attr) { + Element._attributeTranslations.write.names[attr.toLowerCase()] = attr; + Element._attributeTranslations.has[attr.toLowerCase()] = attr; + }); + + (function(v) { + Object.extend(v, { + href: v._getAttr2, + src: v._getAttr2, + type: v._getAttr, + action: v._getAttrNode, + disabled: v._flag, + checked: v._flag, + readonly: v._flag, + multiple: v._flag, + onload: v._getEv, + onunload: v._getEv, + onclick: v._getEv, + ondblclick: v._getEv, + onmousedown: v._getEv, + onmouseup: v._getEv, + onmouseover: v._getEv, + onmousemove: v._getEv, + onmouseout: v._getEv, + onfocus: v._getEv, + onblur: v._getEv, + onkeypress: v._getEv, + onkeydown: v._getEv, + onkeyup: v._getEv, + onsubmit: v._getEv, + onreset: v._getEv, + onselect: v._getEv, + onchange: v._getEv + }); + })(Element._attributeTranslations.read.values); + + if (Prototype.BrowserFeatures.ElementExtensions) { + (function() { + function _descendants(element) { + var nodes = element.getElementsByTagName('*'), results = []; + for (var i = 0, node; node = nodes[i]; i++) + if (node.tagName !== "!") // Filter out comment nodes. + results.push(node); + return results; + } + + Element.Methods.down = function(element, expression, index) { + element = $(element); + if (arguments.length == 1) return element.firstDescendant(); + return Object.isNumber(expression) ? _descendants(element)[expression] : + Element.select(element, expression)[index || 0]; + } + })(); + } + +} + +else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) { + Element.Methods.setOpacity = function(element, value) { + element = $(element); + element.style.opacity = (value == 1) ? 0.999999 : + (value === '') ? '' : (value < 0.00001) ? 0 : value; + return element; + }; +} + +else if (Prototype.Browser.WebKit) { + Element.Methods.setOpacity = function(element, value) { + element = $(element); + element.style.opacity = (value == 1 || value === '') ? '' : + (value < 0.00001) ? 0 : value; + + if (value == 1) + if (element.tagName.toUpperCase() == 'IMG' && element.width) { + element.width++; element.width--; + } else try { + var n = document.createTextNode(' '); + element.appendChild(n); + element.removeChild(n); + } catch (e) { } + + return element; + }; +} + +if ('outerHTML' in document.documentElement) { + Element.Methods.replace = function(element, content) { + element = $(element); + + if (content && content.toElement) content = content.toElement(); + if (Object.isElement(content)) { + element.parentNode.replaceChild(content, element); + return element; + } + + content = Object.toHTML(content); + var parent = element.parentNode, tagName = parent.tagName.toUpperCase(); + + if (Element._insertionTranslations.tags[tagName]) { + var nextSibling = element.next(), + fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); + parent.removeChild(element); + if (nextSibling) + fragments.each(function(node) { parent.insertBefore(node, nextSibling) }); + else + fragments.each(function(node) { parent.appendChild(node) }); + } + else element.outerHTML = content.stripScripts(); + + content.evalScripts.bind(content).defer(); + return element; + }; +} + +Element._returnOffset = function(l, t) { + var result = [l, t]; + result.left = l; + result.top = t; + return result; +}; + +Element._getContentFromAnonymousElement = function(tagName, html, force) { + var div = new Element('div'), + t = Element._insertionTranslations.tags[tagName]; + + var workaround = false; + if (t) workaround = true; + else if (force) { + workaround = true; + t = ['', '', 0]; + } + + if (workaround) { + div.innerHTML = ' ' + t[0] + html + t[1]; + div.removeChild(div.firstChild); + for (var i = t[2]; i--; ) { + div = div.firstChild; + } + } + else { + div.innerHTML = html; + } + return $A(div.childNodes); +}; + +Element._insertionTranslations = { + before: function(element, node) { + element.parentNode.insertBefore(node, element); + }, + top: function(element, node) { + element.insertBefore(node, element.firstChild); + }, + bottom: function(element, node) { + element.appendChild(node); + }, + after: function(element, node) { + element.parentNode.insertBefore(node, element.nextSibling); + }, + tags: { + TABLE: ['', '
      ', 1], + TBODY: ['', '
      ', 2], + TR: ['', '
      ', 3], + TD: ['
      ', '
      ', 4], + SELECT: ['', 1] + } +}; + +(function() { + var tags = Element._insertionTranslations.tags; + Object.extend(tags, { + THEAD: tags.TBODY, + TFOOT: tags.TBODY, + TH: tags.TD + }); +})(); + +Element.Methods.Simulated = { + hasAttribute: function(element, attribute) { + attribute = Element._attributeTranslations.has[attribute] || attribute; + var node = $(element).getAttributeNode(attribute); + return !!(node && node.specified); + } +}; + +Element.Methods.ByTag = { }; + +Object.extend(Element, Element.Methods); + +(function(div) { + + if (!Prototype.BrowserFeatures.ElementExtensions && div['__proto__']) { + window.HTMLElement = { }; + window.HTMLElement.prototype = div['__proto__']; + Prototype.BrowserFeatures.ElementExtensions = true; + } + + div = null; + +})(document.createElement('div')); + +Element.extend = (function() { + + function checkDeficiency(tagName) { + if (typeof window.Element != 'undefined') { + var proto = window.Element.prototype; + if (proto) { + var id = '_' + (Math.random()+'').slice(2), + el = document.createElement(tagName); + proto[id] = 'x'; + var isBuggy = (el[id] !== 'x'); + delete proto[id]; + el = null; + return isBuggy; + } + } + return false; + } + + function extendElementWith(element, methods) { + for (var property in methods) { + var value = methods[property]; + if (Object.isFunction(value) && !(property in element)) + element[property] = value.methodize(); + } + } + + var HTMLOBJECTELEMENT_PROTOTYPE_BUGGY = checkDeficiency('object'); + + if (Prototype.BrowserFeatures.SpecificElementExtensions) { + if (HTMLOBJECTELEMENT_PROTOTYPE_BUGGY) { + return function(element) { + if (element && typeof element._extendedByPrototype == 'undefined') { + var t = element.tagName; + if (t && (/^(?:object|applet|embed)$/i.test(t))) { + extendElementWith(element, Element.Methods); + extendElementWith(element, Element.Methods.Simulated); + extendElementWith(element, Element.Methods.ByTag[t.toUpperCase()]); + } + } + return element; + } + } + return Prototype.K; + } + + var Methods = { }, ByTag = Element.Methods.ByTag; + + var extend = Object.extend(function(element) { + if (!element || typeof element._extendedByPrototype != 'undefined' || + element.nodeType != 1 || element == window) return element; + + var methods = Object.clone(Methods), + tagName = element.tagName.toUpperCase(); + + if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]); + + extendElementWith(element, methods); + + element._extendedByPrototype = Prototype.emptyFunction; + return element; + + }, { + refresh: function() { + if (!Prototype.BrowserFeatures.ElementExtensions) { + Object.extend(Methods, Element.Methods); + Object.extend(Methods, Element.Methods.Simulated); + } + } + }); + + extend.refresh(); + return extend; +})(); + +if (document.documentElement.hasAttribute) { + Element.hasAttribute = function(element, attribute) { + return element.hasAttribute(attribute); + }; +} +else { + Element.hasAttribute = Element.Methods.Simulated.hasAttribute; +} + +Element.addMethods = function(methods) { + var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag; + + if (!methods) { + Object.extend(Form, Form.Methods); + Object.extend(Form.Element, Form.Element.Methods); + Object.extend(Element.Methods.ByTag, { + "FORM": Object.clone(Form.Methods), + "INPUT": Object.clone(Form.Element.Methods), + "SELECT": Object.clone(Form.Element.Methods), + "TEXTAREA": Object.clone(Form.Element.Methods), + "BUTTON": Object.clone(Form.Element.Methods) + }); + } + + if (arguments.length == 2) { + var tagName = methods; + methods = arguments[1]; + } + + if (!tagName) Object.extend(Element.Methods, methods || { }); + else { + if (Object.isArray(tagName)) tagName.each(extend); + else extend(tagName); + } + + function extend(tagName) { + tagName = tagName.toUpperCase(); + if (!Element.Methods.ByTag[tagName]) + Element.Methods.ByTag[tagName] = { }; + Object.extend(Element.Methods.ByTag[tagName], methods); + } + + function copy(methods, destination, onlyIfAbsent) { + onlyIfAbsent = onlyIfAbsent || false; + for (var property in methods) { + var value = methods[property]; + if (!Object.isFunction(value)) continue; + if (!onlyIfAbsent || !(property in destination)) + destination[property] = value.methodize(); + } + } + + function findDOMClass(tagName) { + var klass; + var trans = { + "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph", + "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList", + "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading", + "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote", + "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION": + "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD": + "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR": + "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET": + "FrameSet", "IFRAME": "IFrame" + }; + if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element'; + if (window[klass]) return window[klass]; + klass = 'HTML' + tagName + 'Element'; + if (window[klass]) return window[klass]; + klass = 'HTML' + tagName.capitalize() + 'Element'; + if (window[klass]) return window[klass]; + + var element = document.createElement(tagName), + proto = element['__proto__'] || element.constructor.prototype; + + element = null; + return proto; + } + + var elementPrototype = window.HTMLElement ? HTMLElement.prototype : + Element.prototype; + + if (F.ElementExtensions) { + copy(Element.Methods, elementPrototype); + copy(Element.Methods.Simulated, elementPrototype, true); + } + + if (F.SpecificElementExtensions) { + for (var tag in Element.Methods.ByTag) { + var klass = findDOMClass(tag); + if (Object.isUndefined(klass)) continue; + copy(T[tag], klass.prototype); + } + } + + Object.extend(Element, Element.Methods); + delete Element.ByTag; + + if (Element.extend.refresh) Element.extend.refresh(); + Element.cache = { }; +}; + + +document.viewport = { + + getDimensions: function() { + return { width: this.getWidth(), height: this.getHeight() }; + }, + + getScrollOffsets: function() { + return Element._returnOffset( + window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft, + window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop); + } +}; + +(function(viewport) { + var B = Prototype.Browser, doc = document, element, property = {}; + + function getRootElement() { + if (B.WebKit && !doc.evaluate) + return document; + + if (B.Opera && window.parseFloat(window.opera.version()) < 9.5) + return document.body; + + return document.documentElement; + } + + function define(D) { + if (!element) element = getRootElement(); + + property[D] = 'client' + D; + + viewport['get' + D] = function() { return element[property[D]] }; + return viewport['get' + D](); + } + + viewport.getWidth = define.curry('Width'); + + viewport.getHeight = define.curry('Height'); +})(document.viewport); + + +Element.Storage = { + UID: 1 +}; + +Element.addMethods({ + getStorage: function(element) { + if (!(element = $(element))) return; + + var uid; + if (element === window) { + uid = 0; + } else { + if (typeof element._prototypeUID === "undefined") + element._prototypeUID = Element.Storage.UID++; + uid = element._prototypeUID; + } + + if (!Element.Storage[uid]) + Element.Storage[uid] = $H(); + + return Element.Storage[uid]; + }, + + store: function(element, key, value) { + if (!(element = $(element))) return; + + if (arguments.length === 2) { + Element.getStorage(element).update(key); + } else { + Element.getStorage(element).set(key, value); + } + + return element; + }, + + retrieve: function(element, key, defaultValue) { + if (!(element = $(element))) return; + var hash = Element.getStorage(element), value = hash.get(key); + + if (Object.isUndefined(value)) { + hash.set(key, defaultValue); + value = defaultValue; + } + + return value; + }, + + clone: function(element, deep) { + if (!(element = $(element))) return; + var clone = element.cloneNode(deep); + clone._prototypeUID = void 0; + if (deep) { + var descendants = Element.select(clone, '*'), + i = descendants.length; + while (i--) { + descendants[i]._prototypeUID = void 0; + } + } + return Element.extend(clone); + }, + + purge: function(element) { + if (!(element = $(element))) return; + var purgeElement = Element._purgeElement; + + purgeElement(element); + + var descendants = element.getElementsByTagName('*'), + i = descendants.length; + + while (i--) purgeElement(descendants[i]); + + return null; + } +}); + +(function() { + + function toDecimal(pctString) { + var match = pctString.match(/^(\d+)%?$/i); + if (!match) return null; + return (Number(match[1]) / 100); + } + + function getPixelValue(value, property, context) { + var element = null; + if (Object.isElement(value)) { + element = value; + value = element.getStyle(property); + } + + if (value === null) { + return null; + } + + if ((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(value)) { + return window.parseFloat(value); + } + + var isPercentage = value.include('%'), isViewport = (context === document.viewport); + + if (/\d/.test(value) && element && element.runtimeStyle && !(isPercentage && isViewport)) { + var style = element.style.left, rStyle = element.runtimeStyle.left; + element.runtimeStyle.left = element.currentStyle.left; + element.style.left = value || 0; + value = element.style.pixelLeft; + element.style.left = style; + element.runtimeStyle.left = rStyle; + + return value; + } + + if (element && isPercentage) { + context = context || element.parentNode; + var decimal = toDecimal(value); + var whole = null; + var position = element.getStyle('position'); + + var isHorizontal = property.include('left') || property.include('right') || + property.include('width'); + + var isVertical = property.include('top') || property.include('bottom') || + property.include('height'); + + if (context === document.viewport) { + if (isHorizontal) { + whole = document.viewport.getWidth(); + } else if (isVertical) { + whole = document.viewport.getHeight(); + } + } else { + if (isHorizontal) { + whole = $(context).measure('width'); + } else if (isVertical) { + whole = $(context).measure('height'); + } + } + + return (whole === null) ? 0 : whole * decimal; + } + + return 0; + } + + function toCSSPixels(number) { + if (Object.isString(number) && number.endsWith('px')) { + return number; + } + return number + 'px'; + } + + function isDisplayed(element) { + var originalElement = element; + while (element && element.parentNode) { + var display = element.getStyle('display'); + if (display === 'none') { + return false; + } + element = $(element.parentNode); + } + return true; + } + + var hasLayout = Prototype.K; + if ('currentStyle' in document.documentElement) { + hasLayout = function(element) { + if (!element.currentStyle.hasLayout) { + element.style.zoom = 1; + } + return element; + }; + } + + function cssNameFor(key) { + if (key.include('border')) key = key + '-width'; + return key.camelize(); + } + + Element.Layout = Class.create(Hash, { + initialize: function($super, element, preCompute) { + $super(); + this.element = $(element); + + Element.Layout.PROPERTIES.each( function(property) { + this._set(property, null); + }, this); + + if (preCompute) { + this._preComputing = true; + this._begin(); + Element.Layout.PROPERTIES.each( this._compute, this ); + this._end(); + this._preComputing = false; + } + }, + + _set: function(property, value) { + return Hash.prototype.set.call(this, property, value); + }, + + set: function(property, value) { + throw "Properties of Element.Layout are read-only."; + }, + + get: function($super, property) { + var value = $super(property); + return value === null ? this._compute(property) : value; + }, + + _begin: function() { + if (this._prepared) return; + + var element = this.element; + if (isDisplayed(element)) { + this._prepared = true; + return; + } + + var originalStyles = { + position: element.style.position || '', + width: element.style.width || '', + visibility: element.style.visibility || '', + display: element.style.display || '' + }; + + element.store('prototype_original_styles', originalStyles); + + var position = element.getStyle('position'), + width = element.getStyle('width'); + + if (width === "0px" || width === null) { + element.style.display = 'block'; + width = element.getStyle('width'); + } + + var context = (position === 'fixed') ? document.viewport : + element.parentNode; + + element.setStyle({ + position: 'absolute', + visibility: 'hidden', + display: 'block' + }); + + var positionedWidth = element.getStyle('width'); + + var newWidth; + if (width && (positionedWidth === width)) { + newWidth = getPixelValue(element, 'width', context); + } else if (position === 'absolute' || position === 'fixed') { + newWidth = getPixelValue(element, 'width', context); + } else { + var parent = element.parentNode, pLayout = $(parent).getLayout(); + + newWidth = pLayout.get('width') - + this.get('margin-left') - + this.get('border-left') - + this.get('padding-left') - + this.get('padding-right') - + this.get('border-right') - + this.get('margin-right'); + } + + element.setStyle({ width: newWidth + 'px' }); + + this._prepared = true; + }, + + _end: function() { + var element = this.element; + var originalStyles = element.retrieve('prototype_original_styles'); + element.store('prototype_original_styles', null); + element.setStyle(originalStyles); + this._prepared = false; + }, + + _compute: function(property) { + var COMPUTATIONS = Element.Layout.COMPUTATIONS; + if (!(property in COMPUTATIONS)) { + throw "Property not found."; + } + + return this._set(property, COMPUTATIONS[property].call(this, this.element)); + }, + + toObject: function() { + var args = $A(arguments); + var keys = (args.length === 0) ? Element.Layout.PROPERTIES : + args.join(' ').split(' '); + var obj = {}; + keys.each( function(key) { + if (!Element.Layout.PROPERTIES.include(key)) return; + var value = this.get(key); + if (value != null) obj[key] = value; + }, this); + return obj; + }, + + toHash: function() { + var obj = this.toObject.apply(this, arguments); + return new Hash(obj); + }, + + toCSS: function() { + var args = $A(arguments); + var keys = (args.length === 0) ? Element.Layout.PROPERTIES : + args.join(' ').split(' '); + var css = {}; + + keys.each( function(key) { + if (!Element.Layout.PROPERTIES.include(key)) return; + if (Element.Layout.COMPOSITE_PROPERTIES.include(key)) return; + + var value = this.get(key); + if (value != null) css[cssNameFor(key)] = value + 'px'; + }, this); + return css; + }, + + inspect: function() { + return "#"; + } + }); + + Object.extend(Element.Layout, { + PROPERTIES: $w('height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height'), + + COMPOSITE_PROPERTIES: $w('padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height'), + + COMPUTATIONS: { + 'height': function(element) { + if (!this._preComputing) this._begin(); + + var bHeight = this.get('border-box-height'); + if (bHeight <= 0) { + if (!this._preComputing) this._end(); + return 0; + } + + var bTop = this.get('border-top'), + bBottom = this.get('border-bottom'); + + var pTop = this.get('padding-top'), + pBottom = this.get('padding-bottom'); + + if (!this._preComputing) this._end(); + + return bHeight - bTop - bBottom - pTop - pBottom; + }, + + 'width': function(element) { + if (!this._preComputing) this._begin(); + + var bWidth = this.get('border-box-width'); + if (bWidth <= 0) { + if (!this._preComputing) this._end(); + return 0; + } + + var bLeft = this.get('border-left'), + bRight = this.get('border-right'); + + var pLeft = this.get('padding-left'), + pRight = this.get('padding-right'); + + if (!this._preComputing) this._end(); + + return bWidth - bLeft - bRight - pLeft - pRight; + }, + + 'padding-box-height': function(element) { + var height = this.get('height'), + pTop = this.get('padding-top'), + pBottom = this.get('padding-bottom'); + + return height + pTop + pBottom; + }, + + 'padding-box-width': function(element) { + var width = this.get('width'), + pLeft = this.get('padding-left'), + pRight = this.get('padding-right'); + + return width + pLeft + pRight; + }, + + 'border-box-height': function(element) { + if (!this._preComputing) this._begin(); + var height = element.offsetHeight; + if (!this._preComputing) this._end(); + return height; + }, + + 'border-box-width': function(element) { + if (!this._preComputing) this._begin(); + var width = element.offsetWidth; + if (!this._preComputing) this._end(); + return width; + }, + + 'margin-box-height': function(element) { + var bHeight = this.get('border-box-height'), + mTop = this.get('margin-top'), + mBottom = this.get('margin-bottom'); + + if (bHeight <= 0) return 0; + + return bHeight + mTop + mBottom; + }, + + 'margin-box-width': function(element) { + var bWidth = this.get('border-box-width'), + mLeft = this.get('margin-left'), + mRight = this.get('margin-right'); + + if (bWidth <= 0) return 0; + + return bWidth + mLeft + mRight; + }, + + 'top': function(element) { + var offset = element.positionedOffset(); + return offset.top; + }, + + 'bottom': function(element) { + var offset = element.positionedOffset(), + parent = element.getOffsetParent(), + pHeight = parent.measure('height'); + + var mHeight = this.get('border-box-height'); + + return pHeight - mHeight - offset.top; + }, + + 'left': function(element) { + var offset = element.positionedOffset(); + return offset.left; + }, + + 'right': function(element) { + var offset = element.positionedOffset(), + parent = element.getOffsetParent(), + pWidth = parent.measure('width'); + + var mWidth = this.get('border-box-width'); + + return pWidth - mWidth - offset.left; + }, + + 'padding-top': function(element) { + return getPixelValue(element, 'paddingTop'); + }, + + 'padding-bottom': function(element) { + return getPixelValue(element, 'paddingBottom'); + }, + + 'padding-left': function(element) { + return getPixelValue(element, 'paddingLeft'); + }, + + 'padding-right': function(element) { + return getPixelValue(element, 'paddingRight'); + }, + + 'border-top': function(element) { + return getPixelValue(element, 'borderTopWidth'); + }, + + 'border-bottom': function(element) { + return getPixelValue(element, 'borderBottomWidth'); + }, + + 'border-left': function(element) { + return getPixelValue(element, 'borderLeftWidth'); + }, + + 'border-right': function(element) { + return getPixelValue(element, 'borderRightWidth'); + }, + + 'margin-top': function(element) { + return getPixelValue(element, 'marginTop'); + }, + + 'margin-bottom': function(element) { + return getPixelValue(element, 'marginBottom'); + }, + + 'margin-left': function(element) { + return getPixelValue(element, 'marginLeft'); + }, + + 'margin-right': function(element) { + return getPixelValue(element, 'marginRight'); + } + } + }); + + if ('getBoundingClientRect' in document.documentElement) { + Object.extend(Element.Layout.COMPUTATIONS, { + 'right': function(element) { + var parent = hasLayout(element.getOffsetParent()); + var rect = element.getBoundingClientRect(), + pRect = parent.getBoundingClientRect(); + + return (pRect.right - rect.right).round(); + }, + + 'bottom': function(element) { + var parent = hasLayout(element.getOffsetParent()); + var rect = element.getBoundingClientRect(), + pRect = parent.getBoundingClientRect(); + + return (pRect.bottom - rect.bottom).round(); + } + }); + } + + Element.Offset = Class.create({ + initialize: function(left, top) { + this.left = left.round(); + this.top = top.round(); + + this[0] = this.left; + this[1] = this.top; + }, + + relativeTo: function(offset) { + return new Element.Offset( + this.left - offset.left, + this.top - offset.top + ); + }, + + inspect: function() { + return "#".interpolate(this); + }, + + toString: function() { + return "[#{left}, #{top}]".interpolate(this); + }, + + toArray: function() { + return [this.left, this.top]; + } + }); + + function getLayout(element, preCompute) { + return new Element.Layout(element, preCompute); + } + + function measure(element, property) { + return $(element).getLayout().get(property); + } + + function getDimensions(element) { + element = $(element); + var display = Element.getStyle(element, 'display'); + + if (display && display !== 'none') { + return { width: element.offsetWidth, height: element.offsetHeight }; + } + + var style = element.style; + var originalStyles = { + visibility: style.visibility, + position: style.position, + display: style.display + }; + + var newStyles = { + visibility: 'hidden', + display: 'block' + }; + + if (originalStyles.position !== 'fixed') + newStyles.position = 'absolute'; + + Element.setStyle(element, newStyles); + + var dimensions = { + width: element.offsetWidth, + height: element.offsetHeight + }; + + Element.setStyle(element, originalStyles); + + return dimensions; + } + + function getOffsetParent(element) { + element = $(element); + + if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element)) + return $(document.body); + + var isInline = (Element.getStyle(element, 'display') === 'inline'); + if (!isInline && element.offsetParent) return $(element.offsetParent); + + while ((element = element.parentNode) && element !== document.body) { + if (Element.getStyle(element, 'position') !== 'static') { + return isHtml(element) ? $(document.body) : $(element); + } + } + + return $(document.body); + } + + + function cumulativeOffset(element) { + element = $(element); + var valueT = 0, valueL = 0; + if (element.parentNode) { + do { + valueT += element.offsetTop || 0; + valueL += element.offsetLeft || 0; + element = element.offsetParent; + } while (element); + } + return new Element.Offset(valueL, valueT); + } + + function positionedOffset(element) { + element = $(element); + + var layout = element.getLayout(); + + var valueT = 0, valueL = 0; + do { + valueT += element.offsetTop || 0; + valueL += element.offsetLeft || 0; + element = element.offsetParent; + if (element) { + if (isBody(element)) break; + var p = Element.getStyle(element, 'position'); + if (p !== 'static') break; + } + } while (element); + + valueL -= layout.get('margin-top'); + valueT -= layout.get('margin-left'); + + return new Element.Offset(valueL, valueT); + } + + function cumulativeScrollOffset(element) { + var valueT = 0, valueL = 0; + do { + valueT += element.scrollTop || 0; + valueL += element.scrollLeft || 0; + element = element.parentNode; + } while (element); + return new Element.Offset(valueL, valueT); + } + + function viewportOffset(forElement) { + element = $(element); + var valueT = 0, valueL = 0, docBody = document.body; + + var element = forElement; + do { + valueT += element.offsetTop || 0; + valueL += element.offsetLeft || 0; + if (element.offsetParent == docBody && + Element.getStyle(element, 'position') == 'absolute') break; + } while (element = element.offsetParent); + + element = forElement; + do { + if (element != docBody) { + valueT -= element.scrollTop || 0; + valueL -= element.scrollLeft || 0; + } + } while (element = element.parentNode); + return new Element.Offset(valueL, valueT); + } + + function absolutize(element) { + element = $(element); + + if (Element.getStyle(element, 'position') === 'absolute') { + return element; + } + + var offsetParent = getOffsetParent(element); + var eOffset = element.viewportOffset(), + pOffset = offsetParent.viewportOffset(); + + var offset = eOffset.relativeTo(pOffset); + var layout = element.getLayout(); + + element.store('prototype_absolutize_original_styles', { + left: element.getStyle('left'), + top: element.getStyle('top'), + width: element.getStyle('width'), + height: element.getStyle('height') + }); + + element.setStyle({ + position: 'absolute', + top: offset.top + 'px', + left: offset.left + 'px', + width: layout.get('width') + 'px', + height: layout.get('height') + 'px' + }); + + return element; + } + + function relativize(element) { + element = $(element); + if (Element.getStyle(element, 'position') === 'relative') { + return element; + } + + var originalStyles = + element.retrieve('prototype_absolutize_original_styles'); + + if (originalStyles) element.setStyle(originalStyles); + return element; + } + + if (Prototype.Browser.IE) { + getOffsetParent = getOffsetParent.wrap( + function(proceed, element) { + element = $(element); + + if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element)) + return $(document.body); + + var position = element.getStyle('position'); + if (position !== 'static') return proceed(element); + + element.setStyle({ position: 'relative' }); + var value = proceed(element); + element.setStyle({ position: position }); + return value; + } + ); + + positionedOffset = positionedOffset.wrap(function(proceed, element) { + element = $(element); + if (!element.parentNode) return new Element.Offset(0, 0); + var position = element.getStyle('position'); + if (position !== 'static') return proceed(element); + + var offsetParent = element.getOffsetParent(); + if (offsetParent && offsetParent.getStyle('position') === 'fixed') + hasLayout(offsetParent); + + element.setStyle({ position: 'relative' }); + var value = proceed(element); + element.setStyle({ position: position }); + return value; + }); + } else if (Prototype.Browser.Webkit) { + cumulativeOffset = function(element) { + element = $(element); + var valueT = 0, valueL = 0; + do { + valueT += element.offsetTop || 0; + valueL += element.offsetLeft || 0; + if (element.offsetParent == document.body) + if (Element.getStyle(element, 'position') == 'absolute') break; + + element = element.offsetParent; + } while (element); + + return new Element.Offset(valueL, valueT); + }; + } + + + Element.addMethods({ + getLayout: getLayout, + measure: measure, + getDimensions: getDimensions, + getOffsetParent: getOffsetParent, + cumulativeOffset: cumulativeOffset, + positionedOffset: positionedOffset, + cumulativeScrollOffset: cumulativeScrollOffset, + viewportOffset: viewportOffset, + absolutize: absolutize, + relativize: relativize + }); + + function isBody(element) { + return element.nodeName.toUpperCase() === 'BODY'; + } + + function isHtml(element) { + return element.nodeName.toUpperCase() === 'HTML'; + } + + function isDocument(element) { + return element.nodeType === Node.DOCUMENT_NODE; + } + + function isDetached(element) { + return element !== document.body && + !Element.descendantOf(element, document.body); + } + + if ('getBoundingClientRect' in document.documentElement) { + Element.addMethods({ + viewportOffset: function(element) { + element = $(element); + if (isDetached(element)) return new Element.Offset(0, 0); + + var rect = element.getBoundingClientRect(), + docEl = document.documentElement; + return new Element.Offset(rect.left - docEl.clientLeft, + rect.top - docEl.clientTop); + } + }); + } +})(); +window.$$ = function() { + var expression = $A(arguments).join(', '); + return Prototype.Selector.select(expression, document); +}; + +Prototype.Selector = (function() { + + function select() { + throw new Error('Method "Prototype.Selector.select" must be defined.'); + } + + function match() { + throw new Error('Method "Prototype.Selector.match" must be defined.'); + } + + function find(elements, expression, index) { + index = index || 0; + var match = Prototype.Selector.match, length = elements.length, matchIndex = 0, i; + + for (i = 0; i < length; i++) { + if (match(elements[i], expression) && index == matchIndex++) { + return Element.extend(elements[i]); + } + } + } + + function extendElements(elements) { + for (var i = 0, length = elements.length; i < length; i++) { + Element.extend(elements[i]); + } + return elements; + } + + + var K = Prototype.K; + + return { + select: select, + match: match, + find: find, + extendElements: (Element.extend === K) ? K : extendElements, + extendElement: Element.extend + }; +})(); +Prototype._original_property = window.Sizzle; +/*! + * Sizzle CSS Selector Engine - v1.0 + * Copyright 2009, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){ + +var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, + done = 0, + toString = Object.prototype.toString, + hasDuplicate = false, + baseHasDuplicate = true; + +[0, 0].sort(function(){ + baseHasDuplicate = false; + return 0; +}); + +var Sizzle = function(selector, context, results, seed) { + results = results || []; + var origContext = context = context || document; + + if ( context.nodeType !== 1 && context.nodeType !== 9 ) { + return []; + } + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context), + soFar = selector; + + while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) { + soFar = m[3]; + + parts.push( m[1] ); + + if ( m[2] ) { + extra = m[3]; + break; + } + } + + if ( parts.length > 1 && origPOS.exec( selector ) ) { + if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { + set = posProcess( parts[0] + parts[1], context ); + } else { + set = Expr.relative[ parts[0] ] ? + [ context ] : + Sizzle( parts.shift(), context ); + + while ( parts.length ) { + selector = parts.shift(); + + if ( Expr.relative[ selector ] ) + selector += parts.shift(); + + set = posProcess( selector, set ); + } + } + } else { + if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && + Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { + var ret = Sizzle.find( parts.shift(), context, contextXML ); + context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0]; + } + + if ( context ) { + var ret = seed ? + { expr: parts.pop(), set: makeArray(seed) } : + Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); + set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set; + + if ( parts.length > 0 ) { + checkSet = makeArray(set); + } else { + prune = false; + } + + while ( parts.length ) { + var cur = parts.pop(), pop = cur; + + if ( !Expr.relative[ cur ] ) { + cur = ""; + } else { + pop = parts.pop(); + } + + if ( pop == null ) { + pop = context; + } + + Expr.relative[ cur ]( checkSet, pop, contextXML ); + } + } else { + checkSet = parts = []; + } + } + + if ( !checkSet ) { + checkSet = set; + } + + if ( !checkSet ) { + throw "Syntax error, unrecognized expression: " + (cur || selector); + } + + if ( toString.call(checkSet) === "[object Array]" ) { + if ( !prune ) { + results.push.apply( results, checkSet ); + } else if ( context && context.nodeType === 1 ) { + for ( var i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) { + results.push( set[i] ); + } + } + } else { + for ( var i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && checkSet[i].nodeType === 1 ) { + results.push( set[i] ); + } + } + } + } else { + makeArray( checkSet, results ); + } + + if ( extra ) { + Sizzle( extra, origContext, results, seed ); + Sizzle.uniqueSort( results ); + } + + return results; +}; + +Sizzle.uniqueSort = function(results){ + if ( sortOrder ) { + hasDuplicate = baseHasDuplicate; + results.sort(sortOrder); + + if ( hasDuplicate ) { + for ( var i = 1; i < results.length; i++ ) { + if ( results[i] === results[i-1] ) { + results.splice(i--, 1); + } + } + } + } + + return results; +}; + +Sizzle.matches = function(expr, set){ + return Sizzle(expr, null, null, set); +}; + +Sizzle.find = function(expr, context, isXML){ + var set, match; + + if ( !expr ) { + return []; + } + + for ( var i = 0, l = Expr.order.length; i < l; i++ ) { + var type = Expr.order[i], match; + + if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { + var left = match[1]; + match.splice(1,1); + + if ( left.substr( left.length - 1 ) !== "\\" ) { + match[1] = (match[1] || "").replace(/\\/g, ""); + set = Expr.find[ type ]( match, context, isXML ); + if ( set != null ) { + expr = expr.replace( Expr.match[ type ], "" ); + break; + } + } + } + } + + if ( !set ) { + set = context.getElementsByTagName("*"); + } + + return {set: set, expr: expr}; +}; + +Sizzle.filter = function(expr, set, inplace, not){ + var old = expr, result = [], curLoop = set, match, anyFound, + isXMLFilter = set && set[0] && isXML(set[0]); + + while ( expr && set.length ) { + for ( var type in Expr.filter ) { + if ( (match = Expr.match[ type ].exec( expr )) != null ) { + var filter = Expr.filter[ type ], found, item; + anyFound = false; + + if ( curLoop == result ) { + result = []; + } + + if ( Expr.preFilter[ type ] ) { + match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); + + if ( !match ) { + anyFound = found = true; + } else if ( match === true ) { + continue; + } + } + + if ( match ) { + for ( var i = 0; (item = curLoop[i]) != null; i++ ) { + if ( item ) { + found = filter( item, match, i, curLoop ); + var pass = not ^ !!found; + + if ( inplace && found != null ) { + if ( pass ) { + anyFound = true; + } else { + curLoop[i] = false; + } + } else if ( pass ) { + result.push( item ); + anyFound = true; + } + } + } + } + + if ( found !== undefined ) { + if ( !inplace ) { + curLoop = result; + } + + expr = expr.replace( Expr.match[ type ], "" ); + + if ( !anyFound ) { + return []; + } + + break; + } + } + } + + if ( expr == old ) { + if ( anyFound == null ) { + throw "Syntax error, unrecognized expression: " + expr; + } else { + break; + } + } + + old = expr; + } + + return curLoop; +}; + +var Expr = Sizzle.selectors = { + order: [ "ID", "NAME", "TAG" ], + match: { + ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, + CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/, + NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/, + ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/, + TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/, + CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/, + POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/, + PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/ + }, + leftMatch: {}, + attrMap: { + "class": "className", + "for": "htmlFor" + }, + attrHandle: { + href: function(elem){ + return elem.getAttribute("href"); + } + }, + relative: { + "+": function(checkSet, part, isXML){ + var isPartStr = typeof part === "string", + isTag = isPartStr && !/\W/.test(part), + isPartStrNotTag = isPartStr && !isTag; + + if ( isTag && !isXML ) { + part = part.toUpperCase(); + } + + for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { + if ( (elem = checkSet[i]) ) { + while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} + + checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ? + elem || false : + elem === part; + } + } + + if ( isPartStrNotTag ) { + Sizzle.filter( part, checkSet, true ); + } + }, + ">": function(checkSet, part, isXML){ + var isPartStr = typeof part === "string"; + + if ( isPartStr && !/\W/.test(part) ) { + part = isXML ? part : part.toUpperCase(); + + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + if ( elem ) { + var parent = elem.parentNode; + checkSet[i] = parent.nodeName === part ? parent : false; + } + } + } else { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + if ( elem ) { + checkSet[i] = isPartStr ? + elem.parentNode : + elem.parentNode === part; + } + } + + if ( isPartStr ) { + Sizzle.filter( part, checkSet, true ); + } + } + }, + "": function(checkSet, part, isXML){ + var doneName = done++, checkFn = dirCheck; + + if ( !/\W/.test(part) ) { + var nodeCheck = part = isXML ? part : part.toUpperCase(); + checkFn = dirNodeCheck; + } + + checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML); + }, + "~": function(checkSet, part, isXML){ + var doneName = done++, checkFn = dirCheck; + + if ( typeof part === "string" && !/\W/.test(part) ) { + var nodeCheck = part = isXML ? part : part.toUpperCase(); + checkFn = dirNodeCheck; + } + + checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML); + } + }, + find: { + ID: function(match, context, isXML){ + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + return m ? [m] : []; + } + }, + NAME: function(match, context, isXML){ + if ( typeof context.getElementsByName !== "undefined" ) { + var ret = [], results = context.getElementsByName(match[1]); + + for ( var i = 0, l = results.length; i < l; i++ ) { + if ( results[i].getAttribute("name") === match[1] ) { + ret.push( results[i] ); + } + } + + return ret.length === 0 ? null : ret; + } + }, + TAG: function(match, context){ + return context.getElementsByTagName(match[1]); + } + }, + preFilter: { + CLASS: function(match, curLoop, inplace, result, not, isXML){ + match = " " + match[1].replace(/\\/g, "") + " "; + + if ( isXML ) { + return match; + } + + for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { + if ( elem ) { + if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) { + if ( !inplace ) + result.push( elem ); + } else if ( inplace ) { + curLoop[i] = false; + } + } + } + + return false; + }, + ID: function(match){ + return match[1].replace(/\\/g, ""); + }, + TAG: function(match, curLoop){ + for ( var i = 0; curLoop[i] === false; i++ ){} + return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase(); + }, + CHILD: function(match){ + if ( match[1] == "nth" ) { + var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec( + match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" || + !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); + + match[2] = (test[1] + (test[2] || 1)) - 0; + match[3] = test[3] - 0; + } + + match[0] = done++; + + return match; + }, + ATTR: function(match, curLoop, inplace, result, not, isXML){ + var name = match[1].replace(/\\/g, ""); + + if ( !isXML && Expr.attrMap[name] ) { + match[1] = Expr.attrMap[name]; + } + + if ( match[2] === "~=" ) { + match[4] = " " + match[4] + " "; + } + + return match; + }, + PSEUDO: function(match, curLoop, inplace, result, not){ + if ( match[1] === "not" ) { + if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { + match[3] = Sizzle(match[3], null, null, curLoop); + } else { + var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); + if ( !inplace ) { + result.push.apply( result, ret ); + } + return false; + } + } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { + return true; + } + + return match; + }, + POS: function(match){ + match.unshift( true ); + return match; + } + }, + filters: { + enabled: function(elem){ + return elem.disabled === false && elem.type !== "hidden"; + }, + disabled: function(elem){ + return elem.disabled === true; + }, + checked: function(elem){ + return elem.checked === true; + }, + selected: function(elem){ + elem.parentNode.selectedIndex; + return elem.selected === true; + }, + parent: function(elem){ + return !!elem.firstChild; + }, + empty: function(elem){ + return !elem.firstChild; + }, + has: function(elem, i, match){ + return !!Sizzle( match[3], elem ).length; + }, + header: function(elem){ + return /h\d/i.test( elem.nodeName ); + }, + text: function(elem){ + return "text" === elem.type; + }, + radio: function(elem){ + return "radio" === elem.type; + }, + checkbox: function(elem){ + return "checkbox" === elem.type; + }, + file: function(elem){ + return "file" === elem.type; + }, + password: function(elem){ + return "password" === elem.type; + }, + submit: function(elem){ + return "submit" === elem.type; + }, + image: function(elem){ + return "image" === elem.type; + }, + reset: function(elem){ + return "reset" === elem.type; + }, + button: function(elem){ + return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON"; + }, + input: function(elem){ + return /input|select|textarea|button/i.test(elem.nodeName); + } + }, + setFilters: { + first: function(elem, i){ + return i === 0; + }, + last: function(elem, i, match, array){ + return i === array.length - 1; + }, + even: function(elem, i){ + return i % 2 === 0; + }, + odd: function(elem, i){ + return i % 2 === 1; + }, + lt: function(elem, i, match){ + return i < match[3] - 0; + }, + gt: function(elem, i, match){ + return i > match[3] - 0; + }, + nth: function(elem, i, match){ + return match[3] - 0 == i; + }, + eq: function(elem, i, match){ + return match[3] - 0 == i; + } + }, + filter: { + PSEUDO: function(elem, match, i, array){ + var name = match[1], filter = Expr.filters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + } else if ( name === "contains" ) { + return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0; + } else if ( name === "not" ) { + var not = match[3]; + + for ( var i = 0, l = not.length; i < l; i++ ) { + if ( not[i] === elem ) { + return false; + } + } + + return true; + } + }, + CHILD: function(elem, match){ + var type = match[1], node = elem; + switch (type) { + case 'only': + case 'first': + while ( (node = node.previousSibling) ) { + if ( node.nodeType === 1 ) return false; + } + if ( type == 'first') return true; + node = elem; + case 'last': + while ( (node = node.nextSibling) ) { + if ( node.nodeType === 1 ) return false; + } + return true; + case 'nth': + var first = match[2], last = match[3]; + + if ( first == 1 && last == 0 ) { + return true; + } + + var doneName = match[0], + parent = elem.parentNode; + + if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { + var count = 0; + for ( node = parent.firstChild; node; node = node.nextSibling ) { + if ( node.nodeType === 1 ) { + node.nodeIndex = ++count; + } + } + parent.sizcache = doneName; + } + + var diff = elem.nodeIndex - last; + if ( first == 0 ) { + return diff == 0; + } else { + return ( diff % first == 0 && diff / first >= 0 ); + } + } + }, + ID: function(elem, match){ + return elem.nodeType === 1 && elem.getAttribute("id") === match; + }, + TAG: function(elem, match){ + return (match === "*" && elem.nodeType === 1) || elem.nodeName === match; + }, + CLASS: function(elem, match){ + return (" " + (elem.className || elem.getAttribute("class")) + " ") + .indexOf( match ) > -1; + }, + ATTR: function(elem, match){ + var name = match[1], + result = Expr.attrHandle[ name ] ? + Expr.attrHandle[ name ]( elem ) : + elem[ name ] != null ? + elem[ name ] : + elem.getAttribute( name ), + value = result + "", + type = match[2], + check = match[4]; + + return result == null ? + type === "!=" : + type === "=" ? + value === check : + type === "*=" ? + value.indexOf(check) >= 0 : + type === "~=" ? + (" " + value + " ").indexOf(check) >= 0 : + !check ? + value && result !== false : + type === "!=" ? + value != check : + type === "^=" ? + value.indexOf(check) === 0 : + type === "$=" ? + value.substr(value.length - check.length) === check : + type === "|=" ? + value === check || value.substr(0, check.length + 1) === check + "-" : + false; + }, + POS: function(elem, match, i, array){ + var name = match[2], filter = Expr.setFilters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + } + } + } +}; + +var origPOS = Expr.match.POS; + +for ( var type in Expr.match ) { + Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source ); + Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source ); +} + +var makeArray = function(array, results) { + array = Array.prototype.slice.call( array, 0 ); + + if ( results ) { + results.push.apply( results, array ); + return results; + } + + return array; +}; + +try { + Array.prototype.slice.call( document.documentElement.childNodes, 0 ); + +} catch(e){ + makeArray = function(array, results) { + var ret = results || []; + + if ( toString.call(array) === "[object Array]" ) { + Array.prototype.push.apply( ret, array ); + } else { + if ( typeof array.length === "number" ) { + for ( var i = 0, l = array.length; i < l; i++ ) { + ret.push( array[i] ); + } + } else { + for ( var i = 0; array[i]; i++ ) { + ret.push( array[i] ); + } + } + } + + return ret; + }; +} + +var sortOrder; + +if ( document.documentElement.compareDocumentPosition ) { + sortOrder = function( a, b ) { + if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { + if ( a == b ) { + hasDuplicate = true; + } + return 0; + } + + var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1; + if ( ret === 0 ) { + hasDuplicate = true; + } + return ret; + }; +} else if ( "sourceIndex" in document.documentElement ) { + sortOrder = function( a, b ) { + if ( !a.sourceIndex || !b.sourceIndex ) { + if ( a == b ) { + hasDuplicate = true; + } + return 0; + } + + var ret = a.sourceIndex - b.sourceIndex; + if ( ret === 0 ) { + hasDuplicate = true; + } + return ret; + }; +} else if ( document.createRange ) { + sortOrder = function( a, b ) { + if ( !a.ownerDocument || !b.ownerDocument ) { + if ( a == b ) { + hasDuplicate = true; + } + return 0; + } + + var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange(); + aRange.setStart(a, 0); + aRange.setEnd(a, 0); + bRange.setStart(b, 0); + bRange.setEnd(b, 0); + var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange); + if ( ret === 0 ) { + hasDuplicate = true; + } + return ret; + }; +} + +(function(){ + var form = document.createElement("div"), + id = "script" + (new Date).getTime(); + form.innerHTML = ""; + + var root = document.documentElement; + root.insertBefore( form, root.firstChild ); + + if ( !!document.getElementById( id ) ) { + Expr.find.ID = function(match, context, isXML){ + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []; + } + }; + + Expr.filter.ID = function(elem, match){ + var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); + return elem.nodeType === 1 && node && node.nodeValue === match; + }; + } + + root.removeChild( form ); + root = form = null; // release memory in IE +})(); + +(function(){ + + var div = document.createElement("div"); + div.appendChild( document.createComment("") ); + + if ( div.getElementsByTagName("*").length > 0 ) { + Expr.find.TAG = function(match, context){ + var results = context.getElementsByTagName(match[1]); + + if ( match[1] === "*" ) { + var tmp = []; + + for ( var i = 0; results[i]; i++ ) { + if ( results[i].nodeType === 1 ) { + tmp.push( results[i] ); + } + } + + results = tmp; + } + + return results; + }; + } + + div.innerHTML = ""; + if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && + div.firstChild.getAttribute("href") !== "#" ) { + Expr.attrHandle.href = function(elem){ + return elem.getAttribute("href", 2); + }; + } + + div = null; // release memory in IE +})(); + +if ( document.querySelectorAll ) (function(){ + var oldSizzle = Sizzle, div = document.createElement("div"); + div.innerHTML = "

      "; + + if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { + return; + } + + Sizzle = function(query, context, extra, seed){ + context = context || document; + + if ( !seed && context.nodeType === 9 && !isXML(context) ) { + try { + return makeArray( context.querySelectorAll(query), extra ); + } catch(e){} + } + + return oldSizzle(query, context, extra, seed); + }; + + for ( var prop in oldSizzle ) { + Sizzle[ prop ] = oldSizzle[ prop ]; + } + + div = null; // release memory in IE +})(); + +if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){ + var div = document.createElement("div"); + div.innerHTML = "
      "; + + if ( div.getElementsByClassName("e").length === 0 ) + return; + + div.lastChild.className = "e"; + + if ( div.getElementsByClassName("e").length === 1 ) + return; + + Expr.order.splice(1, 0, "CLASS"); + Expr.find.CLASS = function(match, context, isXML) { + if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { + return context.getElementsByClassName(match[1]); + } + }; + + div = null; // release memory in IE +})(); + +function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + var sibDir = dir == "previousSibling" && !isXML; + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + if ( elem ) { + if ( sibDir && elem.nodeType === 1 ){ + elem.sizcache = doneName; + elem.sizset = i; + } + elem = elem[dir]; + var match = false; + + while ( elem ) { + if ( elem.sizcache === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 && !isXML ){ + elem.sizcache = doneName; + elem.sizset = i; + } + + if ( elem.nodeName === cur ) { + match = elem; + break; + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + var sibDir = dir == "previousSibling" && !isXML; + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + if ( elem ) { + if ( sibDir && elem.nodeType === 1 ) { + elem.sizcache = doneName; + elem.sizset = i; + } + elem = elem[dir]; + var match = false; + + while ( elem ) { + if ( elem.sizcache === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 ) { + if ( !isXML ) { + elem.sizcache = doneName; + elem.sizset = i; + } + if ( typeof cur !== "string" ) { + if ( elem === cur ) { + match = true; + break; + } + + } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { + match = elem; + break; + } + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +var contains = document.compareDocumentPosition ? function(a, b){ + return a.compareDocumentPosition(b) & 16; +} : function(a, b){ + return a !== b && (a.contains ? a.contains(b) : true); +}; + +var isXML = function(elem){ + return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" || + !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML"; +}; + +var posProcess = function(selector, context){ + var tmpSet = [], later = "", match, + root = context.nodeType ? [context] : context; + + while ( (match = Expr.match.PSEUDO.exec( selector )) ) { + later += match[0]; + selector = selector.replace( Expr.match.PSEUDO, "" ); + } + + selector = Expr.relative[selector] ? selector + "*" : selector; + + for ( var i = 0, l = root.length; i < l; i++ ) { + Sizzle( selector, root[i], tmpSet ); + } + + return Sizzle.filter( later, tmpSet ); +}; + + +window.Sizzle = Sizzle; + +})(); + +;(function(engine) { + var extendElements = Prototype.Selector.extendElements; + + function select(selector, scope) { + return extendElements(engine(selector, scope || document)); + } + + function match(element, selector) { + return engine.matches(selector, [element]).length == 1; + } + + Prototype.Selector.engine = engine; + Prototype.Selector.select = select; + Prototype.Selector.match = match; +})(Sizzle); + +window.Sizzle = Prototype._original_property; +delete Prototype._original_property; + +var Form = { + reset: function(form) { + form = $(form); + form.reset(); + return form; + }, + + serializeElements: function(elements, options) { + if (typeof options != 'object') options = { hash: !!options }; + else if (Object.isUndefined(options.hash)) options.hash = true; + var key, value, submitted = false, submit = options.submit, accumulator, initial; + + if (options.hash) { + initial = {}; + accumulator = function(result, key, value) { + if (key in result) { + if (!Object.isArray(result[key])) result[key] = [result[key]]; + result[key].push(value); + } else result[key] = value; + return result; + }; + } else { + initial = ''; + accumulator = function(result, key, value) { + return result + (result ? '&' : '') + encodeURIComponent(key) + '=' + encodeURIComponent(value); + } + } + + return elements.inject(initial, function(result, element) { + if (!element.disabled && element.name) { + key = element.name; value = $(element).getValue(); + if (value != null && element.type != 'file' && (element.type != 'submit' || (!submitted && + submit !== false && (!submit || key == submit) && (submitted = true)))) { + result = accumulator(result, key, value); + } + } + return result; + }); + } +}; + +Form.Methods = { + serialize: function(form, options) { + return Form.serializeElements(Form.getElements(form), options); + }, + + getElements: function(form) { + var elements = $(form).getElementsByTagName('*'), + element, + arr = [ ], + serializers = Form.Element.Serializers; + for (var i = 0; element = elements[i]; i++) { + arr.push(element); + } + return arr.inject([], function(elements, child) { + if (serializers[child.tagName.toLowerCase()]) + elements.push(Element.extend(child)); + return elements; + }) + }, + + getInputs: function(form, typeName, name) { + form = $(form); + var inputs = form.getElementsByTagName('input'); + + if (!typeName && !name) return $A(inputs).map(Element.extend); + + for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) { + var input = inputs[i]; + if ((typeName && input.type != typeName) || (name && input.name != name)) + continue; + matchingInputs.push(Element.extend(input)); + } + + return matchingInputs; + }, + + disable: function(form) { + form = $(form); + Form.getElements(form).invoke('disable'); + return form; + }, + + enable: function(form) { + form = $(form); + Form.getElements(form).invoke('enable'); + return form; + }, + + findFirstElement: function(form) { + var elements = $(form).getElements().findAll(function(element) { + return 'hidden' != element.type && !element.disabled; + }); + var firstByIndex = elements.findAll(function(element) { + return element.hasAttribute('tabIndex') && element.tabIndex >= 0; + }).sortBy(function(element) { return element.tabIndex }).first(); + + return firstByIndex ? firstByIndex : elements.find(function(element) { + return /^(?:input|select|textarea)$/i.test(element.tagName); + }); + }, + + focusFirstElement: function(form) { + form = $(form); + var element = form.findFirstElement(); + if (element) element.activate(); + return form; + }, + + request: function(form, options) { + form = $(form), options = Object.clone(options || { }); + + var params = options.parameters, action = form.readAttribute('action') || ''; + if (action.blank()) action = window.location.href; + options.parameters = form.serialize(true); + + if (params) { + if (Object.isString(params)) params = params.toQueryParams(); + Object.extend(options.parameters, params); + } + + if (form.hasAttribute('method') && !options.method) + options.method = form.method; + + return new Ajax.Request(action, options); + } +}; + +/*--------------------------------------------------------------------------*/ + + +Form.Element = { + focus: function(element) { + $(element).focus(); + return element; + }, + + select: function(element) { + $(element).select(); + return element; + } +}; + +Form.Element.Methods = { + + serialize: function(element) { + element = $(element); + if (!element.disabled && element.name) { + var value = element.getValue(); + if (value != undefined) { + var pair = { }; + pair[element.name] = value; + return Object.toQueryString(pair); + } + } + return ''; + }, + + getValue: function(element) { + element = $(element); + var method = element.tagName.toLowerCase(); + return Form.Element.Serializers[method](element); + }, + + setValue: function(element, value) { + element = $(element); + var method = element.tagName.toLowerCase(); + Form.Element.Serializers[method](element, value); + return element; + }, + + clear: function(element) { + $(element).value = ''; + return element; + }, + + present: function(element) { + return $(element).value != ''; + }, + + activate: function(element) { + element = $(element); + try { + element.focus(); + if (element.select && (element.tagName.toLowerCase() != 'input' || + !(/^(?:button|reset|submit)$/i.test(element.type)))) + element.select(); + } catch (e) { } + return element; + }, + + disable: function(element) { + element = $(element); + element.disabled = true; + return element; + }, + + enable: function(element) { + element = $(element); + element.disabled = false; + return element; + } +}; + +/*--------------------------------------------------------------------------*/ + +var Field = Form.Element; + +var $F = Form.Element.Methods.getValue; + +/*--------------------------------------------------------------------------*/ + +Form.Element.Serializers = (function() { + function input(element, value) { + switch (element.type.toLowerCase()) { + case 'checkbox': + case 'radio': + return inputSelector(element, value); + default: + return valueSelector(element, value); + } + } + + function inputSelector(element, value) { + if (Object.isUndefined(value)) + return element.checked ? element.value : null; + else element.checked = !!value; + } + + function valueSelector(element, value) { + if (Object.isUndefined(value)) return element.value; + else element.value = value; + } + + function select(element, value) { + if (Object.isUndefined(value)) + return (element.type === 'select-one' ? selectOne : selectMany)(element); + + var opt, currentValue, single = !Object.isArray(value); + for (var i = 0, length = element.length; i < length; i++) { + opt = element.options[i]; + currentValue = this.optionValue(opt); + if (single) { + if (currentValue == value) { + opt.selected = true; + return; + } + } + else opt.selected = value.include(currentValue); + } + } + + function selectOne(element) { + var index = element.selectedIndex; + return index >= 0 ? optionValue(element.options[index]) : null; + } + + function selectMany(element) { + var values, length = element.length; + if (!length) return null; + + for (var i = 0, values = []; i < length; i++) { + var opt = element.options[i]; + if (opt.selected) values.push(optionValue(opt)); + } + return values; + } + + function optionValue(opt) { + return Element.hasAttribute(opt, 'value') ? opt.value : opt.text; + } + + return { + input: input, + inputSelector: inputSelector, + textarea: valueSelector, + select: select, + selectOne: selectOne, + selectMany: selectMany, + optionValue: optionValue, + button: valueSelector + }; +})(); + +/*--------------------------------------------------------------------------*/ + + +Abstract.TimedObserver = Class.create(PeriodicalExecuter, { + initialize: function($super, element, frequency, callback) { + $super(callback, frequency); + this.element = $(element); + this.lastValue = this.getValue(); + }, + + execute: function() { + var value = this.getValue(); + if (Object.isString(this.lastValue) && Object.isString(value) ? + this.lastValue != value : String(this.lastValue) != String(value)) { + this.callback(this.element, value); + this.lastValue = value; + } + } +}); + +Form.Element.Observer = Class.create(Abstract.TimedObserver, { + getValue: function() { + return Form.Element.getValue(this.element); + } +}); + +Form.Observer = Class.create(Abstract.TimedObserver, { + getValue: function() { + return Form.serialize(this.element); + } +}); + +/*--------------------------------------------------------------------------*/ + +Abstract.EventObserver = Class.create({ + initialize: function(element, callback) { + this.element = $(element); + this.callback = callback; + + this.lastValue = this.getValue(); + if (this.element.tagName.toLowerCase() == 'form') + this.registerFormCallbacks(); + else + this.registerCallback(this.element); + }, + + onElementEvent: function() { + var value = this.getValue(); + if (this.lastValue != value) { + this.callback(this.element, value); + this.lastValue = value; + } + }, + + registerFormCallbacks: function() { + Form.getElements(this.element).each(this.registerCallback, this); + }, + + registerCallback: function(element) { + if (element.type) { + switch (element.type.toLowerCase()) { + case 'checkbox': + case 'radio': + Event.observe(element, 'click', this.onElementEvent.bind(this)); + break; + default: + Event.observe(element, 'change', this.onElementEvent.bind(this)); + break; + } + } + } +}); + +Form.Element.EventObserver = Class.create(Abstract.EventObserver, { + getValue: function() { + return Form.Element.getValue(this.element); + } +}); + +Form.EventObserver = Class.create(Abstract.EventObserver, { + getValue: function() { + return Form.serialize(this.element); + } +}); +(function() { + + var Event = { + KEY_BACKSPACE: 8, + KEY_TAB: 9, + KEY_RETURN: 13, + KEY_ESC: 27, + KEY_LEFT: 37, + KEY_UP: 38, + KEY_RIGHT: 39, + KEY_DOWN: 40, + KEY_DELETE: 46, + KEY_HOME: 36, + KEY_END: 35, + KEY_PAGEUP: 33, + KEY_PAGEDOWN: 34, + KEY_INSERT: 45, + + cache: {} + }; + + var docEl = document.documentElement; + var MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED = 'onmouseenter' in docEl + && 'onmouseleave' in docEl; + + + + var isIELegacyEvent = function(event) { return false; }; + + if (window.attachEvent) { + if (window.addEventListener) { + isIELegacyEvent = function(event) { + return !(event instanceof window.Event); + }; + } else { + isIELegacyEvent = function(event) { return true; }; + } + } + + var _isButton; + + function _isButtonForDOMEvents(event, code) { + return event.which ? (event.which === code + 1) : (event.button === code); + } + + var legacyButtonMap = { 0: 1, 1: 4, 2: 2 }; + function _isButtonForLegacyEvents(event, code) { + return event.button === legacyButtonMap[code]; + } + + function _isButtonForWebKit(event, code) { + switch (code) { + case 0: return event.which == 1 && !event.metaKey; + case 1: return event.which == 2 || (event.which == 1 && event.metaKey); + case 2: return event.which == 3; + default: return false; + } + } + + if (window.attachEvent) { + if (!window.addEventListener) { + _isButton = _isButtonForLegacyEvents; + } else { + _isButton = function(event, code) { + return isIELegacyEvent(event) ? _isButtonForLegacyEvents(event, code) : + _isButtonForDOMEvents(event, code); + } + } + } else if (Prototype.Browser.WebKit) { + _isButton = _isButtonForWebKit; + } else { + _isButton = _isButtonForDOMEvents; + } + + function isLeftClick(event) { return _isButton(event, 0) } + + function isMiddleClick(event) { return _isButton(event, 1) } + + function isRightClick(event) { return _isButton(event, 2) } + + function element(event) { + event = Event.extend(event); + + var node = event.target, type = event.type, + currentTarget = event.currentTarget; + + if (currentTarget && currentTarget.tagName) { + if (type === 'load' || type === 'error' || + (type === 'click' && currentTarget.tagName.toLowerCase() === 'input' + && currentTarget.type === 'radio')) + node = currentTarget; + } + + if (node.nodeType == Node.TEXT_NODE) + node = node.parentNode; + + return Element.extend(node); + } + + function findElement(event, expression) { + var element = Event.element(event); + + if (!expression) return element; + while (element) { + if (Object.isElement(element) && Prototype.Selector.match(element, expression)) { + return Element.extend(element); + } + element = element.parentNode; + } + } + + function pointer(event) { + return { x: pointerX(event), y: pointerY(event) }; + } + + function pointerX(event) { + var docElement = document.documentElement, + body = document.body || { scrollLeft: 0 }; + + return event.pageX || (event.clientX + + (docElement.scrollLeft || body.scrollLeft) - + (docElement.clientLeft || 0)); + } + + function pointerY(event) { + var docElement = document.documentElement, + body = document.body || { scrollTop: 0 }; + + return event.pageY || (event.clientY + + (docElement.scrollTop || body.scrollTop) - + (docElement.clientTop || 0)); + } + + + function stop(event) { + Event.extend(event); + event.preventDefault(); + event.stopPropagation(); + + event.stopped = true; + } + + + Event.Methods = { + isLeftClick: isLeftClick, + isMiddleClick: isMiddleClick, + isRightClick: isRightClick, + + element: element, + findElement: findElement, + + pointer: pointer, + pointerX: pointerX, + pointerY: pointerY, + + stop: stop + }; + + var methods = Object.keys(Event.Methods).inject({ }, function(m, name) { + m[name] = Event.Methods[name].methodize(); + return m; + }); + + if (window.attachEvent) { + function _relatedTarget(event) { + var element; + switch (event.type) { + case 'mouseover': + case 'mouseenter': + element = event.fromElement; + break; + case 'mouseout': + case 'mouseleave': + element = event.toElement; + break; + default: + return null; + } + return Element.extend(element); + } + + var additionalMethods = { + stopPropagation: function() { this.cancelBubble = true }, + preventDefault: function() { this.returnValue = false }, + inspect: function() { return '[object Event]' } + }; + + Event.extend = function(event, element) { + if (!event) return false; + + if (!isIELegacyEvent(event)) return event; + + if (event._extendedByPrototype) return event; + event._extendedByPrototype = Prototype.emptyFunction; + + var pointer = Event.pointer(event); + + Object.extend(event, { + target: event.srcElement || element, + relatedTarget: _relatedTarget(event), + pageX: pointer.x, + pageY: pointer.y + }); + + Object.extend(event, methods); + Object.extend(event, additionalMethods); + + return event; + }; + } else { + Event.extend = Prototype.K; + } + + if (window.addEventListener) { + Event.prototype = window.Event.prototype || document.createEvent('HTMLEvents').__proto__; + Object.extend(Event.prototype, methods); + } + + function _createResponder(element, eventName, handler) { + var registry = Element.retrieve(element, 'prototype_event_registry'); + + if (Object.isUndefined(registry)) { + CACHE.push(element); + registry = Element.retrieve(element, 'prototype_event_registry', $H()); + } + + var respondersForEvent = registry.get(eventName); + if (Object.isUndefined(respondersForEvent)) { + respondersForEvent = []; + registry.set(eventName, respondersForEvent); + } + + if (respondersForEvent.pluck('handler').include(handler)) return false; + + var responder; + if (eventName.include(":")) { + responder = function(event) { + if (Object.isUndefined(event.eventName)) + return false; + + if (event.eventName !== eventName) + return false; + + Event.extend(event, element); + handler.call(element, event); + }; + } else { + if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED && + (eventName === "mouseenter" || eventName === "mouseleave")) { + if (eventName === "mouseenter" || eventName === "mouseleave") { + responder = function(event) { + Event.extend(event, element); + + var parent = event.relatedTarget; + while (parent && parent !== element) { + try { parent = parent.parentNode; } + catch(e) { parent = element; } + } + + if (parent === element) return; + + handler.call(element, event); + }; + } + } else { + responder = function(event) { + Event.extend(event, element); + handler.call(element, event); + }; + } + } + + responder.handler = handler; + respondersForEvent.push(responder); + return responder; + } + + function _destroyCache() { + for (var i = 0, length = CACHE.length; i < length; i++) { + Event.stopObserving(CACHE[i]); + CACHE[i] = null; + } + } + + var CACHE = []; + + if (Prototype.Browser.IE) + window.attachEvent('onunload', _destroyCache); + + if (Prototype.Browser.WebKit) + window.addEventListener('unload', Prototype.emptyFunction, false); + + + var _getDOMEventName = Prototype.K, + translations = { mouseenter: "mouseover", mouseleave: "mouseout" }; + + if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED) { + _getDOMEventName = function(eventName) { + return (translations[eventName] || eventName); + }; + } + + function observe(element, eventName, handler) { + element = $(element); + + var responder = _createResponder(element, eventName, handler); + + if (!responder) return element; + + if (eventName.include(':')) { + if (element.addEventListener) + element.addEventListener("dataavailable", responder, false); + else { + element.attachEvent("ondataavailable", responder); + element.attachEvent("onlosecapture", responder); + } + } else { + var actualEventName = _getDOMEventName(eventName); + + if (element.addEventListener) + element.addEventListener(actualEventName, responder, false); + else + element.attachEvent("on" + actualEventName, responder); + } + + return element; + } + + function stopObserving(element, eventName, handler) { + element = $(element); + + var registry = Element.retrieve(element, 'prototype_event_registry'); + if (!registry) return element; + + if (!eventName) { + registry.each( function(pair) { + var eventName = pair.key; + stopObserving(element, eventName); + }); + return element; + } + + var responders = registry.get(eventName); + if (!responders) return element; + + if (!handler) { + responders.each(function(r) { + stopObserving(element, eventName, r.handler); + }); + return element; + } + + var i = responders.length, responder; + while (i--) { + if (responders[i].handler === handler) { + responder = responders[i]; + break; + } + } + if (!responder) return element; + + if (eventName.include(':')) { + if (element.removeEventListener) + element.removeEventListener("dataavailable", responder, false); + else { + element.detachEvent("ondataavailable", responder); + element.detachEvent("onlosecapture", responder); + } + } else { + var actualEventName = _getDOMEventName(eventName); + if (element.removeEventListener) + element.removeEventListener(actualEventName, responder, false); + else + element.detachEvent('on' + actualEventName, responder); + } + + registry.set(eventName, responders.without(responder)); + + return element; + } + + function fire(element, eventName, memo, bubble) { + element = $(element); + + if (Object.isUndefined(bubble)) + bubble = true; + + if (element == document && document.createEvent && !element.dispatchEvent) + element = document.documentElement; + + var event; + if (document.createEvent) { + event = document.createEvent('HTMLEvents'); + event.initEvent('dataavailable', bubble, true); + } else { + event = document.createEventObject(); + event.eventType = bubble ? 'ondataavailable' : 'onlosecapture'; + } + + event.eventName = eventName; + event.memo = memo || { }; + + if (document.createEvent) + element.dispatchEvent(event); + else + element.fireEvent(event.eventType, event); + + return Event.extend(event); + } + + Event.Handler = Class.create({ + initialize: function(element, eventName, selector, callback) { + this.element = $(element); + this.eventName = eventName; + this.selector = selector; + this.callback = callback; + this.handler = this.handleEvent.bind(this); + }, + + start: function() { + Event.observe(this.element, this.eventName, this.handler); + return this; + }, + + stop: function() { + Event.stopObserving(this.element, this.eventName, this.handler); + return this; + }, + + handleEvent: function(event) { + var element = Event.findElement(event, this.selector); + if (element) this.callback.call(this.element, event, element); + } + }); + + function on(element, eventName, selector, callback) { + element = $(element); + if (Object.isFunction(selector) && Object.isUndefined(callback)) { + callback = selector, selector = null; + } + + return new Event.Handler(element, eventName, selector, callback).start(); + } + + Object.extend(Event, Event.Methods); + + Object.extend(Event, { + fire: fire, + observe: observe, + stopObserving: stopObserving, + on: on + }); + + Element.addMethods({ + fire: fire, + + observe: observe, + + stopObserving: stopObserving, + + on: on + }); + + Object.extend(document, { + fire: fire.methodize(), + + observe: observe.methodize(), + + stopObserving: stopObserving.methodize(), + + on: on.methodize(), + + loaded: false + }); + + if (window.Event) Object.extend(window.Event, Event); + else window.Event = Event; +})(); + +(function() { + /* Support for the DOMContentLoaded event is based on work by Dan Webb, + Matthias Miller, Dean Edwards, John Resig, and Diego Perini. */ + + var timer; + + function fireContentLoadedEvent() { + if (document.loaded) return; + if (timer) window.clearTimeout(timer); + document.loaded = true; + document.fire('dom:loaded'); + } + + function checkReadyState() { + if (document.readyState === 'complete') { + document.stopObserving('readystatechange', checkReadyState); + fireContentLoadedEvent(); + } + } + + function pollDoScroll() { + try { document.documentElement.doScroll('left'); } + catch(e) { + timer = pollDoScroll.defer(); + return; + } + fireContentLoadedEvent(); + } + + if (document.addEventListener) { + document.addEventListener('DOMContentLoaded', fireContentLoadedEvent, false); + } else { + document.observe('readystatechange', checkReadyState); + if (window == top) + timer = pollDoScroll.defer(); + } + + Event.observe(window, 'load', fireContentLoadedEvent); +})(); + +Element.addMethods(); + +/*------------------------------- DEPRECATED -------------------------------*/ + +Hash.toQueryString = Object.toQueryString; + +var Toggle = { display: Element.toggle }; + +Element.Methods.childOf = Element.Methods.descendantOf; + +var Insertion = { + Before: function(element, content) { + return Element.insert(element, {before:content}); + }, + + Top: function(element, content) { + return Element.insert(element, {top:content}); + }, + + Bottom: function(element, content) { + return Element.insert(element, {bottom:content}); + }, + + After: function(element, content) { + return Element.insert(element, {after:content}); + } +}; + +var $continue = new Error('"throw $continue" is deprecated, use "return" instead'); + +var Position = { + includeScrollOffsets: false, + + prepare: function() { + this.deltaX = window.pageXOffset + || document.documentElement.scrollLeft + || document.body.scrollLeft + || 0; + this.deltaY = window.pageYOffset + || document.documentElement.scrollTop + || document.body.scrollTop + || 0; + }, + + within: function(element, x, y) { + if (this.includeScrollOffsets) + return this.withinIncludingScrolloffsets(element, x, y); + this.xcomp = x; + this.ycomp = y; + this.offset = Element.cumulativeOffset(element); + + return (y >= this.offset[1] && + y < this.offset[1] + element.offsetHeight && + x >= this.offset[0] && + x < this.offset[0] + element.offsetWidth); + }, + + withinIncludingScrolloffsets: function(element, x, y) { + var offsetcache = Element.cumulativeScrollOffset(element); + + this.xcomp = x + offsetcache[0] - this.deltaX; + this.ycomp = y + offsetcache[1] - this.deltaY; + this.offset = Element.cumulativeOffset(element); + + return (this.ycomp >= this.offset[1] && + this.ycomp < this.offset[1] + element.offsetHeight && + this.xcomp >= this.offset[0] && + this.xcomp < this.offset[0] + element.offsetWidth); + }, + + overlap: function(mode, element) { + if (!mode) return 0; + if (mode == 'vertical') + return ((this.offset[1] + element.offsetHeight) - this.ycomp) / + element.offsetHeight; + if (mode == 'horizontal') + return ((this.offset[0] + element.offsetWidth) - this.xcomp) / + element.offsetWidth; + }, + + + cumulativeOffset: Element.Methods.cumulativeOffset, + + positionedOffset: Element.Methods.positionedOffset, + + absolutize: function(element) { + Position.prepare(); + return Element.absolutize(element); + }, + + relativize: function(element) { + Position.prepare(); + return Element.relativize(element); + }, + + realOffset: Element.Methods.cumulativeScrollOffset, + + offsetParent: Element.Methods.getOffsetParent, + + page: Element.Methods.viewportOffset, + + clone: function(source, target, options) { + options = options || { }; + return Element.clonePosition(target, source, options); + } +}; + +/*--------------------------------------------------------------------------*/ + +if (!document.getElementsByClassName) document.getElementsByClassName = function(instanceMethods){ + function iter(name) { + return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' " + name + " ')]"; + } + + instanceMethods.getElementsByClassName = Prototype.BrowserFeatures.XPath ? + function(element, className) { + className = className.toString().strip(); + var cond = /\s/.test(className) ? $w(className).map(iter).join('') : iter(className); + return cond ? document._getElementsByXPath('.//*' + cond, element) : []; + } : function(element, className) { + className = className.toString().strip(); + var elements = [], classNames = (/\s/.test(className) ? $w(className) : null); + if (!classNames && !className) return elements; + + var nodes = $(element).getElementsByTagName('*'); + className = ' ' + className + ' '; + + for (var i = 0, child, cn; child = nodes[i]; i++) { + if (child.className && (cn = ' ' + child.className + ' ') && (cn.include(className) || + (classNames && classNames.all(function(name) { + return !name.toString().blank() && cn.include(' ' + name + ' '); + })))) + elements.push(Element.extend(child)); + } + return elements; + }; + + return function(className, parentElement) { + return $(parentElement || document.body).getElementsByClassName(className); + }; +}(Element.Methods); + +/*--------------------------------------------------------------------------*/ + +Element.ClassNames = Class.create(); +Element.ClassNames.prototype = { + initialize: function(element) { + this.element = $(element); + }, + + _each: function(iterator) { + this.element.className.split(/\s+/).select(function(name) { + return name.length > 0; + })._each(iterator); + }, + + set: function(className) { + this.element.className = className; + }, + + add: function(classNameToAdd) { + if (this.include(classNameToAdd)) return; + this.set($A(this).concat(classNameToAdd).join(' ')); + }, + + remove: function(classNameToRemove) { + if (!this.include(classNameToRemove)) return; + this.set($A(this).without(classNameToRemove).join(' ')); + }, + + toString: function() { + return $A(this).join(' '); + } +}; + +Object.extend(Element.ClassNames.prototype, Enumerable); + +/*--------------------------------------------------------------------------*/ + +(function() { + window.Selector = Class.create({ + initialize: function(expression) { + this.expression = expression.strip(); + }, + + findElements: function(rootElement) { + return Prototype.Selector.select(this.expression, rootElement); + }, + + match: function(element) { + return Prototype.Selector.match(element, this.expression); + }, + + toString: function() { + return this.expression; + }, + + inspect: function() { + return "#"; + } + }); + + Object.extend(Selector, { + matchElements: function(elements, expression) { + var match = Prototype.Selector.match, + results = []; + + for (var i = 0, length = elements.length; i < length; i++) { + var element = elements[i]; + if (match(element, expression)) { + results.push(Element.extend(element)); + } + } + return results; + }, + + findElement: function(elements, expression, index) { + index = index || 0; + var matchIndex = 0, element; + for (var i = 0, length = elements.length; i < length; i++) { + element = elements[i]; + if (Prototype.Selector.match(element, expression) && index === matchIndex++) { + return Element.extend(element); + } + } + }, + + findChildElements: function(element, expressions) { + var selector = expressions.toArray().join(', '); + return Prototype.Selector.select(selector, element || document); + } + }); +})(); diff --git a/minsrc/rico3Min.bat b/minsrc/rico3Min.bat new file mode 100644 index 0000000..5fbec1a --- /dev/null +++ b/minsrc/rico3Min.bat @@ -0,0 +1,45 @@ +@echo off + +rem ************************************************************************************* +rem Windows batch script to compress most of the Rico library using the YUI compressor +rem Rico is Copyright 2005-2011 by Matt Brown and Richard Cowin +rem For details, see the Rico web site at http://sourceforge.net/projects/openrico/ +rem ************************************************************************************* + +set dest=..\ricoClient\js + +if exist yuicompressor-2.4.6.jar goto compress +echo This script requires Java and the YUI compressor +echo yuicompressor-2.4.6.jar should be placed in this directory before running the script. +echo Download it from http://developer.yahoo.com/yui/compressor/ +goto done + +rem *** Compress Javascript *** +:compress + +type ricoUI.js >all.js + +type ricoCalendar.js >>all.js +type ricoColorPicker.js >>all.js +type ricoDragDrop.js >>all.js +type ricoSearch.js >>all.js +type ricoTree.js >>all.js + +type ricoGridCommon.js >>all.js +type ricoSimpleGrid.js >>all.js +type ricoLiveGrid.js >>all.js +type ricoLiveGridControls.js >>all.js +type ricoLiveGridMenu.js >>all.js +type ricoLiveGridAjax.js >>all.js +type ricoLiveGridForms.js >>all.js + +type ricoLocale_en.js >>all.js + +rem Without line breaks = smallest file +rem java -jar yuicompressor-2.4.6.jar -o %dest%\rico_min.js all.js + +rem With line breaks = slightly larger file, easier to debug +java -jar yuicompressor-2.4.6.jar --line-break 0 -o %dest%\rico_min.js all.js + +:done +pause diff --git a/minsrc/ricoLocale_en.js b/minsrc/ricoLocale_en.js new file mode 100644 index 0000000..c1cf502 --- /dev/null +++ b/minsrc/ricoLocale_en.js @@ -0,0 +1,120 @@ +/***************************************************************** + ricoLocale_en.js - a component of Rico 3.0 + English localization strings + If you would like to include translations for another language, + please send them to dowdybrown@yahoo.com +******************************************************************/ +Rico.langCode='en'; + +// used in ricoLiveGrid.js + +Rico.addPhraseId('bookmarkExact',"Listing records $1 - $2 of $3"); +Rico.addPhraseId('bookmarkAbout',"Listing records $1 - $2 of more than $3"); +Rico.addPhraseId('bookmarkNoRec',"No records"); +Rico.addPhraseId('bookmarkNoMatch',"No matching records"); +Rico.addPhraseId('bookmarkLoading',"Loading..."); +Rico.addPhraseId('sorting',"Sorting..."); +Rico.addPhraseId('exportStatus',"Exporting row $1"); +Rico.addPhraseId('filterAll',"(all)"); +Rico.addPhraseId('filterBlank',"(blank)"); +Rico.addPhraseId('filterEmpty',"(empty)"); +Rico.addPhraseId('filterNotEmpty',"(not empty)"); +Rico.addPhraseId('filterLike',"contains: $1"); +Rico.addPhraseId('filterNot',"not: $1"); +Rico.addPhraseId('requestError',"The request for data returned an error:\n$1"); +Rico.addPhraseId('keywordPrompt',"Enter keyword to search for (use * as a wildcard):"); +Rico.addPhraseId('keywordTitle',"Keyword Search"); +Rico.addPhraseId('ok',"OK"); + +// used in ricoLiveGridMenu.js + +Rico.addPhraseId('gridmenuSortBy',"Sort by: $1"); +Rico.addPhraseId('gridmenuSortAsc',"Ascending"); +Rico.addPhraseId('gridmenuSortDesc',"Descending"); +Rico.addPhraseId('gridmenuFilterBy',"Filter by: $1"); +Rico.addPhraseId('gridmenuRefresh',"Refresh"); +Rico.addPhraseId('gridmenuChgKeyword',"Change keyword..."); +Rico.addPhraseId('gridmenuExcludeAlso',"Exclude this value also"); +Rico.addPhraseId('gridmenuInclude',"Include only this value"); +Rico.addPhraseId('gridmenuGreaterThan',"Greater than or equal to this value"); +Rico.addPhraseId('gridmenuLessThan',"Less than or equal to this value"); +Rico.addPhraseId('gridmenuContains',"Contains keyword..."); +Rico.addPhraseId('gridmenuExclude',"Exclude this value"); +Rico.addPhraseId('gridmenuRemoveFilter',"Remove filter"); +Rico.addPhraseId('gridmenuRemoveAll',"Remove all filters"); + +Rico.addPhraseId('gridmenuExport',"Print/Export"); +Rico.addPhraseId('gridmenuExportVis2Web',"Visible rows to web page"); +Rico.addPhraseId('gridmenuExportAll2Web',"All rows to web page"); +Rico.addPhraseId('gridmenuExportVis2SS',"Visible rows to spreadsheet"); +Rico.addPhraseId('gridmenuExportAll2SS',"All rows to spreadsheet"); + +Rico.addPhraseId('gridmenuHideShow',"Hide/Show"); +Rico.addPhraseId('gridmenuChooseCols',"Choose columns..."); +Rico.addPhraseId('gridmenuHide',"Hide: $1"); +Rico.addPhraseId('gridmenuShow',"Show: $1"); +Rico.addPhraseId('gridmenuShowAll',"Show All"); + +// used in ricoLiveGridAjax.js + +Rico.addPhraseId('sessionExpireMinutes',"minutes before your session expires"); +Rico.addPhraseId('sessionExpired',"EXPIRED"); +Rico.addPhraseId('requestTimedOut',"Request for data timed out!"); +Rico.addPhraseId('waitForData',"Waiting for data..."); +Rico.addPhraseId('httpError',"Received HTTP error: $1"); +Rico.addPhraseId('invalidResponse',"Server returned an invalid response"); + +// used in ricoLiveGridCommon.js + +Rico.addPhraseId('gridChooseCols',"Choose columns"); +Rico.addPhraseId('exportComplete',"Exporting complete"); +Rico.addPhraseId('exportInProgress',"Export in progress..."); +Rico.addPhraseId('disableBlocker',"You need to disable your browser's pop-up blocker before exporting."); +Rico.addPhraseId('showFilterRow',"Show filter row"); // img alt text +Rico.addPhraseId('hideFilterRow',"Hide filter row"); // img alt text + +// used in ricoLiveGridForms.js + +Rico.addPhraseId('selectNone',"(none)"); +Rico.addPhraseId('selectNewVal',"(new value)"); +Rico.addPhraseId('record',"record"); +Rico.addPhraseId('thisRecord',"this $1"); +Rico.addPhraseId('confirmDelete',"Are you sure you want to delete $1?"); +Rico.addPhraseId('deleting',"Deleting..."); +Rico.addPhraseId('formPleaseEnter',"Please enter a value for $1"); +Rico.addPhraseId('formInvalidFmt',"Invalid format for $1"); +Rico.addPhraseId('formOutOfRange',"Value is out of range for $1"); +Rico.addPhraseId('formNewValue',"new value:"); +Rico.addPhraseId('saving',"Saving..."); +Rico.addPhraseId('clear',"clear"); +Rico.addPhraseId('close',"Close"); +Rico.addPhraseId('saveRecord',"Save $1"); +Rico.addPhraseId('cancel',"Cancel"); +Rico.addPhraseId('editRecord',"Edit $1"); +Rico.addPhraseId('deleteRecord',"Delete this $1"); +Rico.addPhraseId('cloneRecord',"Clone $1"); +Rico.addPhraseId('addRecord',"Add new $1"); +Rico.addPhraseId('addedSuccessfully',"$1 added successfully"); +Rico.addPhraseId('deletedSuccessfully',"$1 deleted successfully"); +Rico.addPhraseId('updatedSuccessfully',"$1 updated successfully"); + +// used in ricoTree.js + +Rico.addPhraseId('treeSave',"Save Selection"); +Rico.addPhraseId('treeClear',"Clear All"); + +// used in ricoCalendar.js + +Rico.addPhraseId('calToday',"Today is $1 $2 $3"); // $1=day, $2=monthabbr, $3=year, $4=month number +Rico.addPhraseId('calWeekHdg',"Wk"); +Rico.addPhraseId('calYearRange',"Year ($1-$2)"); +Rico.addPhraseId('calInvalidYear',"Invalid year"); + +// Date & number formats + +Rico.thouSep="," +Rico.decPoint="." +Rico.dateFmt="mm/dd/yyyy" + +Rico.monthNames=['January','February','March','April','May','June','July','August','September','October','November','December'] +Rico.dayNames=['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'] diff --git a/plugins/asp/LoadRicoClient.asp b/plugins/asp/LoadRicoClient.asp index 93cb6f0..107997d 100644 --- a/plugins/asp/LoadRicoClient.asp +++ b/plugins/asp/LoadRicoClient.asp @@ -21,13 +21,13 @@ Public jsDir ' directory containing Rico's javascript files Public cssDir ' directory containing Rico's css files Public imgDir ' directory containing Rico's image files Public imgHeading ' background image for grid headings and window titles, used in grayedout theme -Public transDir ' directory containing ricoLocale_xx files, set to jsDir/translations when jsDir is set +Public transDir ' directory containing ricoLocale_xx files, set to jsDir when jsDir is set Public ricoLib ' base library - prototype, jquery, etc Public ricoLogging ' enable console logging? Public grid_striping ' apply row striping to LiveGrids? Public LoadBaseLib ' load base Javascript library (prototype, jQuery, etc)? Public jQuery_theme_path ' url to jqueryui themes -Public SupportedLangs ' comma-separated list of 2-character codes, representing the files that can be found in js/translations directory. Defaults to ones delivered with Rico. +Public SupportedLangs ' comma-separated list of 2-character codes, representing the files that can be found in jsDir directory. Defaults to ones delivered with Rico. ' Constructor @@ -61,7 +61,7 @@ Public Sub SetRicoClientPaths(ByVal jsPath, cssPath, imgPath) jsDir = jsPath cssDir= cssPath imgDir= imgPath - transDir=jsDir & "translations/" + transDir=jsDir End Sub diff --git a/ricoClient/js/README.TXT b/ricoClient/js/README.TXT new file mode 100644 index 0000000..6497d78 --- /dev/null +++ b/ricoClient/js/README.TXT @@ -0,0 +1,18 @@ +proto_min.js and glow_min.js are included in the Rico distribution +for the purpose of demonstrating the examples. Each of these libraries +has licensing terms that may be different from Rico itself. Make sure you +understand the terms before deploying any library into a production +environment. + +Prototype is Copyright 2005-2010 by Sam Stephenson +For details, see the Prototype web site at http://www.prototypejs.org/ + +Glow is Copyright 2009 by the British Broadcasting Corporation +For details, see the Glow web site at http://www.bbc.co.uk/glow/ + +Rico is Copyright 2005-2011 by Matt Brown and Richard Cowin +For details, see the Rico web site at http://sourceforge.net/projects/openrico/ + +The base locale of English phrases, which should be used as the basis of +any other translation, can be found in the rico3/minsrc directory. +All other locale files are located in rico3/ricoClient/js. diff --git a/ricoClient/js/glow_min.js b/ricoClient/js/glow_min.js index e0879ad..e6d6e0e 100644 --- a/ricoClient/js/glow_min.js +++ b/ricoClient/js/glow_min.js @@ -1,5 +1,20 @@ -(function(){var C={glow:true},E=/([$^\\\/()|?+*\[\]{}.-])/g,F=navigator.userAgent.toLowerCase(),y="1.7.3",d=0,B=[],w=0,e=[],u=0,G=false,v={VERSION:y,UID:"glow"+Math.floor(Math.random()*(1<<30)),isDomReady:window.gloader&&gloader.isReady,isReady:window.gloader&&gloader.isReady,env:function(){var f=[0,NaN],j=(/opera[\s\/]([\w\.]+)/.exec(F)||f)[1],c=j?NaN:(/msie ([\w\.]+)/.exec(F)||f)[1],a=(/rv:([\w\.]+).*gecko\//.exec(F)||f)[1],h=(/applewebkit\/([\w\.]+)/.exec(F)||f)[1],g=(/khtml\/([\w\.]+)/.exec(F)||f)[1],b=parseFloat;return{gecko:b(a),ie:b(c),opera:b(j),webkit:b(h),khtml:b(g),version:c||a||h||j||g,standardsMode:document.compatMode!="BackCompat"&&(!c||c>=6)}}(),module:function(c){var f=2,a=c.depends[0]||[],h=a.length,g=c.name,b=window.glow;if(c.library[1]!=v.VERSION){throw new Error("Cannot register "+g+": Version mismatch")}if(a[2]){for(;f")}if(f.delimiter==undefined){j=/\{[^{}]+\}/g}else{c=f.delimiter.substr(0,1).replace(E,"\\$1");h=f.delimiter.substr(1,1).replace(E,"\\$1")||c;j=new RegExp(c+"[^"+c+h+"]+"+h,"g")}return g.replace(j,function(l){var k=l.slice(1,-1),n=k.split("."),p,m=0,o=n.length;if(k in b){p=b[k]}else{p=b;for(;m=6)};}(),module:function(u){var t=2,w=u.depends[0]||[],d=w.length,e=u.name,v=window.glow;if(u.library[1]!=n.VERSION){throw new Error("Cannot register "+e+": Version mismatch");}if(w[2]){for(;t");}if(u.delimiter==undefined){d=/\{[^{}]+\}/g;}else{v=u.delimiter.substr(0,1).replace(b,"\\$1");e=u.delimiter.substr(1,1).replace(b,"\\$1")||v;d=new RegExp(v+"[^"+v+e+"]+"+e,"g");}return t.replace(d,function(D){var A=D.slice(1,-1),C=A.split("."),B,z=0,y=C.length;if(A in w){B=w[A];}else{B=w;for(;z 5.5)@*/ -(window.gloader||glow).module({name:"glow.i18n",library:["glow","1.7.3"],depends:[["glow","1.7.3"]],builder:function(Y){var ab;var U={l:/^[a-z]$/,lv:/^[a-z]{2,3}$/,s:/^[A-Z][a-z]{3}$/,r:/^[A-Z]{2}|[0-9]{3}$/,v:/^[a-z0-9]{4,}$/};var W=1,ah=2,ag=4,ai=8,ac=W+ah+ag+ai,al=W+ag+ai,M=W+ah+ai,ao=W+ai,K=W+ah+ag,am=W+ag,an=W+ah;var af={l:W,s:ah,r:ag,v:ai},L=["l","s","r","v"],S={l:0,s:1,r:2,v:3};var X={};var ap={};var ad=O(document.documentElement.lang||"en")||O("en");function V(a){for(var b in U){if(U[b].test(a)){return b}}return""}function O(a){if(!a.split){a=""}var j=a.split("-"),f=j.length,e=[],m={l:"",s:"",r:"",v:""},n=0,h=n,b=0,g,d;for(var k=0,c=L.length;k]?)\s*/,classNameOrId:(a3.webkit<417)?new RegExp("^([\\.#])((?:(?![\\.#\\[:\\s\\\\]).|\\\\.)+)"):/^([\.#])((?:[^\.#\[:\\\s]+|\\.)+)/},ak=/([$^\\\/()|?+*\[\]{}.-])/g,aO={},aq={checked:"checked","class":"className",disabled:"disabled","for":"htmlFor",maxlength:"maxLength"},bd={checked:true,disabled:true},aD={maxlength:function(a){return a.toString()=="2147483647"?undefined:a}},aL=1,aU="_unique"+aX.UID,aB="_uniqueData"+aX.UID,aG=1,ax=[],aA={black:0,silver:12632256,gray:8421504,white:16777215,maroon:8388608,red:16711680,purple:8388736,fuchsia:16711935,green:32768,lime:65280,olive:8421376,yellow:16776960,navy:128,blue:255,teal:32896,aqua:65535,orange:16753920},aK=/height|top/,aY=/^rgb\(([\d\.]+)(%?),\s*([\d\.]+)(%?),\s*([\d\.]+)(%?)/i,aQ=/^(?:(width|height)|(border-(top|bottom|left|right)-width))$/,aM=/width|height|top$|bottom$|left$|right$|spacing$|indent$|font-size/,ao,bc,ay,aC,aR=window,a5=document,am,aE,aV,at=a5.createElement("div"),aT=[1,"","
      "],aP=[0,"",""],au=a3.webkit<526?[0,"","",true]:[1,"b
      ","
      "],bf=[3,"","
      "],aI={caption:aT,thead:aT,th:bf,colgroup:aT,tbody:aT,tr:[2,"","
      "],td:bf,tfoot:aT,option:[1,""],legend:[1,"
      ","
      "],link:au,script:au,style:au};if(a3.ie){window.attachEvent("onunload",function(){at=null})}aX.ready(function(){am=a5.body;aE=a5.documentElement});(function(){var a=a5.createElement("div");a.a=1;aV=!!a.cloneNode(true).a})();function aH(a){for(var b=a.firstChild;b;b=b.nextSibling){if(b.nodeType==1){return b}}return null}function aW(a){return new RegExp(["(^|\\s)",a.replace(ak,"\\$1"),"($|\\s)"].join(""),"g")}function av(a){var b=[],e=(/^\s*<([^\s>]+)/.exec(a)||[,"div"])[1],g=aI[e]||aP,d,f,c=0;at.innerHTML=(g[1]+a+g[2]);f=at;d=g[0];while(d--){f=f.lastChild}while(f.firstChild){b[c++]=f.removeChild(f.firstChild)}f=null;return b}function a1(a){var b=[],c=0;for(;a[c];c++){b[c]=a[c]}return b}function bb(b,e){for(var c=this,a=0,d=c.length;a500&&a3.webkit<526&&j=="margin-right"&&g.getPropertyValue("position")!="absolute"){j="margin-left"}k=g.getPropertyValue(j)}}else{if(h){if(j=="opacity"){d=/alpha\(opacity=([^\)]+)\)/.exec(h.filter);return d?String(parseInt(d[1],10)/100):"1"}k=String(h[al(j)]);if(/^-?[\d\.]+(?!px)[%a-z]+$/i.test(k)&&j!="font-size"){k=az(c,k,aK.test(j))+"px"}}}}}if(j.indexOf("color")!=-1){k=ap(k).toString()}else{if(k.indexOf("url")==0){k=k.replace(/\"/g,"")}}return k}function az(d,b,f){var h=f?"top":"left",e=f?"Top":"Left",a=d.style,g=a[h],c=d.runtimeStyle[h],j;d.runtimeStyle[h]=d.currentStyle[h];a[h]=b;j=a["pixel"+e];a[h]=g;d.runtimeStyle[h]=c;return j}function ap(h){if(/^(transparent|rgba\(0, ?0, ?0, ?0\))$/.test(h)){return"transparent"}var d,j,c,b,g,e=Math.round,a=parseInt,f=parseFloat;if(d=aY.exec(h)){j=d[2]?e(((f(d[1])/100)*255)):a(d[1]);c=d[4]?e(((f(d[3])/100)*255)):a(d[3]);b=d[6]?e(((f(d[5])/100)*255)):a(d[5])}else{if(typeof h=="number"){g=h}else{if(h.charAt(0)=="#"){if(h.length=="4"){h="#"+h.charAt(1)+h.charAt(1)+h.charAt(2)+h.charAt(2)+h.charAt(3)+h.charAt(3)}g=a(h.slice(1),16)}else{g=aA[h]}}j=(g)>>16;c=(g&65280)>>8;b=(g&255)}h=new String("rgb("+j+", "+c+", "+b+")");h.r=j;h.g=c;h.b=b;return h}function a4(a){var b="",d=a.childNodes,c=0,e=d.length;for(;c=521){for(;a1?c:undefined}if(typeof e=="object"){for(d in e){if(a6.hasOwnProperty(e,d)){c.attr(d,e[d])}}return c}if(a3.ie&&aq[e]){if(b>1){bb.call(c,f[1],function(g){this[aq[e]]=g});return c}a=c[0][aq[e]];if(bd[e]){return a?e:undefined}else{if(aD[e]){return aD[e](a)}}return a}if(b>1){bb.call(c,f[1],function(g){this.setAttribute(e,g)});return c}return aw(c[0])?c[0].getAttribute(e):c[0].getAttribute(e,2)},removeAttr:function(e){var a=a3.ie&&aq[e],b=this,d=0,c=b.length;for(;d-1?h.options[h.selectedIndex].value:""}else{if(l=="select-multiple"){for(var g=h.options.length;j0){for(;d500){a+=parseInt(r(e,"border-left-width"))||0;d+=parseInt(r(e,"border-top-width"))||0}if(e.nodeName.toLowerCase()!="body"){h=e}}e=j;while((e=e.parentNode)&&(e!=am)&&(e!=aE)){a-=e.scrollLeft;d-=e.scrollTop;if(a3.gecko&&r(e,"overflow")!="visible"){a+=parseInt(r(e,"border-left-width"));d+=parseInt(r(e,"border-top-width"))}}if(f){a+=g.x;d+=g.y}if((a3.webkit<500&&(f||r(h,"position")=="absolute"))||(a3.gecko&&r(h,"position")!="absolute")){a-=am.offsetLeft;d-=am.offsetTop}return{left:a,top:d}}},position:function(){var h=aj.get(aF(this[0])),b=!!h[0],d=parseInt(this.css("margin-left"))||0,e=parseInt(this.css("margin-top"))||0,f=(b&&parseInt(h.css("border-left-width")))||0,c=(b&&parseInt(h.css("border-top-width")))||0,a=this.offset(),g=b?h.offset():{top:0,left:0};return{left:a.left-g.left-d-f,top:a.top-g.top-e-c}},append:function(b){var c=this,f=0,e=1,d=c.length,a;if(d==0){return c}a=typeof b=="string"?a1(av(b)):b.nodeType?[b]:a1(b);for(;a[f];f++){c[0].appendChild(a[f])}for(;e=0;f--){b[0].parentNode.insertBefore(g[f],b[0].nextSibling)}for(;e=0;f--){b[e].parentNode.insertBefore(c[f],b[e].nextSibling)}}return b},before:function(a){var b=this,d=b.length,f=0,e=1,g,h,c;if(d==0){return b}g=typeof a=="string"?aj.create(a):a instanceof aj.NodeList?a:aj.get(a);h=g.length;for(;f"){p[q++]=[g,[null]];if(m){p[q++]=[c,[m.replace(/\\/g,""),null]]}if(t&&t!="*"){p[q++]=[b,[t,null]]}}}s=true;while(s){if(u.charAt(0)=="#"||u.charAt(0)=="."){if(k=aZ.classNameOrId.exec(u)){if(u.charAt(0)=="#"){p[q++]=[c,[k[2].replace(/\\/g,""),null]]}else{p[q++]=[d,[k[2].replace(/\\/g,""),null]]}u=u.slice(k[0].length)}else{throw new Error("Invalid Selector "+l)}}else{s=false}}n=false}if(u!==""){throw new Error("Invalid Selector "+l)}return aO[u]=p}function e(l,n){var o=n;for(var k=0,m=l.length;k');aX.dom=aj}});(window.gloader||glow).module({name:"glow.events",library:["glow","1.7.3"],depends:[["glow","1.7.3","glow.dom"]],builder:function(af){var aj=af.dom.get;var aa={};var P=1;var ah=1;var ag={};var ar={};var ae={};var ai="__eventId"+af.UID;var am=ai+"PreventDefault";var V=ai+"StopPropagation";var X={};var an=1;var ac={};var L={};var T=1;var ap=2;var Z=4;var al={TAB:"\t",SPACE:" ",ENTER:"\n",BACKTICK:"`"};var r={"96":223};var W={CAPSLOCK:20,NUMLOCK:144,SCROLLLOCK:145,BREAK:19,BACKTICK:223,BACKSPACE:8,PRINTSCREEN:44,MENU:93,SPACE:32,SHIFT:16,CTRL:17,ALT:18,ESC:27,TAB:9,META:91,RIGHTMETA:92,ENTER:13,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,INS:45,HOME:36,PAGEUP:33,DEL:46,END:35,PAGEDOWN:34,LEFT:37,UP:38,RIGHT:39,DOWN:40};var O={};for(var R in W){O[""+W[R]]=R}var N="0123456789=;'\\/#,.-";function Y(c){var d=L[c];if(!d){return false}var e=ac[d];if(!e){return false}for(var a=0,b=e.length;a418)){if((f=="focus"||f=="blur")&&(af.env.opera)){e.parentNode.addEventListener(f,function(){},true)}e.addEventListener(f.toLowerCase()=="mousewheel"&&af.env.gecko?"DOMMouseScroll":f,b,a)}else{var g="on"+f;var d=e[g];if(d){e[g]=function(){var j=d.apply(this,arguments),h=b.apply(this,arguments);return(j!==false)&&(h!==false)}}else{e[g]=b}}e=null}function at(e,d){var c=aj(e),b=d?"mouseout":"mouseover",a=d?"mouseleave":"mouseenter";aa.addListener(e,b,function(f){var g=aj(f.relatedTarget);if(!g.eq(c)&&!g.isWithin(c)){return !aa.fire(c[0],a,f).defaultPrevented()}})}aa._copyListeners=function(b,d){var h=b.length,e,c,a,f,g;while(h--){if(b[h][ai]){e=ag[b[h][ai]];for(c in e){a=0;f=e[c].length;for(;a").text(html).html()}}}});(window.gloader||glow).module({name:"glow.net",library:["glow","1.7.3"],depends:[["glow","1.7.3","glow.data","glow.events"]],builder:function(H){var x={XML_ERR:"Cannot get response as XML, check the mime type of the data",POST_DEFAULT_CONTENT_TYPE:"application/x-www-form-urlencoded;"},w=/\+xml$/,A=[],K="c",B="_"+H.UID+"loadScriptCbs",I=H.dom.get,M=H.events,J=function(){},F=1;function y(){if(window.ActiveXObject){return(y=function(){return new ActiveXObject("Microsoft.XMLHTTP")})()}else{return(y=function(){return new XMLHttpRequest()})()}}function L(a){var b=H.lang.apply({onLoad:J,onError:J,onAbort:J,headers:{},async:true,useCache:false,data:null,defer:false,forceXml:false},a||{});if(!("X-Requested-With" in b.headers)){b.headers["X-Requested-With"]="XMLHttpRequest"}return b}function r(a){return[a,(/\?/.test(a)?"&":"?"),"a",new Date().getTime(),parseInt(Math.random()*100000)].join("")}function G(f,d,e){var h=y(),b=e.data&&(typeof e.data=="string"?e.data:H.data.encodeUrl(e.data)),c,a=new z(h,e);if(!e.useCache){d=r(d)}h.open(f,d,e.async);for(c in e.headers){h.setRequestHeader(c,e.headers[c])}function g(){a.send=J;if(e.async){if(e.timeout){a._timeout=setTimeout(function(){O(a);var k=new N(h,true,a);M.fire(a,"error",k)},e.timeout*1000)}h.onreadystatechange=function(){if(h.readyState==4){a._timeout&&clearTimeout(a._timeout);a.completed=true;var k=new N(h,false,a);if(k.wasSuccessful){M.fire(a,"load",k)}else{M.fire(a,"error",k)}h.onreadystatechange=new Function()}};h.send(b);return a}else{h.send(b);a.completed=true;var j=new N(h,false,a);if(j.wasSuccessful){M.fire(a,"load",j)}else{M.fire(a,"error",j)}return j}}a.send=g;return e.defer?a:g()}var D={};D.get=function(b,a){a=L(a);return G("GET",b,a)};D.post=function(c,b,a){a=L(a);a.data=b;if(!a.headers["Content-Type"]){a.headers["Content-Type"]=x.POST_DEFAULT_CONTENT_TYPE}return G("POST",c,a)};D.send=function(d,c,b,a){b=b||"";a=L(a);a.data=b;return G(d,c,a)};D.put=function(c,b,a){a=L(a);a.data=b;if(!a.headers["Content-Type"]){a.headers["Content-Type"]=x.POST_DEFAULT_CONTENT_TYPE}return G("PUT",c,a)};D.del=function(b,a){a=L(a);return G("DELETE",b,a)};D.loadScript=function(c,e){var b=A.length,d,a=K+b,e=L(e),g=new z(b,e),c=e.useCache?c:r(c),f=window[B]||(window[B]={});if(e.onLoad!=J){f[a]=function(){g._timeout&&clearTimeout(g._timeout);g.completed=true;e.onLoad.apply(this,arguments);g.destroy();d=f[a]=undefined;delete f[a]};c=H.lang.interpolate(c,{callback:B+"."+a})}d=A[b]=document.createElement("script");if(e.charset){d.charset=e.charset}M.addListener(g,"abort",e.onAbort);H.ready(function(){if(e.timeout){g._timeout=setTimeout(function(){O(g);e.onError()},e.timeout*1000)}if(H.env.opera){setTimeout(function(){if(d){d.src=c}},0)}else{d.src=c}document.body.appendChild(d)});return g};function O(b){var c=b.nativeRequest,a=b._callbackIndex;b._timeout&&clearTimeout(b._timeout);if(c){c.onreadystatechange=new Function();c.abort()}else{if(a){window[B][K+a]=J;H.dom.get(A[a]).destroy()}}}function z(d,b){this._timeout=null;this._forceXml=b.forceXml;if(b.forceXml&&d.overrideMimeType){d.overrideMimeType("application/xml")}this.complete=false;if(typeof d=="number"){this._callbackIndex=d}else{this.nativeRequest=d}var a=["Load","Error","Abort"],c=0;for(;c<3;c++){M.addListener(this,a[c].toLowerCase(),b["on"+a[c]])}}z.prototype={send:function(){},abort:function(){if(!this.completed&&!M.fire(this,"abort").defaultPrevented()){O(this)}return this},destroy:function(){var a=this;if(this._callbackIndex!==undefined){setTimeout(function(){I(A[a._callbackIndex]).destroy();A[a._callbackIndex]=undefined;delete A[a._callbackIndex]},0)}return this}};function N(a,c,b){M.Event.call(this);this._request=b;this.nativeResponse=a;this.status=c?408:a.status==1223?204:a.status;this.timedOut=!!c;this.wasSuccessful=(this.status>=200&&this.status<300)||this.status==304||(this.status==0&&a.responseText)}function E(){var a=this.header("Content-Type");return w.test(a)||a===""}H.lang.extend(N,M.Event,{text:function(){return this.nativeResponse.responseText},xml:function(){var a=this.nativeResponse;if((H.env.ie&&E.call(this))||(this._request._forceXml&&!this._request.nativeRequest.overrideMimeType&&window.ActiveXObject)){var b=new ActiveXObject("Microsoft.XMLDOM");b.loadXML(a.responseText);return b}else{if(!a.responseXML){throw new Error(x.XML_ERR)}return a.responseXML}},json:function(a){return H.data.decodeJson(this.text(),{safeMode:a})},header:function(a){return this.nativeResponse.getResponseHeader(a)},statusText:function(){return this.timedOut?"Request Timeout":this.nativeResponse.statusText}});var C=function(c,a,d,b){this.url=c;this.data=a;this.isGet=d;this.opts=b};C.prototype={_send:function(){this._addIframe();this._addForm();this._addTimeout();this.onLoad=this._handleResponse;this._submitForm()},_addIframe:function(){this.iframe=H.dom.create('');var c=this.iframe[0],b=this,a=function(){if(b.onLoad){b.onLoad()}};if(c.attachEvent){c.attachEvent("onload",a)}else{c.onload=a}I("body").append(this.iframe)},_addForm:function(){var a=this._window().document;if(H.env.ie){a.open();a.write("");a.close()}var b=this.form=a.createElement("form");b.setAttribute("action",this.url);b.setAttribute("method",this.isGet?"GET":"POST");var c=a.getElementsByTagName("body")[0];c.appendChild(b);this._addFormData()},_addFormData:function(){for(var a in this.data){if(!this.data.hasOwnProperty(a)){continue}if(this.data[a] instanceof Array){var c=this.data[a].length;for(var b=0;b');function addEventsFromOpts(instance,opts,eventProps){for(var i=0,len=eventProps.length;ianim.duration){anim.position=anim.duration}}else{anim.position++}anim.value=anim.tween(anim.position/anim.duration);events.fire(anim,"frame")}}}})();function convertCssUnit(element,fromValue,toUnit,axis){var elmStyle=testElement[0].style,axisProp=(axis=="x")?"width":"height",startPixelValue,toUnitPixelValue;elmStyle.margin=elmStyle.padding=elmStyle.border="0";startPixelValue=testElement.css(axisProp,fromValue).insertAfter(element)[axisProp]();toUnitPixelValue=testElement.css(axisProp,10+toUnit)[axisProp]()/10;testElement.remove();return startPixelValue/toUnitPixelValue}function keepWithinRange(num,start,end){if(start!==undefined&&numend){return end}return num}function buildAnimFunction(element,spec){var cssProp,r=["a=(function(){"],rLen=1,fromUnit,unitDefault=[0,"px"],to,from,unit,a;for(cssProp in spec){r[rLen++]='element.css("'+cssProp+'", ';if(typeof spec[cssProp]!="object"){to=spec[cssProp]}else{to=spec[cssProp].to}if((from=spec[cssProp].from)===undefined){if(cssProp=="font-size"||cssProp=="background-position"){throw new Error("From value must be set for "+cssProp)}from=element.css(cssProp)}if(hasUnits.test(cssProp)){unit=(getUnit.exec(to)||unitDefault)[1];fromUnit=(getUnit.exec(from)||unitDefault)[1];from=parseFloat(from)||0;to=parseFloat(to)||0;if(from&&unit!=fromUnit){if(cssProp=="font-size"){throw new Error("Units must be the same for font-size")}from=convertCssUnit(element,from+fromUnit,unit,usesYAxis.test(cssProp)?"y":"x")}if(noNegatives.test(cssProp)){r[rLen++]="keepWithinRange(("+(to-from)+" * this.value) + "+from+', 0) + "'+unit+'"'}else{r[rLen++]="("+(to-from)+" * this.value) + "+from+' + "'+unit+'"'}}else{if(!(isNaN(from)||isNaN(to))){from=Number(from);to=Number(to);r[rLen++]="("+(to-from)+" * this.value) + "+from}else{if(cssProp.indexOf("color")!=-1){to=dom.parseCssColor(to);if(!glow.lang.hasOwnProperty(from,"r")){from=dom.parseCssColor(from)}r[rLen++]='"rgb(" + keepWithinRange(Math.round('+(to.r-from.r)+" * this.value + "+from.r+'), 0, 255) + "," + keepWithinRange(Math.round('+(to.g-from.g)+" * this.value + "+from.g+'), 0, 255) + "," + keepWithinRange(Math.round('+(to.b-from.b)+" * this.value + "+from.b+'), 0, 255) + ")"'}else{if(cssProp=="background-position"){var vals={},fromTo=["from","to"],unit=(getUnit.exec(from)||unitDefault)[1];vals.fromOrig=from.toString().split(/\s/);vals.toOrig=to.toString().split(/\s/);if(vals.fromOrig[1]===undefined){vals.fromOrig[1]="50%"}if(vals.toOrig[1]===undefined){vals.toOrig[1]="50%"}for(var i=0;i<2;i++){vals[fromTo[i]+"X"]=parseFloat(vals[fromTo[i]+"Orig"][0]);vals[fromTo[i]+"Y"]=parseFloat(vals[fromTo[i]+"Orig"][1]);vals[fromTo[i]+"XUnit"]=(getUnit.exec(vals[fromTo[i]+"Orig"][0])||unitDefault)[1];vals[fromTo[i]+"YUnit"]=(getUnit.exec(vals[fromTo[i]+"Orig"][1])||unitDefault)[1]}if((vals.fromXUnit!==vals.toXUnit)||(vals.fromYUnit!==vals.toYUnit)){throw new Error("Mismatched axis units cannot be used for "+cssProp)}r[rLen++]="("+(vals.toX-vals.fromX)+" * this.value + "+vals.fromX+') + "'+vals.fromXUnit+' " + ('+(vals.toY-vals.fromY)+" * this.value + "+vals.fromY+') + "'+vals.fromYUnit+'"'}}}}r[rLen++]=");"}r[rLen++]="})";return eval(r.join(""))}var r={};r.css=function(element,duration,spec,opts){element=get(element);var anim=new r.Animation(duration,opts);if(element[0]){events.addListener(anim,"frame",buildAnimFunction(element,spec))}return anim};slideElement=function slideElement(element,duration,action,opts){duration=duration||0.5;element=$(element);opts=glow.lang.apply({tween:glow.tweens.easeBoth(),onStart:function(){},onComplete:function(){}},opts);var i=0,thatlength=element.length,completeHeight,fromHeight,channels=[],timeline;for(;i0)){element[i].style.overflow="hidden";if(glow.env.ie<8){element[i].style.zoom=1}completeHeight=0;fromHeight=element.slice(i,i+1).height()}else{if(action=="down"||(action=="toggle"&&element.slice(i,i+1).height()==0)){fromHeight=element.slice(i,i+1).height();element[i].style.height="";completeHeight=element.slice(i,i+1).height();if(completeHeight===0){element[i].style.height="auto";completeHeight=element.slice(i,i+1).height()}element[i].style.height=fromHeight+"px"}}channels[i]=[glow.anim.css(element[i],duration,{height:{from:fromHeight,to:completeHeight}},{tween:opts.tween})]}timeline=new glow.anim.Timeline(channels,{destroyOnComplete:true});events.addListener(timeline,"complete",function(){element.each(function(){if(this.style.height.slice(0,1)!="0"){this.style.height="";if(glow.dom.get(this).height()===0){this.style.height="auto"}}})});events.addListener(timeline,"start",opts.onStart);events.addListener(timeline,"complete",opts.onComplete);return timeline.start()};r.slideDown=function(element,duration,opts){return slideElement(element,duration,"down",opts)};r.slideUp=function(element,duration,opts){return slideElement(element,duration,"up",opts)};r.slideToggle=function(element,duration,opts){return slideElement(element,duration,"toggle",opts)};r.fadeOut=function(element,duration,opts){return r.fadeTo(element,0,duration,opts)};r.fadeIn=function(element,duration,opts){return r.fadeTo(element,1,duration,opts)};r.fadeTo=function(element,opacity,duration,opts){duration=duration||0.5;element=$(element);opts=glow.lang.apply({tween:glow.tweens.easeBoth(),onStart:function(){},onComplete:function(){}},opts);var i=0,thatlength=element.length,channels=[],timeline;for(;ianim.duration){anim.position=anim.duration}anim.value=anim.tween(anim.position/anim.duration);events.fire(anim,"frame");if(anim.position==anim.duration){this._advanceChannel(i)}}},start:function(){var e=events.fire(this,"start");if(e.defaultPrevented()){return this}var i,iLen,j,jLen,anim;this._playing=true;for(i=0,iLen=this._channels.length;ithis.duration){if(this.loop){pos=pos%this.duration}else{pos=this.duration}}this._controlAnim.goTo(pos);for(i=0;ipos){this._channelPos[i]=j;anim.goTo(pos-runningDuration);break}anim.goTo(anim.duration);runningDuration+=anim.duration}}for(k=channelLen;k>j;k--){anim.goTo(0)}}}else{for(i=0;i=this._fields[this._fieldCur]._tests.length){if(!n.call(this)){return}}var b=this._fields[this._fieldCur]._tests[this._testCur];var c;if(b.opts.field){c=this.formNode.val()[b.opts.field]||"";b.isConditional=true}else{c=this.formNode.val()[this._fields[this._fieldCur].name]||""}if(!c.join){c=[c]}var a=function(d){return function(){m.apply(d,arguments)}}(this);b.opts.on=b.opts.on||"submit";if(this._result.eventName&&(" "+b.opts.on+" ").indexOf(" "+this._result.eventName+" ")!=-1){if(this._fieldName&&this._fieldName!=b.name){o.call(this);return}if(typeof k.forms.tests[b.type]!="function"){throw"Unimplemented test: no test exists of type '"+b.type+"'."}b.opts._localeModule=this._localeModule;k.forms.tests[b.type](c,b.opts,a,this.formNode.val())}else{o.call(this)}};var n=function(){this._fieldCur++;this._testCur=0;if(this._fieldCur>=this._fields.length){this._fieldCur=0;k.events.fire(this,"validate",this._result);if(this.eventName=="submit"&&this._result&&!this._result.defaultPrevented()){try{this.formNode[0].submit()}catch(a){throw new Error("Glow can't submit the form because the submit function can't be called. Perhaps that form's submit was replaced by an input element named 'submit'?")}}return false}return true};var m=function(b,a){if(typeof b=="boolean"){b=(b)?k.forms.PASS:k.forms.FAIL}if(this._fields[this._fieldCur]._tests[this._testCur].isConditional&&b===k.forms.FAIL){b=k.forms.SKIP}this._result.fields.push({name:this._fields[this._fieldCur].name,result:b,message:a});if(b!==k.forms.PASS){if(b===k.forms.FAIL){this._result.errorCount++}this._testCur=this._fields[this._fieldCur]._tests.length}o.call(this)};k.forms.Form.prototype.addTests=function(a){var b={name:a,_tests:[]};var t=function(p){return function(){p.validate.apply(p,["change",a])}}(this);var e=function(p){return function(){p.validate.apply(p,["click",a])}}(this);var d=function(p){return function(){p.validate.apply(p,["idle",a])}}(this);for(var g=1;g1)?arguments[g][1]:{};b._tests.push({name:a,type:s,opts:c});if(!t.added&&(" "+c.on+" ").indexOf(" change ")!=-1){var f=this.formNode.get("*").each(function(p){if(this.name==a){k.events.addListener(this,"change",t);t.added=true}})}if(!e.added&&(" "+c.on+" ").indexOf(" click ")!=-1){var f=this.formNode.get("*").each(function(p){if(this.name==a){k.events.addListener(this,"click",e);e.added=true}})}if(!d.added&&(" "+c.on+" ").indexOf(" idle ")!=-1){var u=(typeof c.delay!="undefined")?parseInt(c.delay):1000;var f=this.formNode.get("*").each(function(p){if(this.name==a){k.events.addListener(this,"keyup",function(q){return function(){window.clearTimeout(this.idleTimeoutID);if(this.value){this.idleTimeoutID=window.setTimeout(d,q)}}}(u));k.events.addListener(this,"blur",function(){window.clearTimeout(this.idleTimeoutID)});d.added=true}})}}this._fields.push(b);return this};k.forms.ValidateResult=function(a){k.events.Event.apply(this);this.eventName=a;this.errorCount=0;this.value=undefined;this.fields=[]};k.lang.extend(k.forms.ValidateResult,k.events.Event);k.forms.PASS=1;k.forms.FAIL=0;k.forms.SKIP=-1;k.forms.tests={required:function(d,a,f){var b=a.message||a._localeModule.TEST_MESSAGE_REQUIRED;for(var c=0,e=d.length;cNumber(a.arg)){f(k.forms.FAIL,b);return}}f(k.forms.PASS,b)},range:function(c,g,f){var q=g.arg.split("..");if(typeof q[0]=="undefined"||typeof q[1]=="undefined"){throw"Range test requires a parameter like 0..10."}var a=g.message||l(g._localeModule.TEST_MESSAGE_RANGE,{min:q[0],max:q[1]});q[0]*=1;q[1]*=1;if(q[0]>q[1]){var d=q[0];q[0]=q[1];q[1]=d}for(var b=0,e=c.length;bq[1]){f(k.forms.FAIL,a);return}}f(k.forms.PASS,a)},minCount:function(e,a,f){var b=a.message||l(a._localeModule.TEST_MESSAGE_MIN_COUNT,{arg:a.arg});var c=0;for(var d=0;da.arg){f(k.forms.FAIL,b);return}f(k.forms.PASS,b)},count:function(e,a,f){var b=a.message||l(a._localeModule.TEST_MESSAGE_COUNT,{arg:a.arg});var c=0;for(var d=0;da.arg){f(k.forms.FAIL,b);return}}f(k.forms.PASS,b)},isEmail:function(d,a,f){var b=a.message||a._localeModule.TEST_MESSAGE_IS_EMAIL;for(var c=0,e=d.length;c').appendTo(document.body)}d[0].value++}function b(v){var w=v.fields,g,t,f,u,e;for(u=0,e=w.length;u')))}f.text(w[u].message);g.addClass("glow-invalid")}}}}function c(g){var C=g.fields,z,x,w,e,y,f,B;g.form.formNode.get("div.glow-errorSummary").remove();x=k.dom.create('
        ');w=x.get("ul");for(f=0,B=C.length;f").text(y+": "+C[f].message))}}g.form.formNode.prepend(x.css("opacity","0"));k.anim.css(x,"0.5",{opacity:{from:0,to:1}},{tween:k.tweens.easeOut()}).start();try{x[0].focus()}catch(A){}a()}return function(e){if(e.eventName=="submit"){if(!e.errorCount){e.form.formNode.get("div.glow-errorSummary").remove();return}c(e)}setTimeout(function(){b(e)},0);return false}}())}});(window.gloader||glow).module({name:"glow.embed",library:["glow","1.7.3"],depends:[["glow","1.7.3","glow.dom","glow.data","glow.i18n"]],builder:function(u){var t=u.i18n;t.addLocaleModule("GLOW_EMBED","en",{FLASH_MESSAGE:"This content requires Flash Player version {min} (installed version: {installed})",NO_PLAYER_MESSAGE:"No Flash Flayer installed, or version is pre 6.0.0"});function F(b){var c="";for(var a in b){if(a.toLowerCase()=="flashvars"&&typeof b[a]=="object"){c+=' FlashVars="'+u.data.encodeUrl(b[a])+'"'}else{c+=" "+a+'="'+b[a]+'"'}}return c}function r(d){var b="",c,a;for(c in d){if(c.toLowerCase()=="flashvars"&&typeof d[c]=="object"){a=u.data.encodeUrl(d[c])}else{a=d[c]}b+='\n'}return b}function z(b,c){b=b||{};for(var a in c){if(typeof b[a]=="undefined"){b[a]=c[a]}else{if(typeof c[a]=="object"){b[a]=z(b[a],c[a])}}}return b}function E(){var a=(navigator.platform||navigator.userAgent);return a.match(/win/i)?"win":a.match(/mac/i)?"mac":"other"}function w(c){var a=/^WIN (\d+),(\d+),(\d+),\d+$/;var b=c.GetVariable("$version");if($match=a.exec(b)){return{major:parseInt($match[1]),minor:parseInt($match[2]),release:parseInt($match[3]),actual:b}}else{}}function x(){var e,c,b={major:0,minor:0,release:0},f=b;if(u.env.ie){try{c=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");f=w(c)}catch(a){try{c=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");try{c.AllowScriptAccess="always";f=w(c)}catch(a){f={major:6,minor:0,release:29}}}catch(a){}}}else{var d=/^Shockwave Flash\s*(\d+)\.(\d+)\s*\w(\d+)$/;if((c=navigator.plugins["Shockwave Flash"])&&(e=d.exec(c.description))){f={major:parseInt(e[1]),minor:parseInt(e[2]),release:parseInt(e[3]),actual:c.description}}}f.toString=function(){return this.major?[this.major,this.minor,this.release].join("."):t.getLocaleModule("GLOW_EMBED").NO_PLAYER_MESSAGE};return f}var v=x();function B(b){if(typeof b!="object"){var c=String(b).match(/^(\d+)(?:\.(\d+)(?:\.(\d+))?)?$/);if(!c){throw new Error('glow.embed._meetsVersionRequirements: invalid format for version string, require "n.n.n" or "n.n" or simply "n" where n is a numeric value')}b={major:parseInt(c[1],10),minor:parseInt(c[2]||0,10),release:parseInt(c[3]||0,10)}}var d=v,a=b;return(d.major>a.major||(d.major==a.major&&d.minor>a.minor)||(d.major==a.major&&d.minor==a.minor&&d.release>=a.release))}var C=u.env.ie?y:A;function A(a,c,b){return'"}function y(a,c,b){return''+r(b)+""}var G={},s=0;function D(){return u.UID+"FlashEmbed"+(s++)}G.Flash=function(a,g,b,c){c=z(c,{width:"100%",height:"100%",params:{allowscriptaccess:"always",allowfullscreen:"true",quality:"high"},attributes:{},message:u.lang.interpolate(t.getLocaleModule("GLOW_EMBED").FLASH_MESSAGE,{min:b,installed:v}),id:(c&&c.attributes&&c.attributes.id)||D()});g=u.dom.get(g);if(!g.length){throw new Error("glow.embed.Flash unable to locate container")}this.container=g;this.movie=null;this._displayErrorMessage=typeof c.message=="function"?c.message:function(){return c.message};this.isSupported;if(this.isSupported=B(b)){var f=c.attributes,d=["id","width","height"],e=d.length;while(e--){if(c[d[e]]){f[d[e]]=c[d[e]]}}if(c.className){f["class"]=c.className}this._embed_tag=C(a,f,c.params)}};G.Flash.version=function(){return v};G.Flash.prototype.embed=function(){var a=this.container[0];if(this.isSupported){a.innerHTML=this._embed_tag;this.movie=a.firstChild}else{var b=this._displayErrorMessage();if(b){a.innerHTML=b}}return this};u.embed=G}});(window.gloader||glow).module({name:"glow.dragdrop",library:["glow","1.7.3"],depends:[["glow","1.7.3","glow.tweens","glow.events","glow.dom","glow.anim"]],builder:function(K){var Q=K.events,J=Q.addListener,z=Q.fire,M=Q.removeListener,D=K.dom,L=D.get,H=D.create;var G={},y=1000,S=(document.compatMode=="CSS1Compat"&&K.env.ie>=5)?true:false,r=(document.compatMode!="CSS1Compat"&&K.env.ie>=5)?true:false,P=K.env.ie>=5,C=["top","right","bottom","left"];function R(b,c){var a=b.prototype[c];var d="cached_"+c;b.prototype[c]=function(){if(d in this){return this[d]}return this[d]=a.apply(this,arguments)}}function A(a,c){var b=C.length,d;while(b--){d="margin-"+C[b];a.css(d,c.css(d))}}function N(b,d){var a=b.prototype[d];var c="cached_"+d;b.prototype[d]=function(e){if(!this[c]){this[c]={}}if(e in this[c]){return this[c][e]}return this[c][e]=a.apply(this,arguments)}}function B(a,c){for(var d=0,b=c.length;d=e[0]&&a<=e[1]&&d<=e[2]&&a>=e[3]},containsPoint:function(b){var a=this.el.offset();return b.x>=a.left&&b.y>=a.top&&b.x<=a.left+this.borderWidth()&&b.y<=a.top+this.borderHeight()},positionedAncestorBox:function(){var a=this.el.parent(),b;while(a[0]){b=a.css("position")||"static";if(b=="relative"||b=="absolute"||b=="fixed"){return new F(a)}a=a.parent()}return null}});function O(c){var a=c[0].tagName.toLowerCase()=="li"?"li":"div";var b=H("<"+a+">");if(a=="li"){b.css("list-style-type","none")}return b}G.Draggable=function(a,e){this.element=L(a);this._opts=e=K.lang.apply({dragPrevention:["input","textarea","button","select","option","a"],placeholder:"spacer",placeholderClass:"glow-dragdrop-placeholder",step:{x:1,y:1}},e||{});if(typeof e.step=="number"){e.step={x:e.step,y:e.step}}else{e.step.x=e.step.x||1;e.step.y=e.step.y||1}this._preventDrag=[];for(var d=0,b=e.dragPrevention.length;da[1]?a[1]:c}if(g!="x"){f=fa[2]?a[2]:f}}b[0].style.left=c+"px";b[0].style.top=f+"px";if(this.dropTargets){this._mousePos={x:e.pageX,y:e.pageY}}if(P&&e.nativeEvent.button==0){this._releaseElement(e);return false}return false},_testForDropTargets:function(p){if(!this._lock){this._lock=0}if(p){this._lock--}else{if(this.lock){return}}if(this._dragging!=1){return}var l=this.activeTarget,n,c=this.dropTargets,b,v,s=this._box,k=this._mousePos;s.resetPosition();var u=0;for(var j=0,m=c.length;ju){u=h;n=b}}}}this.activeTarget=n;if(n!==l){if(n){var o=new Q.Event();o.draggable=this;z(n,"enter",o);var w=new Q.Event();w.dropTarget=n;z(this,"enter",w)}if(l){var t=new Q.Event();t.draggable=this;z(l,"leave",t);var q=new Q.Event();q.dropTarget=l;z(this,"leave",q)}}if(n&&n._opts.dropIndicator!="none"){var e,g=n._childBoxes,U=n._children;s.resetPosition();var d=n._box.innerTopPos();var a=k.y-s.offsetParentPageTop();var f=0;for(var j=0,m=g.length;j1){throw"more than one element passed into DropTarget constructor"}this._id=++I;this._opts=b=K.lang.apply({dropIndicator:"none",dropIndicatorClass:"glow-dragdrop-dropindicator",tolerance:"intersect"},b||{});if(b.onActive){J(this,"active",b.onActive)}if(b.onInactive){J(this,"inactive",b.onInactive)}if(b.onEnter){J(this,"enter",b.onEnter)}if(b.onLeave){J(this,"leave",b.onLeave)}if(b.onDrop){J(this,"drop",b.onDrop)}J(this,"active",this._onActive);J(this,"inactive",this._onInactive);return this};G.DropTarget.prototype={setLogicalBottom:function(a){this._logicalBottom=a},_onActive:function(a){var d=a.draggable;this._box=new F(this.element);if(this._logicalBottom){this._box.setLogicalBottom(this._logicalBottom)}if(this._opts.dropIndicator=="none"){return}this._onEnterListener=J(this,"enter",this._onEnter);this._onLeaveListener=J(this,"leave",this._onLeave);this._dropIndicator=O(d.element);if(this._opts.dropIndicatorClass){this._dropIndicator.addClass(this._opts.dropIndicatorClass)}d._box.sizePlaceholder(this._dropIndicator,"relative",0,0);var c=this._children=L(this.element.children()).filter(function(){var e=L(this);return(!a.draggable._placeholder||!e.eq(a.draggable._placeholder))&&(!this._dropIndicator||!e.eq(this._dropIndicator))});var b=this._childBoxes=[];c.each(function(e){b[e]=new F(L(c[e]))})},_onInactive:function(a){M(this._onEnterListener);M(this._onLeaveListener);delete this._box;if(this._opts.dropIndicator=="none"){return}if(!a.droppedOnThis&&this._dropIndicator){this._dropIndicator.remove();delete this._dropIndicator}delete this._childBoxes;delete this._children},_onEnter:function(){this._dropIndicatorAt=-1},_onLeave:function(){this._dropIndicator.remove()},moveToPosition:function(f){var d=this._dropIndicator,c=new F(d);var e=parseInt(d.css("margin-left"))||0,a=parseInt(d.css("margin-top"))||0,b=c.el.position();f._startOffset={x:b.left,y:b.top};f._dropIndicator=d;delete this._dropIndicator}};K.dragdrop=G}}); +(window.gloader||glow).module({name:"glow.i18n",library:["glow","1.7.3"],depends:[["glow","1.7.3"]],builder:function(r){var A;var t={l:/^[a-z]$/,lv:/^[a-z]{2,3}$/,s:/^[A-Z][a-z]{3}$/,r:/^[A-Z]{2}|[0-9]{3}$/,v:/^[a-z0-9]{4,}$/};var s=1,k=2,l=4,j=8,p=s+k+l+j,f=s+l+j,x=s+k+j,c=s+j,y=s+k+l,e=s+l,d=s+k;var m={l:s,s:k,r:l,v:j},I=["l","s","r","v"],F={l:0,s:1,r:2,v:3};var C={};var b={};var o=w(document.documentElement.lang||"en")||w("en");function D(K){for(var J in t){if(t[J].test(K)){return J;}}return"";}function w(V){if(!V.split){V="";}var N=V.split("-"),Q=N.length,R=[],K={l:"",s:"",r:"",v:""},J=0,O=J,U=0,P,S;for(var M=0,T=I.length;M]?)\s*/,classNameOrId:(n.webkit<417)?new RegExp("^([\\.#])((?:(?![\\.#\\[:\\s\\\\]).|\\\\.)+)"):/^([\.#])((?:[^\.#\[:\\\s]+|\\.)+)/},X=/([$^\\\/()|?+*\[\]{}.-])/g,B={},R={checked:"checked","class":"className",disabled:"disabled","for":"htmlFor",maxlength:"maxLength"},c={checked:true,disabled:true},ah={maxlength:function(r){return r.toString()=="2147483647"?undefined:r;}},ad=1,x="_unique"+u.UID,ai="_uniqueData"+u.UID,ag=1,L=[],I={black:0,silver:12632256,gray:8421504,white:16777215,maroon:8388608,red:16711680,purple:8388736,fuchsia:16711935,green:32768,lime:65280,olive:8421376,yellow:16776960,navy:128,blue:255,teal:32896,aqua:65535,orange:16753920},D=/height|top/,t=/^rgb\(([\d\.]+)(%?),\s*([\d\.]+)(%?),\s*([\d\.]+)(%?)/i,A=/^(?:(width|height)|(border-(top|bottom|left|right)-width))$/,C=/width|height|top$|bottom$|left$|right$|spacing$|indent$|font-size/,T,d,K,H,aa=window,l=document,V,G,w,P=l.createElement("div"),y=[1,"","
        "],ab=[0,"",""],O=n.webkit<526?[0,"","",true]:[1,"b
        ","
        "],a=[3,"","
        "],E={caption:y,thead:y,th:a,colgroup:y,tbody:y,tr:[2,"","
        "],td:a,tfoot:y,option:[1,""],legend:[1,"
        ","
        "],link:O,script:O,style:O};if(n.ie){window.attachEvent("onunload",function(){P=null;});}u.ready(function(){V=l.body;G=l.documentElement;});(function(){var r=l.createElement("div");r.a=1;w=!!r.cloneNode(true).a;})();function af(r){for(var aj=r.firstChild;aj;aj=aj.nextSibling){if(aj.nodeType==1){return aj;}}return null;}function v(r){return new RegExp(["(^|\\s)",r.replace(X,"\\$1"),"($|\\s)"].join(""),"g");}function N(ap){var ao=[],al=(/^\s*<([^\s>]+)/.exec(ap)||[,"div"])[1],aj=E[al]||ab,am,ak,an=0;P.innerHTML=(aj[1]+ap+aj[2]);ak=P;am=aj[0];while(am--){ak=ak.lastChild;}while(ak.firstChild){ao[an++]=ak.removeChild(ak.firstChild);}ak=null;return ao;}function p(al){var ak=[],aj=0;for(;al[aj];aj++){ak[aj]=al[aj];}return ak;}function e(am,aj){for(var al=this,r=0,ak=al.length;r500&&n.webkit<526&&al=="margin-right"&&an.getPropertyValue("position")!="absolute"){al="margin-left";}ak=an.getPropertyValue(al);}}else{if(am){if(al=="opacity"){aq=/alpha\(opacity=([^\)]+)\)/.exec(am.filter);return aq?String(parseInt(aq[1],10)/100):"1";}ak=String(am[W(al)]);if(/^-?[\d\.]+(?!px)[%a-z]+$/i.test(ak)&&al!="font-size"){ak=J(ar,ak,D.test(al))+"px";}}}}}if(al.indexOf("color")!=-1){ak=S(ak).toString();}else{if(ak.indexOf("url")==0){ak=ak.replace(/\"/g,"");}}return ak;}function J(ao,aq,am){var ak=am?"top":"left",an=am?"Top":"Left",ar=ao.style,al=ar[ak],ap=ao.runtimeStyle[ak],aj;ao.runtimeStyle[ak]=ao.currentStyle[ak];ar[ak]=aq;aj=ar["pixel"+an];ar[ak]=al;ao.runtimeStyle[ak]=ap;return aj;}function S(ak){if(/^(transparent|rgba\(0, ?0, ?0, ?0\))$/.test(ak)){return"transparent";}var ao,aj,ap,aq,al,an=Math.round,ar=parseInt,am=parseFloat;if(ao=t.exec(ak)){aj=ao[2]?an(((am(ao[1])/100)*255)):ar(ao[1]);ap=ao[4]?an(((am(ao[3])/100)*255)):ar(ao[3]);aq=ao[6]?an(((am(ao[5])/100)*255)):ar(ao[5]);}else{if(typeof ak=="number"){al=ak;}else{if(ak.charAt(0)=="#"){if(ak.length=="4"){ak="#"+ak.charAt(1)+ak.charAt(1)+ak.charAt(2)+ak.charAt(2)+ak.charAt(3)+ak.charAt(3);}al=ar(ak.slice(1),16);}else{al=I[ak];}}aj=(al)>>16;ap=(al&65280)>>8;aq=(al&255);}ak=new String("rgb("+aj+", "+ap+", "+aq+")");ak.r=aj;ak.g=ap;ak.b=aq;return ak;}function m(an){var am="",ak=an.childNodes,al=0,aj=ak.length;for(;al=521){for(;r1?am:undefined;}if(typeof ak=="object"){for(al in ak){if(k.hasOwnProperty(ak,al)){am.attr(al,ak[al]);}}return am;}if(n.ie&&R[ak]){if(r>1){e.call(am,aj[1],function(ao){this[R[ak]]=ao;});return am;}an=am[0][R[ak]];if(c[ak]){return an?ak:undefined;}else{if(ah[ak]){return ah[ak](an);}}return an;}if(r>1){e.call(am,aj[1],function(ao){this.setAttribute(ak,ao);});return am;}return M(am[0])?am[0].getAttribute(ak):am[0].getAttribute(ak,2);},removeAttr:function(aj){var r=n.ie&&R[aj],am=this,ak=0,al=am.length;for(;ak-1?ap.options[ap.selectedIndex].value:"";}else{if(am=="select-multiple"){for(var aq=ap.options.length;ao0){for(;aj500){r+=parseInt(Z(an,"border-left-width"))||0;ao+=parseInt(Z(an,"border-top-width"))||0;}if(an.nodeName.toLowerCase()!="body"){ak=an;}}an=aj;while((an=an.parentNode)&&(an!=V)&&(an!=G)){r-=an.scrollLeft;ao-=an.scrollTop;if(n.gecko&&Z(an,"overflow")!="visible"){r+=parseInt(Z(an,"border-left-width"));ao+=parseInt(Z(an,"border-top-width"));}}if(am){r+=al.x;ao+=al.y;}if((n.webkit<500&&(am||Z(ak,"position")=="absolute"))||(n.gecko&&Z(ak,"position")!="absolute")){r-=V.offsetLeft;ao-=V.offsetTop;}return{left:r,top:ao};}},position:function(){var aj=Y.get(F(this[0])),ao=!!aj[0],an=parseInt(this.css("margin-left"))||0,am=parseInt(this.css("margin-top"))||0,al=(ao&&parseInt(aj.css("border-left-width")))||0,r=(ao&&parseInt(aj.css("border-top-width")))||0,ap=this.offset(),ak=ao?aj.offset():{top:0,left:0};return{left:ap.left-ak.left-an-al,top:ap.top-ak.top-am-r};},append:function(an){var am=this,aj=0,ak=1,al=am.length,r;if(al==0){return am;}r=typeof an=="string"?p(N(an)):an.nodeType?[an]:p(an);for(;r[aj];aj++){am[0].appendChild(r[aj]);}for(;ak=0;al--){ao[0].parentNode.insertBefore(ak[al],ao[0].nextSibling);}for(;am=0;al--){ao[am].parentNode.insertBefore(r[al],ao[am].nextSibling);}}return ao;},before:function(ap){var ao=this,an=ao.length,al=0,am=1,ak,aj,r;if(an==0){return ao;}ak=typeof ap=="string"?Y.create(ap):ap instanceof Y.NodeList?ap:Y.get(ap);aj=ak.length;for(;al"){ar[aC++]=[al,[null]];if(av){ar[aC++]=[ap,[av.replace(/\\/g,""),null]];}if(aA&&aA!="*"){ar[aC++]=[aq,[aA,null]];}}}aB=true;while(aB){if(az.charAt(0)=="#"||az.charAt(0)=="."){if(ax=s.classNameOrId.exec(az)){if(az.charAt(0)=="#"){ar[aC++]=[ap,[ax[2].replace(/\\/g,""),null]];}else{ar[aC++]=[ao,[ax[2].replace(/\\/g,""),null]];}az=az.slice(ax[0].length);}else{throw new Error("Invalid Selector "+aw);}}else{aB=false;}}au=false;}if(az!==""){throw new Error("Invalid Selector "+aw);}return B[az]=ar;}function an(ar,av){var au=av;for(var at=0,aw=ar.length;at');u.dom=Y;}});(window.gloader||glow).module({name:"glow.events",library:["glow","1.7.3"],depends:[["glow","1.7.3","glow.dom"]],builder:function(o){var k=o.dom.get;var C={};var x=1;var m=1;var n={};var b={};var p={};var l="__eventId"+o.UID;var g=l+"PreventDefault";var u=l+"StopPropagation";var E={};var f=1;var B={};var z={};var G=1;var d=2;var s=4;var h={TAB:"\t",SPACE:" ",ENTER:"\n",BACKTICK:"`"};var K={"96":223};var t={CAPSLOCK:20,NUMLOCK:144,SCROLLLOCK:145,BREAK:19,BACKTICK:223,BACKSPACE:8,PRINTSCREEN:44,MENU:93,SPACE:32,SHIFT:16,CTRL:17,ALT:18,ESC:27,TAB:9,META:91,RIGHTMETA:92,ENTER:13,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,INS:45,HOME:36,PAGEUP:33,DEL:46,END:35,PAGEDOWN:34,LEFT:37,UP:38,RIGHT:39,DOWN:40};var I={};for(var H in t){I[""+t[H]]=H;}var y="0123456789=;'\\/#,.-";function D(O){var N=z[O];if(!N){return false;}var M=B[N];if(!M){return false;}for(var L=0,r=M.length;L418)){if((N=="focus"||N=="blur")&&(o.env.opera)){O.parentNode.addEventListener(N,function(){},true);}O.addEventListener(N.toLowerCase()=="mousewheel"&&o.env.gecko?"DOMMouseScroll":N,Q,L);}else{var M="on"+N;var P=O[M];if(P){O[M]=function(){var R=P.apply(this,arguments),S=Q.apply(this,arguments);return(R!==false)&&(S!==false);};}else{O[M]=Q;}}O=null;}function a(M,N){var O=k(M),r=N?"mouseout":"mouseover",L=N?"mouseleave":"mouseenter";C.addListener(M,r,function(Q){var P=k(Q.relatedTarget);if(!P.eq(O)&&!P.isWithin(O)){return !C.fire(O[0],L,Q).defaultPrevented();}});}C._copyListeners=function(R,Q){var M=R.length,P,r,L,O,N;while(M--){if(R[M][l]){P=n[R[M][l]];for(r in P){L=0;O=P[r].length;for(;L").text(html).html();}};}});(window.gloader||glow).module({name:"glow.net",library:["glow","1.7.3"],depends:[["glow","1.7.3","glow.data","glow.events"]],builder:function(h){var t={XML_ERR:"Cannot get response as XML, check the mime type of the data",POST_DEFAULT_CONTENT_TYPE:"application/x-www-form-urlencoded;"},u=/\+xml$/,p=[],e="c",o="_"+h.UID+"loadScriptCbs",g=h.dom.get,c=h.events,f=function(){},k=1;function s(){if(window.ActiveXObject){return(s=function(){return new ActiveXObject("Microsoft.XMLHTTP");})();}else{return(s=function(){return new XMLHttpRequest();})();}}function d(w){var r=h.lang.apply({onLoad:f,onError:f,onAbort:f,headers:{},async:true,useCache:false,data:null,defer:false,forceXml:false},w||{});if(!("X-Requested-With" in r.headers)){r.headers["X-Requested-With"]="XMLHttpRequest";}return r;}function v(r){return[r,(/\?/.test(r)?"&":"?"),"a",new Date().getTime(),parseInt(Math.random()*100000)].join("");}function j(C,r,z){var y=s(),A=z.data&&(typeof z.data=="string"?z.data:h.data.encodeUrl(z.data)),w,x=new q(y,z);if(!z.useCache){r=v(r);}y.open(C,r,z.async);for(w in z.headers){y.setRequestHeader(w,z.headers[w]);}function B(){x.send=f;if(z.async){if(z.timeout){x._timeout=setTimeout(function(){a(x);var E=new b(y,true,x);c.fire(x,"error",E);},z.timeout*1000);}y.onreadystatechange=function(){if(y.readyState==4){x._timeout&&clearTimeout(x._timeout);x.completed=true;var E=new b(y,false,x);if(E.wasSuccessful){c.fire(x,"load",E);}else{c.fire(x,"error",E);}y.onreadystatechange=new Function();}};y.send(A);return x;}else{y.send(A);x.completed=true;var D=new b(y,false,x);if(D.wasSuccessful){c.fire(x,"load",D);}else{c.fire(x,"error",D);}return D;}}x.send=B;return z.defer?x:B();}var m={};m.get=function(r,w){w=d(w);return j("GET",r,w);};m.post=function(r,w,x){x=d(x);x.data=w;if(!x.headers["Content-Type"]){x.headers["Content-Type"]=t.POST_DEFAULT_CONTENT_TYPE;}return j("POST",r,x);};m.send=function(y,r,w,x){w=w||"";x=d(x);x.data=w;return j(y,r,x);};m.put=function(r,w,x){x=d(x);x.data=w;if(!x.headers["Content-Type"]){x.headers["Content-Type"]=t.POST_DEFAULT_CONTENT_TYPE;}return j("PUT",r,x);};m.del=function(r,w){w=d(w);return j("DELETE",r,w);};m.loadScript=function(w,z){var x=p.length,r,A=e+x,z=d(z),y=new q(x,z),w=z.useCache?w:v(w),B=window[o]||(window[o]={});if(z.onLoad!=f){B[A]=function(){y._timeout&&clearTimeout(y._timeout);y.completed=true;z.onLoad.apply(this,arguments);y.destroy();r=B[A]=undefined;delete B[A];};w=h.lang.interpolate(w,{callback:o+"."+A});}r=p[x]=document.createElement("script");if(z.charset){r.charset=z.charset;}c.addListener(y,"abort",z.onAbort);h.ready(function(){if(z.timeout){y._timeout=setTimeout(function(){a(y);z.onError();},z.timeout*1000);}if(h.env.opera){setTimeout(function(){if(r){r.src=w;}},0);}else{r.src=w;}document.body.appendChild(r);});return y;};function a(w){var r=w.nativeRequest,x=w._callbackIndex;w._timeout&&clearTimeout(w._timeout);if(r){r.onreadystatechange=new Function();r.abort();}else{if(x){window[o][e+x]=f;h.dom.get(p[x]).destroy();}}}function q(y,w){this._timeout=null;this._forceXml=w.forceXml;if(w.forceXml&&y.overrideMimeType){y.overrideMimeType("application/xml");}this.complete=false;if(typeof y=="number"){this._callbackIndex=y;}else{this.nativeRequest=y;}var x=["Load","Error","Abort"],r=0;for(;r<3;r++){c.addListener(this,x[r].toLowerCase(),w["on"+x[r]]);}}q.prototype={send:function(){},abort:function(){if(!this.completed&&!c.fire(this,"abort").defaultPrevented()){a(this);}return this;},destroy:function(){var r=this;if(this._callbackIndex!==undefined){setTimeout(function(){g(p[r._callbackIndex]).destroy();p[r._callbackIndex]=undefined;delete p[r._callbackIndex];},0);}return this;}};function b(x,r,w){c.Event.call(this);this._request=w;this.nativeResponse=x;this.status=r?408:x.status==1223?204:x.status;this.timedOut=!!r;this.wasSuccessful=(this.status>=200&&this.status<300)||this.status==304||(this.status==0&&x.responseText);}function l(){var r=this.header("Content-Type");return u.test(r)||r==="";}h.lang.extend(b,c.Event,{text:function(){return this.nativeResponse.responseText;},xml:function(){var w=this.nativeResponse;if((h.env.ie&&l.call(this))||(this._request._forceXml&&!this._request.nativeRequest.overrideMimeType&&window.ActiveXObject)){var r=new ActiveXObject("Microsoft.XMLDOM");r.loadXML(w.responseText);return r;}else{if(!w.responseXML){throw new Error(t.XML_ERR);}return w.responseXML;}},json:function(r){return h.data.decodeJson(this.text(),{safeMode:r});},header:function(r){return this.nativeResponse.getResponseHeader(r);},statusText:function(){return this.timedOut?"Request Timeout":this.nativeResponse.statusText;}});var n=function(r,x,y,w){this.url=r;this.data=x;this.isGet=y;this.opts=w;};n.prototype={_send:function(){this._addIframe();this._addForm();this._addTimeout();this.onLoad=this._handleResponse;this._submitForm();},_addIframe:function(){this.iframe=h.dom.create('');var r=this.iframe[0],w=this,x=function(){if(w.onLoad){w.onLoad();}};if(r.attachEvent){r.attachEvent("onload",x);}else{r.onload=x;}g("body").append(this.iframe);},_addForm:function(){var x=this._window().document;if(h.env.ie){x.open();x.write("");x.close();}var w=this.form=x.createElement("form");w.setAttribute("action",this.url);w.setAttribute("method",this.isGet?"GET":"POST");var r=x.getElementsByTagName("body")[0];r.appendChild(w);this._addFormData();},_addFormData:function(){for(var x in this.data){if(!this.data.hasOwnProperty(x)){continue;}if(this.data[x] instanceof Array){var r=this.data[x].length;for(var w=0;w');function addEventsFromOpts(instance,opts,eventProps){for(var i=0,len=eventProps.length;ianim.duration){anim.position=anim.duration;}}else{anim.position++;}anim.value=anim.tween(anim.position/anim.duration);events.fire(anim,"frame");}}};})();function convertCssUnit(element,fromValue,toUnit,axis){var elmStyle=testElement[0].style,axisProp=(axis=="x")?"width":"height",startPixelValue,toUnitPixelValue;elmStyle.margin=elmStyle.padding=elmStyle.border="0";startPixelValue=testElement.css(axisProp,fromValue).insertAfter(element)[axisProp]();toUnitPixelValue=testElement.css(axisProp,10+toUnit)[axisProp]()/10;testElement.remove();return startPixelValue/toUnitPixelValue;}function keepWithinRange(num,start,end){if(start!==undefined&&numend){return end;}return num;}function buildAnimFunction(element,spec){var cssProp,r=["a=(function(){"],rLen=1,fromUnit,unitDefault=[0,"px"],to,from,unit,a;for(cssProp in spec){r[rLen++]='element.css("'+cssProp+'", ';if(typeof spec[cssProp]!="object"){to=spec[cssProp];}else{to=spec[cssProp].to;}if((from=spec[cssProp].from)===undefined){if(cssProp=="font-size"||cssProp=="background-position"){throw new Error("From value must be set for "+cssProp);}from=element.css(cssProp);}if(hasUnits.test(cssProp)){unit=(getUnit.exec(to)||unitDefault)[1];fromUnit=(getUnit.exec(from)||unitDefault)[1];from=parseFloat(from)||0;to=parseFloat(to)||0;if(from&&unit!=fromUnit){if(cssProp=="font-size"){throw new Error("Units must be the same for font-size");}from=convertCssUnit(element,from+fromUnit,unit,usesYAxis.test(cssProp)?"y":"x");}if(noNegatives.test(cssProp)){r[rLen++]="keepWithinRange(("+(to-from)+" * this.value) + "+from+', 0) + "'+unit+'"';}else{r[rLen++]="("+(to-from)+" * this.value) + "+from+' + "'+unit+'"';}}else{if(!(isNaN(from)||isNaN(to))){from=Number(from);to=Number(to);r[rLen++]="("+(to-from)+" * this.value) + "+from;}else{if(cssProp.indexOf("color")!=-1){to=dom.parseCssColor(to);if(!glow.lang.hasOwnProperty(from,"r")){from=dom.parseCssColor(from);}r[rLen++]='"rgb(" + keepWithinRange(Math.round('+(to.r-from.r)+" * this.value + "+from.r+'), 0, 255) + "," + keepWithinRange(Math.round('+(to.g-from.g)+" * this.value + "+from.g+'), 0, 255) + "," + keepWithinRange(Math.round('+(to.b-from.b)+" * this.value + "+from.b+'), 0, 255) + ")"';}else{if(cssProp=="background-position"){var vals={},fromTo=["from","to"],unit=(getUnit.exec(from)||unitDefault)[1];vals.fromOrig=from.toString().split(/\s/);vals.toOrig=to.toString().split(/\s/);if(vals.fromOrig[1]===undefined){vals.fromOrig[1]="50%";}if(vals.toOrig[1]===undefined){vals.toOrig[1]="50%";}for(var i=0;i<2;i++){vals[fromTo[i]+"X"]=parseFloat(vals[fromTo[i]+"Orig"][0]);vals[fromTo[i]+"Y"]=parseFloat(vals[fromTo[i]+"Orig"][1]);vals[fromTo[i]+"XUnit"]=(getUnit.exec(vals[fromTo[i]+"Orig"][0])||unitDefault)[1];vals[fromTo[i]+"YUnit"]=(getUnit.exec(vals[fromTo[i]+"Orig"][1])||unitDefault)[1];}if((vals.fromXUnit!==vals.toXUnit)||(vals.fromYUnit!==vals.toYUnit)){throw new Error("Mismatched axis units cannot be used for "+cssProp);}r[rLen++]="("+(vals.toX-vals.fromX)+" * this.value + "+vals.fromX+') + "'+vals.fromXUnit+' " + ('+(vals.toY-vals.fromY)+" * this.value + "+vals.fromY+') + "'+vals.fromYUnit+'"';}}}}r[rLen++]=");";}r[rLen++]="})";return eval(r.join(""));}var r={};r.css=function(element,duration,spec,opts){element=get(element);var anim=new r.Animation(duration,opts);if(element[0]){events.addListener(anim,"frame",buildAnimFunction(element,spec));}return anim;};slideElement=function slideElement(element,duration,action,opts){duration=duration||0.5;element=$(element);opts=glow.lang.apply({tween:glow.tweens.easeBoth(),onStart:function(){},onComplete:function(){}},opts);var i=0,thatlength=element.length,completeHeight,fromHeight,channels=[],timeline;for(;i0)){element[i].style.overflow="hidden";if(glow.env.ie<8){element[i].style.zoom=1;}completeHeight=0;fromHeight=element.slice(i,i+1).height();}else{if(action=="down"||(action=="toggle"&&element.slice(i,i+1).height()==0)){fromHeight=element.slice(i,i+1).height();element[i].style.height="";completeHeight=element.slice(i,i+1).height();if(completeHeight===0){element[i].style.height="auto";completeHeight=element.slice(i,i+1).height();}element[i].style.height=fromHeight+"px";}}channels[i]=[glow.anim.css(element[i],duration,{height:{from:fromHeight,to:completeHeight}},{tween:opts.tween})];}timeline=new glow.anim.Timeline(channels,{destroyOnComplete:true});events.addListener(timeline,"complete",function(){element.each(function(){if(this.style.height.slice(0,1)!="0"){this.style.height="";if(glow.dom.get(this).height()===0){this.style.height="auto";}}});});events.addListener(timeline,"start",opts.onStart);events.addListener(timeline,"complete",opts.onComplete);return timeline.start();};r.slideDown=function(element,duration,opts){return slideElement(element,duration,"down",opts);};r.slideUp=function(element,duration,opts){return slideElement(element,duration,"up",opts);};r.slideToggle=function(element,duration,opts){return slideElement(element,duration,"toggle",opts);};r.fadeOut=function(element,duration,opts){return r.fadeTo(element,0,duration,opts);};r.fadeIn=function(element,duration,opts){return r.fadeTo(element,1,duration,opts);};r.fadeTo=function(element,opacity,duration,opts){duration=duration||0.5;element=$(element);opts=glow.lang.apply({tween:glow.tweens.easeBoth(),onStart:function(){},onComplete:function(){}},opts);var i=0,thatlength=element.length,channels=[],timeline;for(;ianim.duration){anim.position=anim.duration;}anim.value=anim.tween(anim.position/anim.duration);events.fire(anim,"frame");if(anim.position==anim.duration){this._advanceChannel(i);}}},start:function(){var e=events.fire(this,"start");if(e.defaultPrevented()){return this;}var i,iLen,j,jLen,anim;this._playing=true;for(i=0,iLen=this._channels.length;ithis.duration){if(this.loop){pos=pos%this.duration;}else{pos=this.duration;}}this._controlAnim.goTo(pos);for(i=0;ipos){this._channelPos[i]=j;anim.goTo(pos-runningDuration);break;}anim.goTo(anim.duration);runningDuration+=anim.duration;}}for(k=channelLen;k>j;k--){anim.goTo(0);}}}else{for(i=0;i=this._fields[this._fieldCur]._tests.length){if(!d.call(this)){return;}}var j=this._fields[this._fieldCur]._tests[this._testCur];var h;if(j.opts.field){h=this.formNode.val()[j.opts.field]||"";j.isConditional=true;}else{h=this.formNode.val()[this._fields[this._fieldCur].name]||"";}if(!h.join){h=[h];}var k=function(l){return function(){e.apply(l,arguments);};}(this);j.opts.on=j.opts.on||"submit";if(this._result.eventName&&(" "+j.opts.on+" ").indexOf(" "+this._result.eventName+" ")!=-1){if(this._fieldName&&this._fieldName!=j.name){c.call(this);return;}if(typeof g.forms.tests[j.type]!="function"){throw"Unimplemented test: no test exists of type '"+j.type+"'.";}j.opts._localeModule=this._localeModule;g.forms.tests[j.type](h,j.opts,k,this.formNode.val());}else{c.call(this);}};var d=function(){this._fieldCur++;this._testCur=0;if(this._fieldCur>=this._fields.length){this._fieldCur=0;g.events.fire(this,"validate",this._result);if(this.eventName=="submit"&&this._result&&!this._result.defaultPrevented()){try{this.formNode[0].submit();}catch(h){throw new Error("Glow can't submit the form because the submit function can't be called. Perhaps that form's submit was replaced by an input element named 'submit'?");}}return false;}return true;};var e=function(h,j){if(typeof h=="boolean"){h=(h)?g.forms.PASS:g.forms.FAIL;}if(this._fields[this._fieldCur]._tests[this._testCur].isConditional&&h===g.forms.FAIL){h=g.forms.SKIP;}this._result.fields.push({name:this._fields[this._fieldCur].name,result:h,message:j});if(h!==g.forms.PASS){if(h===g.forms.FAIL){this._result.errorCount++;}this._testCur=this._fields[this._fieldCur]._tests.length;}c.call(this);};g.forms.Form.prototype.addTests=function(r){var q={name:r,_tests:[]};var j=function(s){return function(){s.validate.apply(s,["change",r]);};}(this);var n=function(s){return function(){s.validate.apply(s,["click",r]);};}(this);var o=function(s){return function(){s.validate.apply(s,["idle",r]);};}(this);for(var l=1;l1)?arguments[l][1]:{};q._tests.push({name:r,type:k,opts:p});if(!j.added&&(" "+p.on+" ").indexOf(" change ")!=-1){var m=this.formNode.get("*").each(function(s){if(this.name==r){g.events.addListener(this,"change",j);j.added=true;}});}if(!n.added&&(" "+p.on+" ").indexOf(" click ")!=-1){var m=this.formNode.get("*").each(function(s){if(this.name==r){g.events.addListener(this,"click",n);n.added=true;}});}if(!o.added&&(" "+p.on+" ").indexOf(" idle ")!=-1){var h=(typeof p.delay!="undefined")?parseInt(p.delay):1000;var m=this.formNode.get("*").each(function(s){if(this.name==r){g.events.addListener(this,"keyup",function(u){return function(){window.clearTimeout(this.idleTimeoutID);if(this.value){this.idleTimeoutID=window.setTimeout(o,u);}};}(h));g.events.addListener(this,"blur",function(){window.clearTimeout(this.idleTimeoutID);});o.added=true;}});}}this._fields.push(q);return this;};g.forms.ValidateResult=function(h){g.events.Event.apply(this);this.eventName=h;this.errorCount=0;this.value=undefined;this.fields=[];};g.lang.extend(g.forms.ValidateResult,g.events.Event);g.forms.PASS=1;g.forms.FAIL=0;g.forms.SKIP=-1;g.forms.tests={required:function(j,m,n){var l=m.message||m._localeModule.TEST_MESSAGE_REQUIRED;for(var k=0,h=j.length;kNumber(m.arg)){n(g.forms.FAIL,l);return;}}n(g.forms.PASS,l);},range:function(k,o,p){var n=o.arg.split("..");if(typeof n[0]=="undefined"||typeof n[1]=="undefined"){throw"Range test requires a parameter like 0..10.";}var m=o.message||f(o._localeModule.TEST_MESSAGE_RANGE,{min:n[0],max:n[1]});n[0]*=1;n[1]*=1;if(n[0]>n[1]){var j=n[0];n[0]=n[1];n[1]=j;}for(var l=0,h=k.length;ln[1]){p(g.forms.FAIL,m);return;}}p(g.forms.PASS,m);},minCount:function(h,m,n){var l=m.message||f(m._localeModule.TEST_MESSAGE_MIN_COUNT,{arg:m.arg});var k=0;for(var j=0;jm.arg){n(g.forms.FAIL,l);return;}n(g.forms.PASS,l);},count:function(h,m,n){var l=m.message||f(m._localeModule.TEST_MESSAGE_COUNT,{arg:m.arg});var k=0;for(var j=0;jm.arg){n(g.forms.FAIL,l);return;}}n(g.forms.PASS,l);},isEmail:function(j,m,n){var l=m.message||m._localeModule.TEST_MESSAGE_IS_EMAIL;for(var k=0,h=j.length;k').appendTo(document.body);}h[0].value++;}function k(o){var n=o.fields,r,q,s,p,m;for(p=0,m=n.length;p')));}s.text(n[p].message);r.addClass("glow-invalid");}}}}function j(p){var s=p.fields,v,n,o,r,m,q,t;p.form.formNode.get("div.glow-errorSummary").remove();n=g.dom.create('
          ');o=n.get("ul");for(q=0,t=s.length;q").text(m+": "+s[q].message));}}p.form.formNode.prepend(n.css("opacity","0"));g.anim.css(n,"0.5",{opacity:{from:0,to:1}},{tween:g.tweens.easeOut()}).start();try{n[0].focus();}catch(u){}l();}return function(m){if(m.eventName=="submit"){if(!m.errorCount){m.form.formNode.get("div.glow-errorSummary").remove();return;}j(m);}setTimeout(function(){k(m);},0);return false;};}());}});(window.gloader||glow).module({name:"glow.embed",library:["glow","1.7.3"],depends:[["glow","1.7.3","glow.dom","glow.data","glow.i18n"]],builder:function(n){var o=n.i18n;o.addLocaleModule("GLOW_EMBED","en",{FLASH_MESSAGE:"This content requires Flash Player version {min} (installed version: {installed})",NO_PLAYER_MESSAGE:"No Flash Flayer installed, or version is pre 6.0.0"});function b(s){var r="";for(var t in s){if(t.toLowerCase()=="flashvars"&&typeof s[t]=="object"){r+=' FlashVars="'+n.data.encodeUrl(s[t])+'"';}else{r+=" "+t+'="'+s[t]+'"';}}return r;}function q(s){var u="",t,v;for(t in s){if(t.toLowerCase()=="flashvars"&&typeof s[t]=="object"){v=n.data.encodeUrl(s[t]);}else{v=s[t];}u+='\n';}return u;}function h(s,r){s=s||{};for(var t in r){if(typeof s[t]=="undefined"){s[t]=r[t];}else{if(typeof r[t]=="object"){s[t]=h(s[t],r[t]);}}}return s;}function c(){var r=(navigator.platform||navigator.userAgent);return r.match(/win/i)?"win":r.match(/mac/i)?"mac":"other";}function l(r){var t=/^WIN (\d+),(\d+),(\d+),\d+$/;var s=r.GetVariable("$version");if($match=t.exec(s)){return{major:parseInt($match[1]),minor:parseInt($match[2]),release:parseInt($match[3]),actual:s};}else{}}function k(){var s,u,v={major:0,minor:0,release:0},r=v;if(n.env.ie){try{u=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");r=l(u);}catch(w){try{u=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");try{u.AllowScriptAccess="always";r=l(u);}catch(w){r={major:6,minor:0,release:29};}}catch(w){}}}else{var t=/^Shockwave Flash\s*(\d+)\.(\d+)\s*\w(\d+)$/;if((u=navigator.plugins["Shockwave Flash"])&&(s=t.exec(u.description))){r={major:parseInt(s[1]),minor:parseInt(s[2]),release:parseInt(s[3]),actual:u.description};}}r.toString=function(){return this.major?[this.major,this.minor,this.release].join("."):o.getLocaleModule("GLOW_EMBED").NO_PLAYER_MESSAGE;};return r;}var m=k();function f(t){if(typeof t!="object"){var s=String(t).match(/^(\d+)(?:\.(\d+)(?:\.(\d+))?)?$/);if(!s){throw new Error('glow.embed._meetsVersionRequirements: invalid format for version string, require "n.n.n" or "n.n" or simply "n" where n is a numeric value');}t={major:parseInt(s[1],10),minor:parseInt(s[2]||0,10),release:parseInt(s[3]||0,10)};}var r=m,u=t;return(r.major>u.major||(r.major==u.major&&r.minor>u.minor)||(r.major==u.major&&r.minor==u.minor&&r.release>=u.release));}var e=n.env.ie?j:g;function g(t,r,s){return'";}function j(t,r,s){return''+q(s)+"";}var a={},p=0;function d(){return n.UID+"FlashEmbed"+(p++);}a.Flash=function(x,r,w,v){v=h(v,{width:"100%",height:"100%",params:{allowscriptaccess:"always",allowfullscreen:"true",quality:"high"},attributes:{},message:n.lang.interpolate(o.getLocaleModule("GLOW_EMBED").FLASH_MESSAGE,{min:w,installed:m}),id:(v&&v.attributes&&v.attributes.id)||d()});r=n.dom.get(r);if(!r.length){throw new Error("glow.embed.Flash unable to locate container");}this.container=r;this.movie=null;this._displayErrorMessage=typeof v.message=="function"?v.message:function(){return v.message;};this.isSupported;if(this.isSupported=f(w)){var s=v.attributes,u=["id","width","height"],t=u.length;while(t--){if(v[u[t]]){s[u[t]]=v[u[t]];}}if(v.className){s["class"]=v.className;}this._embed_tag=e(x,s,v.params);}};a.Flash.version=function(){return m;};a.Flash.prototype.embed=function(){var s=this.container[0];if(this.isSupported){s.innerHTML=this._embed_tag;this.movie=s.firstChild;}else{var r=this._displayErrorMessage();if(r){s.innerHTML=r;}}return this;};n.embed=a;}});(window.gloader||glow).module({name:"glow.dragdrop",library:["glow","1.7.3"],depends:[["glow","1.7.3","glow.tweens","glow.events","glow.dom","glow.anim"]],builder:function(j){var c=j.events,k=c.addListener,v=c.fire,g=c.removeListener,q=j.dom,h=q.get,m=q.create;var n={},w=1000,a=(document.compatMode=="CSS1Compat"&&j.env.ie>=5)?true:false,x=(document.compatMode!="CSS1Compat"&&j.env.ie>=5)?true:false,d=j.env.ie>=5,s=["top","right","bottom","left"];function b(r,z){var A=r.prototype[z];var y="cached_"+z;r.prototype[z]=function(){if(y in this){return this[y];}return this[y]=A.apply(this,arguments);};}function u(A,z){var r=s.length,y;while(r--){y="margin-"+s[r];A.css(y,z.css(y));}}function f(r,y){var A=r.prototype[y];var z="cached_"+y;r.prototype[y]=function(B){if(!this[z]){this[z]={};}if(B in this[z]){return this[z][B];}return this[z][B]=A.apply(this,arguments);};}function t(A,z){for(var y=0,r=z.length;y=y[0]&&A<=y[1]&&B<=y[2]&&A>=y[3];},containsPoint:function(y){var r=this.el.offset();return y.x>=r.left&&y.y>=r.top&&y.x<=r.left+this.borderWidth()&&y.y<=r.top+this.borderHeight();},positionedAncestorBox:function(){var r=this.el.parent(),y;while(r[0]){y=r.css("position")||"static";if(y=="relative"||y=="absolute"||y=="fixed"){return new o(r);}r=r.parent();}return null;}});function e(y){var r=y[0].tagName.toLowerCase()=="li"?"li":"div";var z=m("<"+r+">");if(r=="li"){z.css("list-style-type","none");}return z;}n.Draggable=function(A,B){this.element=h(A);this._opts=B=j.lang.apply({dragPrevention:["input","textarea","button","select","option","a"],placeholder:"spacer",placeholderClass:"glow-dragdrop-placeholder",step:{x:1,y:1}},B||{});if(typeof B.step=="number"){B.step={x:B.step,y:B.step};}else{B.step.x=B.step.x||1;B.step.y=B.step.y||1;}this._preventDrag=[];for(var y=0,r=B.dragPrevention.length;yA[1]?A[1]:D;}if(y!="x"){B=BA[2]?A[2]:B;}}r[0].style.left=D+"px";r[0].style.top=B+"px";if(this.dropTargets){this._mousePos={x:C.pageX,y:C.pageY};}if(d&&C.nativeEvent.button==0){this._releaseElement(C);return false;}return false;},_testForDropTargets:function(H){if(!this._lock){this._lock=0;}if(H){this._lock--;}else{if(this.lock){return;}}if(this._dragging!=1){return;}var z=this.activeTarget,y,R=this.dropTargets,S,C,F=this._box,K=this._mousePos;F.resetPosition();var D=0;for(var L=0,J=R.length;LD){D=M;y=S;}}}}this.activeTarget=y;if(y!==z){if(y){var I=new c.Event();I.draggable=this;v(y,"enter",I);var r=new c.Event();r.dropTarget=y;v(this,"enter",r);}if(z){var E=new c.Event();E.draggable=this;v(z,"leave",E);var G=new c.Event();G.dropTarget=z;v(this,"leave",G);}}if(y&&y._opts.dropIndicator!="none"){var P,N=y._childBoxes,A=y._children;F.resetPosition();var Q=y._box.innerTopPos();var T=K.y-F.offsetParentPageTop();var O=0;for(var L=0,J=N.length;L1){throw"more than one element passed into DropTarget constructor";}this._id=++l;this._opts=y=j.lang.apply({dropIndicator:"none",dropIndicatorClass:"glow-dragdrop-dropindicator",tolerance:"intersect"},y||{});if(y.onActive){k(this,"active",y.onActive);}if(y.onInactive){k(this,"inactive",y.onInactive);}if(y.onEnter){k(this,"enter",y.onEnter);}if(y.onLeave){k(this,"leave",y.onLeave);}if(y.onDrop){k(this,"drop",y.onDrop);}k(this,"active",this._onActive);k(this,"inactive",this._onInactive);return this;};n.DropTarget.prototype={setLogicalBottom:function(r){this._logicalBottom=r;},_onActive:function(A){var y=A.draggable;this._box=new o(this.element);if(this._logicalBottom){this._box.setLogicalBottom(this._logicalBottom);}if(this._opts.dropIndicator=="none"){return;}this._onEnterListener=k(this,"enter",this._onEnter);this._onLeaveListener=k(this,"leave",this._onLeave);this._dropIndicator=e(y.element);if(this._opts.dropIndicatorClass){this._dropIndicator.addClass(this._opts.dropIndicatorClass);}y._box.sizePlaceholder(this._dropIndicator,"relative",0,0);var z=this._children=h(this.element.children()).filter(function(){var B=h(this);return(!A.draggable._placeholder||!B.eq(A.draggable._placeholder))&&(!this._dropIndicator||!B.eq(this._dropIndicator));});var r=this._childBoxes=[];z.each(function(B){r[B]=new o(h(z[B]));});},_onInactive:function(r){g(this._onEnterListener);g(this._onLeaveListener);delete this._box;if(this._opts.dropIndicator=="none"){return;}if(!r.droppedOnThis&&this._dropIndicator){this._dropIndicator.remove();delete this._dropIndicator;}delete this._childBoxes;delete this._children;},_onEnter:function(){this._dropIndicatorAt=-1;},_onLeave:function(){this._dropIndicator.remove();},moveToPosition:function(y){var C=this._dropIndicator,z=new o(C);var B=parseInt(C.css("margin-left"))||0,A=parseInt(C.css("margin-top"))||0,r=z.el.position();y._startOffset={x:r.left,y:r.top};y._dropIndicator=C;delete this._dropIndicator;}};j.dragdrop=n;}}); /*@end @*/ diff --git a/ricoClient/js/rico.js b/ricoClient/js/rico.js index 9118ebc..8d7378b 100644 --- a/ricoClient/js/rico.js +++ b/ricoClient/js/rico.js @@ -1,6 +1,6 @@ /* - * (c) 2005-2009 Richard Cowin (http://openrico.org) - * (c) 2005-2009 Matt Brown (http://dowdybrown.com) + * (c) 2005-2011 Richard Cowin (http://openrico.org) + * (c) 2005-2011 Matt Brown (http://dowdybrown.com) * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this * file except in compliance with the License. You may obtain a copy of the License at diff --git a/ricoClient/js/ricoLocale_de.js b/ricoClient/js/ricoLocale_de.js new file mode 100644 index 0000000..198ee4f --- /dev/null +++ b/ricoClient/js/ricoLocale_de.js @@ -0,0 +1,123 @@ +/***************************************************************** + ricoLocale_de.js - a component of Rico 2.x & 3.x + Localization strings for German + Initial translator: rainer@langheiter@.com + May 08: minor changes by klaus + If you have better translations, or would like to include + translations for another language, please send them to dowdybrown@yahoo.com +******************************************************************/ +Rico.langCode='de'; + +// used in ricoLiveGrid.js + +Rico.addPhraseId('bookmarkExact',"Zeige Einträge $1 - $2 von $3"); +Rico.addPhraseId('bookmarkAbout',"Zeige Einträge $1 - $2 von ungefähr $3"); +Rico.addPhraseId('bookmarkNoRec',"Keine Einträge"); +Rico.addPhraseId('bookmarkNoMatch',"Keine übereinstimmenden Einträge"); +Rico.addPhraseId('bookmarkLoading',"Lade..."); +Rico.addPhraseId('sorting',"Daten werden sortiert ..."); +Rico.addPhraseId('exportStatus',"Exportieren der Reihe $1"); +Rico.addPhraseId('filterAll',"(alle)"); +Rico.addPhraseId('filterBlank',"(freier Raum)"); +Rico.addPhraseId('filterEmpty',"(leer)"); +Rico.addPhraseId('filterNotEmpty',"(nicht leer)"); +Rico.addPhraseId('filterLike',"wie: $1"); +Rico.addPhraseId('filterNot',"nicht: $1"); +Rico.addPhraseId('requestError',"Die Anfrage ergab einen Fehler:\n$1"); +Rico.addPhraseId('keywordPrompt',"Schlüsselwort eintragen, nach dem gesucht werden soll (verwende * als Wildcard):"); + +// used in ricoLiveGridMenu.js + +Rico.addPhraseId('gridmenuSortBy',"Sortiert nach: $1"); +Rico.addPhraseId('gridmenuSortAsc',"Aufsteigend"); +Rico.addPhraseId('gridmenuSortDesc',"Absteigend"); +Rico.addPhraseId('gridmenuFilterBy',"Gefiltert nach: $1"); +Rico.addPhraseId('gridmenuRefresh',"erneuern Sie"); +Rico.addPhraseId('gridmenuChgKeyword',"Schlüsselwort ändern..."); +Rico.addPhraseId('gridmenuExcludeAlso',"Diesen Wert ebenfalls ausschließen"); +Rico.addPhraseId('gridmenuInclude',"Nur diesen Wert einbeziehen"); +Rico.addPhraseId('gridmenuGreaterThan',"Größer oder gleich diesem Wert"); +Rico.addPhraseId('gridmenuLessThan',"Kleiner oder gleich diesem wert"); +Rico.addPhraseId('gridmenuContains',"Enthält Schlüsselwort..."); +Rico.addPhraseId('gridmenuExclude',"Diesen Wert ausschließen"); +Rico.addPhraseId('gridmenuRemoveFilter',"Entferne Filter"); +Rico.addPhraseId('gridmenuRemoveAll',"Entfernen Sie alle Filter"); + +Rico.addPhraseId('gridmenuExport',"Druck/Exportiert"); +Rico.addPhraseId('gridmenuExportVis2Web',"Sichtbare Zeilen auf eine Webseite"); +Rico.addPhraseId('gridmenuExportAll2Web',"Alle Zeilen auf eine Webseite"); +Rico.addPhraseId('gridmenuExportVis2SS',"Sichtbare Zeilen in einen Verteilungsbogen"); +Rico.addPhraseId('gridmenuExportAll2SS',"Alle Zeilen in einen Verteilungsbogen"); + +Rico.addPhraseId('gridmenuHideShow',"Verbergen/Zeigen"); +Rico.addPhraseId('gridmenuChooseCols',"Wählen Sie die Spalten..."); +Rico.addPhraseId('gridmenuHide',"Verbergen: $1"); +Rico.addPhraseId('gridmenuShow',"Zeige: $1"); +Rico.addPhraseId('gridmenuShowAll',"Alle zeigen"); + +// used in ricoLiveGridAjax.js + +Rico.addPhraseId('sessionExpireMinutes',"Minuten bis zum Ablauf Ihrer Sitzung."); +Rico.addPhraseId('sessionExpired',"ABGELAUFEN"); +Rico.addPhraseId('requestTimedOut',"Zeitüberschreitung"); +Rico.addPhraseId('waitForData',"Warte auf Daten ..."); +Rico.addPhraseId('httpError',"Die Anfrage ergab einen Fehler HTTP: $1"); +Rico.addPhraseId('invalidResponse',"Der Server brachte eine unzulässige Antwort zurück"); + +// used in ricoLiveGridCommon.js + +Rico.addPhraseId('gridChooseCols',"Wählen Sie die Spalten"); +Rico.addPhraseId('exportComplete',"der Export ist komplett"); +Rico.addPhraseId('exportInProgress',"der Export läuft ..."); +Rico.addPhraseId('showFilterRow',"Filter-Reihe zeigen"); +Rico.addPhraseId('hideFilterRow',"Filter-Reile verbergen"); + +// used in ricoLiveGridForms.js + +Rico.addPhraseId('selectNone',"(keine)"); +Rico.addPhraseId('selectNewVal',"(neuer Wert)"); +Rico.addPhraseId('record',"die Eintragung"); +Rico.addPhraseId('thisRecord',"diesen Eintrag"); +Rico.addPhraseId('confirmDelete',"Möchten Sie dies wirklich löschen $1?"); +Rico.addPhraseId('deleting',"Löschen läuft ..."); +Rico.addPhraseId('formPleaseEnter',"Geben Sie bitte einen Wert ein für $1"); +Rico.addPhraseId('formInvalidFmt',"unzulässiges Format bei $1"); +Rico.addPhraseId('formOutOfRange',"Ungültiger (zu großer) Wert bei $1"); +Rico.addPhraseId('formNewValue',"neuer Wert:"); +Rico.addPhraseId('saving',"sichere ..."); +Rico.addPhraseId('clear',"Löschtaste"); +Rico.addPhraseId('close',"Schließen"); +Rico.addPhraseId('saveRecord',"Speichere"); +Rico.addPhraseId('cancel',"Abbrechen"); +Rico.addPhraseId('editRecord',"Bearbeite Sie diesen Eintrag"); +Rico.addPhraseId('deleteRecord',"Löschen Sie diesen Eintrag"); +Rico.addPhraseId('cloneRecord',"Kopieren Sie diesen Eintrag"); +Rico.addPhraseId('addRecord',"Erstellen Sie einen neuen Eintrag"); +Rico.addPhraseId('addedSuccessfully',"$1 wurde erfolgreich addiert"); +Rico.addPhraseId('deletedSuccessfully',"$1 wurde erfolgreich gelöscht"); +Rico.addPhraseId('updatedSuccessfully',"$1 wurde erfolgreich aktualisiert"); + +// used in ricoTree.js + +Rico.addPhraseId('treeSave',"Auswahl speichern"); +Rico.addPhraseId('treeClear',"Alles löschen"); + +// used in ricoCalendar.js + +Rico.addPhraseId('calToday',"Heute ist der $1 $2 $3"); +Rico.addPhraseId('calWeekHdg',"Woche"); +Rico.addPhraseId('calYearRange',"Jahr ($1-$2)"); +Rico.addPhraseId('calInvalidYear',"unzulässiges Jahr"); + +// Date & number formats + +Rico.monthNames=["Januar", "Februar", "März", "April", "Mai","Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"]; +Rico.dayNames=["Sonntag", "Montag","Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"]; +Rico.monthNamesShort=['Jan','Feb','Mär','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez']; +Rico.dayNamesShort=['So','Mo','Di','Mi','Do','Fr','Sa']; + +Rico.thouSep="." +Rico.decPoint="," +Rico.dateFmt="dd.mm.yyyy" + +Rico.includeLoaded('ricoLocale_de.js'); diff --git a/ricoClient/js/ricoLocale_es.js b/ricoClient/js/ricoLocale_es.js new file mode 100644 index 0000000..d717c79 --- /dev/null +++ b/ricoClient/js/ricoLocale_es.js @@ -0,0 +1,118 @@ +/***************************************************************** + ricoLocale_es.js - a component of Rico 2.0 + Localization strings for Spanish + If you have better translations, or would like to include + translations for another language, please send them to dowdybrown@yahoo.com +******************************************************************/ +Rico.langCode='es'; + +// used in ricoLiveGrid.js + +Rico.addPhraseId('bookmarkExact',"Mostrando datos $1 - $2 de $3"); +Rico.addPhraseId('bookmarkAbout',"Mostrando datos $1 - $2 de alrededor de $3"); +Rico.addPhraseId('bookmarkNoRec',"No hay datos"); +Rico.addPhraseId('bookmarkNoMatch',"No hay datos coincidentes"); +Rico.addPhraseId('bookmarkLoading',"Cargando..."); +Rico.addPhraseId('sorting',"La ordenación está en marcha..."); +Rico.addPhraseId('exportStatus',"Exportación de la fila $1"); +Rico.addPhraseId('filterAll',"(todo)"); +Rico.addPhraseId('filterBlank',"(espacio en blanco)"); +Rico.addPhraseId('filterEmpty',"(vacío)"); +Rico.addPhraseId('filterNotEmpty',"(no vacío)"); +Rico.addPhraseId('filterLike',"similar a: $1"); +Rico.addPhraseId('filterNot',"no: $1"); +Rico.addPhraseId('requestError',"Un error ocurrió mientras recibiendo datos:\n$1"); +Rico.addPhraseId('keywordPrompt',"Introduzca texto a buscar (use * como un comodín):"); + +// used in ricoLiveGridMenu.js + +Rico.addPhraseId('gridmenuSortBy',"Ordenar por: $1"); +Rico.addPhraseId('gridmenuSortAsc',"Ascendente"); +Rico.addPhraseId('gridmenuSortDesc',"Descendente"); +Rico.addPhraseId('gridmenuFilterBy',"Filtrar por: $1"); +Rico.addPhraseId('gridmenuRefresh',"Actualizar"); +Rico.addPhraseId('gridmenuChgKeyword',"Cambiar texto..."); +Rico.addPhraseId('gridmenuExcludeAlso',"Excluir este valor también"); +Rico.addPhraseId('gridmenuInclude',"Incluir solo este valor"); +Rico.addPhraseId('gridmenuGreaterThan',"Mayor o igual a este valor"); +Rico.addPhraseId('gridmenuLessThan',"Menor o igual a este valor"); +Rico.addPhraseId('gridmenuContains',"Contiene el texto..."); +Rico.addPhraseId('gridmenuExclude',"Excluir este valor"); +Rico.addPhraseId('gridmenuRemoveFilter',"Quitar filtro"); +Rico.addPhraseId('gridmenuRemoveAll',"Quitar todos los filtros"); +Rico.addPhraseId('gridmenuExport',"Imprimir/Exportar"); +Rico.addPhraseId('gridmenuExportVis2Web',"Filas visibles a una página web"); +Rico.addPhraseId('gridmenuExportAll2Web',"Todas las filas a una página web"); +Rico.addPhraseId('gridmenuExportVis2SS',"Filas visibles a una hoja de cálculo"); +Rico.addPhraseId('gridmenuExportAll2SS',"Todas las filas a una hoja de cálculo"); +Rico.addPhraseId('gridmenuHideShow',"Ocultar/Mostrar"); +Rico.addPhraseId('gridmenuChooseCols',"Elija las columnas..."); +Rico.addPhraseId('gridmenuHide',"Ocultar: $1"); +Rico.addPhraseId('gridmenuShow',"Mostrar: $1"); +Rico.addPhraseId('gridmenuShowAll',"Mostrar todo"); + +// used in ricoLiveGridAjax.js + +Rico.addPhraseId('sessionExpireMinutes',"minutos antes de que su sesión se acabe"); +Rico.addPhraseId('sessionExpired',"EXPIRADO"); +Rico.addPhraseId('requestTimedOut',"Tiempo excedido en recibir datos"); +Rico.addPhraseId('waitForData',"Esperando datos..."); +Rico.addPhraseId('httpError',"Un error HTTP ocurrió mientras recibiendo datos: $1"); +Rico.addPhraseId('invalidResponse',"El servidor devolvió una respuesta inválida"); + +// used in ricoLiveGridCommon.js + +Rico.addPhraseId('gridChooseCols',"Elija las columnas"); +Rico.addPhraseId('exportComplete',"La exportación está completa"); +Rico.addPhraseId('exportInProgress',"La exportación está en marcha..."); +Rico.addPhraseId('showFilterRow',"Mostrar la fila del filtro"); +Rico.addPhraseId('hideFilterRow',"Ocultar la fila del filtro"); + +// used in ricoLiveGridForms.js + +Rico.addPhraseId('selectNone',"(nada)"); +Rico.addPhraseId('selectNewVal',"(nuevo valor)"); +Rico.addPhraseId('record',"el expediente"); +Rico.addPhraseId('thisRecord',"este expediente"); +Rico.addPhraseId('confirmDelete',"¿Está seguro de que quiere borrar $1?"); +Rico.addPhraseId('deleting',"Canceladura en marcha..."); +Rico.addPhraseId('formPleaseEnter',"Introduzca un valor para $1"); +Rico.addPhraseId('formInvalidFmt',"Formato inválido en $1"); +Rico.addPhraseId('formOutOfRange',"Valor fuera de la gama en $1"); +Rico.addPhraseId('formNewValue',"nuevo valor:"); +Rico.addPhraseId('saving',"Actualización en marcha..."); +Rico.addPhraseId('clear',"quitar"); +Rico.addPhraseId('close',"Cerrar"); +Rico.addPhraseId('saveRecord',"Guardar"); +Rico.addPhraseId('cancel',"Cancelar"); +Rico.addPhraseId('editRecord',"Editar este expediente"); +Rico.addPhraseId('deleteRecord',"Borrar este expediente"); +Rico.addPhraseId('cloneRecord',"Copiar este expediente"); +Rico.addPhraseId('addRecord',"Añadir expediente nuevo"); +Rico.addPhraseId('addedSuccessfully',"$1 fue agregado con éxito"); +Rico.addPhraseId('deletedSuccessfully',"$1 fue suprimido con éxito"); +Rico.addPhraseId('updatedSuccessfully',"$1 fue puesto al día con éxito"); + +// used in ricoTree.js + +Rico.addPhraseId('treeSave',"Guardar la selección"); +Rico.addPhraseId('treeClear',"Quitar todo"); + +// used in ricoCalendar.js + +Rico.addPhraseId('calToday',"Hoy es $1 $2 $3"); +Rico.addPhraseId('calWeekHdg',"Sem"); +Rico.addPhraseId('calYearRange',"Año ($1-$2)"); +Rico.addPhraseId('calInvalidYear',"Año inválido"); + +// Date & number formats + +Rico.thouSep="," +Rico.decPoint="." +Rico.dateFmt="dd/mm/yyyy" + +Rico.monthNames=['Enero','Febrero', 'Marzo', 'Abril', 'Mayo','Junio', 'Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre']; +Rico.dayNames=['Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado']; +Rico.monthNamesShort=['Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dic']; +Rico.dayNamesShort=['Dom','Lun','Mar','Mié','Juv','Vie','Sáb']; + diff --git a/ricoClient/js/ricoLocale_fr.js b/ricoClient/js/ricoLocale_fr.js new file mode 100644 index 0000000..1440e5e --- /dev/null +++ b/ricoClient/js/ricoLocale_fr.js @@ -0,0 +1,120 @@ +/***************************************************************** + ricoLocale_fr.js - a component of Rico 2.0 + Localization strings for French + If you have better translations, or would like to include + translations for another language, please send them to dowdybrown@yahoo.com +******************************************************************/ +Rico.langCode='fr'; + +// used in ricoLiveGrid.js + +Rico.addPhraseId('bookmarkExact',"Résultats $1 - $2 de $3"); +Rico.addPhraseId('bookmarkAbout',"Résultats $1 - $2 sur un total d'environ $3"); +Rico.addPhraseId('bookmarkNoRec',"Aucun article"); +Rico.addPhraseId('bookmarkNoMatch',"Aucun article ne correspond"); +Rico.addPhraseId('bookmarkLoading',"Chargement..."); +Rico.addPhraseId('sorting',"Classement..."); +Rico.addPhraseId('exportStatus',"Exportation de la rangée $1"); +Rico.addPhraseId('filterAll',"(tous)"); +Rico.addPhraseId('filterBlank',"(blanc)"); +Rico.addPhraseId('filterEmpty',"(vide)"); +Rico.addPhraseId('filterNotEmpty',"(pas vide)"); +Rico.addPhraseId('filterLike',"comme: $1"); +Rico.addPhraseId('filterNot',"pas: $1"); +Rico.addPhraseId('requestError',"La requête a retourné une erreur:\n$1"); +Rico.addPhraseId('keywordPrompt',"Écrivez le mot-clé à rechercher (utiliser * comme caractère générique):"); + +// used in ricoLiveGridMenu.js + +Rico.addPhraseId('gridmenuSortBy',"Trier par: $1"); +Rico.addPhraseId('gridmenuSortAsc',"Croissant"); +Rico.addPhraseId('gridmenuSortDesc',"Décroissant"); +Rico.addPhraseId('gridmenuFilterBy',"Filtrer par: $1"); +Rico.addPhraseId('gridmenuRefresh',"Recharger"); +Rico.addPhraseId('gridmenuChgKeyword',"Changer le mot-clé..."); +Rico.addPhraseId('gridmenuExcludeAlso',"Exclure cette valeur aussi"); +Rico.addPhraseId('gridmenuInclude',"Inclure seulement cette valeur"); +Rico.addPhraseId('gridmenuGreaterThan',"Supérieur ou égal à cette valeur"); +Rico.addPhraseId('gridmenuLessThan',"Inférieur ou égal à cette valeur"); +Rico.addPhraseId('gridmenuContains',"Contenant le mot-clé..."); +Rico.addPhraseId('gridmenuExclude',"Exclure cette valeur"); +Rico.addPhraseId('gridmenuRemoveFilter',"Enlever le filtre"); +Rico.addPhraseId('gridmenuRemoveAll',"Enlever tous les filtres"); + +Rico.addPhraseId('gridmenuExport',"Imprimer/Exporter"); +Rico.addPhraseId('gridmenuExportVis2Web',"Rangs visibles vers une page Web"); +Rico.addPhraseId('gridmenuExportAll2Web',"Tous les rangs vers une page Web"); +Rico.addPhraseId('gridmenuExportVis2SS',"Rangs visibles vers un bilan"); +Rico.addPhraseId('gridmenuExportAll2SS',"Tous les rangs vers un bilan"); + +Rico.addPhraseId('gridmenuHideShow',"Masquer/Afficher"); +Rico.addPhraseId('gridmenuChooseCols',"Choisissez les colonnes..."); +Rico.addPhraseId('gridmenuHide',"Masquer: $1"); +Rico.addPhraseId('gridmenuShow',"Afficher: $1"); +Rico.addPhraseId('gridmenuShowAll',"Afficher tous"); + +// used in ricoLiveGridAjax.js + +Rico.addPhraseId('sessionExpireMinutes',"minutes avant que votre session expire"); +Rico.addPhraseId('sessionExpired',"EXPIRÉ"); +Rico.addPhraseId('requestTimedOut',"La requête a atteint sa limite de temps"); +Rico.addPhraseId('waitForData',"En attente des données..."); +Rico.addPhraseId('httpError',"La requête a retourné une erreur HTTP: $1"); +Rico.addPhraseId('invalidResponse',"Le serveur a retourné une réponse non valide"); + +// used in ricoLiveGridCommon.js + +Rico.addPhraseId('gridChooseCols',"Choisissez les colonnes"); +Rico.addPhraseId('exportComplete',"Exportation complete"); +Rico.addPhraseId('exportInProgress',"Exportation en marche..."); +Rico.addPhraseId('showFilterRow',"Afficher le rang de filtre"); +Rico.addPhraseId('hideFilterRow',"Masquer le rang de filtre"); + +// used in ricoLiveGridForms.js + +Rico.addPhraseId('selectNone',"(aucun)"); +Rico.addPhraseId('selectNewVal',"(nouvelle valeur)"); +Rico.addPhraseId('record',"l'entrée"); +Rico.addPhraseId('thisRecord',"cette entrée"); +Rico.addPhraseId('confirmDelete',"Êtes-vous sûr de vouloir supprimer $1?"); +Rico.addPhraseId('deleting',"Effacement en cours..."); +Rico.addPhraseId('formPleaseEnter',"Veuillez saisir une valeur pour $1"); +Rico.addPhraseId('formInvalidFmt',"Format invalide pour $1"); +Rico.addPhraseId('formOutOfRange',"Valeur non-autorisée pour $1"); +Rico.addPhraseId('formNewValue',"Nouvelle valeur:"); +Rico.addPhraseId('saving',"Sauvegarde en cours..."); +Rico.addPhraseId('clear',"Enlever"); +Rico.addPhraseId('close',"Fermer"); +Rico.addPhraseId('saveRecord',"Sauvegarder"); +Rico.addPhraseId('cancel',"Annuler"); +Rico.addPhraseId('editRecord',"Éditer cette entrée"); +Rico.addPhraseId('deleteRecord',"Supprimer cette entrée"); +Rico.addPhraseId('cloneRecord',"Copier cette entrée"); +Rico.addPhraseId('addRecord',"Ajouter une nouvelle entrée"); +Rico.addPhraseId('addedSuccessfully',"$1 a été ajoutée avec succès"); +Rico.addPhraseId('deletedSuccessfully',"$1 a été supprimée avec succès"); +Rico.addPhraseId('updatedSuccessfully',"$1 a été mis à jour avec succès"); + +// used in ricoTree.js + +Rico.addPhraseId('treeSave',"Sauvegarder la selection"); +Rico.addPhraseId('treeClear',"Enlever tous"); + +// used in ricoCalendar.js + +Rico.addPhraseId('calToday',"Aujourd'hui est le $1 $2 $3"); +Rico.addPhraseId('calWeekHdg',"Sem"); +Rico.addPhraseId('calYearRange',"Année ($1-$2)"); +Rico.addPhraseId('calInvalidYear',"Année non valide"); + +// Date & number formats + +Rico.thouSep="'" +Rico.decPoint="." +Rico.dateFmt="dd.mm.yyyy" + +Rico.monthNames=['Janvier','Février', 'Mars', 'Avril', 'Mai','Juin', 'Juillet','Août','Septembre','Octobre','Novembre','Décembre']; +Rico.dayNames=['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi']; +Rico.monthNamesShort=['Jan','Fév','Mar','Avr','Mai','Jun','Jul','Aoû','Sep','Oct','Nov','Déc']; +Rico.dayNamesShort=['Dim','Lun','Mar','Mer','Jeu','Ven','Sam']; + diff --git a/ricoClient/js/ricoLocale_it.js b/ricoClient/js/ricoLocale_it.js new file mode 100644 index 0000000..ff0834c --- /dev/null +++ b/ricoClient/js/ricoLocale_it.js @@ -0,0 +1,121 @@ +/***************************************************************** + ricoLocale_it.js - a component of Rico 2.0 + Localization strings for Italian + If you have better translations, or would like to include + translations for another language, please send them to dowdybrown@yahoo.com +******************************************************************/ +Rico.langCode='it'; + +// used in ricoLiveGrid.js + +Rico.addPhraseId('bookmarkExact',"Risultati $1 - $2 di $3"); +Rico.addPhraseId('bookmarkAbout',"Risultati $1 - $2 di circa $3"); +Rico.addPhraseId('bookmarkNoRec',"Nessun articolo"); +Rico.addPhraseId('bookmarkNoMatch',"Nessun articolo corrispondente"); +Rico.addPhraseId('bookmarkLoading',"Caricamento..."); +Rico.addPhraseId('sorting',"L'ordinamento è in progresso..."); +Rico.addPhraseId('exportStatus',"Esportazione della fila $1"); +Rico.addPhraseId('filterAll',"(tutto)"); +Rico.addPhraseId('filterBlank',"(in bianco)"); +Rico.addPhraseId('filterEmpty',"(vuoto)"); +Rico.addPhraseId('filterNotEmpty',"(non vuoto)"); +Rico.addPhraseId('filterLike',"come: $1"); +Rico.addPhraseId('filterNot',"non: $1"); +Rico.addPhraseId('requestError',"La richiesta ha generato un errore:\n$1"); +Rico.addPhraseId('keywordPrompt',"Inserisci la parola chiave da cercare (usa * come \"jolly\"):"); + +// used in ricoLiveGridMenu.js + +Rico.addPhraseId('gridmenuSortBy',"Ordina per: $1"); +Rico.addPhraseId('gridmenuSortAsc',"Crescente"); +Rico.addPhraseId('gridmenuSortDesc',"Decrescente"); +Rico.addPhraseId('gridmenuFilterBy',"Filtra per: $1"); +Rico.addPhraseId('gridmenuRefresh',"Rinfrescarsi"); +Rico.addPhraseId('gridmenuChgKeyword',"Cambia la parola chiave..."); +Rico.addPhraseId('gridmenuExcludeAlso',"Escludi anche questo valore"); +Rico.addPhraseId('gridmenuInclude',"Inclure seulement cette valeur"); +Rico.addPhraseId('gridmenuGreaterThan',"Superiore o uguale a questo valore"); +Rico.addPhraseId('gridmenuLessThan',"Inferiore o uguale a questo valore"); +Rico.addPhraseId('gridmenuContains',"Contiene la parola chiave..."); +Rico.addPhraseId('gridmenuExclude',"Escludi questo valore"); +Rico.addPhraseId('gridmenuRemoveFilter',"Rimuovi filtro"); +Rico.addPhraseId('gridmenuRemoveAll',"Rimuova tutti i filtri"); + +Rico.addPhraseId('gridmenuExport',"Stampa/Esporta"); +Rico.addPhraseId('gridmenuExportVis2Web',"Righe visibili verso una pagina web"); +Rico.addPhraseId('gridmenuExportAll2Web',"Tutte le righe verso una pagina web"); +Rico.addPhraseId('gridmenuExportVis2SS',"Righe visibili verso un foglio elettronico"); +Rico.addPhraseId('gridmenuExportAll2SS',"Tutte le righe verso un foglio elettronico"); + +Rico.addPhraseId('gridmenuHideShow',"Nascondi/Mostra"); +Rico.addPhraseId('gridmenuChooseCols',"Selezioni le colonne..."); +Rico.addPhraseId('gridmenuHide',"Nascondi: $1"); +Rico.addPhraseId('gridmenuShow',"Mostra: $1"); +Rico.addPhraseId('gridmenuShowAll',"Mostra Tutte"); + +// used in ricoLiveGridAjax.js + +Rico.addPhraseId('sessionExpireMinutes',"minuti prima che la vostra sessione termini"); +Rico.addPhraseId('sessionExpired',"TERMINATA"); +Rico.addPhraseId('requestTimedOut',"La richiesta dei dati ha raggiunto il limite di tempo"); +Rico.addPhraseId('waitForData',"Attendere per i dati..."); +Rico.addPhraseId('httpError',"La richiesta ha generato un errore HTTP: $1"); +Rico.addPhraseId('invalidResponse',"Il server ha restituito una risposta non valida"); + +// used in ricoLiveGridCommon.js + +Rico.addPhraseId('gridChooseCols',"Selezioni le colonne"); +Rico.addPhraseId('exportComplete',"L'esportazione è rifinita"); +Rico.addPhraseId('exportInProgress',"Esportazione in progresso..."); +Rico.addPhraseId('showFilterRow',"Mostra la riga del filtro"); +Rico.addPhraseId('hideFilterRow',"Nascondi la riga del filtro"); + +// used in ricoLiveGridForms.js + +Rico.addPhraseId('selectNone',"(vuoto)"); +Rico.addPhraseId('selectNewVal',"(nouvelle valeur)"); +Rico.addPhraseId('record',"la registrazione"); +Rico.addPhraseId('thisRecord',"questa registrazione"); +Rico.addPhraseId('confirmDelete',"Siete sicuri che volete cancellare $1?"); +Rico.addPhraseId('deleting',"L'annullamento è in progresso..."); +Rico.addPhraseId('formPleaseEnter',"Per favore inserire un valore per $1"); +Rico.addPhraseId('formInvalidFmt',"Formato non valida a $1"); +Rico.addPhraseId('formOutOfRange',"Valeur fuori scala a $1"); +Rico.addPhraseId('formNewValue',"nouvo valore:"); +Rico.addPhraseId('saving',"i dati stanno conservandi..."); +Rico.addPhraseId('clear',"cancella"); +Rico.addPhraseId('close',"Chiudi"); +Rico.addPhraseId('saveRecord',"Salva"); +Rico.addPhraseId('cancel',"Annulla"); +Rico.addPhraseId('editRecord',"Modifica questa registrazione"); +Rico.addPhraseId('deleteRecord',"Cancella questa registrazione"); +Rico.addPhraseId('cloneRecord',"Clona questa registrazione"); +Rico.addPhraseId('addRecord',"Aggiungi una nuova registrazione"); +Rico.addPhraseId('addedSuccessfully',"$1 ha aggiunto con successo"); +Rico.addPhraseId('deletedSuccessfully',"$1 ha cancellato con successo"); +Rico.addPhraseId('updatedSuccessfully',"$1 aggiornata con successo"); + +// used in ricoTree.js + +Rico.addPhraseId('treeSave',"Salva la selezione"); +Rico.addPhraseId('treeClear',"Deselezioni tutti"); + +// used in ricoCalendar.js + +Rico.addPhraseId('calToday',"L'oggi è $1 $2 $3"); +Rico.addPhraseId('calWeekHdg',"Set"); +Rico.addPhraseId('calYearRange',"Anno ($1-$2)"); +Rico.addPhraseId('calInvalidYear',"Anno non valida"); + +// Date & number formats + +Rico.thouSep="."; +Rico.decPoint=","; +Rico.dateFmt="dd/mm/yyyy"; + +Rico.monthNames=["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"]; +Rico.dayNames=["Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato"]; +Rico.monthNamesShort=['Gen','Feb','Mar','Apr','Mag','Giu','Lug','Ago','Set','Ott','Nov','Dic']; +Rico.dayNamesShort=['Dom','Lun','Mar','Mer','Gio','Ven','Sab']; + +Rico.includeLoaded('ricoLocale_it.js'); diff --git a/ricoClient/js/ricoLocale_ja.js b/ricoClient/js/ricoLocale_ja.js new file mode 100644 index 0000000..e98d6b2 --- /dev/null +++ b/ricoClient/js/ricoLocale_ja.js @@ -0,0 +1,120 @@ +/***************************************************************** + ricoLocale_ja.js - a component of Rico 2.0 + Localization strings for Japanese + Initial translator: Nobuhito Takeuchi + If you have better translations, or would like to include + translations for another language, please send them to dowdybrown@yahoo.com +******************************************************************/ +Rico.langCode='ja'; + +// used in ricoLiveGrid.js + +Rico.addPhraseId('bookmarkExact',"リストのレコードは $3 件中 $1 - $2 件目です"); +Rico.addPhraseId('bookmarkAbout',"リストのレコードは少なくとも $3 件中 $1 - $2 件目です"); +Rico.addPhraseId('bookmarkNoRec',"レコードがありません"); +Rico.addPhraseId('bookmarkNoMatch',"一致するレコードがありません"); +Rico.addPhraseId('bookmarkLoading',"ロード中です..."); +Rico.addPhraseId('sorting',"並べ替え中です..."); +Rico.addPhraseId('exportStatus',"$1 行目をエクスポート中です"); +Rico.addPhraseId('filterAll',"(すべて)"); +Rico.addPhraseId('filterBlank',"(空白)"); +Rico.addPhraseId('filterEmpty',"(空の)"); +Rico.addPhraseId('filterNotEmpty',"(空では無い)"); +Rico.addPhraseId('filterLike',"$1 を含む"); +Rico.addPhraseId('filterNot',"$1 を含まない"); +Rico.addPhraseId('requestError',"そのリクエストはエラーを返しました:\n$1"); +Rico.addPhraseId('keywordPrompt',"検索するキーワードを入力して下さい ( * はワイルドカードとして利用されます):"); + +// used in ricoLiveGridMenu.js + +Rico.addPhraseId('gridmenuSortBy',"$1 を並べ替え"); +Rico.addPhraseId('gridmenuSortAsc',"昇順"); +Rico.addPhraseId('gridmenuSortDesc',"降順"); +Rico.addPhraseId('gridmenuFilterBy',"$1 をフィルタ"); +Rico.addPhraseId('gridmenuRefresh',"再描画"); +Rico.addPhraseId('gridmenuChgKeyword',"キーワードの変更..."); +Rico.addPhraseId('gridmenuExcludeAlso',"この値も含まない"); +Rico.addPhraseId('gridmenuInclude',"この値のみを含む"); +Rico.addPhraseId('gridmenuGreaterThan',"この値以上"); +Rico.addPhraseId('gridmenuLessThan',"この値以下"); +Rico.addPhraseId('gridmenuContains',"このキーワードを含む..."); +Rico.addPhraseId('gridmenuExclude',"この値を含まない"); +Rico.addPhraseId('gridmenuRemoveFilter',"フィルタを取り除く"); +Rico.addPhraseId('gridmenuRemoveAll',"すべてのフィルタを取り除く"); + +Rico.addPhraseId('gridmenuExport',"インポート/エクスポート"); +Rico.addPhraseId('gridmenuExportVis2Web',"表示されている行をウェブページへ"); +Rico.addPhraseId('gridmenuExportAll2Web',"すべての行をウェブページへ"); +Rico.addPhraseId('gridmenuExportVis2SS',"表示されている行をスプレッドシートへ"); +Rico.addPhraseId('gridmenuExportAll2SS',"すべての行をスプレッドシートへ"); + +Rico.addPhraseId('gridmenuHideShow',"非表示/表示"); +Rico.addPhraseId('gridmenuChooseCols',"列を選択..."); +Rico.addPhraseId('gridmenuHide',"$1 を非表示"); +Rico.addPhraseId('gridmenuShow',"$1 を表示"); +Rico.addPhraseId('gridmenuShowAll',"すべて表示"); + +// used in ricoLiveGridAjax.js + +Rico.addPhraseId('sessionExpireMinutes',"セッションが終了するまでの分数"); +Rico.addPhraseId('sessionExpired',"終了"); +Rico.addPhraseId('requestTimedOut',"データのリクエストが終了しました"); +Rico.addPhraseId('waitForData',"データを待っています..."); +Rico.addPhraseId('httpError',"HTTP エラーを受け取りました: $1"); +Rico.addPhraseId('invalidResponse',"サーバは無効なレスポンスを返しました"); + +// used in ricoLiveGridCommon.js + +Rico.addPhraseId('gridChooseCols',"列を選択して下さい"); +Rico.addPhraseId('exportComplete',"エクスポートが完了しました"); +Rico.addPhraseId('exportInProgress',"エクスポートの実行中です..."); + +// used in ricoLiveGridForms.js + +Rico.addPhraseId('selectNone',"(無し)"); +Rico.addPhraseId('selectNewVal',"(新しい値)"); +Rico.addPhraseId('record',"レコード"); +Rico.addPhraseId('thisRecord',"この $1"); +Rico.addPhraseId('confirmDelete',"$1 を本当に削除してよろしいですか?"); +Rico.addPhraseId('deleting',"削除しています..."); +Rico.addPhraseId('formPleaseEnter',"$1 を入力して下さい"); +Rico.addPhraseId('formInvalidFmt',"$1 は無効なフォーマットです"); +Rico.addPhraseId('formOutOfRange',"$1 は範囲外です"); +Rico.addPhraseId('formNewValue',"新しい値:"); +Rico.addPhraseId('saving',"保存しています..."); +Rico.addPhraseId('clear',"消去"); +Rico.addPhraseId('close',"閉じる"); +Rico.addPhraseId('saveRecord',"$1 の保存"); +Rico.addPhraseId('cancel',"キャンセル"); +Rico.addPhraseId('editRecord',"$1 を編集します"); +Rico.addPhraseId('deleteRecord',"$1 を削除します"); +Rico.addPhraseId('cloneRecord',"$1 の複製を作成します"); +Rico.addPhraseId('addRecord',"$1 を追加します"); +Rico.addPhraseId('addedSuccessfully',"$1 の追加に成功しました"); +Rico.addPhraseId('deletedSuccessfully',"$1 の削除に成功しました"); +Rico.addPhraseId('updatedSuccessfully',"$1 の更新に成功しました"); + +// used in ricoTree.js + +Rico.addPhraseId('treeSave',"選択項目を保存"); +Rico.addPhraseId('treeClear',"すべて消去"); + +// used in ricoCalendar.js + +Rico.addPhraseId('calToday',"今日は $3 å¹´ $4 月 $1 日です"); +Rico.addPhraseId('calWeekHdg',"曜日"); +Rico.addPhraseId('calYearRange',"$1 å¹´ - $2 å¹´"); +Rico.addPhraseId('calInvalidYear',"無効な年です"); + +// Date & number formats + +Rico.thouSep="," +Rico.decPoint="." +Rico.dateFmt="yyyyå¹´mm月dd日" + +Rico.monthNames=['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']; +Rico.monthNamesShort=['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']; +Rico.dayNames=['日曜日','月曜日','火曜日','水曜日','木曜日','金曜日','土曜日']; +Rico.dayNamesShort=['日','月','火','æ°´','木','金','土']; + +Rico.includeLoaded('ricoLocale_ja.js'); diff --git a/ricoClient/js/ricoLocale_ko.js b/ricoClient/js/ricoLocale_ko.js new file mode 100644 index 0000000..e19b6ae --- /dev/null +++ b/ricoClient/js/ricoLocale_ko.js @@ -0,0 +1,118 @@ +/***************************************************************** + ricoLocale_ko.js - a component of Rico 2.0 + Localization strings for Korean + If you have better translations, or would like to include + translations for another language, please send them to dowdybrown@yahoo.com +******************************************************************/ +Rico.langCode='ko'; + +// used in ricoLiveGrid.js + +Rico.addPhraseId('bookmarkExact',"ÃÑ $3 Áß $1 ~ $2"); +Rico.addPhraseId('bookmarkAbout',"ÃÑ ¾à $3 Áß $1 ~ $2"); +Rico.addPhraseId('bookmarkNoRec',"ÀÚ·á°¡ ¾ø½À´Ï´Ù."); +Rico.addPhraseId('bookmarkNoMatch',"Á¶°Ç¿¡ ÀÏÄ¡ÇÏ´Â ÀÚ·á°¡ ¾ø½À´Ï´Ù."); +Rico.addPhraseId('bookmarkLoading',"ºÒ·¯¿À´Â Áß......"); +Rico.addPhraseId('sorting',"Á¤·Ä Áß......"); +Rico.addPhraseId('exportStatus',"$1 ¹ø° ¿­À» Àü´ÞÇÏ°í ÀÖ½À´Ï´Ù."); +Rico.addPhraseId('filterAll',"(¸ðµÎ)"); +Rico.addPhraseId('filterBlank',"(¾ø½¿)"); +Rico.addPhraseId('filterEmpty',"(ºó)"); +Rico.addPhraseId('filterNotEmpty',"(ºñÁö ¾ÊÀº)"); +Rico.addPhraseId('filterLike',"$1 °ú À¯»çÇÑ"); +Rico.addPhraseId('filterNot',"$1 ÀÌ ¾Æ´Ñ"); +Rico.addPhraseId('requestError',"ÀÔ·ÂÇϽŠ¿äûÀÌ ¿À·ù¸¦ ¹ÝȯÇß½À´Ï´Ù:\n$1"); +Rico.addPhraseId('keywordPrompt',"ªOÀ¸½Ã·Á´Â Å°¿öµå¸¦ ÀÔ·ÂÇϽʽÿÀ. ( * Å°µµ »ç¿ëÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.):"); + +// used in ricoLiveGridMenu.js + +Rico.addPhraseId('gridmenuSortBy',"$1 À¸·Î Á¤·Ä"); +Rico.addPhraseId('gridmenuSortAsc',"¿À¸§Â÷¼ø"); +Rico.addPhraseId('gridmenuSortDesc',"³»¸²Â÷¼ø"); +Rico.addPhraseId('gridmenuFilterBy',"$1 À¸·Î ã±â"); +Rico.addPhraseId('gridmenuRefresh',"´Ù½Ãº¸±â"); +Rico.addPhraseId('gridmenuChgKeyword',"Å°¿öµå ¹Ù²Ù±â..."); +Rico.addPhraseId('gridmenuExcludeAlso',"ÀÌ °ªµµ Á¦¿Ü"); +Rico.addPhraseId('gridmenuInclude',"ÀÌ °ª¸¸ Æ÷ÇÔ"); +Rico.addPhraseId('gridmenuGreaterThan',"ÀÌ °ªº¸´Ù Å©°Å³ª °°´Ù."); +Rico.addPhraseId('gridmenuLessThan',"ÀÌ °ªº¸´Ù À۰ųª °°´Ù."); +Rico.addPhraseId('gridmenuContains',"°ª(Å°¿öµå)À» Æ÷ÇÔ."); +Rico.addPhraseId('gridmenuExclude',"ÀÌ °ªÀº Á¦¿Ü."); +Rico.addPhraseId('gridmenuRemoveFilter',"ÇÊÅÍ ¾ø¾Ö±â"); +Rico.addPhraseId('gridmenuRemoveAll',"¸ðµç ÇÊÅÍ ¾ø¾Ö±â"); + +Rico.addPhraseId('gridmenuExport',"Àμâ/³»º¸³»±â"); +Rico.addPhraseId('gridmenuExportVis2Web',"º¸ÀÌ´Â Çà À¥ÆäÀÌÁö·Î"); +Rico.addPhraseId('gridmenuExportAll2Web',"¸ðµç Çà À¥ÆäÀÌÁö·Î"); +Rico.addPhraseId('gridmenuExportVis2SS',"º¸ÀÌ´Â Çà °è»êÆÇÀ¸·Î(¿¢¼¿)·Î"); +Rico.addPhraseId('gridmenuExportAll2SS',"¸ðµç Çà °è»êÆÇÀ¸·Î(¿¢¼¿)·Î"); + +Rico.addPhraseId('gridmenuHideShow',"¼û±â±â/º¸À̱â"); +Rico.addPhraseId('gridmenuChooseCols',"¿­ ¼±ÅÃ..."); +Rico.addPhraseId('gridmenuHide',"$1 ¼û±â±â"); +Rico.addPhraseId('gridmenuShow',"$1 º¸À̱â"); +Rico.addPhraseId('gridmenuShowAll',"¸ðµÎ º¸À̱â"); + +// used in ricoLiveGridAjax.js + +Rico.addPhraseId('sessionExpireMinutes',"ºÐ ³²¾Ò½À´Ï´Ù. (¼¼¼Ç)"); +//could you please, change the above format in this way? $1 minutes before ........ +Rico.addPhraseId('sessionExpired',"³¡³µ½À´Ï´Ù."); +Rico.addPhraseId('requestTimedOut',"ÀÚ·á¿äûÀÌ Á¦ÇÑ ½Ã°£À» ÃÊ°úÇß½À´Ï´Ù!"); +Rico.addPhraseId('waitForData',"ÀڷḦ ±â´Ù¸®°í ÀÖ½À´Ï´Ù......"); +Rico.addPhraseId('httpError',"HTTP ¿À·ù¸¦ ¹Þ¾Ò½À´Ï´Ù: $1"); +Rico.addPhraseId('invalidResponse',"¼­¹ö°¡ ºÎÀûÀýÇÑ ´äº¯À» º¸³Â½À´Ï´Ù."); + +// used in ricoLiveGridCommon.js + +Rico.addPhraseId('gridChooseCols',"¿­ ¼±ÅÃ"); +Rico.addPhraseId('exportComplete',"³»º¸³»±â ¿Ï·á."); +Rico.addPhraseId('exportInProgress',"³»º¸³»´Â ÁßÀÔ´Ï´Ù."); +Rico.addPhraseId('showFilterRow',"ÇÊÅÍ Çà º¸À̱â"); // img alt text +Rico.addPhraseId('hideFilterRow',"ÇÊÅÍ Çà ¼û±â±â"); // img alt text + +// used in ricoLiveGridForms.js + +Rico.addPhraseId('selectNone',"(¼±Åþø½¿)"); +Rico.addPhraseId('selectNewVal',"(»õ °ª)"); +Rico.addPhraseId('record',"record"); +Rico.addPhraseId('thisRecord',"ÀÌ $1"); +Rico.addPhraseId('confirmDelete',"$1À» »èÁ¦ÇϽðڽÀ´Ï±î?"); +Rico.addPhraseId('deleting',"»èÁ¦ Áß......"); +Rico.addPhraseId('formPleaseEnter',"$1 ¿¡ ÀûÀýÇÑ °ªÀ» ÀÔ·ÂÇϽʽÿÀ."); +Rico.addPhraseId('formInvalidFmt',"$1 ¿¡°Ô ÀûÀýÇÑ Çü½ÄÀÌ ¾Æ´Õ´Ï´Ù."); +Rico.addPhraseId('formOutOfRange',"$1 ¿¡ ÀûÀýÇÑ ¹üÀ§¸¦ ¹þ¾î³µ½À´Ï´Ù."); +Rico.addPhraseId('formNewValue',"»õ °ª"); +Rico.addPhraseId('saving',"ÀúÀå Áß......"); +Rico.addPhraseId('clear',"ºñ¿ì±â"); +Rico.addPhraseId('close',"´Ý±â"); +Rico.addPhraseId('saveRecord',"$1 ÀúÀå"); +Rico.addPhraseId('cancel',"Ãë¼Ò"); +Rico.addPhraseId('editRecord',"$1 ¼öÁ¤"); +Rico.addPhraseId('deleteRecord',"$1 »èÁ¦"); +Rico.addPhraseId('cloneRecord',"$1 º¹Á¦"); +Rico.addPhraseId('addRecord',"»õ $1 Ãß°¡"); +Rico.addPhraseId('addedSuccessfully',"$1 Àº ¼º°øÀûÀ¸·Î Ãß°¡µÇ¾ú½À´Ï´Ù."); +Rico.addPhraseId('deletedSuccessfully',"$1 Àº ¼º°øÀûÀ¸·Î »èÁ¦µÇ¾ú½À´Ï´Ù."); +Rico.addPhraseId('updatedSuccessfully',"$1 Àº ¼º°øÀûÀ¸·Î ¼öÁ¤µÇ¾ú½À´Ï´Ù."); + +// used in ricoTree.js + +Rico.addPhraseId('treeSave',"¼±Åÿµ¿ª ÀúÀå"); +Rico.addPhraseId('treeClear',"¸ðµÎ ºñ¿ì±â/¿ø»óÅ·Î"); + +// used in ricoCalendar.js + +Rico.addPhraseId('calToday',"¿À´ÃÀº $3³â $4¿ù $1ÀÏ ÀÔ´Ï´Ù."); // $1=day, $2=monthabbr, $3=year, $4=month number +Rico.addPhraseId('calWeekHdg',"Wk"); +Rico.addPhraseId('calYearRange',"$1³â ºÎÅÍ $2³â ±îÁö)"); +Rico.addPhraseId('calInvalidYear',"³âµµ°¡ ÀûÀýÇÏÁö ¾Ê½À´Ï´Ù."); + + +// Date & number formats +Rico.thouSep="," +Rico.decPoint="." +Rico.dateFmt="yyyy/mm/dd" + +Rico.monthNames=['1¿ù','2¿ù', '3¿ù', '4¿ù', '5¿ù','6¿ù', '7¿ù','8¿ù','9¿ù','10¿ù','11¿ù','12¿ù'] +Rico.dayNames=['ÀÏ','¿ù','È­','¼ö','¸ñ','±Ý','Åä'] diff --git a/ricoClient/js/ricoLocale_pt.js b/ricoClient/js/ricoLocale_pt.js new file mode 100644 index 0000000..faca24f --- /dev/null +++ b/ricoClient/js/ricoLocale_pt.js @@ -0,0 +1,121 @@ +/***************************************************************** + ricoLocale_pt.js - a component of Rico 2.0 + Localization strings for Portugese + If you have better translations, or would like to include + translations for another language, please send them to dowdybrown@yahoo.com +******************************************************************/ +Rico.langCode='pt'; + +// used in ricoLiveGrid.js + +Rico.addPhraseId('bookmarkExact',"Listar registros $1 - $2 de $3"); +Rico.addPhraseId('bookmarkAbout',"Listar registros $1 - $2 de aproximadamente $3"); +Rico.addPhraseId('bookmarkNoRec',"Nenhum registro"); +Rico.addPhraseId('bookmarkNoMatch',"Nenhum registro encontrado"); +Rico.addPhraseId('bookmarkLoading',"Carregamento..."); +Rico.addPhraseId('sorting',"Classificar é em andamento..."); +Rico.addPhraseId('exportStatus',"Exportando a fileira $1"); +Rico.addPhraseId('filterAll',"(tudo)"); +Rico.addPhraseId('filterBlank',"(espaço em branco)"); +Rico.addPhraseId('filterEmpty',"(vazio)"); +Rico.addPhraseId('filterNotEmpty',"(nao vazio)"); +Rico.addPhraseId('filterLike',"como: $1"); +Rico.addPhraseId('filterNot',"nao: $1"); +Rico.addPhraseId('requestError',"O pedido para dados retornou um erro:\n$1"); +Rico.addPhraseId('keywordPrompt',"Informe texto a ser pesquisado (use * como 'coringa'):"); + +// used in ricoLiveGridMenu.js + +Rico.addPhraseId('gridmenuSortBy',"Ordenar por: $1"); +Rico.addPhraseId('gridmenuSortAsc',"Ascendente"); +Rico.addPhraseId('gridmenuSortDesc',"Descendente"); +Rico.addPhraseId('gridmenuFilterBy',"Filtrar por: $1"); +Rico.addPhraseId('gridmenuRefresh',"Actualizar"); +Rico.addPhraseId('gridmenuChgKeyword',"Alterar texto..."); +Rico.addPhraseId('gridmenuExcludeAlso',"Excluir este valor também"); +Rico.addPhraseId('gridmenuInclude',"Incluir apenas este valor"); +Rico.addPhraseId('gridmenuGreaterThan',"Maior ou igual a este valor"); +Rico.addPhraseId('gridmenuLessThan',"Menor ou igual a este valor"); +Rico.addPhraseId('gridmenuContains',"Contém texto..."); +Rico.addPhraseId('gridmenuExclude',"Excluir este valor"); +Rico.addPhraseId('gridmenuRemoveFilter',"Remover filtro"); +Rico.addPhraseId('gridmenuRemoveAll',"Remova todos os filtros"); + +Rico.addPhraseId('gridmenuExport',"Imprimir/Exportar"); +Rico.addPhraseId('gridmenuExportVis2Web',"Fileiras visíveis para uma página da Web"); +Rico.addPhraseId('gridmenuExportAll2Web',"Todas as fileiras para uma página da Web"); +Rico.addPhraseId('gridmenuExportVis2SS',"Fileiras visíveis para um spreadsheet"); +Rico.addPhraseId('gridmenuExportAll2SS',"Todas as fileiras para um spreadsheet"); + +Rico.addPhraseId('gridmenuHideShow',"Ocultar/Exibir"); +Rico.addPhraseId('gridmenuChooseCols',"Escolha as colunas..."); +Rico.addPhraseId('gridmenuHide',"Ocultar: $1"); +Rico.addPhraseId('gridmenuShow',"Exibir: $1"); +Rico.addPhraseId('gridmenuShowAll',"Exibir tudo"); + +// used in ricoLiveGridAjax.js + +Rico.addPhraseId('sessionExpireMinutes',"minutos antes de sua sessão expiram"); +Rico.addPhraseId('sessionExpired',"EXPIRADO"); +Rico.addPhraseId('requestTimedOut',"Tempo esgotado para espera de dados"); +Rico.addPhraseId('waitForData',"Aguardando dados..."); +Rico.addPhraseId('httpError',"Um erro do HTTP foi recebido: $1"); +Rico.addPhraseId('invalidResponse',"O servidor retornou uma resposta inválida"); + +// used in ricoLiveGridCommon.js + +Rico.addPhraseId('gridChooseCols',"Escolha as colunas"); +Rico.addPhraseId('exportComplete',"A exportação está completa"); +Rico.addPhraseId('exportInProgress',"A exportação é em andamento..."); +Rico.addPhraseId('showFilterRow',"Exibir a fileira do filtro"); +Rico.addPhraseId('hideFilterRow',"Ocultar a fileira do filtro"); + +// used in ricoLiveGridForms.js + +Rico.addPhraseId('selectNone',"(nenhuns)"); +Rico.addPhraseId('selectNewVal',"(valor novo)"); +Rico.addPhraseId('record',"o registro"); +Rico.addPhraseId('thisRecord',"este registro"); +Rico.addPhraseId('confirmDelete',"É você certo você quer suprimir $1?"); +Rico.addPhraseId('deleting',"O apagamento é em andamento..."); +Rico.addPhraseId('formPleaseEnter',"Registe um valor para $1"); +Rico.addPhraseId('formInvalidFmt',"Formato inválido em $1"); +Rico.addPhraseId('formOutOfRange',"Valor fora da escala em $1"); +Rico.addPhraseId('formNewValue',"valor novo:"); +Rico.addPhraseId('saving',"Salvar em andamento..."); +Rico.addPhraseId('clear',"remover"); +Rico.addPhraseId('close',"Fechar"); +Rico.addPhraseId('saveRecord',"Salvar"); +Rico.addPhraseId('cancel',"Cancelar"); +Rico.addPhraseId('editRecord',"Editar este registro"); +Rico.addPhraseId('deleteRecord',"Apagar este registro"); +Rico.addPhraseId('cloneRecord',"Copiar este registro"); +Rico.addPhraseId('addRecord',"Criar um registro novo"); +Rico.addPhraseId('addedSuccessfully',"$1 foi adicionado com sucesso"); +Rico.addPhraseId('deletedSuccessfully',"$1 foi apagado com sucesso"); +Rico.addPhraseId('updatedSuccessfully',"$1 foi atualizado com sucesso"); + +// used in ricoTree.js + +Rico.addPhraseId('treeSave',"Salvar a seleção"); +Rico.addPhraseId('treeClear',"Cancele tudo"); + +// used in ricoCalendar.js + +Rico.addPhraseId('calToday',"Hoje é $1 $2 $3"); +Rico.addPhraseId('calWeekHdg',"Sem"); +Rico.addPhraseId('calYearRange',"Ano ($1-$2)"); +Rico.addPhraseId('calInvalidYear',"Ano inválido"); + +// Date & number formats + +Rico.thouSep="."; +Rico.decPoint=","; +Rico.dateFmt="dd/mm/yyyy"; + +Rico.monthNames=["Janeiro", "Fevereiro", "Março", "Abril", "Maio","Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"]; +Rico.dayNames=["Domingo", "Segunda","Terça", "Quarta", "Quinta", "Sexta", "Sábado"]; +Rico.monthNamesShort=['Jan','Fev','Mar','Abr','Mai','Jun','Jul','Ago','Set','Out','Nov','Dez']; +Rico.dayNamesShort=['Dom','Seg','Ter','Qua','Qui','Sex','Sab']; + +Rico.includeLoaded('ricoLocale_pt.js'); diff --git a/ricoClient/js/ricoLocale_ru.js b/ricoClient/js/ricoLocale_ru.js new file mode 100644 index 0000000..b7c61f2 --- /dev/null +++ b/ricoClient/js/ricoLocale_ru.js @@ -0,0 +1,121 @@ +/***************************************************************** + Page : ricoLocale_ru.js + Description : russian localization strings + Version 0.1 (revisions by Alexey Uvarov,Illiya Gannitskiy) + If you would like to include translations for another language, + please send them to dowdybrown@yahoo.com +******************************************************************/ +Rico.langCode='ru'; + +// used in ricoLiveGrid.js + +Rico.addPhraseId('bookmarkExact',"Просмотр записей $1 - $2 из $3"); +Rico.addPhraseId('bookmarkAbout',"Просмотр записей $1 - $2 из более чем $3"); +Rico.addPhraseId('bookmarkNoRec',"Нет записей"); +Rico.addPhraseId('bookmarkNoMatch',"Нет совпадений"); +Rico.addPhraseId('bookmarkLoading',"Загрузка..."); +Rico.addPhraseId('sorting',"Сортировка..."); +Rico.addPhraseId('exportStatus',"Экспортируется запись $1"); +Rico.addPhraseId('filterAll',"(все)"); +Rico.addPhraseId('filterBlank',"(чистый)"); +Rico.addPhraseId('filterEmpty',"(пустой)"); +Rico.addPhraseId('filterNotEmpty',"(не пустой)"); +Rico.addPhraseId('filterLike',"как: $1"); +Rico.addPhraseId('filterNot',"не: $1"); +Rico.addPhraseId('requestError',"Запрос данных возвратил ошибку:\n$1"); +Rico.addPhraseId('keywordPrompt',"Искать по ключу (Используйте * для всех записей):"); + +// used in ricoLiveGridMenu.js + +Rico.addPhraseId('gridmenuSortBy',"Сортировка по: $1"); +Rico.addPhraseId('gridmenuSortAsc',"Возрастающая"); +Rico.addPhraseId('gridmenuSortDesc',"Убывающая"); +Rico.addPhraseId('gridmenuFilterBy',"Фильтрация по: $1"); +Rico.addPhraseId('gridmenuRefresh',"Обновить"); +Rico.addPhraseId('gridmenuChgKeyword',"Изменить ключевое слово..."); +Rico.addPhraseId('gridmenuExcludeAlso',"Исключить также это значение"); +Rico.addPhraseId('gridmenuInclude',"Включить только это значение"); +Rico.addPhraseId('gridmenuGreaterThan',"Больше либо равно данному значению"); +Rico.addPhraseId('gridmenuLessThan',"Меньше либо равно данному значению"); +Rico.addPhraseId('gridmenuContains',"Содержит значение..."); +Rico.addPhraseId('gridmenuExclude',"Исключить это значение"); +Rico.addPhraseId('gridmenuRemoveFilter',"Удалить фильтр"); +Rico.addPhraseId('gridmenuRemoveAll',"Удалить все фильтры"); + +Rico.addPhraseId('gridmenuExport',"Печать/Экспорт"); +Rico.addPhraseId('gridmenuExportVis2Web',"Видимые записи на вэб-страницу"); +Rico.addPhraseId('gridmenuExportAll2Web',"Все записи на вэб-страницу"); +Rico.addPhraseId('gridmenuExportVis2SS',"Видимые записи в лист excel"); +Rico.addPhraseId('gridmenuExportAll2SS',"Все записи в лист excel"); + +Rico.addPhraseId('gridmenuHideShow',"Скрыть/Показать"); +Rico.addPhraseId('gridmenuChooseCols',"Выберите столбец..."); +Rico.addPhraseId('gridmenuHide',"Скрыть: $1"); +Rico.addPhraseId('gridmenuShow',"Показать: $1"); +Rico.addPhraseId('gridmenuShowAll',"Показать все"); + +// used in ricoLiveGridAjax.js + +Rico.addPhraseId('sessionExpireMinutes',"минут до истечения сессии"); +Rico.addPhraseId('sessionExpired',"ИСТЕКЛА"); +Rico.addPhraseId('requestTimedOut',"Превышен интервал ожидания данных!"); +Rico.addPhraseId('waitForData',"Ожидание данных..."); +Rico.addPhraseId('httpError',"Получена HTTP ошибка: $1"); +Rico.addPhraseId('invalidResponse',"Сервер возвратил неправильный ответ"); + +// used in ricoLiveGridCommon.js + +Rico.addPhraseId('gridChooseCols',"Выбрать столбец"); +Rico.addPhraseId('exportComplete',"Экспорт завершен"); +Rico.addPhraseId('exportInProgress',"Экспортирование..."); +Rico.addPhraseId('showFilterRow',"Показать отфильтрованные записи"); // img alt text +Rico.addPhraseId('hideFilterRow',"Спрятать отфильтрованные записи"); // img alt text + +// used in ricoLiveGridForms.js + +Rico.addPhraseId('selectNone',"(ничего)"); +Rico.addPhraseId('selectNewVal',"(новое значение)"); +Rico.addPhraseId('record',"запись"); +Rico.addPhraseId('thisRecord',"эта $1"); +Rico.addPhraseId('confirmDelete',"Вы уверенны, что хотите удалить $1?"); +Rico.addPhraseId('deleting',"Удаление..."); +Rico.addPhraseId('formPleaseEnter',"Пожалуйста, введите значение для $1"); +Rico.addPhraseId('formInvalidFmt',"Неправильный формат для $1"); +Rico.addPhraseId('formOutOfRange',"Значение находится вне диапазона для $1"); +Rico.addPhraseId('formNewValue',"новое значение:"); +Rico.addPhraseId('saving',"Сохранение..."); +Rico.addPhraseId('clear',"очистить"); +Rico.addPhraseId('close',"Закрыть"); +Rico.addPhraseId('saveRecord',"Сохранить $1"); +Rico.addPhraseId('cancel',"Отмена"); +Rico.addPhraseId('editRecord',"Редактировать эту $1"); +Rico.addPhraseId('deleteRecord',"Удалить эту $1"); +Rico.addPhraseId('cloneRecord',"Копировать эту $1"); +Rico.addPhraseId('addRecord',"Добавить новую $1"); +Rico.addPhraseId('addedSuccessfully',"$1 добавлена успешно"); +Rico.addPhraseId('deletedSuccessfully',"$1 удалена успешно"); +Rico.addPhraseId('updatedSuccessfully',"$1 обновлена успешно"); + +// used in ricoTree.js + +Rico.addPhraseId('treeSave',"Сохранить выделение"); +Rico.addPhraseId('treeClear',"Очистить все"); + +// used in ricoCalendar.js + +Rico.addPhraseId('calToday',"Сегодня $1 $2 $3"); // $1=day, $2=monthabbr, $3=year, $4=month number +Rico.addPhraseId('calWeekHdg',"Нд"); +Rico.addPhraseId('calYearRange',"Год ($1-$2)"); +Rico.addPhraseId('calInvalidYear',"Неправильный год"); + +// Date & number formats + +Rico.thouSep=","; +Rico.decPoint="."; +Rico.dateFmt="mm/dd/yyyy"; + +Rico.monthNames=['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь']; +Rico.dayNames=['Воскресенье','Понедельник','Вторник','Среда','Четверг','Пятница','Суббота']; +Rico.monthNamesShort=['Янв','Фев','Мар','Апр','Май','Июн','Июл','Авг','Сен','Окт','Ноя','Дек']; +Rico.dayNamesShort=['вск','пнд','втр','срд','чтв','птн','сбт']; + diff --git a/ricoClient/js/ricoLocale_uk.js b/ricoClient/js/ricoLocale_uk.js new file mode 100644 index 0000000..f076645 --- /dev/null +++ b/ricoClient/js/ricoLocale_uk.js @@ -0,0 +1,120 @@ +/***************************************************************** + Page : ricoLocale_uk.js + Description : ukrainian localization strings + Version 0.1 (revisions by Alexey Uvarov,Illiya Gannitskiy) + If you would like to include translations for another language, + please send them to dowdybrown@yahoo.com +******************************************************************/ +Rico.langCode='ua'; + +// used in ricoLiveGrid.js + +Rico.addPhraseId('bookmarkExact',"Перегляд записів $1 - $2 з $3"); +Rico.addPhraseId('bookmarkAbout',"Перегляд записів $1 - $2 з більш ніж $3"); +Rico.addPhraseId('bookmarkNoRec',"Немає записів"); +Rico.addPhraseId('bookmarkNoMatch',"Немає збігів"); +Rico.addPhraseId('bookmarkLoading',"Завантаження..."); +Rico.addPhraseId('sorting',"Сортування..."); +Rico.addPhraseId('exportStatus',"Експортується запис $1"); +Rico.addPhraseId('filterAll',"(всі)"); +Rico.addPhraseId('filterBlank',"(чистий)"); +Rico.addPhraseId('filterEmpty',"(порожній)"); +Rico.addPhraseId('filterNotEmpty',"(не порожній)"); +Rico.addPhraseId('filterLike',"як: $1"); +Rico.addPhraseId('filterNot',"не: $1"); +Rico.addPhraseId('requestError',"Запит даних повернув помилку:\n$1"); +Rico.addPhraseId('keywordPrompt',"Шукати по ключу (Використовуйте * для всіх записів):"); + +// used in ricoLiveGridMenu.js + +Rico.addPhraseId('gridmenuSortBy',"Сортування по: $1"); +Rico.addPhraseId('gridmenuSortAsc',"Зростаюча"); +Rico.addPhraseId('gridmenuSortDesc',"Убутна"); +Rico.addPhraseId('gridmenuFilterBy',"Фільтрація по: $1"); +Rico.addPhraseId('gridmenuRefresh',"Обновити"); +Rico.addPhraseId('gridmenuChgKeyword',"Змінити ключове слово..."); +Rico.addPhraseId('gridmenuExcludeAlso',"Виключити також це значення"); +Rico.addPhraseId('gridmenuInclude',"Включити тільки це значення"); +Rico.addPhraseId('gridmenuGreaterThan',"Більше або дорівнює даному значенню"); +Rico.addPhraseId('gridmenuLessThan',"Менше або дорівнює даному значенню"); +Rico.addPhraseId('gridmenuContains',"Містить значення..."); +Rico.addPhraseId('gridmenuExclude',"Виключити це значення"); +Rico.addPhraseId('gridmenuRemoveFilter',"Вилучити фільтр"); +Rico.addPhraseId('gridmenuRemoveAll',"Вилучити всі фільтри"); + +Rico.addPhraseId('gridmenuExport',"Друк/Експорт"); +Rico.addPhraseId('gridmenuExportVis2Web',"Видимі записи на веб-сторінку"); +Rico.addPhraseId('gridmenuExportAll2Web',"Усі записи на веб-сторінку"); +Rico.addPhraseId('gridmenuExportVis2SS',"Видимі записи в аркуш excel"); +Rico.addPhraseId('gridmenuExportAll2SS',"Усі записи в аркуш excel"); + +Rico.addPhraseId('gridmenuHideShow',"Сховати/Показати"); +Rico.addPhraseId('gridmenuChooseCols',"Виберіть колонку..."); +Rico.addPhraseId('gridmenuHide',"Сховати: $1"); +Rico.addPhraseId('gridmenuShow',"Показати: $1"); +Rico.addPhraseId('gridmenuShowAll',"Показати всі"); + +// used in ricoLiveGridAjax.js + +Rico.addPhraseId('sessionExpireMinutes',"хвилин до закінчення сесії"); +Rico.addPhraseId('sessionExpired',"МИНУЛА"); +Rico.addPhraseId('requestTimedOut',"Перевищений інтервал очікування даних!"); +Rico.addPhraseId('waitForData',"Очікування даних..."); +Rico.addPhraseId('httpError',"Отримана HTTP помилка: $1"); +Rico.addPhraseId('invalidResponse',"Сервер повернув неправильну відповідь"); + +// used in ricoLiveGridCommon.js + +Rico.addPhraseId('gridChooseCols',"Вибрати колонку"); +Rico.addPhraseId('exportComplete',"Експорт завершений"); +Rico.addPhraseId('exportInProgress',"Експортування..."); +Rico.addPhraseId('showFilterRow',"Показати відфільтровані записи"); // img alt text +Rico.addPhraseId('hideFilterRow',"Сховати відфільтровані записи"); // img alt text + +// used in ricoLiveGridForms.js + +Rico.addPhraseId('selectNone',"(нічого)"); +Rico.addPhraseId('selectNewVal',"(нове значення)"); +Rico.addPhraseId('record',"запис"); +Rico.addPhraseId('thisRecord',"ця $1"); +Rico.addPhraseId('confirmDelete',"Ви впевнені,що бажаєте видалити $1?"); +Rico.addPhraseId('deleting',"Видалення..."); +Rico.addPhraseId('formPleaseEnter',"Будь ласка, введіть значення для $1"); +Rico.addPhraseId('formInvalidFmt',"Неправильний формат для $1"); +Rico.addPhraseId('formOutOfRange',"Значення знаходиться поза діапазоном для $1"); +Rico.addPhraseId('formNewValue',"нове значення:"); +Rico.addPhraseId('saving',"Збереження..."); +Rico.addPhraseId('clear',"очистити"); +Rico.addPhraseId('close',"Закрити"); +Rico.addPhraseId('saveRecord',"Зберегти $1"); +Rico.addPhraseId('cancel',"Скасування"); +Rico.addPhraseId('editRecord',"Редагувати цю $1"); +Rico.addPhraseId('deleteRecord',"Вилучити цю $1"); +Rico.addPhraseId('cloneRecord',"Копіювати цю $1"); +Rico.addPhraseId('addRecord',"Додати нову $1"); +Rico.addPhraseId('addedSuccessfully',"$1 додана успішно"); +Rico.addPhraseId('deletedSuccessfully',"$1 вилучена успішно"); +Rico.addPhraseId('updatedSuccessfully',"$1 оновлена успішно"); + +// used in ricoTree.js + +Rico.addPhraseId('treeSave',"Зберегти виділення"); +Rico.addPhraseId('treeClear',"Очистити все"); + +// used in ricoCalendar.js + +Rico.addPhraseId('calToday',"Сьогодні $1 $2 $3"); // $1=day, $2=monthabbr, $3=year, $4=month number +Rico.addPhraseId('calWeekHdg',"Тд"); +Rico.addPhraseId('calYearRange',"Рік ($1-$2)"); +Rico.addPhraseId('calInvalidYear',"Неправильний рік"); + +// Date & number formats + +Rico.thouSep=","; +Rico.decPoint="."; +Rico.dateFmt="dd/mm/yyyy"; + +Rico.monthNames=['Січень','Лютий','Березень','Квітень','Травень','Червень','Липень','Серпень','Вересень','Жовтень','Листопад','Грудень']; +Rico.monthNamesShort=['Січ','Лют','Бер','Кві','Тра','Чер','Лип','Сер','Вер','Жов','Лис','Гру']; +Rico.dayNames=['неділя','понеділок','вівторок','середа','четвер','п’ятниця','субота']; +Rico.dayNamesShort=['нед','пнд','вів','срд','чтв','птн','сбт']; diff --git a/ricoClient/js/ricoLocale_zh.js b/ricoClient/js/ricoLocale_zh.js new file mode 100644 index 0000000..d8daa09 --- /dev/null +++ b/ricoClient/js/ricoLocale_zh.js @@ -0,0 +1,122 @@ +/***************************************************************** + ricoLocale_zh.js - a component of Rico 2.0 + Localization strings for Simplified Chinese + Initial translator: Xinjun Liu + If you have better translations, or would like to include + translations for another language, please send them to dowdybrown@yahoo.com +******************************************************************/ +Rico.langCode='zh'; + +// used in ricoLiveGrid.js + +Rico.addPhraseId('bookmarkExact',"第 $1 - $2 条记录(总计$3条)"); +Rico.addPhraseId('bookmarkAbout',"第 $1 - $2 条记录(总数超过$3条)"); +Rico.addPhraseId('bookmarkNoRec',"未发现记录"); +Rico.addPhraseId('bookmarkNoMatch',"未找到匹配的记录"); +Rico.addPhraseId('bookmarkLoading',"正在加载..."); +Rico.addPhraseId('sorting',"正在排序..."); +Rico.addPhraseId('exportStatus',"导出第 $1 行"); +Rico.addPhraseId('filterAll',"(所有)"); +Rico.addPhraseId('filterBlank',"(空白)"); +Rico.addPhraseId('filterEmpty',"(空值)"); +Rico.addPhraseId('filterNotEmpty',"(非空)"); +Rico.addPhraseId('filterLike',"类似于: $1"); +Rico.addPhraseId('filterNot',"非: $1"); +Rico.addPhraseId('requestError',"该请求返回一个错误:\n$1"); +Rico.addPhraseId('keywordPrompt',"请输入搜索词(可使用通配符*):"); + +// used in ricoLiveGridMenu.js + +Rico.addPhraseId('gridmenuSortBy',"排序 依据:$1"); +Rico.addPhraseId('gridmenuSortAsc',"升序"); +Rico.addPhraseId('gridmenuSortDesc',"降序"); +Rico.addPhraseId('gridmenuFilterBy',"过滤 依据: $1"); +Rico.addPhraseId('gridmenuRefresh',"刷新"); +Rico.addPhraseId('gridmenuChgKeyword',"更改搜索词..."); +Rico.addPhraseId('gridmenuExcludeAlso',"不包括此值"); +Rico.addPhraseId('gridmenuInclude',"只包括此值"); +Rico.addPhraseId('gridmenuGreaterThan',"大于或等于此值"); +Rico.addPhraseId('gridmenuLessThan',"小于或等于此值"); +Rico.addPhraseId('gridmenuContains',"包含关键字..."); +Rico.addPhraseId('gridmenuExclude',"不包括此值"); +Rico.addPhraseId('gridmenuRemoveFilter',"移除过滤器"); +Rico.addPhraseId('gridmenuRemoveAll',"移除所有过滤器"); + +Rico.addPhraseId('gridmenuExport',"打印/输出"); +Rico.addPhraseId('gridmenuExportVis2Web',"输出可见行至网页"); +Rico.addPhraseId('gridmenuExportAll2Web',"输出所有行至网页"); +Rico.addPhraseId('gridmenuExportVis2SS',"输出可见行至表格"); +Rico.addPhraseId('gridmenuExportAll2SS',"输出所有行至表格"); + +Rico.addPhraseId('gridmenuHideShow',"隐藏/显示"); +Rico.addPhraseId('gridmenuChooseCols',"选择以下列..."); +Rico.addPhraseId('gridmenuHide',"隐藏: $1"); +Rico.addPhraseId('gridmenuShow',"显示: $1"); +Rico.addPhraseId('gridmenuShowAll',"显示所有"); + +// used in ricoLiveGridAjax.js + +Rico.addPhraseId('sessionExpireMinutes',"分钟后您的会话将过期"); +Rico.addPhraseId('sessionExpired',"已过期"); +Rico.addPhraseId('requestTimedOut',"数据传输超时!"); +Rico.addPhraseId('waitForData',"正在加载数据..."); +Rico.addPhraseId('httpError',"接收到HTTP错误: $1"); +Rico.addPhraseId('invalidResponse',"服务器返回一个无效的响应"); + +// used in ricoLiveGridCommon.js + +Rico.addPhraseId('gridChooseCols',"选择以下列..."); +Rico.addPhraseId('exportComplete',"输出完成!"); +Rico.addPhraseId('exportInProgress',"正在输出..."); +Rico.addPhraseId('showFilterRow',"显示被过滤的行"); // img alt text +Rico.addPhraseId('hideFilterRow',"隐藏被过滤的行"); // img alt text + +// used in ricoLiveGridForms.js + +Rico.addPhraseId('selectNone',"(无)"); +Rico.addPhraseId('selectNewVal',"(新值)"); +Rico.addPhraseId('record',"记录"); +Rico.addPhraseId('thisRecord',"该 $1"); +Rico.addPhraseId('confirmDelete',"您确定要删除 $1 吗?"); +Rico.addPhraseId('deleting',"正在删除..."); +Rico.addPhraseId('formPleaseEnter',"请输入 $1 的值"); +Rico.addPhraseId('formInvalidFmt',"不符合 $1 的格式"); +Rico.addPhraseId('formOutOfRange',"值超出 $1 的范围"); +Rico.addPhraseId('formNewValue',"新值:"); +Rico.addPhraseId('saving',"正在保存..."); +Rico.addPhraseId('clear',"清除"); +Rico.addPhraseId('close',"关闭"); +Rico.addPhraseId('saveRecord',"保存"); +Rico.addPhraseId('cancel',"撤销"); +Rico.addPhraseId('editRecord',"编辑"); //$1 ommited +Rico.addPhraseId('deleteRecord',"删除"); //$1 ommited +Rico.addPhraseId('cloneRecord',"克隆");//$1 ommited +Rico.addPhraseId('addRecord',"添加"); //$1 ommited +Rico.addPhraseId('addedSuccessfully',"$1 添加成功"); +Rico.addPhraseId('deletedSuccessfully',"$1 删除成功"); +Rico.addPhraseId('updatedSuccessfully',"$1 更新成功"); + +// used in ricoTree.js + +Rico.addPhraseId('treeSave',"保存选择"); +Rico.addPhraseId('treeClear',"全部清除"); + +// used in ricoCalendar.js + +Rico.addPhraseId('calToday',"今天是 $3 å¹´ $4 月 $1 日"); // $1=day, $2=monthabbr, $3=year, $4=month number +Rico.addPhraseId('calWeekHdg',"星期"); +Rico.addPhraseId('calYearRange',"$1å¹´ - $2å¹´"); +Rico.addPhraseId('calInvalidYear',"无效的年份"); + +// Date & number formats + +Rico.thouSep=","; +Rico.decPoint="."; +Rico.dateFmt="yyyyå¹´mm月dd日"; + +Rico.monthNames=['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月']; +Rico.monthNamesShort=['一','二','三','四','五','六','七','八','九','十','十一','十二']; +Rico.dayNames=['星期日','星期一','星期二','星期三','星期四','星期五','星期六']; +Rico.dayNamesShort=['周日','周一','周二','周三','周四','周五','周六']; + +Rico.includeLoaded('ricoLocale_zh.js'); diff --git a/ricoClient/js/translations/ricoLocale_de.js b/ricoClient/js/translations/ricoLocale_de.js deleted file mode 100644 index bc526fe..0000000 --- a/ricoClient/js/translations/ricoLocale_de.js +++ /dev/null @@ -1,123 +0,0 @@ -/***************************************************************** - ricoLocale_de.js - a component of Rico 2.0 - Localization strings for German - Initial translator: rainer@langheiter@.com - May 08: minor changes by klaus - If you have better translations, or would like to include - translations for another language, please send them to dowdybrown@yahoo.com -******************************************************************/ -Rico.langCode='de'; - -// used in ricoLiveGrid.js - -Rico.addPhraseId('bookmarkExact',"Zeige Einträge $1 - $2 von $3"); -Rico.addPhraseId('bookmarkAbout',"Zeige Einträge $1 - $2 von ungefähr $3"); -Rico.addPhraseId('bookmarkNoRec',"Keine Einträge"); -Rico.addPhraseId('bookmarkNoMatch',"Keine übereinstimmenden Einträge"); -Rico.addPhraseId('bookmarkLoading',"Lade..."); -Rico.addPhraseId('sorting',"Daten werden sortiert ..."); -Rico.addPhraseId('exportStatus',"Exportieren der Reihe $1"); -Rico.addPhraseId('filterAll',"(alle)"); -Rico.addPhraseId('filterBlank',"(freier Raum)"); -Rico.addPhraseId('filterEmpty',"(leer)"); -Rico.addPhraseId('filterNotEmpty',"(nicht leer)"); -Rico.addPhraseId('filterLike',"wie: $1"); -Rico.addPhraseId('filterNot',"nicht: $1"); -Rico.addPhraseId('requestError',"Die Anfrage ergab einen Fehler:\n$1"); -Rico.addPhraseId('keywordPrompt',"Schlüsselwort eintragen, nach dem gesucht werden soll (verwende * als Wildcard):"); - -// used in ricoLiveGridMenu.js - -Rico.addPhraseId('gridmenuSortBy',"Sortiert nach: $1"); -Rico.addPhraseId('gridmenuSortAsc',"Aufsteigend"); -Rico.addPhraseId('gridmenuSortDesc',"Absteigend"); -Rico.addPhraseId('gridmenuFilterBy',"Gefiltert nach: $1"); -Rico.addPhraseId('gridmenuRefresh',"erneuern Sie"); -Rico.addPhraseId('gridmenuChgKeyword',"Schlüsselwort ändern..."); -Rico.addPhraseId('gridmenuExcludeAlso',"Diesen Wert ebenfalls ausschließen"); -Rico.addPhraseId('gridmenuInclude',"Nur diesen Wert einbeziehen"); -Rico.addPhraseId('gridmenuGreaterThan',"Größer oder gleich diesem Wert"); -Rico.addPhraseId('gridmenuLessThan',"Kleiner oder gleich diesem wert"); -Rico.addPhraseId('gridmenuContains',"Enthält Schlüsselwort..."); -Rico.addPhraseId('gridmenuExclude',"Diesen Wert ausschließen"); -Rico.addPhraseId('gridmenuRemoveFilter',"Entferne Filter"); -Rico.addPhraseId('gridmenuRemoveAll',"Entfernen Sie alle Filter"); - -Rico.addPhraseId('gridmenuExport',"Druck/Exportiert"); -Rico.addPhraseId('gridmenuExportVis2Web',"Sichtbare Zeilen auf eine Webseite"); -Rico.addPhraseId('gridmenuExportAll2Web',"Alle Zeilen auf eine Webseite"); -Rico.addPhraseId('gridmenuExportVis2SS',"Sichtbare Zeilen in einen Verteilungsbogen"); -Rico.addPhraseId('gridmenuExportAll2SS',"Alle Zeilen in einen Verteilungsbogen"); - -Rico.addPhraseId('gridmenuHideShow',"Verbergen/Zeigen"); -Rico.addPhraseId('gridmenuChooseCols',"Wählen Sie die Spalten..."); -Rico.addPhraseId('gridmenuHide',"Verbergen: $1"); -Rico.addPhraseId('gridmenuShow',"Zeige: $1"); -Rico.addPhraseId('gridmenuShowAll',"Alle zeigen"); - -// used in ricoLiveGridAjax.js - -Rico.addPhraseId('sessionExpireMinutes',"Minuten bis zum Ablauf Ihrer Sitzung."); -Rico.addPhraseId('sessionExpired',"ABGELAUFEN"); -Rico.addPhraseId('requestTimedOut',"Zeitüberschreitung"); -Rico.addPhraseId('waitForData',"Warte auf Daten ..."); -Rico.addPhraseId('httpError',"Die Anfrage ergab einen Fehler HTTP: $1"); -Rico.addPhraseId('invalidResponse',"Der Server brachte eine unzulässige Antwort zurück"); - -// used in ricoLiveGridCommon.js - -Rico.addPhraseId('gridChooseCols',"Wählen Sie die Spalten"); -Rico.addPhraseId('exportComplete',"der Export ist komplett"); -Rico.addPhraseId('exportInProgress',"der Export läuft ..."); -Rico.addPhraseId('showFilterRow',"Filter-Reihe zeigen"); -Rico.addPhraseId('hideFilterRow',"Filter-Reile verbergen"); - -// used in ricoLiveGridForms.js - -Rico.addPhraseId('selectNone',"(keine)"); -Rico.addPhraseId('selectNewVal',"(neuer Wert)"); -Rico.addPhraseId('record',"die Eintragung"); -Rico.addPhraseId('thisRecord',"diesen Eintrag"); -Rico.addPhraseId('confirmDelete',"Möchten Sie dies wirklich löschen $1?"); -Rico.addPhraseId('deleting',"Löschen läuft ..."); -Rico.addPhraseId('formPleaseEnter',"Geben Sie bitte einen Wert ein für $1"); -Rico.addPhraseId('formInvalidFmt',"unzulässiges Format bei $1"); -Rico.addPhraseId('formOutOfRange',"Ungültiger (zu großer) Wert bei $1"); -Rico.addPhraseId('formNewValue',"neuer Wert:"); -Rico.addPhraseId('saving',"sichere ..."); -Rico.addPhraseId('clear',"Löschtaste"); -Rico.addPhraseId('close',"Schließen"); -Rico.addPhraseId('saveRecord',"Speichere"); -Rico.addPhraseId('cancel',"Abbrechen"); -Rico.addPhraseId('editRecord',"Bearbeite Sie diesen Eintrag"); -Rico.addPhraseId('deleteRecord',"Löschen Sie diesen Eintrag"); -Rico.addPhraseId('cloneRecord',"Kopieren Sie diesen Eintrag"); -Rico.addPhraseId('addRecord',"Erstellen Sie einen neuen Eintrag"); -Rico.addPhraseId('addedSuccessfully',"$1 wurde erfolgreich addiert"); -Rico.addPhraseId('deletedSuccessfully',"$1 wurde erfolgreich gelöscht"); -Rico.addPhraseId('updatedSuccessfully',"$1 wurde erfolgreich aktualisiert"); - -// used in ricoTree.js - -Rico.addPhraseId('treeSave',"Auswahl speichern"); -Rico.addPhraseId('treeClear',"Alles löschen"); - -// used in ricoCalendar.js - -Rico.addPhraseId('calToday',"Heute ist der $1 $2 $3"); -Rico.addPhraseId('calWeekHdg',"Woche"); -Rico.addPhraseId('calYearRange',"Jahr ($1-$2)"); -Rico.addPhraseId('calInvalidYear',"unzulässiges Jahr"); - -// Date & number formats - -Rico.monthNames=["Januar", "Februar", "März", "April", "Mai","Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"]; -Rico.dayNames=["Sonntag", "Montag","Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"]; -Rico.monthNamesShort=['Jan','Feb','Mär','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez']; -Rico.dayNamesShort=['So','Mo','Di','Mi','Do','Fr','Sa']; - -Rico.thouSep="." -Rico.decPoint="," -Rico.dateFmt="dd.mm.yyyy" - -Rico.includeLoaded('ricoLocale_de.js'); diff --git a/ricoClient/js/translations/ricoLocale_en.js b/ricoClient/js/translations/ricoLocale_en.js deleted file mode 100644 index c1cf502..0000000 --- a/ricoClient/js/translations/ricoLocale_en.js +++ /dev/null @@ -1,120 +0,0 @@ -/***************************************************************** - ricoLocale_en.js - a component of Rico 3.0 - English localization strings - If you would like to include translations for another language, - please send them to dowdybrown@yahoo.com -******************************************************************/ -Rico.langCode='en'; - -// used in ricoLiveGrid.js - -Rico.addPhraseId('bookmarkExact',"Listing records $1 - $2 of $3"); -Rico.addPhraseId('bookmarkAbout',"Listing records $1 - $2 of more than $3"); -Rico.addPhraseId('bookmarkNoRec',"No records"); -Rico.addPhraseId('bookmarkNoMatch',"No matching records"); -Rico.addPhraseId('bookmarkLoading',"Loading..."); -Rico.addPhraseId('sorting',"Sorting..."); -Rico.addPhraseId('exportStatus',"Exporting row $1"); -Rico.addPhraseId('filterAll',"(all)"); -Rico.addPhraseId('filterBlank',"(blank)"); -Rico.addPhraseId('filterEmpty',"(empty)"); -Rico.addPhraseId('filterNotEmpty',"(not empty)"); -Rico.addPhraseId('filterLike',"contains: $1"); -Rico.addPhraseId('filterNot',"not: $1"); -Rico.addPhraseId('requestError',"The request for data returned an error:\n$1"); -Rico.addPhraseId('keywordPrompt',"Enter keyword to search for (use * as a wildcard):"); -Rico.addPhraseId('keywordTitle',"Keyword Search"); -Rico.addPhraseId('ok',"OK"); - -// used in ricoLiveGridMenu.js - -Rico.addPhraseId('gridmenuSortBy',"Sort by: $1"); -Rico.addPhraseId('gridmenuSortAsc',"Ascending"); -Rico.addPhraseId('gridmenuSortDesc',"Descending"); -Rico.addPhraseId('gridmenuFilterBy',"Filter by: $1"); -Rico.addPhraseId('gridmenuRefresh',"Refresh"); -Rico.addPhraseId('gridmenuChgKeyword',"Change keyword..."); -Rico.addPhraseId('gridmenuExcludeAlso',"Exclude this value also"); -Rico.addPhraseId('gridmenuInclude',"Include only this value"); -Rico.addPhraseId('gridmenuGreaterThan',"Greater than or equal to this value"); -Rico.addPhraseId('gridmenuLessThan',"Less than or equal to this value"); -Rico.addPhraseId('gridmenuContains',"Contains keyword..."); -Rico.addPhraseId('gridmenuExclude',"Exclude this value"); -Rico.addPhraseId('gridmenuRemoveFilter',"Remove filter"); -Rico.addPhraseId('gridmenuRemoveAll',"Remove all filters"); - -Rico.addPhraseId('gridmenuExport',"Print/Export"); -Rico.addPhraseId('gridmenuExportVis2Web',"Visible rows to web page"); -Rico.addPhraseId('gridmenuExportAll2Web',"All rows to web page"); -Rico.addPhraseId('gridmenuExportVis2SS',"Visible rows to spreadsheet"); -Rico.addPhraseId('gridmenuExportAll2SS',"All rows to spreadsheet"); - -Rico.addPhraseId('gridmenuHideShow',"Hide/Show"); -Rico.addPhraseId('gridmenuChooseCols',"Choose columns..."); -Rico.addPhraseId('gridmenuHide',"Hide: $1"); -Rico.addPhraseId('gridmenuShow',"Show: $1"); -Rico.addPhraseId('gridmenuShowAll',"Show All"); - -// used in ricoLiveGridAjax.js - -Rico.addPhraseId('sessionExpireMinutes',"minutes before your session expires"); -Rico.addPhraseId('sessionExpired',"EXPIRED"); -Rico.addPhraseId('requestTimedOut',"Request for data timed out!"); -Rico.addPhraseId('waitForData',"Waiting for data..."); -Rico.addPhraseId('httpError',"Received HTTP error: $1"); -Rico.addPhraseId('invalidResponse',"Server returned an invalid response"); - -// used in ricoLiveGridCommon.js - -Rico.addPhraseId('gridChooseCols',"Choose columns"); -Rico.addPhraseId('exportComplete',"Exporting complete"); -Rico.addPhraseId('exportInProgress',"Export in progress..."); -Rico.addPhraseId('disableBlocker',"You need to disable your browser's pop-up blocker before exporting."); -Rico.addPhraseId('showFilterRow',"Show filter row"); // img alt text -Rico.addPhraseId('hideFilterRow',"Hide filter row"); // img alt text - -// used in ricoLiveGridForms.js - -Rico.addPhraseId('selectNone',"(none)"); -Rico.addPhraseId('selectNewVal',"(new value)"); -Rico.addPhraseId('record',"record"); -Rico.addPhraseId('thisRecord',"this $1"); -Rico.addPhraseId('confirmDelete',"Are you sure you want to delete $1?"); -Rico.addPhraseId('deleting',"Deleting..."); -Rico.addPhraseId('formPleaseEnter',"Please enter a value for $1"); -Rico.addPhraseId('formInvalidFmt',"Invalid format for $1"); -Rico.addPhraseId('formOutOfRange',"Value is out of range for $1"); -Rico.addPhraseId('formNewValue',"new value:"); -Rico.addPhraseId('saving',"Saving..."); -Rico.addPhraseId('clear',"clear"); -Rico.addPhraseId('close',"Close"); -Rico.addPhraseId('saveRecord',"Save $1"); -Rico.addPhraseId('cancel',"Cancel"); -Rico.addPhraseId('editRecord',"Edit $1"); -Rico.addPhraseId('deleteRecord',"Delete this $1"); -Rico.addPhraseId('cloneRecord',"Clone $1"); -Rico.addPhraseId('addRecord',"Add new $1"); -Rico.addPhraseId('addedSuccessfully',"$1 added successfully"); -Rico.addPhraseId('deletedSuccessfully',"$1 deleted successfully"); -Rico.addPhraseId('updatedSuccessfully',"$1 updated successfully"); - -// used in ricoTree.js - -Rico.addPhraseId('treeSave',"Save Selection"); -Rico.addPhraseId('treeClear',"Clear All"); - -// used in ricoCalendar.js - -Rico.addPhraseId('calToday',"Today is $1 $2 $3"); // $1=day, $2=monthabbr, $3=year, $4=month number -Rico.addPhraseId('calWeekHdg',"Wk"); -Rico.addPhraseId('calYearRange',"Year ($1-$2)"); -Rico.addPhraseId('calInvalidYear',"Invalid year"); - -// Date & number formats - -Rico.thouSep="," -Rico.decPoint="." -Rico.dateFmt="mm/dd/yyyy" - -Rico.monthNames=['January','February','March','April','May','June','July','August','September','October','November','December'] -Rico.dayNames=['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'] diff --git a/ricoClient/js/translations/ricoLocale_es.js b/ricoClient/js/translations/ricoLocale_es.js deleted file mode 100644 index d717c79..0000000 --- a/ricoClient/js/translations/ricoLocale_es.js +++ /dev/null @@ -1,118 +0,0 @@ -/***************************************************************** - ricoLocale_es.js - a component of Rico 2.0 - Localization strings for Spanish - If you have better translations, or would like to include - translations for another language, please send them to dowdybrown@yahoo.com -******************************************************************/ -Rico.langCode='es'; - -// used in ricoLiveGrid.js - -Rico.addPhraseId('bookmarkExact',"Mostrando datos $1 - $2 de $3"); -Rico.addPhraseId('bookmarkAbout',"Mostrando datos $1 - $2 de alrededor de $3"); -Rico.addPhraseId('bookmarkNoRec',"No hay datos"); -Rico.addPhraseId('bookmarkNoMatch',"No hay datos coincidentes"); -Rico.addPhraseId('bookmarkLoading',"Cargando..."); -Rico.addPhraseId('sorting',"La ordenación está en marcha..."); -Rico.addPhraseId('exportStatus',"Exportación de la fila $1"); -Rico.addPhraseId('filterAll',"(todo)"); -Rico.addPhraseId('filterBlank',"(espacio en blanco)"); -Rico.addPhraseId('filterEmpty',"(vacío)"); -Rico.addPhraseId('filterNotEmpty',"(no vacío)"); -Rico.addPhraseId('filterLike',"similar a: $1"); -Rico.addPhraseId('filterNot',"no: $1"); -Rico.addPhraseId('requestError',"Un error ocurrió mientras recibiendo datos:\n$1"); -Rico.addPhraseId('keywordPrompt',"Introduzca texto a buscar (use * como un comodín):"); - -// used in ricoLiveGridMenu.js - -Rico.addPhraseId('gridmenuSortBy',"Ordenar por: $1"); -Rico.addPhraseId('gridmenuSortAsc',"Ascendente"); -Rico.addPhraseId('gridmenuSortDesc',"Descendente"); -Rico.addPhraseId('gridmenuFilterBy',"Filtrar por: $1"); -Rico.addPhraseId('gridmenuRefresh',"Actualizar"); -Rico.addPhraseId('gridmenuChgKeyword',"Cambiar texto..."); -Rico.addPhraseId('gridmenuExcludeAlso',"Excluir este valor también"); -Rico.addPhraseId('gridmenuInclude',"Incluir solo este valor"); -Rico.addPhraseId('gridmenuGreaterThan',"Mayor o igual a este valor"); -Rico.addPhraseId('gridmenuLessThan',"Menor o igual a este valor"); -Rico.addPhraseId('gridmenuContains',"Contiene el texto..."); -Rico.addPhraseId('gridmenuExclude',"Excluir este valor"); -Rico.addPhraseId('gridmenuRemoveFilter',"Quitar filtro"); -Rico.addPhraseId('gridmenuRemoveAll',"Quitar todos los filtros"); -Rico.addPhraseId('gridmenuExport',"Imprimir/Exportar"); -Rico.addPhraseId('gridmenuExportVis2Web',"Filas visibles a una página web"); -Rico.addPhraseId('gridmenuExportAll2Web',"Todas las filas a una página web"); -Rico.addPhraseId('gridmenuExportVis2SS',"Filas visibles a una hoja de cálculo"); -Rico.addPhraseId('gridmenuExportAll2SS',"Todas las filas a una hoja de cálculo"); -Rico.addPhraseId('gridmenuHideShow',"Ocultar/Mostrar"); -Rico.addPhraseId('gridmenuChooseCols',"Elija las columnas..."); -Rico.addPhraseId('gridmenuHide',"Ocultar: $1"); -Rico.addPhraseId('gridmenuShow',"Mostrar: $1"); -Rico.addPhraseId('gridmenuShowAll',"Mostrar todo"); - -// used in ricoLiveGridAjax.js - -Rico.addPhraseId('sessionExpireMinutes',"minutos antes de que su sesión se acabe"); -Rico.addPhraseId('sessionExpired',"EXPIRADO"); -Rico.addPhraseId('requestTimedOut',"Tiempo excedido en recibir datos"); -Rico.addPhraseId('waitForData',"Esperando datos..."); -Rico.addPhraseId('httpError',"Un error HTTP ocurrió mientras recibiendo datos: $1"); -Rico.addPhraseId('invalidResponse',"El servidor devolvió una respuesta inválida"); - -// used in ricoLiveGridCommon.js - -Rico.addPhraseId('gridChooseCols',"Elija las columnas"); -Rico.addPhraseId('exportComplete',"La exportación está completa"); -Rico.addPhraseId('exportInProgress',"La exportación está en marcha..."); -Rico.addPhraseId('showFilterRow',"Mostrar la fila del filtro"); -Rico.addPhraseId('hideFilterRow',"Ocultar la fila del filtro"); - -// used in ricoLiveGridForms.js - -Rico.addPhraseId('selectNone',"(nada)"); -Rico.addPhraseId('selectNewVal',"(nuevo valor)"); -Rico.addPhraseId('record',"el expediente"); -Rico.addPhraseId('thisRecord',"este expediente"); -Rico.addPhraseId('confirmDelete',"¿Está seguro de que quiere borrar $1?"); -Rico.addPhraseId('deleting',"Canceladura en marcha..."); -Rico.addPhraseId('formPleaseEnter',"Introduzca un valor para $1"); -Rico.addPhraseId('formInvalidFmt',"Formato inválido en $1"); -Rico.addPhraseId('formOutOfRange',"Valor fuera de la gama en $1"); -Rico.addPhraseId('formNewValue',"nuevo valor:"); -Rico.addPhraseId('saving',"Actualización en marcha..."); -Rico.addPhraseId('clear',"quitar"); -Rico.addPhraseId('close',"Cerrar"); -Rico.addPhraseId('saveRecord',"Guardar"); -Rico.addPhraseId('cancel',"Cancelar"); -Rico.addPhraseId('editRecord',"Editar este expediente"); -Rico.addPhraseId('deleteRecord',"Borrar este expediente"); -Rico.addPhraseId('cloneRecord',"Copiar este expediente"); -Rico.addPhraseId('addRecord',"Añadir expediente nuevo"); -Rico.addPhraseId('addedSuccessfully',"$1 fue agregado con éxito"); -Rico.addPhraseId('deletedSuccessfully',"$1 fue suprimido con éxito"); -Rico.addPhraseId('updatedSuccessfully',"$1 fue puesto al día con éxito"); - -// used in ricoTree.js - -Rico.addPhraseId('treeSave',"Guardar la selección"); -Rico.addPhraseId('treeClear',"Quitar todo"); - -// used in ricoCalendar.js - -Rico.addPhraseId('calToday',"Hoy es $1 $2 $3"); -Rico.addPhraseId('calWeekHdg',"Sem"); -Rico.addPhraseId('calYearRange',"Año ($1-$2)"); -Rico.addPhraseId('calInvalidYear',"Año inválido"); - -// Date & number formats - -Rico.thouSep="," -Rico.decPoint="." -Rico.dateFmt="dd/mm/yyyy" - -Rico.monthNames=['Enero','Febrero', 'Marzo', 'Abril', 'Mayo','Junio', 'Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre']; -Rico.dayNames=['Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado']; -Rico.monthNamesShort=['Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dic']; -Rico.dayNamesShort=['Dom','Lun','Mar','Mié','Juv','Vie','Sáb']; - diff --git a/ricoClient/js/translations/ricoLocale_fr.js b/ricoClient/js/translations/ricoLocale_fr.js deleted file mode 100644 index 1440e5e..0000000 --- a/ricoClient/js/translations/ricoLocale_fr.js +++ /dev/null @@ -1,120 +0,0 @@ -/***************************************************************** - ricoLocale_fr.js - a component of Rico 2.0 - Localization strings for French - If you have better translations, or would like to include - translations for another language, please send them to dowdybrown@yahoo.com -******************************************************************/ -Rico.langCode='fr'; - -// used in ricoLiveGrid.js - -Rico.addPhraseId('bookmarkExact',"Résultats $1 - $2 de $3"); -Rico.addPhraseId('bookmarkAbout',"Résultats $1 - $2 sur un total d'environ $3"); -Rico.addPhraseId('bookmarkNoRec',"Aucun article"); -Rico.addPhraseId('bookmarkNoMatch',"Aucun article ne correspond"); -Rico.addPhraseId('bookmarkLoading',"Chargement..."); -Rico.addPhraseId('sorting',"Classement..."); -Rico.addPhraseId('exportStatus',"Exportation de la rangée $1"); -Rico.addPhraseId('filterAll',"(tous)"); -Rico.addPhraseId('filterBlank',"(blanc)"); -Rico.addPhraseId('filterEmpty',"(vide)"); -Rico.addPhraseId('filterNotEmpty',"(pas vide)"); -Rico.addPhraseId('filterLike',"comme: $1"); -Rico.addPhraseId('filterNot',"pas: $1"); -Rico.addPhraseId('requestError',"La requête a retourné une erreur:\n$1"); -Rico.addPhraseId('keywordPrompt',"Écrivez le mot-clé à rechercher (utiliser * comme caractère générique):"); - -// used in ricoLiveGridMenu.js - -Rico.addPhraseId('gridmenuSortBy',"Trier par: $1"); -Rico.addPhraseId('gridmenuSortAsc',"Croissant"); -Rico.addPhraseId('gridmenuSortDesc',"Décroissant"); -Rico.addPhraseId('gridmenuFilterBy',"Filtrer par: $1"); -Rico.addPhraseId('gridmenuRefresh',"Recharger"); -Rico.addPhraseId('gridmenuChgKeyword',"Changer le mot-clé..."); -Rico.addPhraseId('gridmenuExcludeAlso',"Exclure cette valeur aussi"); -Rico.addPhraseId('gridmenuInclude',"Inclure seulement cette valeur"); -Rico.addPhraseId('gridmenuGreaterThan',"Supérieur ou égal à cette valeur"); -Rico.addPhraseId('gridmenuLessThan',"Inférieur ou égal à cette valeur"); -Rico.addPhraseId('gridmenuContains',"Contenant le mot-clé..."); -Rico.addPhraseId('gridmenuExclude',"Exclure cette valeur"); -Rico.addPhraseId('gridmenuRemoveFilter',"Enlever le filtre"); -Rico.addPhraseId('gridmenuRemoveAll',"Enlever tous les filtres"); - -Rico.addPhraseId('gridmenuExport',"Imprimer/Exporter"); -Rico.addPhraseId('gridmenuExportVis2Web',"Rangs visibles vers une page Web"); -Rico.addPhraseId('gridmenuExportAll2Web',"Tous les rangs vers une page Web"); -Rico.addPhraseId('gridmenuExportVis2SS',"Rangs visibles vers un bilan"); -Rico.addPhraseId('gridmenuExportAll2SS',"Tous les rangs vers un bilan"); - -Rico.addPhraseId('gridmenuHideShow',"Masquer/Afficher"); -Rico.addPhraseId('gridmenuChooseCols',"Choisissez les colonnes..."); -Rico.addPhraseId('gridmenuHide',"Masquer: $1"); -Rico.addPhraseId('gridmenuShow',"Afficher: $1"); -Rico.addPhraseId('gridmenuShowAll',"Afficher tous"); - -// used in ricoLiveGridAjax.js - -Rico.addPhraseId('sessionExpireMinutes',"minutes avant que votre session expire"); -Rico.addPhraseId('sessionExpired',"EXPIRÉ"); -Rico.addPhraseId('requestTimedOut',"La requête a atteint sa limite de temps"); -Rico.addPhraseId('waitForData',"En attente des données..."); -Rico.addPhraseId('httpError',"La requête a retourné une erreur HTTP: $1"); -Rico.addPhraseId('invalidResponse',"Le serveur a retourné une réponse non valide"); - -// used in ricoLiveGridCommon.js - -Rico.addPhraseId('gridChooseCols',"Choisissez les colonnes"); -Rico.addPhraseId('exportComplete',"Exportation complete"); -Rico.addPhraseId('exportInProgress',"Exportation en marche..."); -Rico.addPhraseId('showFilterRow',"Afficher le rang de filtre"); -Rico.addPhraseId('hideFilterRow',"Masquer le rang de filtre"); - -// used in ricoLiveGridForms.js - -Rico.addPhraseId('selectNone',"(aucun)"); -Rico.addPhraseId('selectNewVal',"(nouvelle valeur)"); -Rico.addPhraseId('record',"l'entrée"); -Rico.addPhraseId('thisRecord',"cette entrée"); -Rico.addPhraseId('confirmDelete',"Êtes-vous sûr de vouloir supprimer $1?"); -Rico.addPhraseId('deleting',"Effacement en cours..."); -Rico.addPhraseId('formPleaseEnter',"Veuillez saisir une valeur pour $1"); -Rico.addPhraseId('formInvalidFmt',"Format invalide pour $1"); -Rico.addPhraseId('formOutOfRange',"Valeur non-autorisée pour $1"); -Rico.addPhraseId('formNewValue',"Nouvelle valeur:"); -Rico.addPhraseId('saving',"Sauvegarde en cours..."); -Rico.addPhraseId('clear',"Enlever"); -Rico.addPhraseId('close',"Fermer"); -Rico.addPhraseId('saveRecord',"Sauvegarder"); -Rico.addPhraseId('cancel',"Annuler"); -Rico.addPhraseId('editRecord',"Éditer cette entrée"); -Rico.addPhraseId('deleteRecord',"Supprimer cette entrée"); -Rico.addPhraseId('cloneRecord',"Copier cette entrée"); -Rico.addPhraseId('addRecord',"Ajouter une nouvelle entrée"); -Rico.addPhraseId('addedSuccessfully',"$1 a été ajoutée avec succès"); -Rico.addPhraseId('deletedSuccessfully',"$1 a été supprimée avec succès"); -Rico.addPhraseId('updatedSuccessfully',"$1 a été mis à jour avec succès"); - -// used in ricoTree.js - -Rico.addPhraseId('treeSave',"Sauvegarder la selection"); -Rico.addPhraseId('treeClear',"Enlever tous"); - -// used in ricoCalendar.js - -Rico.addPhraseId('calToday',"Aujourd'hui est le $1 $2 $3"); -Rico.addPhraseId('calWeekHdg',"Sem"); -Rico.addPhraseId('calYearRange',"Année ($1-$2)"); -Rico.addPhraseId('calInvalidYear',"Année non valide"); - -// Date & number formats - -Rico.thouSep="'" -Rico.decPoint="." -Rico.dateFmt="dd.mm.yyyy" - -Rico.monthNames=['Janvier','Février', 'Mars', 'Avril', 'Mai','Juin', 'Juillet','Août','Septembre','Octobre','Novembre','Décembre']; -Rico.dayNames=['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi']; -Rico.monthNamesShort=['Jan','Fév','Mar','Avr','Mai','Jun','Jul','Aoû','Sep','Oct','Nov','Déc']; -Rico.dayNamesShort=['Dim','Lun','Mar','Mer','Jeu','Ven','Sam']; - diff --git a/ricoClient/js/translations/ricoLocale_it.js b/ricoClient/js/translations/ricoLocale_it.js deleted file mode 100644 index ff0834c..0000000 --- a/ricoClient/js/translations/ricoLocale_it.js +++ /dev/null @@ -1,121 +0,0 @@ -/***************************************************************** - ricoLocale_it.js - a component of Rico 2.0 - Localization strings for Italian - If you have better translations, or would like to include - translations for another language, please send them to dowdybrown@yahoo.com -******************************************************************/ -Rico.langCode='it'; - -// used in ricoLiveGrid.js - -Rico.addPhraseId('bookmarkExact',"Risultati $1 - $2 di $3"); -Rico.addPhraseId('bookmarkAbout',"Risultati $1 - $2 di circa $3"); -Rico.addPhraseId('bookmarkNoRec',"Nessun articolo"); -Rico.addPhraseId('bookmarkNoMatch',"Nessun articolo corrispondente"); -Rico.addPhraseId('bookmarkLoading',"Caricamento..."); -Rico.addPhraseId('sorting',"L'ordinamento è in progresso..."); -Rico.addPhraseId('exportStatus',"Esportazione della fila $1"); -Rico.addPhraseId('filterAll',"(tutto)"); -Rico.addPhraseId('filterBlank',"(in bianco)"); -Rico.addPhraseId('filterEmpty',"(vuoto)"); -Rico.addPhraseId('filterNotEmpty',"(non vuoto)"); -Rico.addPhraseId('filterLike',"come: $1"); -Rico.addPhraseId('filterNot',"non: $1"); -Rico.addPhraseId('requestError',"La richiesta ha generato un errore:\n$1"); -Rico.addPhraseId('keywordPrompt',"Inserisci la parola chiave da cercare (usa * come \"jolly\"):"); - -// used in ricoLiveGridMenu.js - -Rico.addPhraseId('gridmenuSortBy',"Ordina per: $1"); -Rico.addPhraseId('gridmenuSortAsc',"Crescente"); -Rico.addPhraseId('gridmenuSortDesc',"Decrescente"); -Rico.addPhraseId('gridmenuFilterBy',"Filtra per: $1"); -Rico.addPhraseId('gridmenuRefresh',"Rinfrescarsi"); -Rico.addPhraseId('gridmenuChgKeyword',"Cambia la parola chiave..."); -Rico.addPhraseId('gridmenuExcludeAlso',"Escludi anche questo valore"); -Rico.addPhraseId('gridmenuInclude',"Inclure seulement cette valeur"); -Rico.addPhraseId('gridmenuGreaterThan',"Superiore o uguale a questo valore"); -Rico.addPhraseId('gridmenuLessThan',"Inferiore o uguale a questo valore"); -Rico.addPhraseId('gridmenuContains',"Contiene la parola chiave..."); -Rico.addPhraseId('gridmenuExclude',"Escludi questo valore"); -Rico.addPhraseId('gridmenuRemoveFilter',"Rimuovi filtro"); -Rico.addPhraseId('gridmenuRemoveAll',"Rimuova tutti i filtri"); - -Rico.addPhraseId('gridmenuExport',"Stampa/Esporta"); -Rico.addPhraseId('gridmenuExportVis2Web',"Righe visibili verso una pagina web"); -Rico.addPhraseId('gridmenuExportAll2Web',"Tutte le righe verso una pagina web"); -Rico.addPhraseId('gridmenuExportVis2SS',"Righe visibili verso un foglio elettronico"); -Rico.addPhraseId('gridmenuExportAll2SS',"Tutte le righe verso un foglio elettronico"); - -Rico.addPhraseId('gridmenuHideShow',"Nascondi/Mostra"); -Rico.addPhraseId('gridmenuChooseCols',"Selezioni le colonne..."); -Rico.addPhraseId('gridmenuHide',"Nascondi: $1"); -Rico.addPhraseId('gridmenuShow',"Mostra: $1"); -Rico.addPhraseId('gridmenuShowAll',"Mostra Tutte"); - -// used in ricoLiveGridAjax.js - -Rico.addPhraseId('sessionExpireMinutes',"minuti prima che la vostra sessione termini"); -Rico.addPhraseId('sessionExpired',"TERMINATA"); -Rico.addPhraseId('requestTimedOut',"La richiesta dei dati ha raggiunto il limite di tempo"); -Rico.addPhraseId('waitForData',"Attendere per i dati..."); -Rico.addPhraseId('httpError',"La richiesta ha generato un errore HTTP: $1"); -Rico.addPhraseId('invalidResponse',"Il server ha restituito una risposta non valida"); - -// used in ricoLiveGridCommon.js - -Rico.addPhraseId('gridChooseCols',"Selezioni le colonne"); -Rico.addPhraseId('exportComplete',"L'esportazione è rifinita"); -Rico.addPhraseId('exportInProgress',"Esportazione in progresso..."); -Rico.addPhraseId('showFilterRow',"Mostra la riga del filtro"); -Rico.addPhraseId('hideFilterRow',"Nascondi la riga del filtro"); - -// used in ricoLiveGridForms.js - -Rico.addPhraseId('selectNone',"(vuoto)"); -Rico.addPhraseId('selectNewVal',"(nouvelle valeur)"); -Rico.addPhraseId('record',"la registrazione"); -Rico.addPhraseId('thisRecord',"questa registrazione"); -Rico.addPhraseId('confirmDelete',"Siete sicuri che volete cancellare $1?"); -Rico.addPhraseId('deleting',"L'annullamento è in progresso..."); -Rico.addPhraseId('formPleaseEnter',"Per favore inserire un valore per $1"); -Rico.addPhraseId('formInvalidFmt',"Formato non valida a $1"); -Rico.addPhraseId('formOutOfRange',"Valeur fuori scala a $1"); -Rico.addPhraseId('formNewValue',"nouvo valore:"); -Rico.addPhraseId('saving',"i dati stanno conservandi..."); -Rico.addPhraseId('clear',"cancella"); -Rico.addPhraseId('close',"Chiudi"); -Rico.addPhraseId('saveRecord',"Salva"); -Rico.addPhraseId('cancel',"Annulla"); -Rico.addPhraseId('editRecord',"Modifica questa registrazione"); -Rico.addPhraseId('deleteRecord',"Cancella questa registrazione"); -Rico.addPhraseId('cloneRecord',"Clona questa registrazione"); -Rico.addPhraseId('addRecord',"Aggiungi una nuova registrazione"); -Rico.addPhraseId('addedSuccessfully',"$1 ha aggiunto con successo"); -Rico.addPhraseId('deletedSuccessfully',"$1 ha cancellato con successo"); -Rico.addPhraseId('updatedSuccessfully',"$1 aggiornata con successo"); - -// used in ricoTree.js - -Rico.addPhraseId('treeSave',"Salva la selezione"); -Rico.addPhraseId('treeClear',"Deselezioni tutti"); - -// used in ricoCalendar.js - -Rico.addPhraseId('calToday',"L'oggi è $1 $2 $3"); -Rico.addPhraseId('calWeekHdg',"Set"); -Rico.addPhraseId('calYearRange',"Anno ($1-$2)"); -Rico.addPhraseId('calInvalidYear',"Anno non valida"); - -// Date & number formats - -Rico.thouSep="."; -Rico.decPoint=","; -Rico.dateFmt="dd/mm/yyyy"; - -Rico.monthNames=["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"]; -Rico.dayNames=["Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato"]; -Rico.monthNamesShort=['Gen','Feb','Mar','Apr','Mag','Giu','Lug','Ago','Set','Ott','Nov','Dic']; -Rico.dayNamesShort=['Dom','Lun','Mar','Mer','Gio','Ven','Sab']; - -Rico.includeLoaded('ricoLocale_it.js'); diff --git a/ricoClient/js/translations/ricoLocale_ja.js b/ricoClient/js/translations/ricoLocale_ja.js deleted file mode 100644 index e98d6b2..0000000 --- a/ricoClient/js/translations/ricoLocale_ja.js +++ /dev/null @@ -1,120 +0,0 @@ -/***************************************************************** - ricoLocale_ja.js - a component of Rico 2.0 - Localization strings for Japanese - Initial translator: Nobuhito Takeuchi - If you have better translations, or would like to include - translations for another language, please send them to dowdybrown@yahoo.com -******************************************************************/ -Rico.langCode='ja'; - -// used in ricoLiveGrid.js - -Rico.addPhraseId('bookmarkExact',"リストのレコードは $3 件中 $1 - $2 件目です"); -Rico.addPhraseId('bookmarkAbout',"リストのレコードは少なくとも $3 件中 $1 - $2 件目です"); -Rico.addPhraseId('bookmarkNoRec',"レコードがありません"); -Rico.addPhraseId('bookmarkNoMatch',"一致するレコードがありません"); -Rico.addPhraseId('bookmarkLoading',"ロード中です..."); -Rico.addPhraseId('sorting',"並べ替え中です..."); -Rico.addPhraseId('exportStatus',"$1 行目をエクスポート中です"); -Rico.addPhraseId('filterAll',"(すべて)"); -Rico.addPhraseId('filterBlank',"(空白)"); -Rico.addPhraseId('filterEmpty',"(空の)"); -Rico.addPhraseId('filterNotEmpty',"(空では無い)"); -Rico.addPhraseId('filterLike',"$1 を含む"); -Rico.addPhraseId('filterNot',"$1 を含まない"); -Rico.addPhraseId('requestError',"そのリクエストはエラーを返しました:\n$1"); -Rico.addPhraseId('keywordPrompt',"検索するキーワードを入力して下さい ( * はワイルドカードとして利用されます):"); - -// used in ricoLiveGridMenu.js - -Rico.addPhraseId('gridmenuSortBy',"$1 を並べ替え"); -Rico.addPhraseId('gridmenuSortAsc',"昇順"); -Rico.addPhraseId('gridmenuSortDesc',"降順"); -Rico.addPhraseId('gridmenuFilterBy',"$1 をフィルタ"); -Rico.addPhraseId('gridmenuRefresh',"再描画"); -Rico.addPhraseId('gridmenuChgKeyword',"キーワードの変更..."); -Rico.addPhraseId('gridmenuExcludeAlso',"この値も含まない"); -Rico.addPhraseId('gridmenuInclude',"この値のみを含む"); -Rico.addPhraseId('gridmenuGreaterThan',"この値以上"); -Rico.addPhraseId('gridmenuLessThan',"この値以下"); -Rico.addPhraseId('gridmenuContains',"このキーワードを含む..."); -Rico.addPhraseId('gridmenuExclude',"この値を含まない"); -Rico.addPhraseId('gridmenuRemoveFilter',"フィルタを取り除く"); -Rico.addPhraseId('gridmenuRemoveAll',"すべてのフィルタを取り除く"); - -Rico.addPhraseId('gridmenuExport',"インポート/エクスポート"); -Rico.addPhraseId('gridmenuExportVis2Web',"表示されている行をウェブページへ"); -Rico.addPhraseId('gridmenuExportAll2Web',"すべての行をウェブページへ"); -Rico.addPhraseId('gridmenuExportVis2SS',"表示されている行をスプレッドシートへ"); -Rico.addPhraseId('gridmenuExportAll2SS',"すべての行をスプレッドシートへ"); - -Rico.addPhraseId('gridmenuHideShow',"非表示/表示"); -Rico.addPhraseId('gridmenuChooseCols',"列を選択..."); -Rico.addPhraseId('gridmenuHide',"$1 を非表示"); -Rico.addPhraseId('gridmenuShow',"$1 を表示"); -Rico.addPhraseId('gridmenuShowAll',"すべて表示"); - -// used in ricoLiveGridAjax.js - -Rico.addPhraseId('sessionExpireMinutes',"セッションが終了するまでの分数"); -Rico.addPhraseId('sessionExpired',"終了"); -Rico.addPhraseId('requestTimedOut',"データのリクエストが終了しました"); -Rico.addPhraseId('waitForData',"データを待っています..."); -Rico.addPhraseId('httpError',"HTTP エラーを受け取りました: $1"); -Rico.addPhraseId('invalidResponse',"サーバは無効なレスポンスを返しました"); - -// used in ricoLiveGridCommon.js - -Rico.addPhraseId('gridChooseCols',"列を選択して下さい"); -Rico.addPhraseId('exportComplete',"エクスポートが完了しました"); -Rico.addPhraseId('exportInProgress',"エクスポートの実行中です..."); - -// used in ricoLiveGridForms.js - -Rico.addPhraseId('selectNone',"(無し)"); -Rico.addPhraseId('selectNewVal',"(新しい値)"); -Rico.addPhraseId('record',"レコード"); -Rico.addPhraseId('thisRecord',"この $1"); -Rico.addPhraseId('confirmDelete',"$1 を本当に削除してよろしいですか?"); -Rico.addPhraseId('deleting',"削除しています..."); -Rico.addPhraseId('formPleaseEnter',"$1 を入力して下さい"); -Rico.addPhraseId('formInvalidFmt',"$1 は無効なフォーマットです"); -Rico.addPhraseId('formOutOfRange',"$1 は範囲外です"); -Rico.addPhraseId('formNewValue',"新しい値:"); -Rico.addPhraseId('saving',"保存しています..."); -Rico.addPhraseId('clear',"消去"); -Rico.addPhraseId('close',"閉じる"); -Rico.addPhraseId('saveRecord',"$1 の保存"); -Rico.addPhraseId('cancel',"キャンセル"); -Rico.addPhraseId('editRecord',"$1 を編集します"); -Rico.addPhraseId('deleteRecord',"$1 を削除します"); -Rico.addPhraseId('cloneRecord',"$1 の複製を作成します"); -Rico.addPhraseId('addRecord',"$1 を追加します"); -Rico.addPhraseId('addedSuccessfully',"$1 の追加に成功しました"); -Rico.addPhraseId('deletedSuccessfully',"$1 の削除に成功しました"); -Rico.addPhraseId('updatedSuccessfully',"$1 の更新に成功しました"); - -// used in ricoTree.js - -Rico.addPhraseId('treeSave',"選択項目を保存"); -Rico.addPhraseId('treeClear',"すべて消去"); - -// used in ricoCalendar.js - -Rico.addPhraseId('calToday',"今日は $3 å¹´ $4 月 $1 日です"); -Rico.addPhraseId('calWeekHdg',"曜日"); -Rico.addPhraseId('calYearRange',"$1 å¹´ - $2 å¹´"); -Rico.addPhraseId('calInvalidYear',"無効な年です"); - -// Date & number formats - -Rico.thouSep="," -Rico.decPoint="." -Rico.dateFmt="yyyyå¹´mm月dd日" - -Rico.monthNames=['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']; -Rico.monthNamesShort=['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']; -Rico.dayNames=['日曜日','月曜日','火曜日','水曜日','木曜日','金曜日','土曜日']; -Rico.dayNamesShort=['日','月','火','æ°´','木','金','土']; - -Rico.includeLoaded('ricoLocale_ja.js'); diff --git a/ricoClient/js/translations/ricoLocale_ko.js b/ricoClient/js/translations/ricoLocale_ko.js deleted file mode 100644 index e19b6ae..0000000 --- a/ricoClient/js/translations/ricoLocale_ko.js +++ /dev/null @@ -1,118 +0,0 @@ -/***************************************************************** - ricoLocale_ko.js - a component of Rico 2.0 - Localization strings for Korean - If you have better translations, or would like to include - translations for another language, please send them to dowdybrown@yahoo.com -******************************************************************/ -Rico.langCode='ko'; - -// used in ricoLiveGrid.js - -Rico.addPhraseId('bookmarkExact',"ÃÑ $3 Áß $1 ~ $2"); -Rico.addPhraseId('bookmarkAbout',"ÃÑ ¾à $3 Áß $1 ~ $2"); -Rico.addPhraseId('bookmarkNoRec',"ÀÚ·á°¡ ¾ø½À´Ï´Ù."); -Rico.addPhraseId('bookmarkNoMatch',"Á¶°Ç¿¡ ÀÏÄ¡ÇÏ´Â ÀÚ·á°¡ ¾ø½À´Ï´Ù."); -Rico.addPhraseId('bookmarkLoading',"ºÒ·¯¿À´Â Áß......"); -Rico.addPhraseId('sorting',"Á¤·Ä Áß......"); -Rico.addPhraseId('exportStatus',"$1 ¹ø° ¿­À» Àü´ÞÇÏ°í ÀÖ½À´Ï´Ù."); -Rico.addPhraseId('filterAll',"(¸ðµÎ)"); -Rico.addPhraseId('filterBlank',"(¾ø½¿)"); -Rico.addPhraseId('filterEmpty',"(ºó)"); -Rico.addPhraseId('filterNotEmpty',"(ºñÁö ¾ÊÀº)"); -Rico.addPhraseId('filterLike',"$1 °ú À¯»çÇÑ"); -Rico.addPhraseId('filterNot',"$1 ÀÌ ¾Æ´Ñ"); -Rico.addPhraseId('requestError',"ÀÔ·ÂÇϽŠ¿äûÀÌ ¿À·ù¸¦ ¹ÝȯÇß½À´Ï´Ù:\n$1"); -Rico.addPhraseId('keywordPrompt',"ªOÀ¸½Ã·Á´Â Å°¿öµå¸¦ ÀÔ·ÂÇϽʽÿÀ. ( * Å°µµ »ç¿ëÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.):"); - -// used in ricoLiveGridMenu.js - -Rico.addPhraseId('gridmenuSortBy',"$1 À¸·Î Á¤·Ä"); -Rico.addPhraseId('gridmenuSortAsc',"¿À¸§Â÷¼ø"); -Rico.addPhraseId('gridmenuSortDesc',"³»¸²Â÷¼ø"); -Rico.addPhraseId('gridmenuFilterBy',"$1 À¸·Î ã±â"); -Rico.addPhraseId('gridmenuRefresh',"´Ù½Ãº¸±â"); -Rico.addPhraseId('gridmenuChgKeyword',"Å°¿öµå ¹Ù²Ù±â..."); -Rico.addPhraseId('gridmenuExcludeAlso',"ÀÌ °ªµµ Á¦¿Ü"); -Rico.addPhraseId('gridmenuInclude',"ÀÌ °ª¸¸ Æ÷ÇÔ"); -Rico.addPhraseId('gridmenuGreaterThan',"ÀÌ °ªº¸´Ù Å©°Å³ª °°´Ù."); -Rico.addPhraseId('gridmenuLessThan',"ÀÌ °ªº¸´Ù À۰ųª °°´Ù."); -Rico.addPhraseId('gridmenuContains',"°ª(Å°¿öµå)À» Æ÷ÇÔ."); -Rico.addPhraseId('gridmenuExclude',"ÀÌ °ªÀº Á¦¿Ü."); -Rico.addPhraseId('gridmenuRemoveFilter',"ÇÊÅÍ ¾ø¾Ö±â"); -Rico.addPhraseId('gridmenuRemoveAll',"¸ðµç ÇÊÅÍ ¾ø¾Ö±â"); - -Rico.addPhraseId('gridmenuExport',"Àμâ/³»º¸³»±â"); -Rico.addPhraseId('gridmenuExportVis2Web',"º¸ÀÌ´Â Çà À¥ÆäÀÌÁö·Î"); -Rico.addPhraseId('gridmenuExportAll2Web',"¸ðµç Çà À¥ÆäÀÌÁö·Î"); -Rico.addPhraseId('gridmenuExportVis2SS',"º¸ÀÌ´Â Çà °è»êÆÇÀ¸·Î(¿¢¼¿)·Î"); -Rico.addPhraseId('gridmenuExportAll2SS',"¸ðµç Çà °è»êÆÇÀ¸·Î(¿¢¼¿)·Î"); - -Rico.addPhraseId('gridmenuHideShow',"¼û±â±â/º¸À̱â"); -Rico.addPhraseId('gridmenuChooseCols',"¿­ ¼±ÅÃ..."); -Rico.addPhraseId('gridmenuHide',"$1 ¼û±â±â"); -Rico.addPhraseId('gridmenuShow',"$1 º¸À̱â"); -Rico.addPhraseId('gridmenuShowAll',"¸ðµÎ º¸À̱â"); - -// used in ricoLiveGridAjax.js - -Rico.addPhraseId('sessionExpireMinutes',"ºÐ ³²¾Ò½À´Ï´Ù. (¼¼¼Ç)"); -//could you please, change the above format in this way? $1 minutes before ........ -Rico.addPhraseId('sessionExpired',"³¡³µ½À´Ï´Ù."); -Rico.addPhraseId('requestTimedOut',"ÀÚ·á¿äûÀÌ Á¦ÇÑ ½Ã°£À» ÃÊ°úÇß½À´Ï´Ù!"); -Rico.addPhraseId('waitForData',"ÀڷḦ ±â´Ù¸®°í ÀÖ½À´Ï´Ù......"); -Rico.addPhraseId('httpError',"HTTP ¿À·ù¸¦ ¹Þ¾Ò½À´Ï´Ù: $1"); -Rico.addPhraseId('invalidResponse',"¼­¹ö°¡ ºÎÀûÀýÇÑ ´äº¯À» º¸³Â½À´Ï´Ù."); - -// used in ricoLiveGridCommon.js - -Rico.addPhraseId('gridChooseCols',"¿­ ¼±ÅÃ"); -Rico.addPhraseId('exportComplete',"³»º¸³»±â ¿Ï·á."); -Rico.addPhraseId('exportInProgress',"³»º¸³»´Â ÁßÀÔ´Ï´Ù."); -Rico.addPhraseId('showFilterRow',"ÇÊÅÍ Çà º¸À̱â"); // img alt text -Rico.addPhraseId('hideFilterRow',"ÇÊÅÍ Çà ¼û±â±â"); // img alt text - -// used in ricoLiveGridForms.js - -Rico.addPhraseId('selectNone',"(¼±Åþø½¿)"); -Rico.addPhraseId('selectNewVal',"(»õ °ª)"); -Rico.addPhraseId('record',"record"); -Rico.addPhraseId('thisRecord',"ÀÌ $1"); -Rico.addPhraseId('confirmDelete',"$1À» »èÁ¦ÇϽðڽÀ´Ï±î?"); -Rico.addPhraseId('deleting',"»èÁ¦ Áß......"); -Rico.addPhraseId('formPleaseEnter',"$1 ¿¡ ÀûÀýÇÑ °ªÀ» ÀÔ·ÂÇϽʽÿÀ."); -Rico.addPhraseId('formInvalidFmt',"$1 ¿¡°Ô ÀûÀýÇÑ Çü½ÄÀÌ ¾Æ´Õ´Ï´Ù."); -Rico.addPhraseId('formOutOfRange',"$1 ¿¡ ÀûÀýÇÑ ¹üÀ§¸¦ ¹þ¾î³µ½À´Ï´Ù."); -Rico.addPhraseId('formNewValue',"»õ °ª"); -Rico.addPhraseId('saving',"ÀúÀå Áß......"); -Rico.addPhraseId('clear',"ºñ¿ì±â"); -Rico.addPhraseId('close',"´Ý±â"); -Rico.addPhraseId('saveRecord',"$1 ÀúÀå"); -Rico.addPhraseId('cancel',"Ãë¼Ò"); -Rico.addPhraseId('editRecord',"$1 ¼öÁ¤"); -Rico.addPhraseId('deleteRecord',"$1 »èÁ¦"); -Rico.addPhraseId('cloneRecord',"$1 º¹Á¦"); -Rico.addPhraseId('addRecord',"»õ $1 Ãß°¡"); -Rico.addPhraseId('addedSuccessfully',"$1 Àº ¼º°øÀûÀ¸·Î Ãß°¡µÇ¾ú½À´Ï´Ù."); -Rico.addPhraseId('deletedSuccessfully',"$1 Àº ¼º°øÀûÀ¸·Î »èÁ¦µÇ¾ú½À´Ï´Ù."); -Rico.addPhraseId('updatedSuccessfully',"$1 Àº ¼º°øÀûÀ¸·Î ¼öÁ¤µÇ¾ú½À´Ï´Ù."); - -// used in ricoTree.js - -Rico.addPhraseId('treeSave',"¼±Åÿµ¿ª ÀúÀå"); -Rico.addPhraseId('treeClear',"¸ðµÎ ºñ¿ì±â/¿ø»óÅ·Î"); - -// used in ricoCalendar.js - -Rico.addPhraseId('calToday',"¿À´ÃÀº $3³â $4¿ù $1ÀÏ ÀÔ´Ï´Ù."); // $1=day, $2=monthabbr, $3=year, $4=month number -Rico.addPhraseId('calWeekHdg',"Wk"); -Rico.addPhraseId('calYearRange',"$1³â ºÎÅÍ $2³â ±îÁö)"); -Rico.addPhraseId('calInvalidYear',"³âµµ°¡ ÀûÀýÇÏÁö ¾Ê½À´Ï´Ù."); - - -// Date & number formats -Rico.thouSep="," -Rico.decPoint="." -Rico.dateFmt="yyyy/mm/dd" - -Rico.monthNames=['1¿ù','2¿ù', '3¿ù', '4¿ù', '5¿ù','6¿ù', '7¿ù','8¿ù','9¿ù','10¿ù','11¿ù','12¿ù'] -Rico.dayNames=['ÀÏ','¿ù','È­','¼ö','¸ñ','±Ý','Åä'] diff --git a/ricoClient/js/translations/ricoLocale_pt.js b/ricoClient/js/translations/ricoLocale_pt.js deleted file mode 100644 index faca24f..0000000 --- a/ricoClient/js/translations/ricoLocale_pt.js +++ /dev/null @@ -1,121 +0,0 @@ -/***************************************************************** - ricoLocale_pt.js - a component of Rico 2.0 - Localization strings for Portugese - If you have better translations, or would like to include - translations for another language, please send them to dowdybrown@yahoo.com -******************************************************************/ -Rico.langCode='pt'; - -// used in ricoLiveGrid.js - -Rico.addPhraseId('bookmarkExact',"Listar registros $1 - $2 de $3"); -Rico.addPhraseId('bookmarkAbout',"Listar registros $1 - $2 de aproximadamente $3"); -Rico.addPhraseId('bookmarkNoRec',"Nenhum registro"); -Rico.addPhraseId('bookmarkNoMatch',"Nenhum registro encontrado"); -Rico.addPhraseId('bookmarkLoading',"Carregamento..."); -Rico.addPhraseId('sorting',"Classificar é em andamento..."); -Rico.addPhraseId('exportStatus',"Exportando a fileira $1"); -Rico.addPhraseId('filterAll',"(tudo)"); -Rico.addPhraseId('filterBlank',"(espaço em branco)"); -Rico.addPhraseId('filterEmpty',"(vazio)"); -Rico.addPhraseId('filterNotEmpty',"(nao vazio)"); -Rico.addPhraseId('filterLike',"como: $1"); -Rico.addPhraseId('filterNot',"nao: $1"); -Rico.addPhraseId('requestError',"O pedido para dados retornou um erro:\n$1"); -Rico.addPhraseId('keywordPrompt',"Informe texto a ser pesquisado (use * como 'coringa'):"); - -// used in ricoLiveGridMenu.js - -Rico.addPhraseId('gridmenuSortBy',"Ordenar por: $1"); -Rico.addPhraseId('gridmenuSortAsc',"Ascendente"); -Rico.addPhraseId('gridmenuSortDesc',"Descendente"); -Rico.addPhraseId('gridmenuFilterBy',"Filtrar por: $1"); -Rico.addPhraseId('gridmenuRefresh',"Actualizar"); -Rico.addPhraseId('gridmenuChgKeyword',"Alterar texto..."); -Rico.addPhraseId('gridmenuExcludeAlso',"Excluir este valor também"); -Rico.addPhraseId('gridmenuInclude',"Incluir apenas este valor"); -Rico.addPhraseId('gridmenuGreaterThan',"Maior ou igual a este valor"); -Rico.addPhraseId('gridmenuLessThan',"Menor ou igual a este valor"); -Rico.addPhraseId('gridmenuContains',"Contém texto..."); -Rico.addPhraseId('gridmenuExclude',"Excluir este valor"); -Rico.addPhraseId('gridmenuRemoveFilter',"Remover filtro"); -Rico.addPhraseId('gridmenuRemoveAll',"Remova todos os filtros"); - -Rico.addPhraseId('gridmenuExport',"Imprimir/Exportar"); -Rico.addPhraseId('gridmenuExportVis2Web',"Fileiras visíveis para uma página da Web"); -Rico.addPhraseId('gridmenuExportAll2Web',"Todas as fileiras para uma página da Web"); -Rico.addPhraseId('gridmenuExportVis2SS',"Fileiras visíveis para um spreadsheet"); -Rico.addPhraseId('gridmenuExportAll2SS',"Todas as fileiras para um spreadsheet"); - -Rico.addPhraseId('gridmenuHideShow',"Ocultar/Exibir"); -Rico.addPhraseId('gridmenuChooseCols',"Escolha as colunas..."); -Rico.addPhraseId('gridmenuHide',"Ocultar: $1"); -Rico.addPhraseId('gridmenuShow',"Exibir: $1"); -Rico.addPhraseId('gridmenuShowAll',"Exibir tudo"); - -// used in ricoLiveGridAjax.js - -Rico.addPhraseId('sessionExpireMinutes',"minutos antes de sua sessão expiram"); -Rico.addPhraseId('sessionExpired',"EXPIRADO"); -Rico.addPhraseId('requestTimedOut',"Tempo esgotado para espera de dados"); -Rico.addPhraseId('waitForData',"Aguardando dados..."); -Rico.addPhraseId('httpError',"Um erro do HTTP foi recebido: $1"); -Rico.addPhraseId('invalidResponse',"O servidor retornou uma resposta inválida"); - -// used in ricoLiveGridCommon.js - -Rico.addPhraseId('gridChooseCols',"Escolha as colunas"); -Rico.addPhraseId('exportComplete',"A exportação está completa"); -Rico.addPhraseId('exportInProgress',"A exportação é em andamento..."); -Rico.addPhraseId('showFilterRow',"Exibir a fileira do filtro"); -Rico.addPhraseId('hideFilterRow',"Ocultar a fileira do filtro"); - -// used in ricoLiveGridForms.js - -Rico.addPhraseId('selectNone',"(nenhuns)"); -Rico.addPhraseId('selectNewVal',"(valor novo)"); -Rico.addPhraseId('record',"o registro"); -Rico.addPhraseId('thisRecord',"este registro"); -Rico.addPhraseId('confirmDelete',"É você certo você quer suprimir $1?"); -Rico.addPhraseId('deleting',"O apagamento é em andamento..."); -Rico.addPhraseId('formPleaseEnter',"Registe um valor para $1"); -Rico.addPhraseId('formInvalidFmt',"Formato inválido em $1"); -Rico.addPhraseId('formOutOfRange',"Valor fora da escala em $1"); -Rico.addPhraseId('formNewValue',"valor novo:"); -Rico.addPhraseId('saving',"Salvar em andamento..."); -Rico.addPhraseId('clear',"remover"); -Rico.addPhraseId('close',"Fechar"); -Rico.addPhraseId('saveRecord',"Salvar"); -Rico.addPhraseId('cancel',"Cancelar"); -Rico.addPhraseId('editRecord',"Editar este registro"); -Rico.addPhraseId('deleteRecord',"Apagar este registro"); -Rico.addPhraseId('cloneRecord',"Copiar este registro"); -Rico.addPhraseId('addRecord',"Criar um registro novo"); -Rico.addPhraseId('addedSuccessfully',"$1 foi adicionado com sucesso"); -Rico.addPhraseId('deletedSuccessfully',"$1 foi apagado com sucesso"); -Rico.addPhraseId('updatedSuccessfully',"$1 foi atualizado com sucesso"); - -// used in ricoTree.js - -Rico.addPhraseId('treeSave',"Salvar a seleção"); -Rico.addPhraseId('treeClear',"Cancele tudo"); - -// used in ricoCalendar.js - -Rico.addPhraseId('calToday',"Hoje é $1 $2 $3"); -Rico.addPhraseId('calWeekHdg',"Sem"); -Rico.addPhraseId('calYearRange',"Ano ($1-$2)"); -Rico.addPhraseId('calInvalidYear',"Ano inválido"); - -// Date & number formats - -Rico.thouSep="."; -Rico.decPoint=","; -Rico.dateFmt="dd/mm/yyyy"; - -Rico.monthNames=["Janeiro", "Fevereiro", "Março", "Abril", "Maio","Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"]; -Rico.dayNames=["Domingo", "Segunda","Terça", "Quarta", "Quinta", "Sexta", "Sábado"]; -Rico.monthNamesShort=['Jan','Fev','Mar','Abr','Mai','Jun','Jul','Ago','Set','Out','Nov','Dez']; -Rico.dayNamesShort=['Dom','Seg','Ter','Qua','Qui','Sex','Sab']; - -Rico.includeLoaded('ricoLocale_pt.js'); diff --git a/ricoClient/js/translations/ricoLocale_ru.js b/ricoClient/js/translations/ricoLocale_ru.js deleted file mode 100644 index b7c61f2..0000000 --- a/ricoClient/js/translations/ricoLocale_ru.js +++ /dev/null @@ -1,121 +0,0 @@ -/***************************************************************** - Page : ricoLocale_ru.js - Description : russian localization strings - Version 0.1 (revisions by Alexey Uvarov,Illiya Gannitskiy) - If you would like to include translations for another language, - please send them to dowdybrown@yahoo.com -******************************************************************/ -Rico.langCode='ru'; - -// used in ricoLiveGrid.js - -Rico.addPhraseId('bookmarkExact',"Просмотр записей $1 - $2 из $3"); -Rico.addPhraseId('bookmarkAbout',"Просмотр записей $1 - $2 из более чем $3"); -Rico.addPhraseId('bookmarkNoRec',"Нет записей"); -Rico.addPhraseId('bookmarkNoMatch',"Нет совпадений"); -Rico.addPhraseId('bookmarkLoading',"Загрузка..."); -Rico.addPhraseId('sorting',"Сортировка..."); -Rico.addPhraseId('exportStatus',"Экспортируется запись $1"); -Rico.addPhraseId('filterAll',"(все)"); -Rico.addPhraseId('filterBlank',"(чистый)"); -Rico.addPhraseId('filterEmpty',"(пустой)"); -Rico.addPhraseId('filterNotEmpty',"(не пустой)"); -Rico.addPhraseId('filterLike',"как: $1"); -Rico.addPhraseId('filterNot',"не: $1"); -Rico.addPhraseId('requestError',"Запрос данных возвратил ошибку:\n$1"); -Rico.addPhraseId('keywordPrompt',"Искать по ключу (Используйте * для всех записей):"); - -// used in ricoLiveGridMenu.js - -Rico.addPhraseId('gridmenuSortBy',"Сортировка по: $1"); -Rico.addPhraseId('gridmenuSortAsc',"Возрастающая"); -Rico.addPhraseId('gridmenuSortDesc',"Убывающая"); -Rico.addPhraseId('gridmenuFilterBy',"Фильтрация по: $1"); -Rico.addPhraseId('gridmenuRefresh',"Обновить"); -Rico.addPhraseId('gridmenuChgKeyword',"Изменить ключевое слово..."); -Rico.addPhraseId('gridmenuExcludeAlso',"Исключить также это значение"); -Rico.addPhraseId('gridmenuInclude',"Включить только это значение"); -Rico.addPhraseId('gridmenuGreaterThan',"Больше либо равно данному значению"); -Rico.addPhraseId('gridmenuLessThan',"Меньше либо равно данному значению"); -Rico.addPhraseId('gridmenuContains',"Содержит значение..."); -Rico.addPhraseId('gridmenuExclude',"Исключить это значение"); -Rico.addPhraseId('gridmenuRemoveFilter',"Удалить фильтр"); -Rico.addPhraseId('gridmenuRemoveAll',"Удалить все фильтры"); - -Rico.addPhraseId('gridmenuExport',"Печать/Экспорт"); -Rico.addPhraseId('gridmenuExportVis2Web',"Видимые записи на вэб-страницу"); -Rico.addPhraseId('gridmenuExportAll2Web',"Все записи на вэб-страницу"); -Rico.addPhraseId('gridmenuExportVis2SS',"Видимые записи в лист excel"); -Rico.addPhraseId('gridmenuExportAll2SS',"Все записи в лист excel"); - -Rico.addPhraseId('gridmenuHideShow',"Скрыть/Показать"); -Rico.addPhraseId('gridmenuChooseCols',"Выберите столбец..."); -Rico.addPhraseId('gridmenuHide',"Скрыть: $1"); -Rico.addPhraseId('gridmenuShow',"Показать: $1"); -Rico.addPhraseId('gridmenuShowAll',"Показать все"); - -// used in ricoLiveGridAjax.js - -Rico.addPhraseId('sessionExpireMinutes',"минут до истечения сессии"); -Rico.addPhraseId('sessionExpired',"ИСТЕКЛА"); -Rico.addPhraseId('requestTimedOut',"Превышен интервал ожидания данных!"); -Rico.addPhraseId('waitForData',"Ожидание данных..."); -Rico.addPhraseId('httpError',"Получена HTTP ошибка: $1"); -Rico.addPhraseId('invalidResponse',"Сервер возвратил неправильный ответ"); - -// used in ricoLiveGridCommon.js - -Rico.addPhraseId('gridChooseCols',"Выбрать столбец"); -Rico.addPhraseId('exportComplete',"Экспорт завершен"); -Rico.addPhraseId('exportInProgress',"Экспортирование..."); -Rico.addPhraseId('showFilterRow',"Показать отфильтрованные записи"); // img alt text -Rico.addPhraseId('hideFilterRow',"Спрятать отфильтрованные записи"); // img alt text - -// used in ricoLiveGridForms.js - -Rico.addPhraseId('selectNone',"(ничего)"); -Rico.addPhraseId('selectNewVal',"(новое значение)"); -Rico.addPhraseId('record',"запись"); -Rico.addPhraseId('thisRecord',"эта $1"); -Rico.addPhraseId('confirmDelete',"Вы уверенны, что хотите удалить $1?"); -Rico.addPhraseId('deleting',"Удаление..."); -Rico.addPhraseId('formPleaseEnter',"Пожалуйста, введите значение для $1"); -Rico.addPhraseId('formInvalidFmt',"Неправильный формат для $1"); -Rico.addPhraseId('formOutOfRange',"Значение находится вне диапазона для $1"); -Rico.addPhraseId('formNewValue',"новое значение:"); -Rico.addPhraseId('saving',"Сохранение..."); -Rico.addPhraseId('clear',"очистить"); -Rico.addPhraseId('close',"Закрыть"); -Rico.addPhraseId('saveRecord',"Сохранить $1"); -Rico.addPhraseId('cancel',"Отмена"); -Rico.addPhraseId('editRecord',"Редактировать эту $1"); -Rico.addPhraseId('deleteRecord',"Удалить эту $1"); -Rico.addPhraseId('cloneRecord',"Копировать эту $1"); -Rico.addPhraseId('addRecord',"Добавить новую $1"); -Rico.addPhraseId('addedSuccessfully',"$1 добавлена успешно"); -Rico.addPhraseId('deletedSuccessfully',"$1 удалена успешно"); -Rico.addPhraseId('updatedSuccessfully',"$1 обновлена успешно"); - -// used in ricoTree.js - -Rico.addPhraseId('treeSave',"Сохранить выделение"); -Rico.addPhraseId('treeClear',"Очистить все"); - -// used in ricoCalendar.js - -Rico.addPhraseId('calToday',"Сегодня $1 $2 $3"); // $1=day, $2=monthabbr, $3=year, $4=month number -Rico.addPhraseId('calWeekHdg',"Нд"); -Rico.addPhraseId('calYearRange',"Год ($1-$2)"); -Rico.addPhraseId('calInvalidYear',"Неправильный год"); - -// Date & number formats - -Rico.thouSep=","; -Rico.decPoint="."; -Rico.dateFmt="mm/dd/yyyy"; - -Rico.monthNames=['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь']; -Rico.dayNames=['Воскресенье','Понедельник','Вторник','Среда','Четверг','Пятница','Суббота']; -Rico.monthNamesShort=['Янв','Фев','Мар','Апр','Май','Июн','Июл','Авг','Сен','Окт','Ноя','Дек']; -Rico.dayNamesShort=['вск','пнд','втр','срд','чтв','птн','сбт']; - diff --git a/ricoClient/js/translations/ricoLocale_uk.js b/ricoClient/js/translations/ricoLocale_uk.js deleted file mode 100644 index f076645..0000000 --- a/ricoClient/js/translations/ricoLocale_uk.js +++ /dev/null @@ -1,120 +0,0 @@ -/***************************************************************** - Page : ricoLocale_uk.js - Description : ukrainian localization strings - Version 0.1 (revisions by Alexey Uvarov,Illiya Gannitskiy) - If you would like to include translations for another language, - please send them to dowdybrown@yahoo.com -******************************************************************/ -Rico.langCode='ua'; - -// used in ricoLiveGrid.js - -Rico.addPhraseId('bookmarkExact',"Перегляд записів $1 - $2 з $3"); -Rico.addPhraseId('bookmarkAbout',"Перегляд записів $1 - $2 з більш ніж $3"); -Rico.addPhraseId('bookmarkNoRec',"Немає записів"); -Rico.addPhraseId('bookmarkNoMatch',"Немає збігів"); -Rico.addPhraseId('bookmarkLoading',"Завантаження..."); -Rico.addPhraseId('sorting',"Сортування..."); -Rico.addPhraseId('exportStatus',"Експортується запис $1"); -Rico.addPhraseId('filterAll',"(всі)"); -Rico.addPhraseId('filterBlank',"(чистий)"); -Rico.addPhraseId('filterEmpty',"(порожній)"); -Rico.addPhraseId('filterNotEmpty',"(не порожній)"); -Rico.addPhraseId('filterLike',"як: $1"); -Rico.addPhraseId('filterNot',"не: $1"); -Rico.addPhraseId('requestError',"Запит даних повернув помилку:\n$1"); -Rico.addPhraseId('keywordPrompt',"Шукати по ключу (Використовуйте * для всіх записів):"); - -// used in ricoLiveGridMenu.js - -Rico.addPhraseId('gridmenuSortBy',"Сортування по: $1"); -Rico.addPhraseId('gridmenuSortAsc',"Зростаюча"); -Rico.addPhraseId('gridmenuSortDesc',"Убутна"); -Rico.addPhraseId('gridmenuFilterBy',"Фільтрація по: $1"); -Rico.addPhraseId('gridmenuRefresh',"Обновити"); -Rico.addPhraseId('gridmenuChgKeyword',"Змінити ключове слово..."); -Rico.addPhraseId('gridmenuExcludeAlso',"Виключити також це значення"); -Rico.addPhraseId('gridmenuInclude',"Включити тільки це значення"); -Rico.addPhraseId('gridmenuGreaterThan',"Більше або дорівнює даному значенню"); -Rico.addPhraseId('gridmenuLessThan',"Менше або дорівнює даному значенню"); -Rico.addPhraseId('gridmenuContains',"Містить значення..."); -Rico.addPhraseId('gridmenuExclude',"Виключити це значення"); -Rico.addPhraseId('gridmenuRemoveFilter',"Вилучити фільтр"); -Rico.addPhraseId('gridmenuRemoveAll',"Вилучити всі фільтри"); - -Rico.addPhraseId('gridmenuExport',"Друк/Експорт"); -Rico.addPhraseId('gridmenuExportVis2Web',"Видимі записи на веб-сторінку"); -Rico.addPhraseId('gridmenuExportAll2Web',"Усі записи на веб-сторінку"); -Rico.addPhraseId('gridmenuExportVis2SS',"Видимі записи в аркуш excel"); -Rico.addPhraseId('gridmenuExportAll2SS',"Усі записи в аркуш excel"); - -Rico.addPhraseId('gridmenuHideShow',"Сховати/Показати"); -Rico.addPhraseId('gridmenuChooseCols',"Виберіть колонку..."); -Rico.addPhraseId('gridmenuHide',"Сховати: $1"); -Rico.addPhraseId('gridmenuShow',"Показати: $1"); -Rico.addPhraseId('gridmenuShowAll',"Показати всі"); - -// used in ricoLiveGridAjax.js - -Rico.addPhraseId('sessionExpireMinutes',"хвилин до закінчення сесії"); -Rico.addPhraseId('sessionExpired',"МИНУЛА"); -Rico.addPhraseId('requestTimedOut',"Перевищений інтервал очікування даних!"); -Rico.addPhraseId('waitForData',"Очікування даних..."); -Rico.addPhraseId('httpError',"Отримана HTTP помилка: $1"); -Rico.addPhraseId('invalidResponse',"Сервер повернув неправильну відповідь"); - -// used in ricoLiveGridCommon.js - -Rico.addPhraseId('gridChooseCols',"Вибрати колонку"); -Rico.addPhraseId('exportComplete',"Експорт завершений"); -Rico.addPhraseId('exportInProgress',"Експортування..."); -Rico.addPhraseId('showFilterRow',"Показати відфільтровані записи"); // img alt text -Rico.addPhraseId('hideFilterRow',"Сховати відфільтровані записи"); // img alt text - -// used in ricoLiveGridForms.js - -Rico.addPhraseId('selectNone',"(нічого)"); -Rico.addPhraseId('selectNewVal',"(нове значення)"); -Rico.addPhraseId('record',"запис"); -Rico.addPhraseId('thisRecord',"ця $1"); -Rico.addPhraseId('confirmDelete',"Ви впевнені,що бажаєте видалити $1?"); -Rico.addPhraseId('deleting',"Видалення..."); -Rico.addPhraseId('formPleaseEnter',"Будь ласка, введіть значення для $1"); -Rico.addPhraseId('formInvalidFmt',"Неправильний формат для $1"); -Rico.addPhraseId('formOutOfRange',"Значення знаходиться поза діапазоном для $1"); -Rico.addPhraseId('formNewValue',"нове значення:"); -Rico.addPhraseId('saving',"Збереження..."); -Rico.addPhraseId('clear',"очистити"); -Rico.addPhraseId('close',"Закрити"); -Rico.addPhraseId('saveRecord',"Зберегти $1"); -Rico.addPhraseId('cancel',"Скасування"); -Rico.addPhraseId('editRecord',"Редагувати цю $1"); -Rico.addPhraseId('deleteRecord',"Вилучити цю $1"); -Rico.addPhraseId('cloneRecord',"Копіювати цю $1"); -Rico.addPhraseId('addRecord',"Додати нову $1"); -Rico.addPhraseId('addedSuccessfully',"$1 додана успішно"); -Rico.addPhraseId('deletedSuccessfully',"$1 вилучена успішно"); -Rico.addPhraseId('updatedSuccessfully',"$1 оновлена успішно"); - -// used in ricoTree.js - -Rico.addPhraseId('treeSave',"Зберегти виділення"); -Rico.addPhraseId('treeClear',"Очистити все"); - -// used in ricoCalendar.js - -Rico.addPhraseId('calToday',"Сьогодні $1 $2 $3"); // $1=day, $2=monthabbr, $3=year, $4=month number -Rico.addPhraseId('calWeekHdg',"Тд"); -Rico.addPhraseId('calYearRange',"Рік ($1-$2)"); -Rico.addPhraseId('calInvalidYear',"Неправильний рік"); - -// Date & number formats - -Rico.thouSep=","; -Rico.decPoint="."; -Rico.dateFmt="dd/mm/yyyy"; - -Rico.monthNames=['Січень','Лютий','Березень','Квітень','Травень','Червень','Липень','Серпень','Вересень','Жовтень','Листопад','Грудень']; -Rico.monthNamesShort=['Січ','Лют','Бер','Кві','Тра','Чер','Лип','Сер','Вер','Жов','Лис','Гру']; -Rico.dayNames=['неділя','понеділок','вівторок','середа','четвер','п’ятниця','субота']; -Rico.dayNamesShort=['нед','пнд','вів','срд','чтв','птн','сбт']; diff --git a/ricoClient/js/translations/ricoLocale_zh.js b/ricoClient/js/translations/ricoLocale_zh.js deleted file mode 100644 index d8daa09..0000000 --- a/ricoClient/js/translations/ricoLocale_zh.js +++ /dev/null @@ -1,122 +0,0 @@ -/***************************************************************** - ricoLocale_zh.js - a component of Rico 2.0 - Localization strings for Simplified Chinese - Initial translator: Xinjun Liu - If you have better translations, or would like to include - translations for another language, please send them to dowdybrown@yahoo.com -******************************************************************/ -Rico.langCode='zh'; - -// used in ricoLiveGrid.js - -Rico.addPhraseId('bookmarkExact',"第 $1 - $2 条记录(总计$3条)"); -Rico.addPhraseId('bookmarkAbout',"第 $1 - $2 条记录(总数超过$3条)"); -Rico.addPhraseId('bookmarkNoRec',"未发现记录"); -Rico.addPhraseId('bookmarkNoMatch',"未找到匹配的记录"); -Rico.addPhraseId('bookmarkLoading',"正在加载..."); -Rico.addPhraseId('sorting',"正在排序..."); -Rico.addPhraseId('exportStatus',"导出第 $1 行"); -Rico.addPhraseId('filterAll',"(所有)"); -Rico.addPhraseId('filterBlank',"(空白)"); -Rico.addPhraseId('filterEmpty',"(空值)"); -Rico.addPhraseId('filterNotEmpty',"(非空)"); -Rico.addPhraseId('filterLike',"类似于: $1"); -Rico.addPhraseId('filterNot',"非: $1"); -Rico.addPhraseId('requestError',"该请求返回一个错误:\n$1"); -Rico.addPhraseId('keywordPrompt',"请输入搜索词(可使用通配符*):"); - -// used in ricoLiveGridMenu.js - -Rico.addPhraseId('gridmenuSortBy',"排序 依据:$1"); -Rico.addPhraseId('gridmenuSortAsc',"升序"); -Rico.addPhraseId('gridmenuSortDesc',"降序"); -Rico.addPhraseId('gridmenuFilterBy',"过滤 依据: $1"); -Rico.addPhraseId('gridmenuRefresh',"刷新"); -Rico.addPhraseId('gridmenuChgKeyword',"更改搜索词..."); -Rico.addPhraseId('gridmenuExcludeAlso',"不包括此值"); -Rico.addPhraseId('gridmenuInclude',"只包括此值"); -Rico.addPhraseId('gridmenuGreaterThan',"大于或等于此值"); -Rico.addPhraseId('gridmenuLessThan',"小于或等于此值"); -Rico.addPhraseId('gridmenuContains',"包含关键字..."); -Rico.addPhraseId('gridmenuExclude',"不包括此值"); -Rico.addPhraseId('gridmenuRemoveFilter',"移除过滤器"); -Rico.addPhraseId('gridmenuRemoveAll',"移除所有过滤器"); - -Rico.addPhraseId('gridmenuExport',"打印/输出"); -Rico.addPhraseId('gridmenuExportVis2Web',"输出可见行至网页"); -Rico.addPhraseId('gridmenuExportAll2Web',"输出所有行至网页"); -Rico.addPhraseId('gridmenuExportVis2SS',"输出可见行至表格"); -Rico.addPhraseId('gridmenuExportAll2SS',"输出所有行至表格"); - -Rico.addPhraseId('gridmenuHideShow',"隐藏/显示"); -Rico.addPhraseId('gridmenuChooseCols',"选择以下列..."); -Rico.addPhraseId('gridmenuHide',"隐藏: $1"); -Rico.addPhraseId('gridmenuShow',"显示: $1"); -Rico.addPhraseId('gridmenuShowAll',"显示所有"); - -// used in ricoLiveGridAjax.js - -Rico.addPhraseId('sessionExpireMinutes',"分钟后您的会话将过期"); -Rico.addPhraseId('sessionExpired',"已过期"); -Rico.addPhraseId('requestTimedOut',"数据传输超时!"); -Rico.addPhraseId('waitForData',"正在加载数据..."); -Rico.addPhraseId('httpError',"接收到HTTP错误: $1"); -Rico.addPhraseId('invalidResponse',"服务器返回一个无效的响应"); - -// used in ricoLiveGridCommon.js - -Rico.addPhraseId('gridChooseCols',"选择以下列..."); -Rico.addPhraseId('exportComplete',"输出完成!"); -Rico.addPhraseId('exportInProgress',"正在输出..."); -Rico.addPhraseId('showFilterRow',"显示被过滤的行"); // img alt text -Rico.addPhraseId('hideFilterRow',"隐藏被过滤的行"); // img alt text - -// used in ricoLiveGridForms.js - -Rico.addPhraseId('selectNone',"(无)"); -Rico.addPhraseId('selectNewVal',"(新值)"); -Rico.addPhraseId('record',"记录"); -Rico.addPhraseId('thisRecord',"该 $1"); -Rico.addPhraseId('confirmDelete',"您确定要删除 $1 吗?"); -Rico.addPhraseId('deleting',"正在删除..."); -Rico.addPhraseId('formPleaseEnter',"请输入 $1 的值"); -Rico.addPhraseId('formInvalidFmt',"不符合 $1 的格式"); -Rico.addPhraseId('formOutOfRange',"值超出 $1 的范围"); -Rico.addPhraseId('formNewValue',"新值:"); -Rico.addPhraseId('saving',"正在保存..."); -Rico.addPhraseId('clear',"清除"); -Rico.addPhraseId('close',"关闭"); -Rico.addPhraseId('saveRecord',"保存"); -Rico.addPhraseId('cancel',"撤销"); -Rico.addPhraseId('editRecord',"编辑"); //$1 ommited -Rico.addPhraseId('deleteRecord',"删除"); //$1 ommited -Rico.addPhraseId('cloneRecord',"克隆");//$1 ommited -Rico.addPhraseId('addRecord',"添加"); //$1 ommited -Rico.addPhraseId('addedSuccessfully',"$1 添加成功"); -Rico.addPhraseId('deletedSuccessfully',"$1 删除成功"); -Rico.addPhraseId('updatedSuccessfully',"$1 更新成功"); - -// used in ricoTree.js - -Rico.addPhraseId('treeSave',"保存选择"); -Rico.addPhraseId('treeClear',"全部清除"); - -// used in ricoCalendar.js - -Rico.addPhraseId('calToday',"今天是 $3 å¹´ $4 月 $1 日"); // $1=day, $2=monthabbr, $3=year, $4=month number -Rico.addPhraseId('calWeekHdg',"星期"); -Rico.addPhraseId('calYearRange',"$1å¹´ - $2å¹´"); -Rico.addPhraseId('calInvalidYear',"无效的年份"); - -// Date & number formats - -Rico.thouSep=","; -Rico.decPoint="."; -Rico.dateFmt="yyyyå¹´mm月dd日"; - -Rico.monthNames=['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月']; -Rico.monthNamesShort=['一','二','三','四','五','六','七','八','九','十','十一','十二']; -Rico.dayNames=['星期日','星期一','星期二','星期三','星期四','星期五','星期六']; -Rico.dayNamesShort=['周日','周一','周二','周三','周四','周五','周六']; - -Rico.includeLoaded('ricoLocale_zh.js');