(function(){if(typeof Spry=="undefined")window.Spry={};if(!Spry.Utils)Spry.Utils={};Spry.$=function(element){if(arguments.length>1){for(var i=0,elements=[],length=arguments.length;i<length;i++)elements.push(Spry.$(arguments[i]));return elements}if(typeof element=='string')element=document.getElementById(element);return element};Spry.Utils.getAttribute=function(ele,name){ele=Spry.$(ele);if(!ele||!name)return null;try{var value=ele.getAttribute(name)}catch(e){value==undefined}if(value==undefined&&name.search(/:/)!=-1){try{var value=ele.getAttribute(name.replace(/:/,""))}catch(e){value==undefined}}return value};Spry.Utils.setAttribute=function(ele,name,value){ele=Spry.$(ele);if(!ele||!name)return;if(name=="class")ele.className=value;else{try{ele.setAttribute(name,value)}catch(e){}if(name.search(/:/)!=-1&&ele.getAttribute(name)==undefined)ele.setAttribute(name.replace(/:/,""),value)}};Spry.Utils.removeAttribute=function(ele,name){ele=Spry.$(ele);if(!ele||!name)return;try{ele.removeAttribute(name)}catch(e){}if(name.search(/:/)!=-1)ele.removeAttribute(name.replace(/:/,""));if(name=="class")ele.removeAttribute("className")};Spry.Utils.addClassName=function(ele,className){ele=Spry.$(ele);if(!ele||!className||(ele.className&&ele.className.search(new RegExp("\\b"+className+"\\b"))!=-1))return;ele.className+=(ele.className?" ":"")+className};Spry.Utils.removeClassName=function(ele,className){ele=Spry.$(ele);if(Spry.Utils.hasClassName(ele,className))ele.className=ele.className.replace(new RegExp("\\s*\\b"+className+"\\b","g"),"")};Spry.Utils.toggleClassName=function(ele,className){if(Spry.Utils.hasClassName(ele,className))Spry.Utils.removeClassName(ele,className);else Spry.Utils.addClassName(ele,className)};Spry.Utils.hasClassName=function(ele,className){ele=Spry.$(ele);if(!ele||!className||!ele.className||ele.className.search(new RegExp("\\b"+className+"\\b"))==-1)return false;return true};Spry.Utils.camelizeString=function(str){var cStr="";var a=str.split("-");for(var i=0;i<a.length;i++){var s=a[i];if(s)cStr=cStr?(cStr+s.charAt(0).toUpperCase()+s.substring(1)):s}return cStr};Spry.Utils.styleStringToObject=function(styleStr){var o={};if(styleStr){var pvA=styleStr.split(";");for(var i=0;i<pvA.length;i++){var pv=pvA[i];if(pv&&pv.indexOf(":")!=-1){var nvA=pv.split(":");var n=nvA[0].replace(/^\s*|\s*$/g,"");var v=nvA[1].replace(/^\s*|\s*$/g,"");if(n&&v)o[Spry.Utils.camelizeString(n)]=v}}}return o};Spry.Utils.addEventListener=function(element,eventType,handler,capture){try{if(!Spry.Utils.eventListenerIsBoundToElement(element,eventType,handler,capture)){element=Spry.$(element);handler=Spry.Utils.bindEventListenerToElement(element,eventType,handler,capture);if(element.addEventListener)element.addEventListener(eventType,handler,capture);else if(element.attachEvent)element.attachEvent("on"+eventType,handler)}}catch(e){}};Spry.Utils.removeEventListener=function(element,eventType,handler,capture){try{element=Spry.$(element);handler=Spry.Utils.unbindEventListenerFromElement(element,eventType,handler,capture);if(element.removeEventListener)element.removeEventListener(eventType,handler,capture);else if(element.detachEvent)element.detachEvent("on"+eventType,handler)}catch(e){}};Spry.Utils.eventListenerHash={};Spry.Utils.nextEventListenerID=1;Spry.Utils.getHashForElementAndHandler=function(element,eventType,handler,capture){var hash=null;element=Spry.$(element);if(element){if(typeof element.spryEventListenerID=="undefined")element.spryEventListenerID="e"+(Spry.Utils.nextEventListenerID++);if(typeof handler.spryEventHandlerID=="undefined")handler.spryEventHandlerID="h"+(Spry.Utils.nextEventListenerID++);hash=element.spryEventListenerID+"-"+handler.spryEventHandlerID+"-"+eventType+(capture?"-capture":"")}return hash};Spry.Utils.eventListenerIsBoundToElement=function(element,eventType,handler,capture){element=Spry.$(element);var hash=Spry.Utils.getHashForElementAndHandler(element,eventType,handler,capture);return Spry.Utils.eventListenerHash[hash]!=undefined};Spry.Utils.bindEventListenerToElement=function(element,eventType,handler,capture){element=Spry.$(element);var hash=Spry.Utils.getHashForElementAndHandler(element,eventType,handler,capture);if(Spry.Utils.eventListenerHash[hash])return Spry.Utils.eventListenerHash[hash];return Spry.Utils.eventListenerHash[hash]=function(e){e=e||window.event;if(!e.preventDefault)e.preventDefault=function(){this.returnValue=false};if(!e.stopPropagation)e.stopPropagation=function(){this.cancelBubble=true};var result=handler.call(element,e);if(result==false){e.preventDefault();e.stopPropagation()}return result}};Spry.Utils.unbindEventListenerFromElement=function(element,eventType,handler,capture){element=Spry.$(element);var hash=Spry.Utils.getHashForElementAndHandler(element,eventType,handler,capture);if(Spry.Utils.eventListenerHash[hash]){handler=Spry.Utils.eventListenerHash[hash];Spry.Utils.eventListenerHash[hash]=undefined}return handler};Spry.Utils.cancelEvent=function(e){if(e.preventDefault)e.preventDefault();else e.returnValue=false;if(e.stopPropagation)e.stopPropagation();else e.cancelBubble=true;return false};Spry.Utils.addLoadListener=function(handler){if(typeof window.addEventListener!='undefined')window.addEventListener('load',handler,false);else if(typeof document.addEventListener!='undefined')document.addEventListener('load',handler,false);else if(typeof window.attachEvent!='undefined')window.attachEvent('onload',handler)};Spry.Utils.isDescendant=function(parent,child){if(parent&&child){child=child.parentNode;while(child){if(parent==child)return true;child=child.parentNode}}return false};Spry.Utils.getAncestor=function(ele,selector){ele=Spry.$(ele);if(ele){var s=Spry.$$.tokenizeSequence(selector?selector:"*")[0];var t=s?s[0]:null;if(t){var p=ele.parentNode;while(p){if(t.match(p))return p;p=p.parentNode}}}return null};Spry.$$=function(selectorSequence,rootNode){var matches=[];Spry.$$.addExtensions(matches);if(typeof arguments[0]=="object"){for(var i=0;i<arguments.length;i++){if(arguments[i].constructor==Array)matches.push.apply(matches,arguments[i]);else matches.push(arguments[i])}return matches}if(!rootNode)rootNode=document;else rootNode=Spry.$(rootNode);var sequences=Spry.$$.tokenizeSequence(selectorSequence);++Spry.$$.queryID;var nid=0;var ns=sequences.length;for(var i=0;i<ns;i++){var m=Spry.$$.processTokens(sequences[i],rootNode);var nm=m.length;for(var j=0;j<nm;j++){var n=m[j];if(!n.spry$$ID){n.spry$$ID=++nid;matches.push(n)}}}var nm=matches.length;for(i=0;i<nm;i++)matches[i].spry$$ID=undefined;return matches};Spry.$$.cache={};Spry.$$.queryID=0;Spry.$$.Token=function(){this.type=Spry.$$.Token.SELECTOR;this.name="*";this.id="";this.classes=[];this.attrs=[];this.pseudos=[]};Spry.$$.Token.Attr=function(n,v){this.name=n;this.value=v?new RegExp(v):undefined};Spry.$$.Token.PseudoClass=function(pstr){this.name=pstr.replace(/\(.*/,"");this.arg=pstr.replace(/^[^\(\)]*\(?\s*|\)\s*$/g,"");this.func=Spry.$$.pseudoFuncs[this.name]};Spry.$$.Token.SELECTOR=0;Spry.$$.Token.COMBINATOR=1;Spry.$$.Token.prototype.match=function(ele,nameAlreadyMatches){if(this.type==Spry.$$.Token.COMBINATOR)return false;if(!nameAlreadyMatches&&this.name!='*'&&this.name!=ele.nodeName.toLowerCase())return false;if(this.id&&this.id!=ele.id)return false;var classes=this.classes;var len=classes.length;for(var i=0;i<len;i++){if(!ele.className||!classes[i].value.test(ele.className))return false}var attrs=this.attrs;len=attrs.length;for(var i=0;i<len;i++){var a=attrs[i];var an=ele.attributes.getNamedItem(a.name);if(!an||(!a.value&&an.nodeValue==undefined)||(a.value&&!a.value.test(an.nodeValue)))return false}var ps=this.pseudos;var len=ps.length;for(var i=0;i<len;i++){var p=ps[i];if(p&&p.func&&!p.func(p.arg,ele,this))return false}return true};Spry.$$.Token.prototype.getNodeNameIfTypeMatches=function(ele){var nodeName=ele.nodeName.toLowerCase();if(this.name!='*'){if(this.name!=nodeName)return null;return this.name}return nodeName};Spry.$$.escapeRegExpCharsRE=/\/|\.|\*|\+|\(|\)|\[|\]|\{|\}|\\|\|/g;Spry.$$.tokenizeSequence=function(s){var cc=Spry.$$.cache[s];if(cc)return cc;var tokenExpr=/(\[[^\"'~\^\$\*\|\]=]+([~\^\$\*\|]?=\s*('[^']*'|"[^"]*"|[^"'\]]+))?\s*\])|((:[^\.#:\s,>~\+\[\]]+\(([^\(\)]+|\([^\(\)]*\))*\))|[\.#:]?[^\.#:\s,>~\+\[\]]+)|(\s*[\s,>~\+]\s*)/g;var tkn=new Spry.$$.Token;var sequence=[];sequence.push(tkn);var tokenSequences=[];tokenSequences.push(sequence);s=s.replace(/^\s*|\s*$/,"");var expMatch=tokenExpr.exec(s);while(expMatch){var tstr=expMatch[0];var c=tstr.charAt(0);switch(c){case'.':tkn.classes.push(new Spry.$$.Token.Attr("class","\\b"+tstr.substr(1)+"\\b"));break;case'#':tkn.id=tstr.substr(1);break;case':':tkn.pseudos.push(new Spry.$$.Token.PseudoClass(tstr));break;case'[':var attrComps=tstr.match(/\[([^\"'~\^\$\*\|\]=]+)(([~\^\$\*\|]?=)\s*('[^']*'|"[^"]*"|[^"'\]]+))?\s*\]/);var name=attrComps[1];var matchType=attrComps[3];var val=attrComps[4];if(val){val=val.replace(/^['"]|['"]$/g,"");val=val.replace(Spry.$$.escapeRegExpCharsRE,'\\$&')}var matchStr=undefined;switch(matchType){case"=":matchStr="^"+val+"$";break;case"^=":matchStr="^"+val;break;case"$=":matchStr=val+"$";break;case"~=":case"|=":matchStr="\\b"+val+"\\b";break;case"*=":matchStr=val;break}tkn.attrs.push(new Spry.$$.Token.Attr(name,matchStr));break;default:var combiMatch=tstr.match(/^\s*([\s,~>\+])\s*$/);if(combiMatch){if(combiMatch[1]==','){sequence=new Array;tokenSequences.push(sequence);tkn=new Spry.$$.Token;sequence.push(tkn)}else{tkn=new Spry.$$.Token;tkn.type=Spry.$$.Token.COMBINATOR;tkn.name=combiMatch[1];sequence.push(tkn);tkn=new Spry.$$.Token();sequence.push(tkn)}}else tkn.name=tstr.toLowerCase();break}expMatch=tokenExpr.exec(s)}Spry.$$.cache[s]=tokenSequences;return tokenSequences};Spry.$$.combinatorFuncs={" ":function(nodes,token){var uid=++Spry.$$.uniqueID;var results=[];var nn=nodes.length;for(var i=0;i<nn;i++){var n=nodes[i];if(uid!=n.spry$$uid){var ea=nodes[i].getElementsByTagName(token.name);var ne=ea.length;for(var j=0;j<ne;j++){var e=ea[j];if(e.nodeType==1&&token.match(e,true))results.push(e);e.spry$$uid=uid}}}return results},">":function(nodes,token){var results=[];var nn=nodes.length;for(var i=0;i<nn;i++){var n=nodes[i].firstChild;while(n){if(n.nodeType==1&&token.match(n))results.push(n);n=n.nextSibling}}return results},"+":function(nodes,token){var results=[];var nn=nodes.length;for(var i=0;i<nn;i++){var n=nodes[i].nextSibling;while(n&&n.nodeType!=1)n=n.nextSibling;if(n&&token.match(n))results.push(n)}return results},"~":function(nodes,token){var uid=++Spry.$$.uniqueID;var results=[];var nn=nodes.length;for(var i=0;i<nn;i++){var n=nodes[i].nextSibling;while(n){if(n.nodeType==1){if(uid==n.spry$$uid)break;if(token.match(n)){results.push(n);n.spry$$uid=uid}}n=n.nextSibling}}return results}};Spry.$$.uniqueID=0;Spry.$$.pseudoFuncs={":first-child":function(arg,node,token){var n=node.previousSibling;while(n){if(n.nodeType==1)return false;n=n.previousSibling}return true},":last-child":function(arg,node,token){var n=node.nextSibling;while(n){if(n.nodeType==1)return false;n=n.nextSibling}return true},":empty":function(arg,node,token){var n=node.firstChild;while(n){switch(n.nodeType){case 1:case 3:case 4:case 5:return false}n=n.nextSibling}return true},":nth-child":function(arg,node,token){return Spry.$$.nthChild(arg,node,token)},":nth-last-child":function(arg,node,token){return Spry.$$.nthChild(arg,node,token,true)},":nth-of-type":function(arg,node,token){return Spry.$$.nthChild(arg,node,token,false,true)},":nth-last-of-type":function(arg,node,token){return Spry.$$.nthChild(arg,node,token,true,true)},":first-of-type":function(arg,node,token){var nodeName=token.getNodeNameIfTypeMatches(node);if(!nodeName)return false;var n=node.previousSibling;while(n){if(n.nodeType==1&&nodeName==n.nodeName.toLowerCase())return false;n=n.previousSibling}return true},":last-of-type":function(arg,node,token){var nodeName=token.getNodeNameIfTypeMatches(node);if(!nodeName)return false;var n=node.nextSibling;while(n){if(n.nodeType==1&&nodeName==n.nodeName.toLowerCase())return false;n=n.nextSibling}return true},":only-child":function(arg,node,token){var f=Spry.$$.pseudoFuncs;return f[":first-child"](arg,node,token)&&f[":last-child"](arg,node,token)},":only-of-type":function(arg,node,token){var f=Spry.$$.pseudoFuncs;return f[":first-of-type"](arg,node,token)&&f[":last-of-type"](arg,node,token)},":not":function(arg,node,token){var s=Spry.$$.tokenizeSequence(arg)[0];var t=s?s[0]:null;return!t||!t.match(node)},":enabled":function(arg,node,token){return!node.disabled},":disabled":function(arg,node,token){return node.disabled},":checked":function(arg,node,token){return node.checked},":root":function(arg,node,token){return node.parentNode&&node.ownerDocument&&node.parentNode==node.ownerDocument}};Spry.$$.nthRegExp=/((-|[0-9]+)?n)?([+-]?[0-9]*)/;Spry.$$.nthCache={"even":{a:2,b:0,mode:1,invalid:false},"odd":{a:2,b:1,mode:1,invalid:false},"2n":{a:2,b:0,mode:1,invalid:false},"2n+1":{a:2,b:1,mode:1,invalid:false}};Spry.$$.parseNthChildString=function(str){var o=Spry.$$.nthCache[str];if(!o){var m=str.match(Spry.$$.nthRegExp);var n=m[1];var a=m[2];var b=m[3];if(!a){a=n?1:0}else if(a=="-"){a=-1}else{a=parseInt(a,10)}b=b?parseInt(b,10):0;var mode=(a==0)?0:((a>0)?1:-1);var invalid=false;if(a>0&&b<0){b=b%a;b=((b=(b%a))<0)?a+b:b}else if(a<0){if(b<0)invalid=true;else a=Math.abs(a)}o=new Object;o.a=a;o.b=b;o.mode=mode;o.invalid=invalid;Spry.$$.nthCache[str]=o}return o};Spry.$$.nthChild=function(arg,node,token,fromLastSib,matchNodeName){if(matchNodeName){var nodeName=token.getNodeNameIfTypeMatches(node);if(!nodeName)return false}var o=Spry.$$.parseNthChildString(arg);if(o.invalid)return false;var qidProp="spry$$ncQueryID";var posProp="spry$$ncPos";var countProp="spry$$ncCount";if(matchNodeName){qidProp+=nodeName;posProp+=nodeName;countProp+=nodeName}var parent=node.parentNode;if(parent[qidProp]!=Spry.$$.queryID){var pos=0;parent[qidProp]=Spry.$$.queryID;var c=parent.firstChild;while(c){if(c.nodeType==1&&(!matchNodeName||nodeName==c.nodeName.toLowerCase()))c[posProp]=++pos;c=c.nextSibling}parent[countProp]=pos}pos=node[posProp];if(fromLastSib)pos=parent[countProp]-pos+1;if(o.mode==0)return pos==o.b;if(o.mode>0)return(pos<o.b)?false:(!((pos-o.b)%o.a));return(pos>o.b)?false:(!((o.b-pos)%o.a))};Spry.$$.processTokens=function(tokens,root){var numTokens=tokens.length;var nodeSet=[root];var combiFunc=null;for(var i=0;i<numTokens&&nodeSet.length>0;i++){var t=tokens[i];if(t.type==Spry.$$.Token.SELECTOR){if(combiFunc){nodeSet=combiFunc(nodeSet,t);combiFunc=null}else nodeSet=Spry.$$.getMatchingElements(nodeSet,t)}else combiFunc=Spry.$$.combinatorFuncs[t.name]}return nodeSet};Spry.$$.getMatchingElements=function(nodes,token){var results=[];if(token.id){n=nodes[0];if(n&&n.ownerDocument){var e=n.ownerDocument.getElementById(token.id);if(e){if(token.match(e))results.push(e)}return results}}var nn=nodes.length;for(var i=0;i<nn;i++){var n=nodes[i];var ea=n.getElementsByTagName(token.name);var ne=ea.length;for(var j=0;j<ne;j++){var e=ea[j];if(e.nodeType==1&&token.match(e,true))results.push(e)}}return results};Spry.$$.addExtensions=function(a){for(var f in Spry.$$.Results)a[f]=Spry.$$.Results[f]};Spry.$$.Results={};Spry.$$.Results.forEach=function(func){var n=this.length;for(var i=0;i<n;i++)func(this[i]);return this};Spry.$$.Results.setAttribute=function(name,value){return this.forEach(function(n){Spry.Utils.setAttribute(n,name,value)})};Spry.$$.Results.removeAttribute=function(name){return this.forEach(function(n){Spry.Utils.removeAttribute(n,name)})};Spry.$$.Results.addClassName=function(className){return this.forEach(function(n){Spry.Utils.addClassName(n,className)})};Spry.$$.Results.removeClassName=function(className){return this.forEach(function(n){Spry.Utils.removeClassName(n,className)})};Spry.$$.Results.toggleClassName=function(className){return this.forEach(function(n){Spry.Utils.toggleClassName(n,className)})};Spry.$$.Results.addEventListener=function(eventType,handler,capture,bindHandler){return this.forEach(function(n){Spry.Utils.addEventListener(n,eventType,handler,capture,bindHandler)})};Spry.$$.Results.removeEventListener=function(eventType,handler,capture){return this.forEach(function(n){Spry.Utils.removeEventListener(n,eventType,handler,capture)})};Spry.$$.Results.setStyle=function(style){if(style){style=Spry.Utils.styleStringToObject(style);this.forEach(function(n){for(var p in style)try{n.style[p]=style[p]}catch(e){}})}return this};Spry.$$.Results.setProperty=function(prop,value){if(prop){if(typeof prop=="string"){var p={};p[prop]=value;prop=p}this.forEach(function(n){for(var p in prop)try{n[p]=prop[p]}catch(e){}})}return this}})();
