/* * Copyright (c) 2005, The haXe Project Contributors * All rights reserved. * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * - Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * - Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE HAXE PROJECT CONTRIBUTORS "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE HAXE PROJECT CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. */ package js; // allow both indexed and dot accessses extern class HtmlCollection implements ArrayAccess, implements Dynamic { var length(default,null) : Int; } // the base typedef for every DOM element typedef MetaDom = { var nodeName : String; var nodeType : Int; var nodeValue : String; var parentNode : T; var childNodes : HtmlCollection; var firstChild : T; var lastChild : T; var nextSibling : T; var previousSibling : T; function appendChild( child : T ) : Void; function cloneNode( deep : Bool ) : T; function hasChildNodes() : Bool; function insertBefore( newChild : T, refChild : T ) : Void; function removeChild( child : T ) : Void; function replaceChild( child : T, oldChild : T ) : Void; function getAttribute( attr : String ) : String; function setAttribute( attr : String, val : String ) : Void; } typedef Dom = MetaDom typedef HtmlDom = {> MetaDom, var id : String; var title : String; var lang : String; var dir : String; var innerHTML : String; var className : String; var style : Style; function getElementsByTagName( tag : String ) : HtmlCollection; var scrollTop : Int; var scrollLeft : Int; var scrollHeight(default,null) : Int; var scrollWidth(default,null) : Int; var clientHeight(default,null) : Int; var clientWidth(default,null) : Int; var offsetParent : HtmlDom; var offsetLeft : Int; var offsetTop : Int; var offsetWidth : Int; var offsetHeight : Int; function blur() : Void; function click() : Void; function focus() : Void; var onscroll : Event -> Void; var onblur : Event -> Void; var onclick : Event -> Void; var ondblclick : Event -> Void; var onfocus : Event -> Void; var onkeydown : Event -> Void; var onkeypress : Event -> Void; var onkeyup : Event -> Void; var onmousedown : Event -> Void; var onmousemove : Event -> Void; var onmouseout : Event -> Void; var onmouseover : Event -> Void; var onmouseup : Event -> Void; var onresize : Event -> Void; } typedef FormElement = {> HtmlDom, var disabled : Bool; var form : Form; var name : String; var type : String; var value : String; function select() : Void; var onselect : Event -> Void; var onchange : Event -> Void; } typedef Anchor = {> HtmlDom, var accessKey : String; var href : String; var name: String; var rel : String; var rev : String; var tabIndex : Int; var target : String; #if ie5 var charset : String; var coords : String; var hreflang : String; var shape : String; var type : String; #end } typedef Body = {> HtmlDom, // IE only, NO W3C var accessKey : String; var aLink : String; var background : String; var bgColor : String; var link : String; var text : String; var vLink : String; } typedef Button = {> FormElement, } typedef Checkbox = {> FormElement, var checked : Bool; var defaultChecked : Bool; } typedef Document = {> HtmlDom, var anchors : HtmlCollection; // applets : Applet is deprecated in Dom2 var forms : HtmlCollection
; var images : HtmlCollection; var links : HtmlCollection; // plugins : Not in IE, not in W3C /* deprecated in Dom2 , use body var alinkColor; var background; var bgColor; var fgColor; var linkColor; var vlinkColor; */ var body : Body; var cookie : String; var domain : String; var referrer : String; // TODO : var URL : String; // not W3C , need infos : var embeds : HtmlCollection; // var lastModified : Date; // commented : does not include date by default var styleSheets : HtmlCollection; function getElementsByTag( tag : String ) : HtmlCollection; function open() : Void; function write( str : String ) : Void; function writeln( str : String ) : Void; function close() : Void; function getElementById( id : String ) : HtmlDom; function getElementsByName( name : String ) : HtmlCollection; function createElement( name : String ) : HtmlDom; } typedef Event = { var target : HtmlDom; var type : String; // TO COMPLETE... (need infos) var clientX : Int; var clientY : Int; var screenX : Int; var screenY : Int; var button : Int; var keyCode : Int; var shiftKey : Bool; var ctrlKey : Bool; var altKey : Bool; var cancelBubble : Bool; } typedef FileUpload = {> FormElement, var defaultValue : String; } typedef Form = {> HtmlDom, var elements : HtmlCollection; var acceptCharset : String; var action : String; var encoding : String; var enctype : String; var length : Int; var method : String; var name : String; var tabIndex : Int; var target : String; function reset() : Void; function submit() : Void; var onreset : Event -> Void; var onsubmit : Event -> Bool; } typedef Frame = {> HtmlDom, var contentDocument : Document; var frameBorder : String; // IE6 only ? var longDesc : String var marginHeight : String; var marginWidth : String; var name : String; var noResize : Bool; var scrolling : String; var src : String; } typedef Frameset = {> HtmlDom, var cols : Int; var rows : Int; } typedef Hidden = {> FormElement, var defaultValue : String; } typedef History = { var length : Int; function back() : Void; function forward() : Void; function go( p : Dynamic ) : Void; } typedef IFrame = {> HtmlDom, var contentDocument : Document; var frameBorder : String; var height : Int; var width : Int; // IE6 only ? var longDesc : String var marginHeight : String; var marginWidth : String; var name : String; var scrolling : String; var src : String; } typedef Image = {> HtmlDom, var align : String; var alt : String; var border : String; var height : Int; var hspace : Int; var isMap : Bool; // IE only : var longDesc : String; var name : String; var src : String; var useMap : String; var vspace : Int; var width : Int; var complete : Bool; var lowsrc : String; var onabort : Event -> Void; var onerror : Event -> Void; var onload : Event -> Void; } typedef Link = {> HtmlDom, var charset : String; var disabled : Bool; var href : String; var hreflang : String; var media : String; var rel : String; var rev : String; var target : String; var type : String; var name : String; var onload : Event -> Void; } typedef Location = { var hash : String; var host : String; var hostname : String; var href : String; var pathname : String; var port : Int; var protocol : String; var search : String; function assign( url : String ) : Void; function reload( ?useCache : Bool ) : Void; function replace( url : String ) : Void; } typedef Navigator = { // var plugins : HtmlCollection var appCodeName : String; var appName : String; var appVersion : String; var cookieEnabled : Bool; var platform : String; var userAgent : String; /* IE only ? var appMinorVersion : String var browserLanguage : String var cpuClass : String; var onLine : Bool; var systemLanguage : String; var userLanguage : String; */ function javaEnabled() : Bool; function taintEnabled() : Bool; } typedef Option = {> FormElement, var defaultSelected : Bool; var selected : Bool; var text : String; } typedef Password = {> FormElement, var defaultValue : String; var maxLength : Int; var readOnly : Bool; var size : Int; } typedef Radio = {> FormElement, var checked : Bool; var defaultChecked : Bool; var size : Int; } typedef Reset = {> FormElement, } typedef Screen = { var availHeight : Int; var availWidth : Int; var colorDepth : Int; var height : Int; var width : Int; // FF only ? var pixelDepth : Int; /* IE only ? var bufferDepth : Int; var deviceXDPI : Int; var deviceYDPI : Int; var logicalXDPI : Int; var logicalYDPI : Int; var updateInterval : Int; */ } typedef Select = {> FormElement, var options : HtmlCollection