X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;ds=sidebyside;f=js%2Fbehaviour.js;h=b225ca204f76609385c51aa0af0dc49f0e1213fa;hb=c5677263c637016991f99e1b63f067280da75163;hp=ad0117447f8c10c8b5fed2b6648ac57cdd119df8;hpb=0337342ca1e0ec8850b64674ed668d4efe06201a;p=fa-stable.git diff --git a/js/behaviour.js b/js/behaviour.js index ad011744..b225ca20 100644 --- a/js/behaviour.js +++ b/js/behaviour.js @@ -1,7 +1,7 @@ /* Behaviour v1.1 by Ben Nolan, June 2005. Based largely on the work of Simon Willison (see comments by Simon below). - + Small fixes by J.Dobrowolski for Front Accounting May 2008 Description: Uses css selectors to apply javascript behaviours to enable @@ -53,14 +53,17 @@ var Behaviour = { apply : function(){ for (h=0;sheet=Behaviour.list[h];h++){ for (selector in sheet){ - list = document.getElementsBySelector(selector); + var sels = selector.split(','); + for (var n = 0; n < sels.length; n++) { + list = document.getElementsBySelector(sels[n]); - if (!list){ + if (!list){ continue; - } + } - for (i=0;element=list[i];i++){ + for (i=0;element=list[i];i++){ sheet[selector](element); + } } } } @@ -197,19 +200,19 @@ document.getElementsBySelector = function(selector) { checkFunction = function(e) { return (e.getAttribute(attrName) == attrValue); }; break; case '~': // Match one of space seperated words - checkFunction = function(e) { return (e.getAttribute(attrName).match(new RegExp('\\b'+attrValue+'\\b'))); }; + checkFunction = function(e) { var a=e.getAttribute(attrName); return (a && a.match(new RegExp('\\b'+attrValue+'\\b'))); }; break; case '|': // Match start with value followed by optional hyphen - checkFunction = function(e) { return (e.getAttribute(attrName).match(new RegExp('^'+attrValue+'-?'))); }; + checkFunction = function(e) { var a=e.getAttribute(attrName); return (a && a.match(new RegExp('^'+attrValue+'-?'))); }; break; case '^': // Match starts with value - checkFunction = function(e) { return (e.getAttribute(attrName).indexOf(attrValue) == 0); }; + checkFunction = function(e) { var a=e.getAttribute(attrName); return (a && a.indexOf(attrValue) == 0); }; break; case '$': // Match ends with value - fails with "Warning" in Opera 7 - checkFunction = function(e) { return (e.getAttribute(attrName).lastIndexOf(attrValue) == e.getAttribute(attrName).length - attrValue.length); }; + checkFunction = function(e) { var a=e.getAttribute(attrName); return (a && a.lastIndexOf(attrValue) == e.getAttribute(attrName).length - attrValue.length); }; break; - case '*': // Match ends with value - checkFunction = function(e) { return (e.getAttribute(attrName).indexOf(attrValue) > -1); }; + case '*': // Match contains value + checkFunction = function(e) { var a=e.getAttribute(attrName); return (a && a.indexOf(attrValue) > -1); }; break; default : // Just test for existence of attribute