/** * Carbon.JS - A simple JavaScript framework * * Carbon.JS Core - CSS1-3 selectors engine * * @author		Dmitry Polyuhov <admin@carbonjs.com> * @license		http://carbonjs.com/mit-license.txt * @version		2.2.0 (build 20100301) */Array.prototype.inArray=function(b){var a=this.length;while(a--){if(this[a]===b){return true}}return false};Function.prototype.bind=function(a){var b=this;return function(){return b.apply(a,arguments)}};var CarbonJS=(function(){var __regs=[/^([a-zA-Z0-9]*)#([a-zA-Z0-9-_]+)(:[^:]+)*$/,/^([a-zA-Z0-9*]+)?(\.([a-zA-Z0-9-_]+))?(:[^:]+)*$/,/^(\w*)(\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\])+(:[^:]+)*$/,/:?([a-zA-Z\-]+)\(?([a-zA-Z0-9_\.\-\+\*=~\|:\^\$\[\]#"']*)\)?/];var __uid=0;var __doc=document;var __onReadyList=[];return{__cache:{},traversal:typeof __doc.createElement("div").childElementCount!="undefined",nodesList:function(){var elements=[];for(var k in CarbonJS.extend_hash){elements[k]=CarbonJS.extend_hash[k]}elements.concat=function(elems){var k=0,ik;while(ik=elems[k++]){this[this.length]=ik}return this};return elements},init:function(){CarbonJS.extend_hash={};CarbonJS.extend=function(hash){for(var k in hash){CarbonJS.extend_hash[k]=hash[k]}};window.Q=function(){return CarbonJS.get(__doc,arguments)};window.QF=function(){var args=arguments;var newargs=[];var i=1,ii;while(ii=args[i++]){newargs[newargs.length]=ii}return CarbonJS.get(args[0],newargs)};var st=Q("script[src*='carbonjs.core']")[0].src;CarbonJS.url=st.substring(0,st.indexOf("carbonjs.core"));var ev="addEventListener";ev=(__doc[ev]&&ev)||(ev="attachEvent")&&__doc[ev]&&ev;function refreshCache(){CarbonJS.__cache={}}__doc[ev]("DOMAttrModified",refreshCache,false);__doc[ev]("DOMNodeInserted",refreshCache,false);__doc[ev]("DOMNodeRemoved",refreshCache,false)},checkModules:function(){var args=arguments,mm=[];var i=0,ii;while(ii=args[i++]){if(!CarbonJS.modules[ii.toLowerCase()]){mm[mm.length]=ii}}if(mm.length>0){throw new CarbonJS.Exceptions.ModuleNotFound(mm.join(", "))}},loadModules:function(name,func){CarbonJS.onDOMready(function(){var my_eval=function(sourceCode){if("\v"!="v"){var script=__doc.createElement("script");script.type="text/javascript";script.appendChild(__doc.createTextNode(sourceCode));__doc.body.appendChild(script)}else{eval(sourceCode)}};var getXHR=function(){try{return new XMLHttpRequest()}catch(trymicrosoft){try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(othermicrosoft){try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(failed){throw new CarbonJS.Exceptions.DoesntSupportXHR()}}}};var missedModules=[],unknownModules=[],notThrowedExceptions=[];var loadAndEvalJSFile=function(jsFileName,moduleName){var req=getXHR();req.open("GET",jsFileName,false);req.send(null);if(req.status==200){my_eval(req.responseText)}else{missedModules.push(moduleName)}};if(typeof name=="string"){var compressed=!(name.toUpperCase()==name);var nm="carbonjs."+name.toLowerCase();nm+=compressed?".packed":"";loadAndEvalJSFile(CarbonJS.url+nm+".js",name);var nmodule=false;for(var n in CarbonJS.modules){if(n==name.toLowerCase()){nmodule=true;break}}if(!nmodule){throw new CarbonJS.Exceptions.UnknownModuleName(name)}}else{if(typeof name=="object"){var i=0,ii;while(ii=name[i++]){var compressed=!(ii.toUpperCase()==ii);var nm="carbonjs."+ii.toLowerCase();nm+=compressed?".packed":"";loadAndEvalJSFile(CarbonJS.url+nm+".js",ii);var nmodule=false;for(var n in CarbonJS.modules){if(n==ii.toLowerCase()){nmodule=true;break}}if(!nmodule){unknownModules.push(ii)}}}}if(unknownModules.length>0){notThrowedExceptions.push(new CarbonJS.Exceptions.UnknownModuleName(unknownModules.join(", ")))}if(missedModules.length>0){notThrowedExceptions.push(new CarbonJS.Exceptions.ModuleNotFound(missedModules.join(", ")))}if(notThrowedExceptions.length>1){throw new CarbonJS.Exceptions.CombinedException(notThrowedExceptions)}else{if(notThrowedExceptions.length==1){throw notThrowedExceptions[0]}}if(notThrowedExceptions.length==0&&func){func()}})},modules:{ajax:false,animation:false,core:true,dom:false,utilities:false},Exceptions:{ModuleNotFound:function(moduleName){this.name="Carbon.JS Error";this.message='Missing module(s) - "'+moduleName+'"';this.toString=function(){return this.name+": "+this.message}},UnknownModuleName:function(moduleName){this.name="Carbon.JS Error";this.message='Unknown name of module(s) - "'+moduleName+'"';this.toString=function(){return this.name+": "+this.message}},NodeListIsEmpty:function(queryName){this.name="Carbon.JS Error";this.message='Returned by the "'+queryName+'"-query NodeList is empty';this.toString=function(){return this.name+": "+this.message}},MissingElement:function(queryName){this.name="Carbon.JS Error";this.message='The element that you requested from the "'+queryName+'"-query is not listed';this.toString=function(){return this.name+": "+this.message}},DoesntSupportXHR:function(){this.name="Carbon.JS Error";this.message="Your web-browser doesn't support XHR-requests";this.toString=function(){return this.name+": "+this.message}},CombinedException:function(exceptions_array){this.name="Carbon.JS Error";this.message="Some exceptions were throwed:\n";for(var i=0;i<exceptions_array.length;i++){this.message+=exceptions_array[i].toString()+"\n"}this.toString=function(){return this.name+": "+this.message}}},get:function(where,selector){where.uid=where.uid||__uid++;var elems=[where];var params=selector;var buf=[];var output=CarbonJS.nodesList();var args=0,iargs;while(iargs=params[args++]){if(typeof iargs=="string"){if(this.__cache[where.uid+"|"+iargs]){buf=this.__cache[where.uid+"|"+iargs];elems=[];var i=0,ii;while(ii=buf[i++]){elems[elems.length]=ii}buf=[]}else{if(__doc.querySelectorAll){try{buf=where.querySelectorAll(iargs);elems=[];var i=0,ii;while(ii=buf[i++]){elems[elems.length]=ii}buf=[]}catch(e){var selectors=iargs.replace(/\s?(>|\+|~)\s?/g,"$1");var qstr=selectors;selectors=selectors.split(" ");var i=0,ii;while(ii=selectors[i++]){if(ii.search(/>|\+[^0-9][^\)]?|~[^=]/)!=-1){elems=this.getByCombinators(ii,qstr,where);continue}if(__regs[0].test(ii)){var ch=ii.match(__regs[0]);elems=this.getByPseudo(ii,this.getById(ch[1],ch[2]),where);continue}else{if(__regs[1].test(ii)){var ch=ii.match(__regs[1]);elems=this.getByPseudo(ii,this.getByTagAndClass(ch[1]||"*",ch[3]||"",elems,(i==selectors.length)),where);continue}else{if(__regs[2].test(ii)){var ch=ii.match(__regs[2]);elems=this.getByPseudo(ii,this.getByAttrs(ch[1]||"*",ii,elems),where);continue}}}}}this.__cache[where.uid+"|"+iargs]=elems}else{var selectors=iargs.replace(/\s?(>|\+|~)\s?/g,"$1");var qstr=selectors;selectors=selectors.split(" ");var i=0,ii;while(ii=selectors[i++]){if(ii.search(/>|\+[^0-9][^\)]?|~[^=]/)!=-1){elems=this.getByCombinators(ii,qstr,where);continue}if(__regs[0].test(ii)){var ch=ii.match(__regs[0]);elems=this.getByPseudo(ii,this.getById(ch[1],ch[2]),where);continue}else{if(__regs[1].test(ii)){var ch=ii.match(__regs[1]);elems=this.getByPseudo(ii,this.getByTagAndClass(ch[1]||"*",ch[3]||"",elems,(i==selectors.length)),where);continue}else{if(__regs[2].test(ii)){var ch=ii.match(__regs[2]);elems=this.getByPseudo(ii,this.getByAttrs(ch[1]||"*",ii,elems),where);continue}}}}this.__cache[where.uid+"|"+iargs]=elems}}output=output.concat(elems)}else{if(typeof iargs=="object"){output[output.length]=iargs}}elems=[where]}output.qstr=selector.length==1?selector[0]:Array.prototype.join.call(selector,", ");return output},getById:function(tag,id){if(tag==""){return[__doc.getElementById(id)]}else{if(__doc.getElementById(id).nodeName.toLowerCase()==tag){return[__doc.getElementById(id)]}}},getByTagAndClass:function(tagName,className,elems,le){var buf=[];var j=0,ij;if(__doc.getElementsByClassName&&className!=""){while(ij=elems[j++]){var byClass=ij.getElementsByClassName(className),k=0,ik;while(ik=byClass[k++]){if(tagName!="*"&&ik.nodeName.toLowerCase()==tagName&&!ik.added){if(le){ik.added=true}buf[buf.length]=ik}else{if(tagName=="*"){buf[buf.length]=ik}}}}}else{while(ij=elems[j++]){var cur=(tagName=="*"&&__doc.all)?ij.all:ij.getElementsByTagName(tagName),k=0,ik;while(ik=cur[k++]){if(className==""&&!ik.added){if(le){ik.added=true}buf[buf.length]=ik}else{if(className!=""&&ik.className){if(new RegExp("(^|\\s)"+className+"(\\s|$)").test(ik.className)&&!ik.added){if(le){ik.added=true}buf[buf.length]=ik}}}}}}var len=buf.length;while(len--){buf[len].added=null}return buf},getByAttrs:function(tag,sels,elems){var buf=[];var str=sels;if(str.indexOf(":")!=-1){str=str.substring(0,str.indexOf(":"))}var m=str.match(/\[\w+[=~\|\^\$\*]?=?"?[^\]"]*"?\]/g);var j=0,ij;while(ij=elems[j++]){var cur=ij.getElementsByTagName(tag);var k=0,ik;while(ik=cur[k++]){var check=true;var l=0,il;while(il=m[l++]){var parts=il.match(/^\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/);var an=(parts[1]=="class")?"className":parts[1];var av=parts[3].replace(/'/g,"");switch(parts[2]){case"=":if(ik[an]!=av){check=false}break;case"~":if(!ik[an].match(new RegExp("\\b"+av+"\\b"))){check=false}break;case"|":if(!ik[an].match(new RegExp("^"+av+"-|$"))){check=false}break;case"^":if(!ik[an].match(new RegExp("^"+av))){check=false}break;case"$":if(!ik[an].match(new RegExp(av+"$"))){check=false}break;case"*":if(ik[an].indexOf(av)==-1){check=false}break;case"!":if(ik[an].indexOf(av)!=-1){check=false}break;default:if(!ik[an]){check=false}}}if(check){buf[buf.length]=ik}}}return buf},getByPseudo:function(part,elements,where){if(part.indexOf(":")!=-1&&__regs[3].test(part.substring(part.indexOf(":"),part.length))){var nm=part.substring(0,part.indexOf(":"));part=part.substring(part.indexOf(":")+1,part.length);var nopc=[],lastPosition=0,embedding=0;for(var m=0;m<part.length;m++){if(part.charAt(m)=="("){embedding++}if(part.charAt(m)==")"){embedding--}if(embedding==0&&part.charAt(m)==":"&&m!=0){nopc.push(part.substring(lastPosition,m));lastPosition=m+1}}nopc.push(part.substring(lastPosition,m--));var i=0,ii;while(ii=nopc[i++]){var buf=[],pseudo,value;if(/^[a-z-]+\(/.test(ii)){pseudo=ii.substring(0,ii.indexOf("("));value=ii.substring(ii.indexOf("(")+1,ii.length-1)}else{pseudo=ii}switch(pseudo){case"first-child":var j=0,ij;while(ij=elements[j++]){if(ij.previousSibling){var check=true;var ps=ij;while(ps=ps.previousSibling){if(ps.nodeType===1){check=false;break}}if(check){buf[buf.length]=ij}}else{buf[buf.length]=ij}}break;case"last-child":var j=0,ij;while(ij=elements[j++]){if(ij.nextSibling){var check=true;var ns=ij;while(ns=ns.nextSibling){if(ns.nodeType===1){check=false;break}}if(check){buf[buf.length]=ij}}else{buf[buf.length]=ij}}break;case"nth-child":if(/^\d+|even|odd|(-?\d*)n((\+|\-)(\d+))?$/.test(value)){if(value=="even"){value="2n"}else{if(value=="odd"){value="2n+1"}}var n=value,val=value.match(/([+-]?\d)*(n)([+-]\d+)*/),a,b;if(val){a=parseInt(val[1],10)||0;b=parseInt(val[3],10)||0}if(/^\+n|^n/.test(value)){a=1}else{if(/^-n/.test(value)){a=-1}}var j=0,ij;while(ij=elements[j++]){if(!ij.nodeIndex){var node=ij.parentNode.firstChild,count=0;while(node){if(node.nodeType===1){node.nodeIndex=++count}node=node.nextSibling}}var position=ij.nodeIndex;if((!a&&!b&&position==n)||(a==0?position==b:a>0?position>=b&&(position-b)%a==0:position<=b&&(b-position)%a==0)){buf[buf.length]=ij}}}break;case"nth-last-child":if(/^\d+|even|odd|(-?\d*)n((\+|\-)(\d+))?$/.test(value)){if(value=="even"){value="2n"}else{if(value=="odd"){value="2n+1"}}var n=value,val=value.match(/([+-]?\d)*(n)([+-]\d+)*/),a,b;if(val){a=parseInt(val[1],10)||0;b=parseInt(val[3],10)||0}if(/^\+n|^n/.test(value)){a=1}else{if(/^-n/.test(value)){a=-1}}var j=elements.length-1,ij;while(ij=elements[j--]){if(!ij.nodeIndex){var node=ij.parentNode.lastChild,count=0;while(node){if(node.nodeType===1){node.nodeIndex=++count}node=node.previousSibling}}var position=ij.nodeIndex;if((!a&&!b&&position==n)||(a==0?position==b:a>0?position>=b&&(position-b)%a==0:position<=b&&(b-position)%a==0)){buf[buf.length]=ij}}}break;case"only-child":var j=0,ij;while(ij=elements[j++]){var nc=ij.parentNode.firstChild;var check=false;var k=0;while(nc&&!check){if(nc.nodeType===1){k++;if(k>1){check=true}}nc=nc.nextSibling}if(k==1&&!check){buf[buf.length]=ij}}break;case"enabled":buf=elements;var k=0;while(k<buf.length){if(!buf[k].disabled){k++}else{buf.splice(k,1)}}break;case"disabled":buf=elements;var k=0;while(k<buf.length){if(buf[k].disabled){k++}else{buf.splice(k,1)}}break;case"checked":buf=elements;var k=0;while(k<buf.length){if(buf[k].checked){k++}else{buf.splice(k,1)}}break;case"selected":buf=elements;var k=0;while(k<buf.length){if(buf[k].selected){k++}else{buf.splice(k,1)}}break;case"empty":buf=elements;var k=0;while(k<buf.length){if(!buf[k].firstChild){k++}else{buf.splice(k,1)}}break;case"not":var badNodes=[];var t=0;var na=[];if(/^([a-zA-Z0-9*]+)(:[^:]+)*$/.test(value)||/^([a-zA-Z0-9*]+)\.(\w+)(:[^:]+)*$/.test(value)){badNodes=QF(where,value)}else{if(/^[a-zA-Z0-9]+/.test(value)){badNodes=QF(where,nm+" "+value)}else{badNodes=QF(where,nm+value)}}var k=0,ik;while(ik=elements[k++]){var l=0,il;while(il=badNodes[l++]){if(ik===il){t=1}}if(t==0){na[na.length]=ik}else{t=0}}buf=na;break;case"contains":var j=0,ij;while(ij=elements[j++]){if(ij.innerHTML.indexOf(value)!=-1){buf[buf.length]=ij}}break}elements=buf}}return elements},getByCombinators:function(sels,qstr,where){var buf=[];var combinators=sels.match(/>|~|\+(?![0-9)])/g);var parts=sels.split(/>|~|\+(?![0-9)])/);var cqp=qstr.substring(0,qstr.indexOf(sels)+sels.length);var prevElems=QF(where,parts[0]);var i=0,j,k,ii,ij,ik;while(ii=combinators[i++]){buf=[];switch(ii){case">":var nextElems=QF(where,parts[i-1]+" "+parts[i]);j=0;while(ij=prevElems[j++]){k=0;while(ik=nextElems[k++]){if(ik.parentNode===ij){buf[buf.length]=ik}}}break;case"+":j=0;while(ij=prevElems[j++]){while((ij=ij.nextSibling)&&ij.nodeType!==1){}if(ij){var nextElems=QF(ij.parentNode,parts[i]);k=0;while(ik=nextElems[k++]){if(ij===ik){buf[buf.length]=ik;break}}}}break;case"~":j=0;var nextElems=QF(where,parts[i]);while(ij=prevElems[j++]){while((ij=ij.nextSibling)&&!ij.added){if(ij.nodeType===1){k=0;while(ik=nextElems[k++]){if(ij===ik){ij.added=true;buf[buf.length]=ik;break}}}}}break}prevElems=buf}var len=buf.length;while(len--){buf[len].added=null}return buf},onDOMready:function(handler){var onReadyFunction=function(func){var called=false;function init(){if(called){return}called=true;func()}if(__doc.addEventListener){__doc.addEventListener("DOMContentLoaded",init,false)}else{if(__doc.attachEvent){if(__doc.documentElement.doScroll&&window==window.top){function tryScroll(){if(called){return}if(!__doc.body){return}try{__doc.documentElement.doScroll("left");init()}catch(e){setTimeout(tryScroll,1)}}tryScroll()}__doc.attachEvent("onreadystatechange",function(){if(/loaded|complete/.test(__doc.readyState)){init()}})}}if(window.addEventListener){window.addEventListener("load",init,false)}else{if(window.attachEvent){window.attachEvent("onload",init)}}};if(!__onReadyList.length){onReadyFunction(function(){for(var i=0;i<__onReadyList.length;i++){__onReadyList[i]()}})}__onReadyList[__onReadyList.length]=handler}}})();CarbonJS.init();CarbonJS.extend({forEach:function(a){var b=0,c;while(c=this[b++]){a.call(c,b-1)}return this},item:function(a){if(this.length==0){throw new CarbonJS.Exceptions.NodeListIsEmpty(this.qstr)}else{if(this[a]){return Q(this[a])}else{throw new CarbonJS.Exceptions.MissingElement(this.qstr)}}},find:function(){var c=this,b=[],e=0,f;while(f=c[e++]){var d=arguments;Array.prototype.unshift.call(d,f);b=b.concat(QF.apply(this,d));Array.prototype.shift.call(d)}var a=CarbonJS.nodesList();e=0;while(f=b[e++]){if(!a.inArray(f)){a[a.length]=f}}return a}});
