/* ------------------------------------------------------------------------ *\
   mixins.util.margin
\* ------------------------------------------------------------------------ */


/**
 * [set description]
 */
u-margin--set()
  if null in arguments
    margin-top: arguments[0] if arguments[0] != null
    margin-right: arguments[1] if arguments[1] != null
    if length(arguments) == 2
      margin-bottom: arguments[0] if arguments[0] != null
      margin-left: arguments[1] if arguments[1] != null
    else if length(arguments) == 3
      margin-bottom: arguments[2] if arguments[2] != null
      margin-left: arguments[1] if arguments[1] != null
    else if length(arguments) == 4
      margin-bottom: arguments[2] if arguments[2] != null
      margin-left: arguments[3] if arguments[3] != null
  else
    margin: arguments


/**
 * [margin description]
 * @param  {[type]} direction [description]
 * @param  {[type]} size      [description]
 * @return {[type]}           [description]
 */
u-margin(direction, size)
  if direction == "all"
    u-margin--set(size)

  else if direction == "vertical"
    u-margin--set(size null)

  else if direction == "horizontal"
    u-margin--set(null size)

  else if direction == "top"
    u-margin--set(size null null null)

  else if direction == "right"
    u-margin--set(null size null null)

  else if direction == "bottom"
    u-margin--set(null null size null)

  else
    u-margin--set(null null null size)


/**
 * [top description]
 * @param  {[type]} size [description]
 * @return {[type]}      [description]
 */
u-margin--top(size)
  u-margin("top", size)


/**
 * [xxxl description]
 * @return {[type]} [description]
 */
u-margin--top--xxxl()
  u-margin("top", nix.sizes.xxxl)


/**
 * [xxl description]
 * @return {[type]} [description]
 */
u-margin--top--xxl()
  u-margin("top", nix.sizes.xxl)


/**
 * [xl description]
 * @return {[type]} [description]
 */
u-margin--top--xl()
  u-margin("top", nix.sizes.xl)


/**
 * [lg description]
 * @return {[type]} [description]
 */
u-margin--top--lg()
  u-margin("top", nix.sizes.lg)


/**
 * [md description]
 * @return {[type]} [description]
 */
u-margin--top--md()
  u-margin("top", nix.sizes.md)


/**
 * [sm description]
 * @return {[type]} [description]
 */
u-margin--top--sm()
u-margin("top", nix.sizes.sm)


/**
 * [xs description]
 * @return {[type]} [description]
 */
u-margin--top--xs()
  u-margin("top", nix.sizes.xs)


/**
 * [xxs description]
 * @return {[type]} [description]
 */
u-margin--top--xxs()
  u-margin("top", nix.sizes.xxs)


/**
 * [xxxs description]
 * @return {[type]} [description]
 */
u-margin--top--xxxs()
  u-margin("top", nix.sizes.xxxs)


/**
 * [0 description]
 * @return {[type]} [description]
 */
u-margin--top--0()
  u-margin("top", 0)


/**
 * [horizontal description]
 * @param  {[type]} size [description]
 * @return {[type]}      [description]
 */
u-margin--right(size)
  u-margin("right", size)


/**
 * [xxxl description]
 * @return {[type]} [description]
 */
u-margin--right--xxxl()
  u-margin("right", nix.sizes.xxxl)


/**
 * [xxl description]
 * @return {[type]} [description]
 */
u-margin--right--xxl()
  u-margin("right", nix.sizes.xxl)


/**
 * [xl description]
 * @return {[type]} [description]
 */
u-margin--right--xl()
  u-margin("right", nix.sizes.xl)


/**
 * [lg description]
 * @return {[type]} [description]
 */
u-margin--right--lg()
  u-margin("right", nix.sizes.lg)


/**
 * [md description]
 * @return {[type]} [description]
 */
u-margin--right--md()
  u-margin("right", nix.sizes.md)


/**
 * [sm description]
 * @return {[type]} [description]
 */
u-margin--right--sm()
  u-margin("right", nix.sizes.sm)


/**
 * [xs description]
 * @return {[type]} [description]
 */
u-margin--right--xs()
  u-margin("right", nix.sizes.xs)


/**
 * [xxs description]
 * @return {[type]} [description]
 */
u-margin--right--xxs()
  u-margin("right", nix.sizes.xxs)


/**
 * [xxxs description]
 * @return {[type]} [description]
 */
u-margin--right--xxxs()
  u-margin("right", nix.sizes.xxxs)


/**
 * [0 description]
 * @return {[type]} [description]
 */
u-margin--right--0()
  u-margin("right", 0)


/**
 * [horizontal description]
 * @param  {[type]} size [description]
 * @return {[type]}      [description]
 */
u-margin--bottom(size)
  u-margin("bottom", size)


/**
 * [xxxl description]
 * @return {[type]} [description]
 */
u-margin--bottom--xxxl()
  u-margin("bottom", nix.sizes.xxxl)


/**
 * [xxl description]
 * @return {[type]} [description]
 */
u-margin--bottom--xxl()
  u-margin("bottom", nix.sizes.xxl)


/**
 * [xl description]
 * @return {[type]} [description]
 */
u-margin--bottom--xl()
  u-margin("bottom", nix.sizes.xl)


/**
 * [lg description]
 * @return {[type]} [description]
 */
u-margin--bottom--lg()
  u-margin("bottom", nix.sizes.lg)


/**
 * [md description]
 * @return {[type]} [description]
 */
u-margin--bottom--md()
  u-margin("bottom", nix.sizes.md)


/**
 * [sm description]
 * @return {[type]} [description]
 */
u-margin--bottom--sm()
  u-margin("bottom", nix.sizes.sm)


/**
 * [xs description]
 * @return {[type]} [description]
 */
u-margin--bottom--xs()
  u-margin("bottom", nix.sizes.xs)


/**
 * [xxs description]
 * @return {[type]} [description]
 */
u-margin--bottom--xxs()
  u-margin("bottom", nix.sizes.xxs)


/**
 * [xxxs description]
 * @return {[type]} [description]
 */
u-margin--bottom--xxxs()
  u-margin("bottom", nix.sizes.xxxs)


/**
 * [0 description]
 * @return {[type]} [description]
 */
u-margin--bottom--0()
  u-margin("bottom", 0)


/**
 * [horizontal description]
 * @param  {[type]} size [description]
 * @return {[type]}      [description]
 */
u-margin--left(size)
  u-margin("left", size)


/**
 * [xxxl description]
 * @return {[type]} [description]
 */
u-margin--left--xxxl()
  u-margin("left", nix.sizes.xxxl)


/**
 * [xxl description]
 * @return {[type]} [description]
 */
u-margin--left--xxl()
  u-margin("left", nix.sizes.xxl)


/**
 * [xl description]
 * @return {[type]} [description]
 */
u-margin--left--xl()
  u-margin("left", nix.sizes.xl)


/**
 * [lg description]
 * @return {[type]} [description]
 */
u-margin--left--lg()
  u-margin("left", nix.sizes.lg)


/**
 * [md description]
 * @return {[type]} [description]
 */
u-margin--left--md()
  u-margin("left", nix.sizes.md)


/**
 * [sm description]
 * @return {[type]} [description]
 */
u-margin--left--sm()
  u-margin("left", nix.sizes.sm)


/**
 * [xs description]
 * @return {[type]} [description]
 */
u-margin--left--xs()
  u-margin("left", nix.sizes.xs)


/**
 * [xxs description]
 * @return {[type]} [description]
 */
u-margin--left--xxs()
  u-margin("left", nix.sizes.xxs)


/**
 * [xxxs description]
 * @return {[type]} [description]
 */
u-margin--left--xxxs()
  u-margin("left", nix.sizes.xxxs)


/**
 * [0 description]
 * @return {[type]} [description]
 */
u-margin--left--0()
  u-margin("left", 0)


/**
 * [vertical description]
 * @param  {[type]} size [description]
 * @return {[type]}      [description]
 */
u-margin--vertical(size)
  u-margin--top(size)
  u-margin--bottom(size)


/**
 * [xxxl description]
 * @return {[type]} [description]
 */
u-margin--vertical--xxxl()
  u-margin--top--xxxl()
  u-margin--bottom--xxxl()


/**
 * [xxl description]
 * @return {[type]} [description]
 */
u-margin--vertical--xxl()
  u-margin--top--xxl()
  u-margin--bottom--xxl()


/**
 * [xl description]
 * @return {[type]} [description]
 */
u-margin--vertical--xl()
  u-margin--top--xl()
  u-margin--bottom--xl()


/**
 * [lg description]
 * @return {[type]} [description]
 */
u-margin--vertical--lg()
  u-margin--top--lg()
  u-margin--bottom--lg()


/**
 * [md description]
 * @return {[type]} [description]
 */
u-margin--vertical--md()
  u-margin--top--md()
  u-margin--bottom--md()


/**
 * [sm description]
 * @return {[type]} [description]
 */
u-margin--vertical--sm()
  u-margin--top--sm()
  u-margin--bottom--sm()


/**
 * [xs description]
 * @return {[type]} [description]
 */
u-margin--vertical--xs()
  u-margin--top--xs()
  u-margin--bottom--xs()


/**
 * [xxs description]
 * @return {[type]} [description]
 */
u-margin--vertical--xxs()
  u-margin--top--xxs()
  u-margin--bottom--xxs()


/**
 * [xxxs description]
 * @return {[type]} [description]
 */
u-margin--vertical--xxxs()
  u-margin--top--xxxs()
  u-margin--bottom--xxxs()


/**
 * [0 description]
 * @return {[type]} [description]
 */
u-margin--vertical--0()
  u-margin--top--0()
  u-margin--bottom--0()


/**
 * [horizontal description]
 * @param  {[type]} size [description]
 * @return {[type]}      [description]
 */
u-margin--horizontal(size)
  u-margin--right(size)
  u-margin--left(size)


/**
 * [xxxl description]
 * @return {[type]} [description]
 */
u-margin--horizontal--xxxl()
  u-margin--right--xxxl()
  u-margin--left--xxxl()


/**
 * [xxl description]
 * @return {[type]} [description]
 */
u-margin--horizontal--xxl()
  u-margin--right--xxl()
  u-margin--left--xxl()


/**
 * [xl description]
 * @return {[type]} [description]
 */
u-margin--horizontal--xl()
  u-margin--right--xl()
  u-margin--left--xl()


/**
 * [lg description]
 * @return {[type]} [description]
 */
u-margin--horizontal--lg()
  u-margin--right--lg()
  u-margin--left--lg()


/**
 * [md description]
 * @return {[type]} [description]
 */
u-margin--horizontal--md()
  u-margin--right--md()
  u-margin--left--md()


/**
 * [sm description]
 * @return {[type]} [description]
 */
u-margin--horizontal--sm()
  u-margin--right--sm()
  u-margin--left--sm()


/**
 * [xs description]
 * @return {[type]} [description]
 */
u-margin--horizontal--xs()
  u-margin--right--xs()
  u-margin--left--xs()


/**
 * [xxs description]
 * @return {[type]} [description]
 */
u-margin--horizontal--xxs()
  u-margin--right--xxs()
  u-margin--left--xxs()


/**
 * [xxxs description]
 * @return {[type]} [description]
 */
u-margin--horizontal--xxxs()
  u-margin--right--xxxs()
  u-margin--left--xxxs()


/**
 * [0 description]
 * @return {[type]} [description]
 */
u-margin--horizontal--0()
  u-margin--right--0()
  u-margin--left--0()


/**
 * [all description]
 * @param  {[type]} size [description]
 * @return {[type]}      [description]
 */
u-margin--all(size)
  u-margin--vertical(size)
  u-margin--horizontal(size)


/**
 * [xxxl description]
 * @return {[type]} [description]
 */
u-margin--all--xxxl()
  u-margin--vertical--xxxl()
  u-margin--horizontal--xxxl()


/**
 * [xxl description]
 * @return {[type]} [description]
 */
u-margin--all--xxl()
  u-margin--vertical--xxl()
  u-margin--horizontal--xxl()


/**
 * [xl description]
 * @return {[type]} [description]
 */
u-margin--all--xl()
  u-margin--vertical--xl()
  u-margin--horizontal--xl()


/**
 * [lg description]
 * @return {[type]} [description]
 */
u-margin--all--lg()
  u-margin--vertical--lg()
  u-margin--horizontal--lg()


/**
 * [md description]
 * @return {[type]} [description]
 */
u-margin--all--md()
  u-margin--vertical--md()
  u-margin--horizontal--md()


/**
 * [sm description]
 * @return {[type]} [description]
 */
u-margin--all--sm()
  u-margin--vertical--sm()
  u-margin--horizontal--sm()


/**
 * [xs description]
 * @return {[type]} [description]
 */
u-margin--all--xs()
  u-margin--vertical--xs()
  u-margin--horizontal--xs()


/**
 * [xxs description]
 * @return {[type]} [description]
 */
u-margin--all--xxs()
  u-margin--vertical--xxs()
  u-margin--horizontal--xxs()


/**
 * [xxxs description]
 * @return {[type]} [description]
 */
u-margin--all--xxxs()
  u-margin--vertical--xxxs()
  u-margin--horizontal--xxxs()


/**
 * [0 description]
 * @return {[type]} [description]
 */
u-margin--all--0()
  u-margin--vertical--0()
  u-margin--horizontal--0()


/**
 * [create description]
 * @param  {[type]} selector [description]
 * @return {[type]}          [description]
 */
u-margin--create(selector)
  for dk, dv in nix.directions
    for sk, sv in nix.sizes
      [{selector}~=\"--{dv}--{sk}\"]
        u-margin(dk, sv)
