--- 
name: MooTools
scopeName: source.js.mootools
repository: 
  array-functions: 
    name: meta.function.array.js.mootools
    endCaptures: 
      "1": 
        name: support.function.array.js.mootools
    begin: (\$(?:each|A)\()
    contentName: variable.parameter.function.array.js.mootools
    beginCaptures: 
      "1": 
        name: support.function.array.js.mootools
    end: (\))
    patterns: 
    - include: source.js
  element-functions: 
    name: meta.function.element.js.mootools
    endCaptures: 
      "1": 
        name: support.function.element.js.mootools
    begin: (\$?\$\()
    contentName: variable.parameter.function.element.js.mootools
    beginCaptures: 
      "1": 
        name: support.function.element.js.mootools
    end: (\))
    patterns: 
    - include: source.js
  hash-functions: 
    name: meta.function.hash.js.mootools
    endCaptures: 
      "1": 
        name: support.function.hash.js.mootools
    begin: (\$H\()
    contentName: variable.parameter.function.hash.js.mootools
    beginCaptures: 
      "1": 
        name: support.function.hash.js.mootools
    end: (\))
    patterns: 
    - include: source.js
  fx-options: 
    patterns: 
    - name: support.class.keys.fx.options.js.mootools
      match: \b(onStart|onComplete|transition|duration|unit|wait|fps)\b
    - name: support.class.keys.fx.slide.options.js.mootools
      match: \b(mode)\b
  leading-space: 
    patterns: 
    - name: meta.leading-tabs
      begin: ^(?=(\t|  ))
      end: (?=[^\t\s])
      patterns: 
      - captures: 
          "6": 
            name: meta.even-tab.group6.spaces
          "11": 
            name: meta.odd-tab.group11.spaces
          "7": 
            name: meta.odd-tab.group7.spaces
          "8": 
            name: meta.even-tab.group8.spaces
          "9": 
            name: meta.odd-tab.group9.spaces
          "1": 
            name: meta.odd-tab.group1.spaces
          "2": 
            name: meta.even-tab.group2.spaces
          "3": 
            name: meta.odd-tab.group3.spaces
          "4": 
            name: meta.even-tab.group4.spaces
          "10": 
            name: meta.even-tab.group10.spaces
          "5": 
            name: meta.odd-tab.group5.spaces
        match: (  )(  )?(  )?(  )?(  )?(  )?(  )?(  )?(  )?(  )?(  )?
      - captures: 
          "6": 
            name: meta.even-tab.group6.tab
          "11": 
            name: meta.odd-tab.group11.tab
          "7": 
            name: meta.odd-tab.group7.tab
          "8": 
            name: meta.even-tab.group8.tab
          "9": 
            name: meta.odd-tab.group9.tab
          "1": 
            name: meta.odd-tab.group1.tab
          "2": 
            name: meta.even-tab.group2.tab
          "3": 
            name: meta.odd-tab.group3.tab
          "4": 
            name: meta.even-tab.group4.tab
          "10": 
            name: meta.even-tab.group10.tab
          "5": 
            name: meta.odd-tab.group5.tab
        match: (\t)(\t)?(\t)?(\t)?(\t)?(\t)?(\t)?(\t)?(\t)?(\t)?(\t)?
    comment: |
      
      The leading-space code is the ribbon highlighing thomas Aylott contributed to source.js.prototype.
      More info in this thread:
      http://comox.textdrive.com/pipermail/textmate/2006-August/012373.html

  dom-functions: 
    name: meta.function.dom.js.mootools
    endCaptures: 
      "1": 
        name: support.function.dom.js.mootools
    begin: (\$ES?\()
    contentName: variable.parameter.function.dom.js.mootools
    beginCaptures: 
      "1": 
        name: support.function.dom.js.mootools
    end: (\))
    patterns: 
    - include: source.js
uuid: 7E4B5859-2FB4-4D2A-9105-276BDE28B94E
foldingStartMarker: (^.*{[^}]*$|^.*\([^\)]*$|^.*/\*(?!.*\*/).*$)
patterns: 
- name: support.class.js.mootools
  match: \b(Class|Array|Element|Event|Function|String)\b
  comment: |-
    
    Class
    The base class object of the http://mootools.net framework. 
    http://docs.mootools.net/files/Core/Moo-js.html
- name: support.class.class.js.mootools
  match: \b(empty|extend|implement)\b
- name: support.function.class.js.mootools
  match: \b(extend|Native)\b
- name: support.function.utility.js.mootools
  match: \$(type|chk|pick|random|clear)\b
  comment: |
    
    Utility
    Contains Utility functions
    http://docs.mootools.net/files/Core/Utility-js.html

- captures: 
    "1": 
      name: support.class.window.browser.js.mootools
  match: window\.(ie|ie6|ie7|khtml|gecko)\b
- include: "#array-functions"
  comment: |-
    
    Array
    A collection of The Array Object prototype methods.
    http://docs.mootools.net/files/Native/Array-js.html
- name: support.class.array.js.mootools
  match: \b(forEach|filter|map|every|some|indexOf|each|copy|remove|test|extend|associate)\b
- include: "#element-functions"
  comment: |-
    
    Element
    Custom class to allow all of its methods to be used with any DOM element via the dollar function $.
    http://docs.mootools.net/files/Native/Element-js.html
- name: support.class.element.js.mootools
  match: \b(injectBefore|injectAfter|injectInside|adopt|remove|clone|replaceWith|appendText|hasClass|addClass|removeClass|toggleClass|setStyle|setStyles|setOpacity|getStyle|addEvent|removeEvent|removeEvents|fireEvent|getPrevious|getNext|getFirst|getLast|getParent|getChildren|setProperty|setProperties|setHTML|getProperty|getTag|scrollTo|getValue|getSize|getPosition|getTop|getLeft|getCoordinates)\b
- name: support.class.event.js.mootools
  match: \b(stop|stopPropagation|preventDefault|bindWithEvent)\b
  comment: |-
    
    Event
    Cross browser methods to manage events.
    http://docs.mootools.net/files/Native/Event-js.html
- name: support.class.function.js.mootools
  match: \b(create|pass|attempt|bind|bindAsEventListener|delay|periodical)\b
  comment: |-
    
    Function
    A collection of The Function Object prototype methods.
    http://docs.mootools.net/files/Native/Function-js.html
- name: support.class.string.js.mootools
  match: \b(test|toInt|camelCase|hyphenate|capitalize|trim|clean|rgbToHex|hexToRgb)\b
  comment: |-
    
    String
    A collection of The String Object prototype methods.
    http://docs.mootools.net/files/Native/String-js.html
- name: support.class.number.js.mootools
  match: \btoInt\b
- include: "#dom-functions"
  comment: |-
    
    DOM
    Css Query related function and Element extensions.
    http://docs.mootools.net/files/Addons/Dom-js.html
- name: support.class.dom.js.mootools
  match: \b(getElements|getElementById|getElement|getElementsBySelector|getElementsByClassName)\b
  comment: document. getElementsByClassName	might belong somewhere else
- include: "#hash-functions"
  comment: |-
    
    Hash
    It wraps an object that it uses internally as a map.
    http://docs.mootools.net/files/Addons/Hash-js.html
     -- note: several overlaps in here with named properties from array.js.mootools
- name: support.class.hash.js.mootools
  match: \b(get|hasKey|set|remove|each|extend|empty|keys|values)\b
- name: support.class.color.js.mootools
  match: \b(mix|invert|setHue|setSaturation|setBrightness)\b
  comment: |-
    
    Color
    Creates a new Color Object, which is an array with some color specific methods.
    http://docs.mootools.net/files/Addons/Color-js.html
- name: support.function.color.js.mootools
  captures: 
    "1": 
      name: variable.parameter.function.js
  match: \$(?:RGB|HSB)\(([^)]*)\)\b
- name: support.function.chain.js.mootools
  match: \b(chain|(call|clear)Chain)\b
  comment: |-
    
    Common
    Contains common implementations for custom classes.
    http://docs.mootools.net/files/Addons/Common-js.html
- name: support.function.events.js.mootools
  match: \b(add|fire|remove)Event\b
- name: support.function.options.js.mootools
  match: \bsetOptions\b
- name: support.class.base.window.js.mootools
  match: \bonDomReady\b
  comment: |-
    
    Window Base
    Cross browser methods to get the window size, onDomReady method.
    http://docs.mootools.net/files/Window/Window-Base-js.html
     -- note: addEvent is already listed under Element
- name: support.class.size.window.js.mootools
  match: \b(get(Width|Height|Scroll(Width|Height|Left|Top)))\b
  comment: |-
    
    Window Size
    Cross browser methods to get various window dimensions.
    http://docs.mootools.net/files/Window/Window-Size-js.html
     -- note: getSize is already listed under Element
- name: "support.class.ajax.js.mootools"
  match: \b(request|evalScripts)\b
  comment: |-
    
    Ajax
    An Ajax class, For all your asynchronous needs.
    http://docs.mootools.net/files/Remote/Ajax-js.html
- name: support.function.js.mootools
  match: \btoQueryString\b
  comment: "note: both Object and Element have a toQueryString function/property"
- name: support.class.element.js
  match: \bsend\b
- name: support.function.asset.js.mootools
  match: \b(javascript|css|images?)\b
  comment: |-
    
    Assets
    provides dynamic loading for images, css and javascript files.
    http://docs.mootools.net/files/Remote/Assets-js.html
- name: support.class.cookie.js.mootools
  match: \b(set|get|remove)\b
  comment: |-
    
    Cookie
    Class for creating, getting, and removing cookies.
    http://docs.mootools.net/files/Remote/Assets-js.html
- name: support.class.json.js.mootools
  match: \b(toString|evaluate)\b
  comment: |-
    
    Json
    Simple Json parser and Stringyfier, See: http://www.json.org/
    http://docs.mootools.net/files/Remote/Json-js.html
- name: support.class.json.js.mootools
  match: \bJson\.Remote\b
  comment: |-
    
    Json Remote
    Wrapped XHR with automated sending and receiving of Javascript Objects in Json Format.
    http://docs.mootools.net/files/Remote/Json-Remote-js.html
- name: support.class.xhr.js.mootools
  match: \bXHR\b
  comment: |-
    
    XHR
    Contains the basic XMLHttpRequest Class Wrapper.
    http://docs.mootools.net/files/Remote/XHR-js.html
- name: support.class.base.fx.js.mootools
  match: \b(set|start|stop)\b
  comment: |-
    
    Fx.Base			
    Base class for the Mootools Effects (Moo.Fx) library.			
    http://docs.mootools.net/files/Effects/Fx-Base-js.html
- name: support.class.transitions.fx.js.mootools
  match: \b(linear|sineInOut)\b
- name: support.class.keys.options.transitions.fx
  match: \b(onStart|onComplete|transition|duration|unit|wait|fps)\b
- name: support.class.elements.fx.js.mootools
  match: \b(start)\b
  comment: |-
    
    Fx.Elements
    Fx.Elements allows you to apply any number of styles transitions to a selection of elements.
    http://docs.mootools.net/files/Effects/Fx-Elements-js.html
- endCaptures: 
    "1": 
      name: punctuation.definition.parameters.end.js
  begin: (new)\s+(Fx\.Elements)(\()
  contentName: variable.parameter.fx.elements.js.mootools
  beginCaptures: 
    "1": 
      name: keyword.operator.new.js
    "2": 
      name: entity.name.type.instance.js.mootools
    "3": 
      name: punctuation.definition.parameters.begin.js
  end: (\)(;|$))
  patterns: 
  - include: "#element-functions"
  - include: "#array-functions"
  - include: "#dom-functions"
  - include: "#hash-functions"
  - endCaptures: 
      "1": 
        name: punctuation.definition.parameters.end.js
    begin: (\{)
    contentName: variable.parameter.fx.elements.options.js.mootools
    beginCaptures: 
      "1": 
        name: punctuation.definition.parameters.begin.js
    end: (\})(?=\))
    patterns: 
    - name: punctuation.separator.key-value.js.mootools
      match: (:)
    - include: "#fx-options"
    - include: source.js
- name: support.class.scroll.fx.js.mootools
  match: \b(scrollTo|to(Top|Bottom|Left|Right|Element))
  comment: |-
    
    Fx.Scroll
    Scroll any element with an overflow, including the window element.
    http://docs.mootools.net/files/Effects/Fx-Scroll-js.html
- endCaptures: 
    "1": 
      name: punctuation.definition.parameters.end.js
  begin: (new)\s+(Fx\.Scroll)(\()
  contentName: variable.parameter.fx.scroll.js.mootools
  beginCaptures: 
    "1": 
      name: keyword.operator.new.js
    "2": 
      name: entity.name.type.instance.js.mootools
    "3": 
      name: punctuation.definition.parameters.begin.js
  end: (\)(;|$))
  patterns: 
  - include: "#element-functions"
  - include: "#array-functions"
  - include: "#dom-functions"
  - include: "#hash-functions"
  - endCaptures: 
      "1": 
        name: punctuation.definition.parameters.end.js
    begin: (\{)
    contentName: variable.parameter.fx.scroll.options.js.mootools
    beginCaptures: 
      "1": 
        name: punctuation.definition.parameters.begin.js
    end: (\})(?=\))
    patterns: 
    - name: punctuation.separator.key-value.js.mootools
      match: (:)
    - include: "#fx-options"
    - include: source.js
- name: support.class.slide.fx.js.mootools
  match: \b(slide(In|Out)|hide|show|toggle)\b
  comment: |-
    
    Fx.Slide
    The slide effect; slides an element in horizontally or vertically, the contents will fold inside.
    http://docs.mootools.net/files/Effects/Fx-Slide-js.html
- endCaptures: 
    "1": 
      name: punctuation.definition.parameters.end.js
  begin: (new)\s+(Fx\.Slide)(\()
  contentName: variable.parameter.fx.slide.js.mootools
  beginCaptures: 
    "1": 
      name: keyword.operator.new.js
    "2": 
      name: entity.name.type.instance.js.mootools
    "3": 
      name: punctuation.definition.parameters.begin.js
  end: (\)(;|$))
  patterns: 
  - include: "#element-functions"
  - include: "#array-functions"
  - include: "#dom-functions"
  - include: "#hash-functions"
  - endCaptures: 
      "1": 
        name: punctuation.definition.parameters.end.js
    begin: (\{)
    contentName: variable.parameter.fx.slide.options.js.mootools
    beginCaptures: 
      "1": 
        name: punctuation.definition.parameters.begin.js
    end: (\})(?=\))
    patterns: 
    - name: punctuation.separator.key-value.js.mootools
      match: (:)
    - include: "#fx-options"
    - include: source.js
- name: support.class.slide.fx.js.mootools
  match: \b(hide|start)\b
  comment: |-
    
    Fx.Style
    The Style effect; Extends Fx.Base, inherits all its properties.
    http://docs.mootools.net/files/Effects/Fx-Style-js.html
- endCaptures: 
    "1": 
      name: punctuation.definition.parameters.end.js
  begin: (new)\s+(Fx\.Style)(\()
  contentName: variable.parameter.fx.style.js.mootools
  beginCaptures: 
    "1": 
      name: keyword.operator.new.js
    "2": 
      name: entity.name.type.instance.fx.style.js.mootools
    "3": 
      name: punctuation.definition.parameters.begin.js
  end: (\)(;|$))
  patterns: 
  - include: "#element-functions"
  - include: "#array-functions"
  - include: "#dom-functions"
  - include: "#hash-functions"
  - endCaptures: 
      "1": 
        name: punctuation.definition.parameters.end.js
    begin: ',\s*(\{)'
    contentName: variable.parameter.fx.style.options.js.mootools
    beginCaptures: 
      "1": 
        name: punctuation.definition.parameters.begin.js
    end: (\})(?=\))
    patterns: 
    - name: punctuation.separator.key-value.js.mootools
      match: (:)
    - include: "#fx-options"
    - include: source.js
- name: support.class.element.js.mootools
  match: \b(effect)\b
- name: support.class.styles.fx.js.mootools
  match: \b(start)\b
  comment: |-
    
    Fx.Styles
    Allows you to animate multiple css properties at once; Extends Fx.Base, inherits all its properties. 
    http://docs.mootools.net/files/Effects/Fx-Styles-js.html
- endCaptures: 
    "1": 
      name: punctuation.definition.parameters.end.js
  begin: (new)\s+(Fx\.Styles)(\()
  contentName: variable.parameter.fx.styles.js.mootools
  beginCaptures: 
    "1": 
      name: keyword.operator.new.js
    "2": 
      name: entity.name.type.instance.js.mootools
    "3": 
      name: punctuation.definition.parameters.begin.js
  end: (\)(;|$))
  patterns: 
  - include: "#element-functions"
  - include: "#array-functions"
  - include: "#dom-functions"
  - include: "#hash-functions"
  - endCaptures: 
      "1": 
        name: punctuation.definition.parameters.end.js
    begin: (\{)
    contentName: variable.parameter.fx.styles.options.js.mootools
    beginCaptures: 
      "1": 
        name: punctuation.definition.parameters.begin.js
    end: (\})(?=\))
    patterns: 
    - name: punctuation.separator.key-value.js.mootools
      match: (:)
    - include: "#fx-options"
    - include: source.js
- name: support.class.element.js.mootools
  match: \b(effects)\b
- name: support.class.transitions.fx.js.mootools
  match: \b(linear|quadIn|quadOut|quadInOut|cubicIn|cubicOut|cubicInOut|quartIn|quartOut|quartInOut|quintIn|quintOut|quintInOut|sineIn|sineOut|sineInOut|expoIn|expoOut|expoInOut|circIn|circOut|circInOut|elasticIn|elasticOut|elasticInOut|backIn|backOut|backInOut|bounceIn|bounceOut|bounceInOut)\b
  comment: |-
    
    Fx.Transitions
    A collection of tweaning transitions for use with the Fx.Base classes.
    http://docs.mootools.net/files/Effects/Fx-Transitions-js.html
- name: support.class.fx.utils.js.mootools
  match: \b(toggle|show)\b
  comment: |-
    
    Fx.Utils
    Contains Fx.Height, Fx.Width, Fx.Opacity.
    http://docs.mootools.net/files/Effects/Fx-Styles-js.html
- endCaptures: 
    "1": 
      name: punctuation.definition.parameters.end.js
  begin: (new)\s+(Fx\.(?:Height|Width|Opacity))(\()
  contentName: variable.parameter.fx.utils.js.mootools
  beginCaptures: 
    "1": 
      name: keyword.operator.new.js
    "2": 
      name: entity.name.type.instance.js.mootools
    "3": 
      name: punctuation.definition.parameters.begin.js
  end: (\));?$
  patterns: 
  - include: "#element-functions"
  - include: "#array-functions"
  - include: "#dom-functions"
  - include: "#hash-functions"
  - endCaptures: 
      "1": 
        name: punctuation.definition.parameters.end.js
    begin: (\{)
    contentName: variable.parameter.fx.utils.options.js.mootools
    beginCaptures: 
      "1": 
        name: punctuation.definition.parameters.begin.js
    end: (\})\)
    patterns: 
    - name: punctuation.separator.key-value.js.mootools
      match: (:)
    - include: "#fx-options"
    - include: source.js
- name: support.class.element.js.mootools
  match: \b(makeResizable)\b
  comment: |-
    
    Drag.Base
    Modify two css properties of an element based on the position of the mouse.
    http://docs.mootools.net/files/Drag/Drag-Base-js.html
- name: support.class.element.js.mootools
  match: \b(makeDraggable)\b
  comment: |-
    
    Drag.Move
    Modify two css properties of an element based on the position of the mouse.
    http://docs.mootools.net/files/Drag/Drag-Base-js.html
- include: "#leading-space"
- include: source.js
foldingStopMarker: (^\s*\}|^\s*\)|^(?!.*/\*).*\*/)
keyEquivalent: ^~J
comment: |
  
  MooTools Framework by Valerio Proietti. 
  http://mootools.net
  This syntax document is largely based on the documentation at http://docs.mootools.net
  Initial bundle by Joe Maller. 

