function type(val){if(val==null)return null;if(typeof(val)=='object'){if(val.nodeType)return'element';var otype=String(val.constructor).match(/function\s+(\w+)/);if(val.type)return'event';else if(otype)return otype[1];else return null;}else{return typeof(val);}} function contains(array,item){for(var i=0;i=0){return url.substr(hash_pos+1);} return'';} function targetNode(){fragment_id=fragment(document.location.href);if(fragment_id){return $('#'+fragment_id);}} var encode={json:function(data){throw EncodeError("Not Implemented!");},html:function(string){var div=document.createElement('div');var text=document.createTextNode(string);div.appendChild(text);return div.innerHTML;}} var decode={json:function(string){var data;eval("data = "+string);return data;},html:function(html){var div=Element('div');div.innerHTML=html.replace(/<\/?[^>]+>/gi,'');return div.childNodes[0].nodeValue;}} String.prototype.strip=function(characters){if(!characters)characters=[' '];else if(type(characters)=='string')characters=characters.split('');var end;var start;for(start=0;start=0;end--){if(!contains(characters,this.charAt(end-1)))break;} return this.substring(start,end);} String.prototype.endswith=function(string){return this.substring(this.length-string.length)==string;} String.prototype.startswith=function(string){return this.substring(0,string.length)==string;} if(!window['Node']){window.Node={};Node.ELEMENT_NODE=1;Node.ATTRIBUTE_NODE=2;Node.TEXT_NODE=3;Node.CDATA_SECTION_NODE=4;Node.ENTITY_REFERENCE_NODE=5;Node.ENTITY_NODE=6;Node.PROCESSING_INSTRUCTION_NODE=7;Node.COMMENT_NODE=8;Node.DOCUMENT_NODE=9;Node.DOCUMENT_TYPE_NODE=10;Node.DOCUMENT_FRAGMENT_NODE=11;Node.NOTATION_NODE=12;} function Element(nodetype,text,styles){var elem;if(type(nodetype)=='string')nodetype=components(nodetype);if(type(nodetype)=='Object'){elem=$(document.createElement(nodetype.tag||'div'));if(nodetype.id)elem.id=nodetype.id;if(nodetype.classes){for(var i=0;i=0;i--){this.events[etype][i].call(this,e);if(!e.neighbourly)break;}}} if(propagate){var node=this;while(node!=document.body&&!e.stopped){node=node.parentNode;$(node).trigger(etype,true,e);}}});Element.addMethod('unevent',function(etype,callback){if(!this.events)return;if(!this.events[etype])return;var idx=find(this.events[etype],callback);if(idx<0)return;if(this.addEventListener){this.removeEventListener(etype,this._events[etype][idx],false);}else{this.detachEvent("on"+etype,this._events[etype][idx]);} if(idx>=0){this.events[etype].splice(idx,1);this._events[etype].splice(idx,1);} if(etype=='droppedon'){idx=find(DroppedOn,this);if(idx>=0)DroppedOn.splice(idx,1);}});var ControlKey=256;var Keys={};Keys.PAGE_UP=ControlKey+33;Keys.PAGE_DOWN=ControlKey+34;Keys.HOME=ControlKey+36;Keys.END=ControlKey+35;Keys.DOWN_ARROW=ControlKey+40;Keys.UP_ARROW=ControlKey+38;Keys.LEFT_ARROW=ControlKey+37;Keys.RIGHT_ARROW=ControlKey+39;Keys.INSERT=ControlKey+45;Keys.DELETE=ControlKey+46;Keys.BACKSPACE=ControlKey+8;Keys.ENTER=ControlKey+13;Keys.TAB=ControlKey+9;Keys.ESCAPE=ControlKey+27;Keys.NUM_LOCK=ControlKey+144;Keys.SHIFT=ControlKey+16;Keys.CTRL=ControlKey+17;Keys.ALT=ControlKey+18;Keys.SCROLL_LOCK=ControlKey+145;Keys.PAUSE=ControlKey+19;Keys.CAPS_LOCK=ControlKey+20;Keys.FUNCTION=[];for(var i=0;i<12;i++){Keys.FUNCTION.push(ControlKey+112+i);} function _mousePos(event){var x=0;var y=0;if(event.pageX||event.pageY){x=event.pageX;y=event.pageY;}else if(event.clientX||event.clientY){x=event.clientX+document.body.scrollLeft+document.documentElement.scrollLeft;y=event.clientY+document.body.scrollTop+document.documentElement.scrollTop;} return[x,y];} Event.addMethod('normalizeProperties',function(){this.time=new Date();if(!this.target)this.target=this.srcElement;if(this.relatedTarget)this.other=this.relatedTarget;else if(this.type=='mouseout')this.other=this.toElement;else if(this.type=='mouseover')this.other=this.fromElement;$(this.target);$(this.other);this.mouse={};var xy=_mousePos(this);this.mouse.x=xy[0];this.mouse.y=xy[1];if(this.which==1)this.mouse.primary=true;else if(this.which==2)this.mouse.middle=true;else if(this.which==3)this.mouse.secondary=true;else{if(this.button&1)this.mouse.primary=true;if(this.button&4)this.mouse.middle=true;if(this.button&2)this.mouse.secondary=true;} var code=this.keyCode||this.which;if(this.type=='keydown'){if((code>=48&&code<=90)||code==32){this.key=String.fromCharCode(code);} else this.key=ControlKey+code;} if(this.type=='keyup'){if((code>=48&&code<=90)||code==32){this.key=String.fromCharCode(code);} else this.key=ControlKey+code;} if(this.type=='keypress'){if(code<32||code>126)this.key=null else this.key=String.fromCharCode(code);}});Event.addMethod('remove',function(){this.currentTarget.unevent(this.type,this.callback);});var DroppedOn=[];Element.addMethod('event',function(etype,callback,oneoff){var elem=this;var callfunc=function(e){e=$(e||window.event);e.callback=callback;if(!e.currentTarget)e.currentTarget=elem;e.normalizeProperties();elem.trigger(e.type,false,e);if(e.type=='mouseout'){if(!e.target.outside(elem)&&e.other&&e.other.outside(elem)){elem.trigger('mouseleave',false,e);}} if(e.type=='mouseover'){if(!e.target.outside(elem)&&e.other&&e.other.outside(elem)){elem.trigger('mouseenter',false,e);}} if(oneoff)e.remove();};if(!this.events){this.events={};this._events={};} if(!this.events[etype]||!this.events[etype].length){this.events[etype]=[];this._events[etype]=[];} var addEvent=function(elem,etype,callfunc){if(elem.addEventListener)elem.addEventListener(etype,callfunc,false);else elem.attachEvent('on'+etype,callfunc);} if(etype=='mouseenter')addEvent(this,'mouseover',callfunc);else if(etype=='mouseleave')addEvent(this,'mouseout',callfunc);else addEvent(this,etype,callfunc);if(etype=='droppedon')DroppedOn.push(this);this.events[etype].push(callback);this._events[etype].push(callfunc);});Element.addMethod('append',function(nodetype,text,styles){var elem=Element(nodetype,text,styles);this.appendChild(elem);return elem;});Element.addMethod('prepend',function(nodetype,text,styles){var elem=Element(nodetype,text,styles) this.insertBefore(elem,this.firstChild);return elem;});Element.addMethod('preinsert',function(nodetype,text,styles){var elem=Element(nodetype,text,styles) this.parentNode.insertBefore(elem,this);return elem;});Element.addMethod('postinsert',function(nodetype,text,styles){var elem=Element(nodetype,text,styles) if(this.nextSibling){this.parentNode.insertBefore(elem,this.nextSibling);}else{this.parentNode.appendChild(elem);} return elem;});Element.addMethod('unlink',function(){while(this.firstChild){this.parentNode.insertBefore(this.firstChild,this);} this.remove();});Element.addMethod('remove',function(nodetype){if(nodetype==null){this.parentNode.removeChild(this);}else{var elems=this.$$(nodetype);for(var i=0;i=simple.length)break;} while(true){c=simple.charAt(i);if(start=='['){if(c==']'){i++;break;}} else if(contains(['.','[','#'],c))break;if(++i>=simple.length)break;} var match=simple.substring(0,i);simple=simple.substring(match.length);if(start)match=match.substring(1);if(!start)tag=match;if(start=='#')id=match;if(start=='.')classes.push(match);if(start=='['){var attr=match.split('=',2);if(attr[1])attrs[attr[0]]=attr[1].substring(0,attr[1].length-1);else attrs[attr[0].substring(0,attr[0].length-1)]=null;}} return{tag:tag,id:id,classes:classes,attrs:attrs};} function simples(selector){var s=[];while(selector){var combinator=/ *[><\+]* */.exec(selector)[0];selector=selector.substring(combinator.length);var simple;if(selector.indexOf(' ')>=0){simple=selector.substring(0,selector.indexOf(' '));selector=selector.substring(selector.indexOf(' '));} else{simple=selector;selector='';} combinator=combinator.strip();if(!combinator)combinator=null;s.push([combinator,simple]);} return s;} function $$simple(simple,parent,combinator){if(!simple)return null;var elems=[];$(parent);var comps=components(simple);if(combinator=='+'){elems=[$(parent.nextSibling)];if(elems[0].nodeName.charAt(0)=='#'){elems=[$(elems[0].nextSibling)];}}else if(combinator=='<'){elems=[$(parent.parentNode)];}else{if(comps.id){var elem=$(document.getElementById(comps.id));if(elem)elems=[elem];else elems=[]}else{var elems_=parent.getElementsByTagName(comps.tag||'*');for(var i=0;i'&&parent!=elems[i].parentNode)drop=true;if(!drop)elems_.push(elems[i]);} elems=elems_;return elems;} function $$single(selector,parent){var label;$(parent);if(!selector)return[];var pool=[parent];var pool_=[];var simps=simples(selector);for(var i in simps){combinator=simps[i][0];simple=simps[i][1];pool_=[];for(var j in pool){pool_=pool_.concat($$simple(simple,pool[j],combinator));} pool=pool_;if(!pool.length)break;} for(var i in pool)$(pool[i]);return pool;} function $$(selector,parent){if(parent==null)parent=document;if(selector==null){return[];}else if(type(selector)=='Array'){for(var i=0;ibr[0])return false;if(point[1]br[1])return false;return true;} function _cornerIn(tl1,br1,tl2,br2){var corners=[tl1,[br1[0],tl1[1]],br1,[tl1[0],br1[1]]];for(var i=0;i=1){clearInterval(interval);update(1);if(oncomplete)oncomplete.call(elem);}} interval=setInterval(anim,frameDuration);var animation={pause:function(){clearInterval(interval);}};if(!this._animations)this._animations=[];this._animations.push(animation);});Element.addMethod('stopAnimations',function(){if(!this._animations)return;for(var i=0;i=0&¶ms.href.indexOf('...')>=0){this.event('mouseover',unmungeEmail);}};Smarts['form']=function(){this.event('submit',this.clearEmptyInputs);if(this.hasClass('disabled')){var inputs=this.$$('input, select, textarea');for(j=0;j