/* Prototype JavaScript framework * (c) 2005, 2006 Sam Stephenson * * Prototype is freely distributable under the terms of an MIT-style license. * For details, see the Prototype web site: http://prototype.conio.net/ * /*--------------------------------------------------------------------------*/ // ussage: $(div_id_2).update(''); var AA_Config = { AA_INSTAL_PATH: '/aa/', SESS_NAME: '', SESS_ID: '', loader: '', icon_new: '', icon_close: '' } var Prototype={Version:"1.6.0",Browser:{IE:!!(window.attachEvent&&!window.opera),Opera:!!window.opera,WebKit:navigator.userAgent.indexOf("AppleWebKit/")>-1,Gecko:navigator.userAgent.indexOf("Gecko")>-1&&navigator.userAgent.indexOf("KHTML")==-1,MobileSafari:!!navigator.userAgent.match(/Apple.*Mobile.*Safari/)},BrowserFeatures:{XPath:!!document.evaluate,ElementExtensions:!!window.HTMLElement,SpecificElementExtensions:document.createElement("div").__proto__&&document.createElement("div").__proto__!==document.createElement("form").__proto__},ScriptFragment:"]*>([\\S\\s]*?)<\/script>",JSONFilter:/^\/\*-secure-([\s\S]*)\*\/\s*$/,emptyFunction:function(){},K:function(A){return A;}};if(Prototype.Browser.MobileSafari){Prototype.BrowserFeatures.SpecificElementExtensions=false;}if(Prototype.Browser.WebKit){Prototype.BrowserFeatures.XPath=false;}var Class={create:function(){var E=null,D=$A(arguments);if(Object.isFunction(D[0])){E=D.shift();}function A(){this.initialize.apply(this,arguments);}Object.extend(A,Class.Methods);A.superclass=E;A.subclasses=[];if(E){var B=function(){};B.prototype=E.prototype;A.prototype=new B;E.subclasses.push(A);}for(var C=0;C0){if(B=D.match(E)){A+=D.slice(0,B.index);A+=String.interpret(C(B));D=D.slice(B.index+B[0].length);}else{A+=D,D="";}}return A;},sub:function(C,A,B){A=this.gsub.prepareReplacement(A);B=B===undefined?1:B;return this.gsub(C,function(D){if(--B<0){return D[0];}return A(D);});},scan:function(B,A){this.gsub(B,A);return String(this);},truncate:function(B,A){B=B||30;A=A===undefined?"...":A;return this.length>B?this.slice(0,B-A.length)+A:String(this);},strip:function(){return this.replace(/^\s+/,"").replace(/\s+$/,"");},stripTags:function(){return this.replace(/<\/?[^>]+>/gi,"");},stripScripts:function(){return this.replace(new RegExp(Prototype.ScriptFragment,"img"),"");},extractScripts:function(){var B=new RegExp(Prototype.ScriptFragment,"img");var A=new RegExp(Prototype.ScriptFragment,"im");return(this.match(B)||[]).map(function(C){return(C.match(A)||["",""])[1];});},evalScripts:function(){return this.extractScripts().map(function(script){return eval(script);});},escapeHTML:function(){var A=arguments.callee;A.text.data=this;return A.div.innerHTML;},unescapeHTML:function(){var A=new Element("div");A.innerHTML=this.stripTags();return A.childNodes[0]?(A.childNodes.length>1?$A(A.childNodes).inject("",function(B,C){return B+C.nodeValue;}):A.childNodes[0].nodeValue):"";},toQueryParams:function(B){var A=this.strip().match(/([^?#]*)(#.*)?$/);if(!A){return{};}return A[1].split(B||"&").inject({},function(E,F){if((F=F.split("="))[0]){var C=decodeURIComponent(F.shift());var D=F.length>1?F.join("="):F[0];if(D!=undefined){D=decodeURIComponent(D);}if(C in E){if(!Object.isArray(E[C])){E[C]=[E[C]];}E[C].push(D);}else{E[C]=D;}}return E;});},toArray:function(){return this.split("");},succ:function(){return this.slice(0,this.length-1)+String.fromCharCode(this.charCodeAt(this.length-1)+1);},times:function(A){return A<1?"":new Array(A+1).join(this);},camelize:function(){var D=this.split("-"),A=D.length;if(A==1){return D[0];}var C=this.charAt(0)=="-"?D[0].charAt(0).toUpperCase()+D[0].substring(1):D[0];for(var B=1;B-1;},startsWith:function(A){return this.indexOf(A)===0;},endsWith:function(A){var B=this.length-A.length;return B>=0&&this.lastIndexOf(A)===B;},empty:function(){return this=="";},blank:function(){return/^\s*$/.test(this);},interpolate:function(A,B){return new Template(this,B).evaluate(A);}});if(Prototype.Browser.WebKit||Prototype.Browser.IE){Object.extend(String.prototype,{escapeHTML:function(){return this.replace(/&/g,"&").replace(//g,">");},unescapeHTML:function(){return this.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">");}});}String.prototype.gsub.prepareReplacement=function(B){if(Object.isFunction(B)){return B;}var A=new Template(B);return function(C){return A.evaluate(C);};};String.prototype.parseQuery=String.prototype.toQueryParams;Object.extend(String.prototype.escapeHTML,{div:document.createElement("div"),text:document.createTextNode("")});with(String.prototype.escapeHTML){div.appendChild(text);}var Template=Class.create({initialize:function(A,B){this.template=A.toString();this.pattern=B||Template.Pattern;},evaluate:function(A){if(Object.isFunction(A.toTemplateReplacements)){A=A.toTemplateReplacements();}return this.template.gsub(this.pattern,function(D){if(A==null){return"";}var F=D[1]||"";if(F=="\\"){return D[2];}var B=A,G=D[3];var E=/^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/,D=E.exec(G);if(D==null){return F;}while(D!=null){var C=D[1].startsWith("[")?D[2].gsub("\\\\]","]"):D[1];B=B[C];if(null==B||""==D[3]){break;}G=G.substring("["==D[3]?D[1].length:D[0].length);D=E.exec(G);}return F+String.interpret(B);}.bind(this));}});Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;var $break={};var Enumerable={each:function(C,B){var A=0;C=C.bind(B);try{this._each(function(E){C(E,A++);});}catch(D){if(D!=$break){throw D;}}return this;},eachSlice:function(D,C,B){C=C?C.bind(B):Prototype.K;var A=-D,E=[],F=this.toArray();while((A+=D)=A){A=E;}});return A;},min:function(C,B){C=C?C.bind(B):Prototype.K;var A;this.each(function(E,D){E=C(E,D);if(A==undefined||EC?1:0;}).pluck("value");},toArray:function(){return this.map();},zip:function(){var B=Prototype.K,A=$A(arguments);if(Object.isFunction(A.last())){B=A.pop();}var C=[this].concat(A).map($A);return this.map(function(E,D){return B(C.pluck(D));});},size:function(){return this.toArray().length;},inspect:function(){return"#";}};Object.extend(Enumerable,{map:Enumerable.collect,find:Enumerable.detect,select:Enumerable.findAll,filter:Enumerable.findAll,member:Enumerable.include,entries:Enumerable.toArray,every:Enumerable.all,some:Enumerable.any});function $A(C){if(!C){return[];}if(C.toArray){return C.toArray();}var B=C.length,A=new Array(B);while(B--){A[B]=C[B];}return A;}if(Prototype.Browser.WebKit){function $A(C){if(!C){return[];}if(!(Object.isFunction(C)&&C=="[object NodeList]")&&C.toArray){return C.toArray();}var B=C.length,A=new Array(B);while(B--){A[B]=C[B];}return A;}}Array.from=$A;Object.extend(Array.prototype,Enumerable);if(!Array.prototype._reverse){Array.prototype._reverse=Array.prototype.reverse;}Object.extend(Array.prototype,{_each:function(B){for(var A=0,C=this.length;A1?this:this[0];},uniq:function(A){return this.inject([],function(D,C,B){if(0==B||(A?D.last()!=C:!D.include(C))){D.push(C);}return D;});},intersect:function(A){return this.uniq().findAll(function(B){return A.detect(function(C){return B===C;});});},clone:function(){return[].concat(this);},size:function(){return this.length;},inspect:function(){return"["+this.map(Object.inspect).join(", ")+"]";},toJSON:function(){var A=[];this.each(function(B){var C=Object.toJSON(B);if(C!==undefined){A.push(C);}});return"["+A.join(", ")+"]";}});if(Object.isFunction(Array.prototype.forEach)){Array.prototype._each=Array.prototype.forEach;}if(!Array.prototype.indexOf){Array.prototype.indexOf=function(C,A){A||(A=0);var B=this.length;if(A<0){A=B+A;}for(;A1;}()){function B(E){var C=[];for(var D in this._object){var F=this._object[D];if(C.include(D)){continue;}C.push(D);var G=[D,F];G.key=D;G.value=F;E(G);}}}else{function B(D){for(var C in this._object){var E=this._object[C],F=[C,E];F.key=C;F.value=E;D(F);}}}function A(C,D){if(Object.isUndefined(D)){return C;}return C+"="+encodeURIComponent(String.interpret(D));}return{initialize:function(C){this._object=Object.isHash(C)?C.toObject():Object.clone(C);},_each:B,set:function(C,D){return this._object[C]=D;},get:function(C){return this._object[C];},unset:function(C){var D=this._object[C];delete this._object[C];return D;},toObject:function(){return Object.clone(this._object);},keys:function(){return this.pluck("key");},values:function(){return this.pluck("value");},index:function(D){var C=this.detect(function(E){return E.value===D;});return C&&C.key;},merge:function(C){return this.clone().update(C);},update:function(C){return new Hash(C).inject(this,function(D,E){D.set(E.key,E.value);return D;});},toQueryString:function(){return this.map(function(E){var D=encodeURIComponent(E.key),C=E.value;if(C&&typeof C=="object"){if(Object.isArray(C)){return C.map(A.curry(D)).join("&");}}return A(D,C);}).join("&");},inspect:function(){return"#";},toJSON:function(){return Object.toJSON(this.toObject());},clone:function(){return new Hash(this);}};})());Hash.prototype.toTemplateReplacements=Hash.prototype.toObject;Hash.from=$H;var ObjectRange=Class.create(Enumerable,{initialize:function(C,A,B){this.start=C;this.end=A;this.exclusive=B;},_each:function(A){var B=this.start;while(this.include(B)){A(B);B=B.succ();}},include:function(A){if(A1&&!((A==4)&&this._complete)){this.respondToReadyState(this.transport.readyState);}},setRequestHeaders:function(){var E={"X-Requested-With":"XMLHttpRequest","X-Prototype-Version":Prototype.Version,"Accept":"text/javascript, text/html, application/xml, text/xml, */*"};if(this.method=="post"){E["Content-type"]=this.options.contentType+(this.options.encoding?"; charset="+this.options.encoding:"");if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005){E["Connection"]="close";}}if(typeof this.options.requestHeaders=="object"){var C=this.options.requestHeaders;if(Object.isFunction(C.push)){for(var B=0,D=C.length;B=200&&A<300);},getStatus:function(){try{return this.transport.status||0;}catch(A){return 0;}},respondToReadyState:function(A){var C=Ajax.Request.Events[A],B=new Ajax.Response(this);if(C=="Complete"){try{this._complete=true;(this.options["on"+B.status]||this.options["on"+(this.success()?"Success":"Failure")]||Prototype.emptyFunction)(B,B.headerJSON);}catch(D){this.dispatchException(D);}var E=B.getHeader("Content-type");if(this.options.evalJS=="force"||(this.options.evalJS&&E&&E.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))){this.evalResponse();}}try{(this.options["on"+C]||Prototype.emptyFunction)(B,B.headerJSON);Ajax.Responders.dispatch("on"+C,this,B,B.headerJSON);}catch(D){this.dispatchException(D);}if(C=="Complete"){this.transport.onreadystatechange=Prototype.emptyFunction;}},getHeader:function(A){try{return this.transport.getResponseHeader(A);}catch(B){return null;}},evalResponse:function(){try{return eval((this.transport.responseText||"").unfilterJSON());}catch(e){this.dispatchException(e);}},dispatchException:function(A){(this.options.onException||Prototype.emptyFunction)(this,A);Ajax.Responders.dispatch("onException",this,A);}});Ajax.Request.Events=["Uninitialized","Loading","Loaded","Interactive","Complete"];Ajax.Response=Class.create({initialize:function(C){this.request=C;var D=this.transport=C.transport,A=this.readyState=D.readyState;if((A>2&&!Prototype.Browser.IE)||A==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=String.interpret(D.responseText);this.headerJSON=this._getHeaderJSON();}if(A==4){var B=D.responseXML;this.responseXML=B===undefined?null:B;this.responseJSON=this._getResponseJSON();}},status:0,statusText:"",getStatus:Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||"";}catch(A){return"";}},getHeader:Ajax.Request.prototype.getHeader,getAllHeaders:function(){try{return this.getAllResponseHeaders();}catch(A){return null;}},getResponseHeader:function(A){return this.transport.getResponseHeader(A);},getAllResponseHeaders:function(){return this.transport.getAllResponseHeaders();},_getHeaderJSON:function(){var A=this.getHeader("X-JSON");if(!A){return null;}A=decodeURIComponent(escape(A));try{return A.evalJSON(this.request.options.sanitizeJSON);}catch(B){this.request.dispatchException(B);}},_getResponseJSON:function(){var A=this.request.options;if(!A.evalJSON||(A.evalJSON!="force"&&!(this.getHeader("Content-type")||"").include("application/json"))){return null;}try{return this.transport.responseText.evalJSON(A.sanitizeJSON);}catch(B){this.request.dispatchException(B);}}});Ajax.Updater=Class.create(Ajax.Request,{initialize:function($super,A,C,B){this.container={success:(A.success||A),failure:(A.failure||(A.success?null:A))};B=B||{};var D=B.onComplete;B.onComplete=(function(E,F){this.updateContent(E.responseText);if(Object.isFunction(D)){D(E,F);}}).bind(this);$super(C,B);},updateContent:function(D){var C=this.container[this.success()?"success":"failure"],A=this.options;if(!A.evalScripts){D=D.stripScripts();}if(C=$(C)){if(A.insertion){if(Object.isString(A.insertion)){var B={};B[A.insertion]=D;C.insert(B);}else{A.insertion(C,D);}}else{C.update(D);}}if(this.success()){if(this.onComplete){this.onComplete.bind(this).defer();}}}});Ajax.PeriodicalUpdater=Class.create(Ajax.Base,{initialize:function($super,A,C,B){$super(B);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=A;this.url=C;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(A){if(this.options.decay){this.decay=(A.responseText==this.lastText?this.decay*this.options.decay:1);this.lastText=A.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 $(B){if(arguments.length>1){for(var A=0,D=[],C=arguments.length;A';delete C.name;return Element.writeAttribute(document.createElement(D),C);}if(!B[D]){B[D]=Element.extend(document.createElement(D));}return Element.writeAttribute(B[D].cloneNode(false),C);};Object.extend(this.Element,A||{});}).call(window);Element.cache={};Element.Methods={visible:function(A){return $(A).style.display!="none";},toggle:function(A){A=$(A);Element[Element.visible(A)?"hide":"show"](A);return A;},hide:function(A){$(A).style.display="none";return A;},show:function(A){$(A).style.display="";return A;},remove:function(A){A=$(A);A.parentNode.removeChild(A);return A;},update:function(A,B){A=$(A);if(B&&B.toElement){B=B.toElement();}if(Object.isElement(B)){return A.update().insert(B);}B=Object.toHTML(B);A.innerHTML=B.stripScripts();B.evalScripts.bind(B).defer();return A;},replace:function(B,C){B=$(B);if(C&&C.toElement){C=C.toElement();}else{if(!Object.isElement(C)){C=Object.toHTML(C);var A=B.ownerDocument.createRange();A.selectNode(B);C.evalScripts.bind(C).defer();C=A.createContextualFragment(C.stripScripts());}}B.parentNode.replaceChild(C,B);return B;},insert:function(C,E){C=$(C);if(Object.isString(E)||Object.isNumber(E)||Object.isElement(E)||(E&&(E.toElement||E.toHTML))){E={bottom:E};}var D,B,A;for(position in E){D=E[position];position=position.toLowerCase();B=Element._insertionTranslations[position];if(D&&D.toElement){D=D.toElement();}if(Object.isElement(D)){B.insert(C,D);continue;}D=Object.toHTML(D);A=C.ownerDocument.createRange();B.initializeRange(C,A);B.insert(C,A.createContextualFragment(D.stripScripts()));D.evalScripts.bind(D).defer();}return C;},wrap:function(B,C,A){B=$(B);if(Object.isElement(C)){$(C).writeAttribute(A||{});}else{if(Object.isString(C)){C=new Element(C,A);}else{C=new Element("div",C);}}if(B.parentNode){B.parentNode.replaceChild(C,B);}C.appendChild(B);return C;},inspect:function(B){B=$(B);var A="<"+B.tagName.toLowerCase();$H({"id":"id","className":"class"}).each(function(F){var E=F.first(),C=F.last();var D=(B[E]||"").toString();if(D){A+=" "+C+"="+D.inspect(true);}});return A+">";},recursivelyCollect:function(A,C){A=$(A);var B=[];while(A=A[C]){if(A.nodeType==1){B.push(Element.extend(A));}}return B;},ancestors:function(A){return $(A).recursivelyCollect("parentNode");},descendants:function(A){return $A($(A).getElementsByTagName("*")).each(Element.extend);},firstDescendant:function(A){A=$(A).firstChild;while(A&&A.nodeType!=1){A=A.nextSibling;}return $(A);},immediateDescendants:function(A){if(!(A=$(A).firstChild)){return[];}while(A&&A.nodeType!=1){A=A.nextSibling;}if(A){return[A].concat($(A).nextSiblings());}return[];},previousSiblings:function(A){return $(A).recursivelyCollect("previousSibling");},nextSiblings:function(A){return $(A).recursivelyCollect("nextSibling");},siblings:function(A){A=$(A);return A.previousSiblings().reverse().concat(A.nextSiblings());},match:function(B,A){if(Object.isString(A)){A=new Selector(A);}return A.match($(B));},up:function(B,D,A){B=$(B);if(arguments.length==1){return $(B.parentNode);}var C=B.ancestors();return D?Selector.findElement(C,D,A):C[A||0];},down:function(B,C,A){B=$(B);if(arguments.length==1){return B.firstDescendant();}var D=B.descendants();return C?Selector.findElement(D,C,A):D[A||0];},previous:function(B,D,A){B=$(B);if(arguments.length==1){return $(Selector.handlers.previousElementSibling(B));}var C=B.previousSiblings();return D?Selector.findElement(C,D,A):C[A||0];},next:function(C,D,B){C=$(C);if(arguments.length==1){return $(Selector.handlers.nextElementSibling(C));}var A=C.nextSiblings();return D?Selector.findElement(A,D,B):A[B||0];},select:function(){var A=$A(arguments),B=$(A.shift());return Selector.findChildElements(B,A);},adjacent:function(){var A=$A(arguments),B=$(A.shift());return Selector.findChildElements(B.parentNode,A).without(B);},identify:function(B){B=$(B);var C=B.readAttribute("id"),A=arguments.callee;if(C){return C;}do{C="anonymous_element_"+A.counter++;}while($(C));B.writeAttribute("id",C);return C;},readAttribute:function(C,A){C=$(C);if(Prototype.Browser.IE){var B=Element._attributeTranslations.read;if(B.values[A]){return B.values[A](C,A);}if(B.names[A]){A=B.names[A];}if(A.include(":")){return(!C.attributes||!C.attributes[A])?null:C.attributes[A].value;}}return C.getAttribute(A);},writeAttribute:function(E,C,F){E=$(E);var B={},D=Element._attributeTranslations.write;if(typeof C=="object"){B=C;}else{B[C]=F===undefined?true:F;}for(var A in B){var C=D.names[A]||A,F=B[A];if(D.values[A]){C=D.values[A](E,F);}if(F===false||F===null){E.removeAttribute(C);}else{if(F===true){E.setAttribute(C,C);}else{E.setAttribute(C,F);}}}return E;},getHeight:function(A){return $(A).getDimensions().height;},getWidth:function(A){return $(A).getDimensions().width;},classNames:function(A){return new Element.ClassNames(A);},hasClassName:function(A,B){if(!(A=$(A))){return ;}var C=A.className;return(C.length>0&&(C==B||new RegExp("(^|\\s)"+B+"(\\s|$)").test(C)));},addClassName:function(A,B){if(!(A=$(A))){return ;}if(!A.hasClassName(B)){A.className+=(A.className?" ":"")+B;}return A;},removeClassName:function(A,B){if(!(A=$(A))){return ;}A.className=A.className.replace(new RegExp("(^|\\s+)"+B+"(\\s+|$)")," ").strip();return A;},toggleClassName:function(A,B){if(!(A=$(A))){return ;}return A[A.hasClassName(B)?"removeClassName":"addClassName"](B);},cleanWhitespace:function(B){B=$(B);var C=B.firstChild;while(C){var A=C.nextSibling;if(C.nodeType==3&&!/\S/.test(C.nodeValue)){B.removeChild(C);}C=A;}return B;},empty:function(A){return $(A).innerHTML.blank();},descendantOf:function(D,C){D=$(D),C=$(C);if(D.compareDocumentPosition){return(D.compareDocumentPosition(C)&8)===8;}if(D.sourceIndex&&!Prototype.Browser.Opera){var E=D.sourceIndex,B=C.sourceIndex,A=C.nextSibling;if(!A){do{C=C.parentNode;}while(!(A=C.nextSibling)&&C.parentNode);}if(A){return(E>B&&E","",1],TBODY:["","
",2],TR:["","
",3],TD:["
","
",4],SELECT:["",1]}};(function(){this.bottom.initializeRange=this.top.initializeRange;Object.extend(this.tags,{THEAD:this.tags.TBODY,TFOOT:this.tags.TBODY,TH:this.tags.TD});}).call(Element._insertionTranslations);Element.Methods.Simulated={hasAttribute:function(A,C){C=Element._attributeTranslations.has[C]||C;var B=$(A).getAttributeNode(C);return B&&B.specified;}};Element.Methods.ByTag={};Object.extend(Element,Element.Methods);if(!Prototype.BrowserFeatures.ElementExtensions&&document.createElement("div").__proto__){window.HTMLElement={};window.HTMLElement.prototype=document.createElement("div").__proto__;Prototype.BrowserFeatures.ElementExtensions=true;}Element.extend=(function(){if(Prototype.BrowserFeatures.SpecificElementExtensions){return Prototype.K;}var A={},B=Element.Methods.ByTag;var C=Object.extend(function(F){if(!F||F._extendedByPrototype||F.nodeType!=1||F==window){return F;}var D=Object.clone(A),E=F.tagName,H,G;if(B[E]){Object.extend(D,B[E]);}for(H in D){G=D[H];if(Object.isFunction(G)&&!(H in F)){F[H]=G.methodize();}}F._extendedByPrototype=Prototype.emptyFunction;return F;},{refresh:function(){if(!Prototype.BrowserFeatures.ElementExtensions){Object.extend(A,Element.Methods);Object.extend(A,Element.Methods.Simulated);}}});C.refresh();return C;})();Element.hasAttribute=function(A,B){if(A.hasAttribute){return A.hasAttribute(B);}return Element.Methods.Simulated.hasAttribute(A,B);};Element.addMethods=function(C){var I=Prototype.BrowserFeatures,D=Element.Methods.ByTag;if(!C){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)});}if(arguments.length==2){var B=C;C=arguments[1];}if(!B){Object.extend(Element.Methods,C||{});}else{if(Object.isArray(B)){B.each(H);}else{H(B);}}function H(F){F=F.toUpperCase();if(!Element.Methods.ByTag[F]){Element.Methods.ByTag[F]={};}Object.extend(Element.Methods.ByTag[F],C);}function A(L,K,F){F=F||false;for(var N in L){var M=L[N];if(!Object.isFunction(M)){continue;}if(!F||!(N in K)){K[N]=M.methodize();}}}function E(L){var F;var K={"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(K[L]){F="HTML"+K[L]+"Element";}if(window[F]){return window[F];}F="HTML"+L+"Element";if(window[F]){return window[F];}F="HTML"+L.capitalize()+"Element";if(window[F]){return window[F];}window[F]={};window[F].prototype=document.createElement(L).__proto__;return window[F];}if(I.ElementExtensions){A(Element.Methods,HTMLElement.prototype);A(Element.Methods.Simulated,HTMLElement.prototype,true);}if(I.SpecificElementExtensions){for(var J in Element.Methods.ByTag){var G=E(J);if(Object.isUndefined(G)){continue;}A(D[J],G.prototype);}}Object.extend(Element,Element.Methods);delete Element.ByTag;if(Element.extend.refresh){Element.extend.refresh();}Element.cache={};};document.viewport={getDimensions:function(){var A={};$w("width height").each(function(C){var B=C.capitalize();A[C]=self["inner"+B]||(document.documentElement["client"+B]||document.body["client"+B]);});return A;},getWidth:function(){return this.getDimensions().width;},getHeight:function(){return this.getDimensions().height;},getScrollOffsets:function(){return Element._returnOffset(window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft,window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop);}};var Selector=Class.create({initialize:function(A){this.expression=A.strip();this.compileMatcher();},compileMatcher:function(){if(Prototype.BrowserFeatures.XPath&&!(/(\[[\w-]*?:|:checked)/).test(this.expression)){return this.compileXPathMatcher();}var e=this.expression,ps=Selector.patterns,h=Selector.handlers,c=Selector.criteria,le,p,m;if(Selector._cache[e]){this.matcher=Selector._cache[e];return ;}this.matcher=["this.matcher = function(root) {","var r = root, h = Selector.handlers, c = false, n;"];while(e&&le!=e&&(/\S/).test(e)){le=e;for(var i in ps){p=ps[i];if(m=e.match(p)){this.matcher.push(Object.isFunction(c[i])?c[i](m):new Template(c[i]).evaluate(m));e=e.replace(m[0],"");break;}}}this.matcher.push("return h.unique(n);\n}");eval(this.matcher.join("\n"));Selector._cache[this.expression]=this.matcher;},compileXPathMatcher:function(){var E=this.expression,F=Selector.patterns,B=Selector.xpath,D,A;if(Selector._cache[E]){this.xpath=Selector._cache[E];return ;}this.matcher=[".//*"];while(E&&D!=E&&(/\S/).test(E)){D=E;for(var C in F){if(A=E.match(F[C])){this.matcher.push(Object.isFunction(B[C])?B[C](A):new Template(B[C]).evaluate(A));E=E.replace(A[0],"");break;}}}this.xpath=this.matcher.join("");Selector._cache[this.expression]=this.xpath;},findElements:function(A){A=A||document;if(this.xpath){return document._getElementsByXPath(this.xpath,A);}return this.matcher(A);},match:function(H){this.tokens=[];var L=this.expression,A=Selector.patterns,E=Selector.assertions;var B,D,F;while(L&&B!==L&&(/\S/).test(L)){B=L;for(var I in A){D=A[I];if(F=L.match(D)){if(E[I]){this.tokens.push([I,Object.clone(F)]);L=L.replace(F[0],"");}else{return this.findElements(document).include(H);}}}}var K=true,C,J;for(var I=0,G;G=this.tokens[I];I++){C=G[0],J=G[1];if(!Selector.assertions[C](H,J)){K=false;break;}}return K;},toString:function(){return this.expression;},inspect:function(){return"#";}});Object.extend(Selector,{_cache:{},xpath:{descendant:"//*",child:"/*",adjacent:"/following-sibling::*[1]",laterSibling:"/following-sibling::*",tagName:function(A){if(A[1]=="*"){return"";}return"[local-name()='"+A[1].toLowerCase()+"' or local-name()='"+A[1].toUpperCase()+"']";},className:"[contains(concat(' ', @class, ' '), ' #{1} ')]",id:"[@id='#{1}']",attrPresence:"[@#{1}]",attr:function(A){A[3]=A[5]||A[6];return new Template(Selector.xpath.operators[A[2]]).evaluate(A);},pseudo:function(A){var B=Selector.xpath.pseudos[A[1]];if(!B){return"";}if(Object.isFunction(B)){return B(A);}return new Template(Selector.xpath.pseudos[A[1]]).evaluate(A);},operators:{"=":"[@#{1}='#{3}']","!=":"[@#{1}!='#{3}']","^=":"[starts-with(@#{1}, '#{3}')]","$=":"[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']","*=":"[contains(@#{1}, '#{3}')]","~=":"[contains(concat(' ', @#{1}, ' '), ' #{3} ')]","|=":"[contains(concat('-', @#{1}, '-'), '-#{3}-')]"},pseudos:{"first-child":"[not(preceding-sibling::*)]","last-child":"[not(following-sibling::*)]","only-child":"[not(preceding-sibling::* or following-sibling::*)]","empty":"[count(*) = 0 and (count(text()) = 0 or translate(text(), ' \t\r\n', '') = '')]","checked":"[@checked]","disabled":"[@disabled]","enabled":"[not(@disabled)]","not":function(B){var H=B[6],G=Selector.patterns,A=Selector.xpath,E,B,C;var F=[];while(H&&E!=H&&(/\S/).test(H)){E=H;for(var D in G){if(B=H.match(G[D])){C=Object.isFunction(A[D])?A[D](B):new Template(A[D]).evaluate(B);F.push("("+C.substring(1,C.length-1)+")");H=H.replace(B[0],"");break;}}}return"[not("+F.join(" and ")+")]";},"nth-child":function(A){return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ",A);},"nth-last-child":function(A){return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ",A);},"nth-of-type":function(A){return Selector.xpath.pseudos.nth("position() ",A);},"nth-last-of-type":function(A){return Selector.xpath.pseudos.nth("(last() + 1 - position()) ",A);},"first-of-type":function(A){A[6]="1";return Selector.xpath.pseudos["nth-of-type"](A);},"last-of-type":function(A){A[6]="1";return Selector.xpath.pseudos["nth-last-of-type"](A);},"only-of-type":function(A){var B=Selector.xpath.pseudos;return B["first-of-type"](A)+B["last-of-type"](A);},nth:function(E,C){var F,G=C[6],B;if(G=="even"){G="2n+0";}if(G=="odd"){G="2n+1";}if(F=G.match(/^(\d+)$/)){return"["+E+"= "+F[1]+"]";}if(F=G.match(/^(-?\d*)?n(([+-])(\d+))?/)){if(F[1]=="-"){F[1]=-1;}var D=F[1]?Number(F[1]):1;var A=F[2]?Number(F[2]):0;B="[((#{fragment} - #{b}) mod #{a} = 0) and ((#{fragment} - #{b}) div #{a} >= 0)]";return new Template(B).evaluate({fragment:E,a:D,b:A});}}}},criteria:{tagName:'n = h.tagName(n, r, "#{1}", c); c = false;',className:'n = h.className(n, r, "#{1}", c); c = false;',id:'n = h.id(n, r, "#{1}", c); c = false;',attrPresence:'n = h.attrPresence(n, r, "#{1}"); c = false;',attr:function(A){A[3]=(A[5]||A[6]);return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}"); c = false;').evaluate(A);},pseudo:function(A){if(A[6]){A[6]=A[6].replace(/"/g,'\\"');}return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(A);},descendant:'c = "descendant";',child:'c = "child";',adjacent:'c = "adjacent";',laterSibling:'c = "laterSibling";'},patterns:{laterSibling:/^\s*~\s*/,child:/^\s*>\s*/,adjacent:/^\s*\+\s*/,descendant:/^\s/,tagName:/^\s*(\*|[\w\-]+)(\b|$)?/,id:/^#([\w\-\*]+)(\b|$)/,className:/^\.([\w\-\*]+)(\b|$)/,pseudo:/^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s)|(?=:))/,attrPresence:/^\[([\w]+)\]/,attr:/\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/},assertions:{tagName:function(A,B){return B[1].toUpperCase()==A.tagName.toUpperCase();},className:function(A,B){return Element.hasClassName(A,B[1]);},id:function(A,B){return A.id===B[1];},attrPresence:function(A,B){return Element.hasAttribute(A,B[1]);},attr:function(B,C){var A=Element.readAttribute(B,C[1]);return Selector.operators[C[2]](A,C[3]);}},handlers:{concat:function(B,A){for(var C=0,D;D=A[C];C++){B.push(D);}return B;},mark:function(A){for(var B=0,C;C=A[B];B++){C._counted=true;}return A;},unmark:function(A){for(var B=0,C;C=A[B];B++){C._counted=undefined;}return A;},index:function(A,D,G){A._counted=true;if(D){for(var B=A.childNodes,E=B.length-1,C=1;E>=0;E--){var F=B[E];if(F.nodeType==1&&(!G||F._counted)){F.nodeIndex=C++;}}}else{for(var E=0,C=1,B=A.childNodes;F=B[E];E++){if(F.nodeType==1&&(!G||F._counted)){F.nodeIndex=C++;}}}},unique:function(B){if(B.length==0){return B;}var D=[],E;for(var C=0,A=B.length;C0?[A]:[];}return $R(1,C).inject([],function(D,E){if(0==(E-A)%B&&(E-A)/B>=0){D.push(E);}return D;});},nth:function(A,L,N,K,C){if(A.length==0){return[];}if(L=="even"){L="2n+0";}if(L=="odd"){L="2n+1";}var J=Selector.handlers,I=[],B=[],E;J.mark(A);for(var H=0,D;D=A[H];H++){if(!D.parentNode._counted){J.index(D.parentNode,K,C);B.push(D.parentNode);}}if(L.match(/^\d+$/)){L=Number(L);for(var H=0,D;D=A[H];H++){if(D.nodeIndex==L){I.push(D);}}}else{if(E=L.match(/^(-?\d*)?n(([+-])(\d+))?/)){if(E[1]=="-"){E[1]=-1;}var O=E[1]?Number(E[1]):1;var M=E[2]?Number(E[2]):0;var P=Selector.pseudos.getIndices(O,M,A.length);for(var H=0,D,F=P.length;D=A[H];H++){for(var G=0;G+()\s-]+|\*|\[.*?\])+)\s*(,|$)/,function(I){G.push(I[1].strip());});var D=[],F=Selector.handlers;for(var C=0,B=G.length,A;C1)?F.unique(D):D;}});function $$(){return Selector.findChildElements(document,$A(arguments));}var Form={reset:function(A){$(A).reset();return A;},serializeElements:function(G,B){if(typeof B!="object"){B={hash:!!B};}else{if(B.hash===undefined){B.hash=true;}}var C,F,A=false,E=B.submit;var D=G.inject({},function(H,I){if(!I.disabled&&I.name){C=I.name;F=$(I).getValue();if(F!=null&&(I.type!="submit"||(!A&&E!==false&&(!E||C==E)&&(A=true)))){if(C in H){if(!Object.isArray(H[C])){H[C]=[H[C]];}H[C].push(F);}else{H[C]=F;}}}return H;});return B.hash?D:Object.toQueryString(D);}};Form.Methods={serialize:function(B,A){return Form.serializeElements(Form.getElements(B),A);},getElements:function(A){return $A($(A).getElementsByTagName("*")).inject([],function(B,C){if(Form.Element.Serializers[C.tagName.toLowerCase()]){B.push(Element.extend(C));}return B;});},getInputs:function(G,C,D){G=$(G);var A=G.getElementsByTagName("input");if(!C&&!D){return $A(A).map(Element.extend);}for(var E=0,H=[],F=A.length;E=0;}).sortBy(function(D){return D.tabIndex;}).first();return A?A:C.find(function(D){return["input","select","textarea"].include(D.tagName.toLowerCase());});},focusFirstElement:function(A){A=$(A);A.findFirstElement().activate();return A;},request:function(B,A){B=$(B),A=Object.clone(A||{});var D=A.parameters,C=B.readAttribute("action")||"";if(C.blank()){C=window.location.href;}A.parameters=B.serialize(true);if(D){if(Object.isString(D)){D=D.toQueryParams();}Object.extend(A.parameters,D);}if(B.hasAttribute("method")&&!A.method){A.method=B.method;}return new Ajax.Request(C,A);}};Form.Element={focus:function(A){$(A).focus();return A;},select:function(A){$(A).select();return A;}};Form.Element.Methods={serialize:function(A){A=$(A);if(!A.disabled&&A.name){var B=A.getValue();if(B!=undefined){var C={};C[A.name]=B;return Object.toQueryString(C);}}return"";},getValue:function(A){A=$(A);var B=A.tagName.toLowerCase();return Form.Element.Serializers[B](A);},setValue:function(A,B){A=$(A);var C=A.tagName.toLowerCase();Form.Element.Serializers[C](A,B);return A;},clear:function(A){$(A).value="";return A;},present:function(A){return $(A).value!="";},activate:function(A){A=$(A);try{A.focus();if(A.select&&(A.tagName.toLowerCase()!="input"||!["button","reset","submit"].include(A.type))){A.select();}}catch(B){}return A;},disable:function(A){A=$(A);A.blur();A.disabled=true;return A;},enable:function(A){A=$(A);A.disabled=false;return A;}};var Field=Form.Element;var $F=Form.Element.Methods.getValue;Form.Element.Serializers={input:function(A,B){switch(A.type.toLowerCase()){case"checkbox":case"radio":return Form.Element.Serializers.inputSelector(A,B);default:return Form.Element.Serializers.textarea(A,B);}},inputSelector:function(A,B){if(B===undefined){return A.checked?A.value:null;}else{A.checked=!!B;}},textarea:function(A,B){if(B===undefined){return A.value;}else{A.value=B;}},select:function(D,A){if(A===undefined){return this[D.type=="select-one"?"selectOne":"selectMany"](D);}else{var C,F,G=!Object.isArray(A);for(var B=0,E=D.length;B=0?this.optionValue(B.options[A]):null;},selectMany:function(D){var A,E=D.length;if(!E){return null;}for(var C=0,A=[];C<\/script>");$("__onDOMContentLoaded").onreadystatechange=function(){if(this.readyState=="complete"){this.onreadystatechange=null;A();}};}})();Hash.toQueryString=Object.toQueryString;var Toggle={display:Element.toggle};Element.Methods.childOf=Element.Methods.descendantOf;var Insertion={Before:function(A,B){return Element.insert(A,{before:B});},Top:function(A,B){return Element.insert(A,{top:B});},Bottom:function(A,B){return Element.insert(A,{bottom:B});},After:function(A,B){return Element.insert(A,{after:B});}};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(B,A,C){if(this.includeScrollOffsets){return this.withinIncludingScrolloffsets(B,A,C);}this.xcomp=A;this.ycomp=C;this.offset=Element.cumulativeOffset(B);return(C>=this.offset[1]&&C=this.offset[0]&&A=this.offset[1]&&this.ycomp=this.offset[0]&&this.xcomp0;})._each(A);},set:function(A){this.element.className=A;},add:function(A){if(this.include(A)){return ;}this.set($A(this).concat(A).join(" "));},remove:function(A){if(!this.include(A)){return ;}this.set($A(this).without(A).join(" "));},toString:function(){return $A(this).join(" ");}};Object.extend(Element.ClassNames.prototype,Enumerable);Element.addMethods(); // Prototip 1.1.0 // by Nick Stakenburg - http://www.nickstakenburg.com // 08-11-2007 // // More information on this project: // http://www.nickstakenburg.com/projects/prototip/ // // Licensed under the Creative Commons Attribution 3.0 License // http://creativecommons.org/licenses/by/3.0/ // var Prototip = { Version: '1.1.0', REQUIRED_Prototype: '1.6.0', REQUIRED_Scriptaculous: '1.8.0', start: function() { this.require('Prototype'); }, require: function(library) { if ((typeof window[library] == 'undefined') || (this.convertVersionString(window[library].Version) < this.convertVersionString(this['REQUIRED_' + library]))) throw('Prototip requires ' + library + ' >= ' + this['REQUIRED_' + library]); }, // based on Scriptaculous' implementation convertVersionString: function(versionString) { var r = versionString.split('.'); return parseInt(r[0])*100000 + parseInt(r[1])*1000 + parseInt(r[2]); }, // fixed viewport.getDimensions. Also excludes scrollbars in firefox. Valid doctype required. viewport : { getDimensions: function() { var dimensions = { }; var B = Prototype.Browser; $w('width height').each(function(d) { var D = d.capitalize(); if (B.Opera) dimensions[d] = document.body['client' + D]; else if (B.WebKit) dimensions[d] = self['inner' + D]; else dimensions[d] = document.documentElement['client' + D]; }); return dimensions; } } }; Prototip.start(); var Tips = { // Configuration closeButtons: false, zIndex: 1200, fixIE: (function(agent){ var version = new RegExp('MSIE ([\\d.]+)').exec(agent); return version ? (parseFloat(version[1]) <= 6) : false; })(navigator.userAgent), tips : [], visible : [], add: function(tip) { this.tips.push(tip); }, remove: function(element) { var tip = this.tips.find(function(t){ return t.element == $(element); }); if (tip) { tip.deactivate(); if (tip.tooltip) { tip.wrapper.remove(); if (Tips.fixIE) tip.iframeShim.remove(); } this.tips = this.tips.without(tip); } }, zIndexRestore : 1200, raise: function(tip) { var highestZ = this.zIndexHighest(); if (!highestZ) { tip.style.zIndex = this.zIndexRestore; return; } var newZ = (tip.style.zIndex != highestZ) ? highestZ + 1 : highestZ; this.tips.pluck('wrapper').invoke('removeClassName', 'highest'); tip.setStyle({ zIndex : newZ }).addClassName('highest'); }, zIndexHighest: function() { var highestZ = this.visible.max(function(v) { return parseInt(v.style.zIndex); }); return highestZ; }, addVisibile: function(tip) { this.removeVisible(tip); this.visible.push(tip); }, removeVisible: function(tip) { this.visible = this.visible.without(tip); } }; var Tip = Class.create({ initialize: function(element, content) { this.element = $(element); Tips.remove(this.element); this.content = content; var isHooking = (arguments[2] && arguments[2].hook); var isShowOnClick = (arguments[2] && arguments[2].showOn == 'click'); this.options = Object.extend({ className: 'default', // see css, this will lead to .prototip .default closeButton: Tips.closeButtons, // true, false delay: !isShowOnClick ? 0.2 : false, // seconds before tooltip appears duration: 0.3, // duration of the effect effect: false, // false, 'appear' or 'blind' hideOn: 'mouseout', hook: false, // { element: topLeft|topRight|bottomLeft|bottomRight, tip: see element } offset: isHooking ? {x:0, y:0} : {x:16, y:16}, fixed: isHooking ? true : false, // follow the mouse if false showOn: 'mousemove', target: this.element, // or another element title: false, viewport: isHooking ? false : true // keep within viewport if mouse is followed }, arguments[2] || {}); this.target = $(this.options.target); this.setup(); if (this.options.effect) { Prototip.require('Scriptaculous'); this.queue = { position: 'end', limit: 1, scope: this.wrapper.identify() } } Tips.add(this); this.activate(); }, setup: function() { // Everything that needs to be build for observing is done here this.wrapper = new Element('div', { 'class' : 'prototip' }).setStyle({ display: 'none', zIndex: Tips.zIndex++ }); this.wrapper.identify(); if (Tips.fixIE) { this.iframeShim = new Element('iframe', { 'class' : 'iframeShim', src: 'javascript:false;' }).setStyle({ display: 'none', zIndex: Tips.zIndexRestore - 1 }); } this.tip = new Element('div', { 'class' : 'content' }).update(this.content); this.tip.insert(new Element('div').setStyle({ clear: 'both' })); if (this.options.closeButton || (this.options.hideOn.element && this.options.hideOn.element == 'closeButton')) this.closeButton = new Element('a', { href: 'javascript:;', 'class' : 'close' }); }, build: function() { if (Tips.fixIE) document.body.appendChild(this.iframeShim).setOpacity(0); // effects go smooth with extra wrapper var wrapper = 'wrapper'; if (this.options.effect) { this.effectWrapper = this.wrapper.appendChild(new Element('div', { 'class' : 'effectWrapper' })); wrapper = 'effectWrapper'; } this.tooltip = this[wrapper].appendChild(new Element('div', { 'class' : 'tooltip ' + this.options.className })); if (this.options.title || this.options.closeButton) { this.toolbar = this.tooltip.appendChild(new Element('div', { 'class' : 'toolbar' })); this.title = this.toolbar.appendChild(new Element('div', { 'class' : 'title' }).update(this.options.title || ' ')); } this.tooltip.insert(this.tip); document.body.appendChild(this.wrapper); // fixate elements for better positioning and effects var fixate = (this.options.effect) ? [this.wrapper, this.effectWrapper]: [this.wrapper]; if (Tips.fixIE) fixate.push(this.iframeShim); // fix width var fixedWidth = this.wrapper.getWidth(); fixate.invoke('setStyle', { width: fixedWidth + 'px' }); // make toolbar width fixed if(this.toolbar) { this.wrapper.setStyle({ visibility : 'hidden' }).show(); this.toolbar.setStyle({ width: this.toolbar.getWidth() + 'px'}); this.wrapper.hide().setStyle({ visibility : 'visible' }); } // add close button if (this.closeButton) this.title.insert({ top: this.closeButton }).insert(new Element('div').setStyle({ clear: 'both' })); var fixedHeight = this.wrapper.getHeight(); fixate.invoke('setStyle', { width: fixedWidth + 'px', height: fixedHeight + 'px' }); this[this.options.effect ? wrapper : 'tooltip'].hide(); }, activate: function() { this.eventShow = this.showDelayed.bindAsEventListener(this); this.eventHide = this.hide.bindAsEventListener(this); // if fixed use mouseover instead of mousemove for less event calls if (this.options.fixed && this.options.showOn == 'mousemove') this.options.showOn = 'mouseover'; if(this.options.showOn == this.options.hideOn) { this.eventToggle = this.toggle.bindAsEventListener(this); this.element.observe(this.options.showOn, this.eventToggle); } this.hideElement = Object.isUndefined(this.options.hideOn.element) ? 'element' : this.options.hideOn.element; var hideOptions = { 'element': this.eventToggle ? [] : [this.element], 'target': this.eventToggle ? [] : [this.target], 'tip': this.eventToggle ? [] : [this.wrapper], 'closeButton': [], '.close' : this.tip.select('.close') } this.hideTargets = hideOptions[this.hideElement]; // add show and hide observers if (this.element && !this.eventToggle) this.element.observe(this.options.showOn, this.eventShow); this.hideAction = (this.options.hideOn.event || this.options.hideOn); if (this.hideTargets) this.hideTargets.invoke('observe', this.hideAction, this.eventHide); // add position observer if not fixed if (!this.options.fixed && this.options.showOn == 'click') { this.eventPosition = this.position.bindAsEventListener(this); this.element.observe('mousemove', this.eventPosition); } // add hide observers to close button and non click elements when they are not the close (delay needs this) if (this.closeButton) this.closeButton.observe('click', this.eventHide); if (this.options.showOn != 'click' && this.hideElement != 'element') { this.eventCheckDelay = this.checkDelay.bindAsEventListener(this); this.element.observe('mouseout', this.eventCheckDelay); } // observe wrapper to raise zIndex this.wrapper.observe('mouseover', function(){ Tips.raise(this.wrapper); }.bind(this)); }, deactivate: function() { if(this.options.showOn == this.options.hideOn) this.element.stopObserving(this.options.showOn, this.eventToggle); else { this.element.stopObserving(this.options.showOn, this.eventShow); this.hideTargets.invoke('stopObserving', this.hideAction, this.eventHide); } if (this.eventPosition) this.element.stopObserving('mousemove', this.eventPosition); if (this.closeButton) this.closeButton.stopObserving(); if (this.eventCheckDelay) this.element.stopObserving('mouseout', this.eventCheckDelay); this.wrapper.stopObserving(); }, showDelayed: function(event){ if (!this.tooltip) this.build(); this.position(event); // follow mouse if (this.wrapper.visible()) return; this.checkDelay(); this.timer = this.show.bind(this).delay(this.options.delay); }, checkDelay: function(){ if (this.timer) { clearTimeout(this.timer); this.timer = null; } }, show: function(){ if (this.wrapper.visible() && this.options.effect != 'appear') return; if (Tips.fixIE) this.iframeShim.show(); Tips.addVisibile(this.wrapper); this.wrapper.show(); if (!this.options.effect) this.tooltip.show(); else { if (this.activeEffect) Effect.Queues.get(this.queue.scope).remove(this.activeEffect); this.activeEffect = Effect[Effect.PAIRS[this.options.effect][0]](this.effectWrapper, { duration: this.options.duration, queue: this.queue}); } }, hide: function(){ this.checkDelay(); if(!this.wrapper.visible()) return; if (!this.options.effect) { if (Tips.fixIE) this.iframeShim.hide(); this.tooltip.hide(); this.wrapper.hide(); Tips.removeVisible(this.wrapper); } else { if (this.activeEffect) Effect.Queues.get(this.queue.scope).remove(this.activeEffect); this.activeEffect = Effect[Effect.PAIRS[this.options.effect][1]](this.effectWrapper, { duration: this.options.duration, queue: this.queue, afterFinish: function(){ if (Tips.fixIE) this.iframeShim.hide(); this.wrapper.hide(); Tips.removeVisible(this.wrapper); }.bind(this)}); } }, toggle: function(event){ if (this.wrapper && this.wrapper.visible()) this.hide(event); else this.showDelayed(event); }, position: function(event){ if (!this.wrapper.hasClassName('highest')) Tips.raise(this.wrapper); var offset = {left: this.options.offset.x, top: this.options.offset.y}; var targetPosition = Position.cumulativeOffset(this.target); var tipd = this.wrapper.getDimensions(); var pos = { left: (this.options.fixed) ? targetPosition[0] : Event.pointerX(event), top: (this.options.fixed) ? targetPosition[1] : Event.pointerY(event) }; // add offsets pos.left += offset.left; pos.top += offset.top; if (this.options.hook) { var dims = {target: this.target.getDimensions(), tip: tipd} var hooks = {target: Position.cumulativeOffset(this.target), tip: Position.cumulativeOffset(this.target)} for(var z in hooks) { switch(this.options.hook[z]){ case 'topRight': hooks[z][0] += dims[z].width; break; case 'topMiddle': hooks[z][0] += (dims[z].width / 2); break; case 'rightMiddle': hooks[z][0] += dims[z].width; hooks[z][1] += (dims[z].height / 2); break; case 'bottomLeft': hooks[z][1] += dims[z].height; break; case 'bottomRight': hooks[z][0] += dims[z].width; hooks[z][1] += dims[z].height; break; case 'bottomMiddle': hooks[z][0] += (dims[z].width / 2); hooks[z][1] += dims[z].height; break; case 'leftMiddle': hooks[z][1] += (dims[z].height / 2); break; } } // move based on hooks pos.left += -1*(hooks.tip[0] - hooks.target[0]); pos.top += -1*(hooks.tip[1] - hooks.target[1]); } // move tooltip when there is a different target if (!this.options.fixed && this.element !== this.target) { var elementPosition = Position.cumulativeOffset(this.element); pos.left += -1*(elementPosition[0] - targetPosition[0]); pos.top += -1*(elementPosition[1] - targetPosition[1]); } if (!this.options.fixed && this.options.viewport) { var scroll = document.viewport.getScrollOffsets(); var viewport = Prototip.viewport.getDimensions(); var pair = {left: 'width', top: 'height'}; for(var z in pair) { if ((pos[z] + tipd[pair[z]] - scroll[z]) > viewport[pair[z]]) pos[z] = pos[z] - tipd[pair[z]] - 2*offset[z]; } } var finalPosition = { left: pos.left + 'px', top: pos.top + 'px' }; this.wrapper.setStyle(finalPosition); if (Tips.fixIE) this.iframeShim.setStyle(finalPosition); } }); /** * @author Ryan Johnson * @copyright 2007 LivePipe LLC * @package Control.Tabs * @license MIT * @url http://livepipe.net/projects/control_tabs/ * @version 2.1.1 */ if(typeof(Control) == 'undefined') var Control = {}; Control.Tabs = Class.create(); Object.extend(Control.Tabs,{ instances: [], findByTabId: function(id){ return Control.Tabs.instances.find(function(tab){ return tab.links.find(function(link){ return link.key == id; }); }); } }); Object.extend(Control.Tabs.prototype,{ initialize: function(tab_list_container,options){ this.activeContainer = false; this.activeLink = false; this.containers = $H({}); this.links = []; Control.Tabs.instances.push(this); this.options = { beforeChange: Prototype.emptyFunction, afterChange: Prototype.emptyFunction, hover: false, linkSelector: 'li a', setClassOnContainer: false, activeClassName: 'active', defaultTab: 'first', autoLinkExternal: true, targetRegExp: /#(.+)$/, showFunction: Element.show, hideFunction: Element.hide }; Object.extend(this.options,options || {}); (typeof(this.options.linkSelector == 'string') ? $(tab_list_container).getElementsBySelector(this.options.linkSelector) : this.options.linkSelector($(tab_list_container)) ).findAll(function(link){ return (/^#/).exec(link.href.replace(window.location.href.split('#')[0],'')); }).each(function(link){ this.addTab(link); }.bind(this)); this.containers.values().each(this.options.hideFunction); if(this.options.defaultTab == 'first') this.setActiveTab(this.links.first()); else if(this.options.defaultTab == 'last') this.setActiveTab(this.links.last()); else this.setActiveTab(this.options.defaultTab); var targets = this.options.targetRegExp.exec(window.location); if(targets && targets[1]){ targets[1].split(',').each(function(target){ this.links.each(function(target,link){ if(link.key == target){ this.setActiveTab(link); throw $break; } }.bind(this,target)); }.bind(this)); } if(this.options.autoLinkExternal){ $A(document.getElementsByTagName('a')).each(function(a){ if(!this.links.include(a)){ var clean_href = a.href.replace(window.location.href.split('#')[0],''); if(clean_href.substring(0,1) == '#'){ if(this.containers.keys().include(clean_href.substring(1))){ $(a).observe('click',function(event,clean_href){ this.setActiveTab(clean_href.substring(1)); }.bindAsEventListener(this,clean_href)); } } } }.bind(this)); } }, addTab: function(link){ this.links.push(link); link.key = link.getAttribute('href').replace(window.location.href.split('#')[0],'').split('/').last().replace(/#/,''); this.containers[link.key] = $(link.key); link[this.options.hover ? 'onmouseover' : 'onclick'] = function(link){ if(window.event) Event.stop(window.event); this.setActiveTab(link); return false; }.bind(this,link); }, setActiveTab: function(link){ if(!link) return; if(typeof(link) == 'string'){ this.links.each(function(_link){ if(_link.key == link){ this.setActiveTab(_link); throw $break; } }.bind(this)); }else{ this.notify('beforeChange',this.activeContainer); if(this.activeContainer) this.options.hideFunction(this.activeContainer); this.links.each(function(item){ (this.options.setClassOnContainer ? $(item.parentNode) : item).removeClassName(this.options.activeClassName); }.bind(this)); (this.options.setClassOnContainer ? $(link.parentNode) : link).addClassName(this.options.activeClassName); this.activeContainer = this.containers[link.key]; this.activeLink = link; this.options.showFunction(this.containers[link.key]); this.notify('afterChange',this.containers[link.key]); } }, next: function(){ this.links.each(function(link,i){ if(this.activeLink == link && this.links[i + 1]){ this.setActiveTab(this.links[i + 1]); throw $break; } }.bind(this)); return false; }, previous: function(){ this.links.each(function(link,i){ if(this.activeLink == link && this.links[i - 1]){ this.setActiveTab(this.links[i - 1]); throw $break; } }.bind(this)); return false; }, first: function(){ this.setActiveTab(this.links.first()); return false; }, last: function(){ this.setActiveTab(this.links.last()); return false; }, notify: function(event_name){ try{ if(this.options[event_name]) return [this.options[event_name].apply(this.options[event_name],$A(arguments).slice(1))]; }catch(e){ if(e != $break) throw e; else return false; } } }); if(typeof(Object.Event) != 'undefined') Object.Event.extend(Control.Tabs); // now AA specific functions function AA_HtmlToggle(link_id, link_text_1, div_id_1, link_text_2, div_id_2) { if ( $(div_id_1).visible() ) { $(div_id_1).hide(); $(div_id_2).show(); $(link_id).update(link_text_2); } else { $(div_id_2).hide(); $(div_id_1).show(); $(link_id).update(link_text_1); } } function AA_HtmlAjaxToggle(link_id, link_text_1, div_id_1, link_text_2, div_id_2, url) { if ( $(div_id_1).visible() ) { $(div_id_1).hide(); $(div_id_2).show(); // not loaded from remote url, yet? if ( $(div_id_2).readAttribute('aa_loaded') != '1') { $(div_id_2).setAttribute('aa_loaded', '1'); AA_Ajax(div_id_2, url); } $(link_id).update(link_text_2); } else { $(div_id_2).hide(); $(div_id_1).show(); $(link_id).update(link_text_1); } } function AA_Ajax(div, url, param) { $(div).update(AA_Config.loader); new Ajax.Updater(div, url, param); } function AA_AjaxInsert(a_obj, form_url) { var new_div_id = $(a_obj).identify() + '_ins'; if ( $(new_div_id) == null ) { var new_div = new Element('div', { 'id': new_div_id}); $(a_obj).update(AA_Config.icon_close); new Insertion.After(a_obj, new_div); AA_Ajax(new_div, form_url); } else { $(a_obj).update(AA_Config.icon_new); $(new_div_id).remove(); } } /** Send the form by AJAX and on success displays the ok_html text * @param id - form id * @param loader_id - id of the html element, where you want to display the loader gif * - the button itself could be used here (not the form!) * @param ok_html - what text (html) should be displayed after the success * Note, that the form action atribute must be RELATIVE (not with 'http://...') */ function SendAjaxForm(id) { $(id).insert(AA_Config.loader); $(id).request({encoding: 'windows-1250', onComplete: function(transport){ new Insertion.After($(id).up('div'), new Element('div').update(transport.responseText)); // close form and display add icon AA_AjaxInsert($(id).up('div').previous(), ''); }}); } /** Deprecated * For backward compatibility only. Use $(element).update('text') from * aajslib.php instead. */ function SetContent(id,txt) { // function replaces html code of a an HTML element (identified by id) // by another code $(id).update(txt); } /** This code comes from: http://www.devpro.it/JSL/JSLOpenSource.js */ /** We used it for encodeURIComponent implementation for older browsers // (C) Andrea Giammarchi - JSL 1.4b /* not sure, why this was included, but probably it is nice code function $JSL(){ this.charCodeAt=function(str){return $JSL.$charCodeAt(str.charCodeAt(0))}; this.$charCodeAt=function(i){ var str=i.toString(16).toUpperCase(); return str.length<2?"0"+str:str; }; this.encodeURI=function(str){return str.replace(/"/g,"%22").replace(/\\/g,"%5C")}; this.$encodeURI=function(str){return $JSL.$charCodeAt(str)}; this.$encodeURIComponent=function(a,b){ var i=b.charCodeAt(0),str=[]; if(i<128) str.push(i); else if(i<2048) str.push(0xC0+(i>>6),0x80+(i&0x3F)); else if(i<65536) str.push(0xE0+(i>>12),0x80+(i>>6&0x3F),0x80+(i&0x3F)); else str.push(0xF0+(i>>18),0x80+(i>>12&0x3F),0x80+(i>>6&0x3F),0x80+(i&0x3F)); return "%"+str.map($JSL.$encodeURI).join("%"); }; };$JSL=new $JSL(); if(typeof(encodeURI)==="undefined"){function encodeURI(str){ var elm=/([\x00-\x20]|[\x25|\x3C|\x3E|\x5B|\x5D|\x5E|\x60|\x7F]|[\x7B-\x7D]|[\x80-\uFFFF])/g; return $JSL.encodeURI(str.toString().replace(elm,$JSL.$encodeURIComponent)); }}; if(typeof(encodeURIComponent)==="undefined"){function encodeURIComponent(str){ var elm=/([\x23|\x24|\x26|\x2B|\x2C|\x2F|\x3A|\x3B|\x3D|\x3F|\x40])/g; return $JSL.encodeURI(encodeURI(str).replace(elm,function(a,b){return "%"+$JSL.charCodeAt(b)})); }}; */ /* function writeProposal(divid, item_id, fid, text) { var divtag = document.getElementById(divid); var divcontent = divtag.innerHTML; SetContent(divid, text); convertToForm(divtag, item_id, fid); proposeChange(divid, item_id, fid); //SetContent(divid, divcontent); } */ /* function convertToForm(divtag, item_id, fid) { var divcontent = divtag.innerHTML; if ((divcontent.substring(0,6) == '= 60) || (fid=='edit_note......1')) { formhtml = ''; } else { formhtml = ''; } formhtml += ' '; formhtml += ' '; formhtml += ' '; SetContent(divtag.getAttribute('id'), formhtml); } */ function proposeChange(combi_id, item_id, fid, change) { var valdivid = 'ajaxv_'+combi_id; var alias_name = $(valdivid).readAttribute('aaalias'); if ( typeof do_change == 'undefined') { do_change = 1; } new Ajax.Request(AA_Config.AA_INSTAL_PATH + 'misc/proposefieldchange.php', { parameters: { field_id: fid, item_id: item_id, alias_name: alias_name, content: $F('ajaxi_'+combi_id), // encodeURIComponent(document.getElementById('ajaxi_'+combi_id).value) do_change: do_change }, onSuccess: function(transport) { if ( change ) { $('ajaxv_'+combi_id).update(transport.responseText); // new value $('ajaxch_'+combi_id).update(''); } else { $('ajaxv_'+combi_id).update( $('ajaxh_'+combi_id).value); // restore old content $('ajaxch_'+combi_id).update($('ajaxch_'+combi_id).innerHTML + 'Navrhovaná změna: ' + transport.responseText +'
'); } $(valdivid).setAttribute("aaedit", "0"); } }); } /** grabs Item_id from aa variable in AA form */ //function GetItemIdFromId4Form(input_id) { // // aa[i][][] // var parsed = input_id.split("]"); // return parsed[0].substring(4); //} // ///** Grabs Field id from aa variable in AA form */ //function GetFieldIdFromId4Form(input_id) { // // aa[i][][] // var parsed = input_id.split("]"); // var dirty_field_id = parsed[1].substring(1); // dirty_field_id = dirty_field_id.replace('__', '..'); // dirty_field_id = dirty_field_id.replace('__', '..'); // dirty_field_id = dirty_field_id.replace('__', '..'); // dirty_field_id = dirty_field_id.replace('__', '..'); // dirty_field_id = dirty_field_id.replace('__', '..'); // dirty_field_id = dirty_field_id.replace('__', '..'); // dirty_field_id = dirty_field_id.replace('__', '..'); // dirty_field_id = dirty_field_id.replace('__', '..'); // dirty_field_id = dirty_field_id.replace('._', '..'); // return dirty_field_id; //} function AcceptChange(change_id, divid) { new Ajax.Request(AA_Config.AA_INSTAL_PATH + 'misc/proposefieldchange.php', { parameters: { change_id: change_id }, onSuccess: function(transport) { $(divid).update(transport.responseText); // new value $('zmena_cmds'+divid).update(''); $('zmena'+divid).update(''); } }); } function CancelChanges(item_id, fid, divid) { new Ajax.Request(AA_Config.AA_INSTAL_PATH + 'misc/proposefieldchange.php', { parameters: { cancel_changes: 1, field_id: fid, item_id: item_id }, onSuccess: function(transport) { $(divid).update(transport.responseText); // new value $('zmena_cmds'+divid).update(''); $('zmena'+divid).update(''); } }); } function isArray(obj) { return (obj.constructor.toString().indexOf("Array") != -1); } function displayInput(valdivid, item_id, fid) { // already editing ? switch ($(valdivid).readAttribute('aaedit')) { case '1': return; case '2': $(valdivid).setAttribute("aaedit", "0"); // the state 2 is needed for Firefox 3.0 - Storno not works return; } var alias_name = $(valdivid).readAttribute('aaalias'); $(valdivid).update(''); new Ajax.Request( AA_Config.AA_INSTAL_PATH + 'misc/proposefieldchange.php', { parameters: { field_id: fid, item_id: item_id, alias_name: alias_name, aaaction: 'DISPLAYINPUT' }, onSuccess: function(transport) { $(valdivid).update(transport.responseText); // new value $(valdivid).setAttribute('aaedit', '1'); } }); } function _getInputContent(input_id) { var content = Array(); var i = 0; var add_empty = false; if ( $(input_id+'[]') != null ) { if ( (typeof($F(input_id+'[]')) == 'undefined') || ($F(input_id+'[]')==null)) { // unchecked checkbox is undefined content.push('0'); } else if (isArray($F(input_id+'[]'))) { content = content.concat($F(input_id+'[]')); } else { content.push($F(input_id+'[]')); } } while ( $(input_id+'['+ i +']') != null) { if ((typeof($F(input_id+'['+ i +']')) == 'undefined') || ($F(input_id+'['+ i +']')==null) ) { // unchecked checkbox is undefined add_empty = true; } else if (isArray($F(input_id+'['+ i +']'))) { content = content.concat($F(input_id+'['+ i +']')); } else { content.push($F(input_id+'['+ i +']')); } i++; } if ( add_empty && content.count < 1 ) { content.push(''); // it is different from push('0') above, because single chbox is 1|0, but multi is value..value|'' } return content; } /** This function replaces the older one - proposeChange * The main chane is, that now we use standard AA input names: * aa[i][][] */ function DoChange(input_id) { var valdivid = 'ajaxv_'+input_id; var alias_name = $(valdivid).readAttribute('aaalias'); var content = _getInputContent(input_id); $(valdivid).update(''); new Ajax.Request(AA_Config.AA_INSTAL_PATH + 'misc/proposefieldchange.php', { parameters: { input_id: input_id, alias_name: alias_name, aaaction: 'DOCHANGE', 'content[]': content // encodeURIComponent(document.getElementById('ajaxi_'+combi_id).value) }, onSuccess: function(transport) { $('ajaxv_'+input_id).update(transport.responseText); // new value $('ajaxch_'+input_id).update(''); $(valdivid).setAttribute("aaedit", "0"); } }); } /** updates database for given iten and field by Ajax */ function DoChangeLive(input_id) { $$('*[id ^="'+input_id+'"]').invoke('addClassName', 'updating'); var content = _getInputContent(input_id); new Ajax.Request(AA_Config.AA_INSTAL_PATH + 'misc/proposefieldchange.php', { parameters: { input_id: input_id, alias_name: '', aaaction: 'DOCHANGE', 'content[]': content // encodeURIComponent(document.getElementById('ajaxi_'+combi_id).value) }, onSuccess: function(transport) { $$('*[id ^="'+input_id+'"]').invoke('removeClassName', 'updating'); } }); } /* Cookies */ function SetCookie(name, value) { var expires = new Date(); expires.setTime (expires.getTime() + (1000 * 60 * 60 * 24 * 1)); // a day document.cookie = name + "=" + escape(value) + "; expires=" + expires.toGMTString() + "; path=/"; // + ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) // + ((path == null) ? "" : ("; path=" + path)) // + ((domain == null) ? "" : ("; domain=" + domain)) // + ((secure == true) ? "; secure" : ""); } function getCookieVal(offset) { var endstr = document.cookie.indexOf(";", offset); if (endstr == -1) endstr = document.cookie.length; return unescape(document.cookie.substring(offset, endstr)); } function GetCookie(name) { var arg = name + "="; var alen = arg.length; var clen = document.cookie.length; var i = 0; while (i < clen) { var j = i + alen; if (document.cookie.substring(i, j) == arg) return getCookieVal(j); i = document.cookie.indexOf(" ", i) + 1; if (i == 0) break; } return null; } function DeleteCookie(name) { var exp = new Date(); exp.setTime (exp.getTime() - 1); var cval = GetCookie (name); document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString() + "; path=/"; } function ToggleCookie(name,val) { if ( GetCookie(name) != val ) SetCookie(name,val); else DeleteCookie(name); }