Bug 4817: g/l account inquiry can timeout due to slow sql. @Braath Waate.
[fa-stable.git] / js / behaviour.js
index ad0117447f8c10c8b5fed2b6648ac57cdd119df8..b225ca204f76609385c51aa0af0dc49f0e1213fa 100644 (file)
@@ -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