/* document.getElementsBySelector(selector)
   - returns an array of element objects from the current document
     matching the CSS selector. Selectors can contain element names, 
     class names and ids and can be nested. For example:
     
       elements = document.getElementsBySelect('div#main p a.external')
     
     Will return an array of all 'a' elements with 'external' in their 
     class attribute that are contained inside 'p' elements that are 
     contained inside the 'div' element which has id="main"

   New in version 0.4: Support for CSS2 and CSS3 attribute selectors:
   See http://www.w3.org/TR/css3-selectors/#attribute-selectors

   Version 0.4 - Simon Willison, March 25th 2003
   -- Works in Phoenix 0.5, Mozilla 1.3, Opera 7, Internet Explorer 6, Internet Explorer 5 on Windows
   -- Opera 7 fails 
*/

eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('o H(e){d e.M?e.M:e.A(\'*\')}D.T=o(P){c(!D.A){d 9 g()}5 F=P.J(\' \');5 6=9 g(D);n(5 i=0;i<F.f;i++){t=F[i].K(/^\\s+/,\'\').K(/\\s+$/,\'\');c(t.C(\'#\')>-1){5 u=t.J(\'#\');5 7=u[0];5 N=u[1];5 I=D.Q(N);c(7&&I.W.V()!=7){d 9 g()}6=9 g(I);G;}c(t.C(\'.\')>-1){5 u=t.J(\'.\');5 7=u[0];5 B=u[1];c(!7){7=\'*\'}5 8=9 g;5 y=0;n(5 h=0;h<6.f;h++){5 a;c(7==\'*\'){a=H(6[h])}L{a=6[h].A(7)}n(5 j=0;j<a.f;j++){8[y++]=a[j]}}6=9 g;5 z=0;n(5 k=0;k<8.f;k++){c(8[k].B&&8[k].B.E(9 r(\'\\\\b\'+B+\'\\\\b\'))){6[z++]=8[k]}}G;}c(t.E(/^(\\w*)\\[(\\w+)([=~\\|\\^\\$\\*]?)=?"?([^\\]"]*)"?\\]$/)){5 7=r.$1;5 l=r.$2;5 O=r.$3;5 p=r.$4;c(!7){7=\'*\'}5 8=9 g;5 y=0;n(5 h=0;h<6.f;h++){5 a;c(7==\'*\'){a=H(6[h])}L{a=6[h].A(7)}n(5 j=0;j<a.f;j++){8[y++]=a[j]}}6=9 g;5 z=0;5 m;U(O){x\'=\':m=o(e){d(e.q(l)==p)};v;x\'~\':m=o(e){d(e.q(l).E(9 r(\'\\\\b\'+p+\'\\\\b\')))};v;x\'|\':m=o(e){d(e.q(l).E(9 r(\'^\'+p+\'-?\')))};v;x\'^\':m=o(e){d(e.q(l).C(p)==0)};v;x\'$\':m=o(e){d(e.q(l).S(p)==e.q(l).f-p.f)};v;x\'*\':m=o(e){d(e.q(l).C(p)>-1)};v;R:m=o(e){d e.q(l)}}6=9 g;5 z=0;n(5 k=0;k<8.f;k++){c(m(8[k])){6[z++]=8[k]}}G;}7=t;5 8=9 g;5 y=0;n(5 h=0;h<6.f;h++){5 a=6[h].A(7);n(5 j=0;j<a.f;j++){8[y++]=a[j]}}6=8}d 6}',59,59,'|||||var|currentContext|tagName|found|new|elements||if|return||length|Array|||||attrName|checkFunction|for|function|attrValue|getAttribute|RegExp||token|bits|break||case|foundCount|currentContextIndex|getElementsByTagName|className|indexOf|document|match|tokens|continue|getAllChildren|element|split|replace|else|all|id|attrOperator|selector|getElementById|default|lastIndexOf|getElementsBySelector|switch|toLowerCase|nodeName'.split('|'),0,{}))