module Data.DOM.Element
       (getAttribute, setAttribute, removeAttribute, getAttributeNode,
        setAttributeNode, removeAttributeNode, getElementsByTagName,
        getAttributeNS, setAttributeNS, removeAttributeNS,
        getAttributeNodeNS, setAttributeNodeNS, getElementsByTagNameNS,
        hasAttribute, hasAttributeNS, get'tagName, getm'tagName)
       where
import Data.DOM.Dom
import Control.Monad
import BrownPLT.JavaScript
import Data.DOM.WBTypes
import Data.DOM.Document (createElement)
 
getAttribute ::
             (Monad mn, CElement this) =>
               Expression String -> Expression this -> mn (Expression String)
getAttribute a thisp
  = do let et = undefined :: String
       let r = DotRef et (thisp /\ et) (Id et "getAttribute")
       return (CallExpr et r [a /\ et])
 
setAttribute ::
             (Monad mn, CElement this) =>
               Expression String ->
                 Expression String -> Expression this -> mn (Expression ())
setAttribute a b thisp
  = do let et = undefined :: ()
       let r = DotRef et (thisp /\ et) (Id et "setAttribute")
       return (CallExpr et r [a /\ et, b /\ et])
 
removeAttribute ::
                (Monad mn, CElement this) =>
                  Expression String -> Expression this -> mn (Expression ())
removeAttribute a thisp
  = do let et = undefined :: ()
       let r = DotRef et (thisp /\ et) (Id et "removeAttribute")
       return (CallExpr et r [a /\ et])
 
getAttributeNode ::
                 (Monad mn, CElement this, CAttr zz) =>
                   Expression String -> Expression this -> mn (Expression zz)
getAttributeNode a thisp
  = do let et = undefined :: zz
       let r = DotRef et (thisp /\ et) (Id et "getAttributeNode")
       return (CallExpr et r [a /\ et])
 
setAttributeNode ::
                 (Monad mn, CElement this, CAttr newAttr, CAttr zz) =>
                   Expression newAttr -> Expression this -> mn (Expression zz)
setAttributeNode a thisp
  = do let et = undefined :: zz
       let r = DotRef et (thisp /\ et) (Id et "setAttributeNode")
       return (CallExpr et r [a /\ et])
 
removeAttributeNode ::
                    (Monad mn, CElement this, CAttr oldAttr, CAttr zz) =>
                      Expression oldAttr -> Expression this -> mn (Expression zz)
removeAttributeNode a thisp
  = do let et = undefined :: zz
       let r = DotRef et (thisp /\ et) (Id et "removeAttributeNode")
       return (CallExpr et r [a /\ et])
 
getElementsByTagName ::
                     (Monad mn, CElement this, CNodeList zz) =>
                       Expression String -> Expression this -> mn (Expression zz)
getElementsByTagName a thisp
  = do let et = undefined :: zz
       let r = DotRef et (thisp /\ et) (Id et "getElementsByTagName")
       return (CallExpr et r [a /\ et])
 
getAttributeNS ::
               (Monad mn, CElement this) =>
                 Expression String ->
                   Expression String -> Expression this -> mn (Expression String)
getAttributeNS a b thisp
  = do let et = undefined :: String
       let r = DotRef et (thisp /\ et) (Id et "getAttributeNS")
       return (CallExpr et r [a /\ et, b /\ et])
 
setAttributeNS ::
               (Monad mn, CElement this) =>
                 Expression String ->
                   Expression String ->
                     Expression String -> Expression this -> mn (Expression ())
setAttributeNS a b c thisp
  = do let et = undefined :: ()
       let r = DotRef et (thisp /\ et) (Id et "setAttributeNS")
       return (CallExpr et r [a /\ et, b /\ et, c /\ et])
 
removeAttributeNS ::
                  (Monad mn, CElement this) =>
                    Expression String ->
                      Expression String -> Expression this -> mn (Expression ())
removeAttributeNS a b thisp
  = do let et = undefined :: ()
       let r = DotRef et (thisp /\ et) (Id et "removeAttributeNS")
       return (CallExpr et r [a /\ et, b /\ et])
 
getAttributeNodeNS ::
                   (Monad mn, CElement this, CAttr zz) =>
                     Expression String ->
                       Expression String -> Expression this -> mn (Expression zz)
getAttributeNodeNS a b thisp
  = do let et = undefined :: zz
       let r = DotRef et (thisp /\ et) (Id et "getAttributeNodeNS")
       return (CallExpr et r [a /\ et, b /\ et])
 
setAttributeNodeNS ::
                   (Monad mn, CElement this, CAttr newAttr, CAttr zz) =>
                     Expression newAttr -> Expression this -> mn (Expression zz)
setAttributeNodeNS a thisp
  = do let et = undefined :: zz
       let r = DotRef et (thisp /\ et) (Id et "setAttributeNodeNS")
       return (CallExpr et r [a /\ et])
 
getElementsByTagNameNS ::
                       (Monad mn, CElement this, CNodeList zz) =>
                         Expression String ->
                           Expression String -> Expression this -> mn (Expression zz)
getElementsByTagNameNS a b thisp
  = do let et = undefined :: zz
       let r = DotRef et (thisp /\ et) (Id et "getElementsByTagNameNS")
       return (CallExpr et r [a /\ et, b /\ et])
 
hasAttribute ::
             (Monad mn, CElement this) =>
               Expression String -> Expression this -> mn (Expression Bool)
hasAttribute a thisp
  = do let et = undefined :: Bool
       let r = DotRef et (thisp /\ et) (Id et "hasAttribute")
       return (CallExpr et r [a /\ et])
 
hasAttributeNS ::
               (Monad mn, CElement this) =>
                 Expression String ->
                   Expression String -> Expression this -> mn (Expression Bool)
hasAttributeNS a b thisp
  = do let et = undefined :: Bool
       let r = DotRef et (thisp /\ et) (Id et "hasAttributeNS")
       return (CallExpr et r [a /\ et, b /\ et])
 
get'tagName ::
            (Monad mn, CElement this) =>
              Expression this -> mn (Expression String)
get'tagName thisp
  = do let et = undefined :: String
       let r = DotRef et (thisp /\ et) (Id et "tagName")
       return r
 
getm'tagName ::
             (Monad mn, CElement this) =>
               Expression this -> mn (Expression String)
getm'tagName = get'tagName