var Behaviour={
list : new Array,
register : function(sheet){
Behaviour.list.push(sheet)
},
start : function(){
Behaviour.addLoadEvent(function(){
Behaviour.apply()
})
},
apply : function(){
for(h=0;sheet=Behaviour.list[h];h++){
for(selector in sheet){
list=document.getElementsBySelector(selector)
if(!list){
continue}
for(i=0;element=list[i];i++){
sheet[selector](element)}}}
},
addLoadEvent : function(func){
var oldonload=window.onload
if(typeof window.onload !='function'){
window.onload=func
}else{
window.onload=function(){
oldonload()
func()}}}}
Behaviour.start()
function getAllChildren(e){
return e.all ? e.all : e.getElementsByTagName('*')}
document.getElementsBySelector=function(selector){
if(!document.getElementsByTagName){
return new Array()}
var tokens=selector.split(' ')
var currentContext=new Array(document)
for(var i=0;i<tokens.length;i++){
token=tokens[i].replace(/^\s+/,'').replace(/\s+$/,'')
if(token.indexOf('#')>-1){
var bits=token.split('#')
var tagName=bits[0]
var id=bits[1]
var element=document.getElementById(id)
if(tagName&&element.nodeName.toLowerCase()!=tagName){
return new Array()}
currentContext=new Array(element)
continue}
if(token.indexOf('.')>-1){
var bits=token.split('.')
var tagName=bits[0]
var className=bits[1]
if(!tagName){
tagName='*'}
var found=new Array
var foundCount=0
for(var h=0;h<currentContext.length;h++){
var elements
if(tagName=='*'){
elements=getAllChildren(currentContext[h])
}else{
elements=currentContext[h].getElementsByTagName(tagName)}
for(var j=0;j<elements.length;j++){
found[foundCount++]=elements[j]}}
currentContext=new Array
var currentContextIndex=0
for(var k=0;k<found.length;k++){
if(found[k].className&&found[k].className.match(new RegExp('\\b'+className+'\\b'))){
currentContext[currentContextIndex++]=found[k]}}
continue}
if(token.match(/^(\w*)\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/)) {
var tagName=RegExp.$1
var attrName=RegExp.$2
var attrOperator=RegExp.$3
var attrValue=RegExp.$4
if(!tagName){
tagName='*'}
var found=new Array
var foundCount=0
for(var h=0;h<currentContext.length;h++){
var elements
if(tagName=='*'){
elements=getAllChildren(currentContext[h])
}else{
elements=currentContext[h].getElementsByTagName(tagName)}
for(var j=0;j<elements.length;j++){
found[foundCount++]=elements[j]}}
currentContext=new Array
var currentContextIndex=0
var checkFunction
switch(attrOperator){
case '=':
checkFunction=function(e){return(e.getAttribute(attrName)==attrValue);}
break
case '~':
checkFunction=function(e){return(e.getAttribute(attrName).match(new RegExp('\\b'+attrValue+'\\b')));}
break
case '|':
checkFunction=function(e){return(e.getAttribute(attrName).match(new RegExp('^'+attrValue+'-?')));}
break
case '^':
checkFunction=function(e){return(e.getAttribute(attrName).indexOf(attrValue)==0);}
break
case '$':
checkFunction=function(e){return(e.getAttribute(attrName).lastIndexOf(attrValue)==e.getAttribute(attrName).length-attrValue.length);}
break
case '*':
checkFunction=function(e){return(e.getAttribute(attrName).indexOf(attrValue)>-1);}
break
default :
checkFunction=function(e){return e.getAttribute(attrName);}}
currentContext=new Array
var currentContextIndex=0
for(var k=0;k<found.length;k++){
if(checkFunction(found[k])){
currentContext[currentContextIndex++]=found[k]}}
continue}
if(!currentContext[0]){
return}
tagName=token
var found=new Array
var foundCount=0
for(var h=0;h<currentContext.length;h++){
var elements=currentContext[h].getElementsByTagName(tagName)
for(var j=0;j<elements.length;j++){
found[foundCount++]=elements[j]}}
currentContext=found}
return currentContext}
