namespace web; 

import util.metaProperty
import win; 
import com;

mapurl = function(url){
 	var local = ..io.localpath(url)
	if( local ){  
		if(not ..io.exist(local) ){  
			url = ..string.upper(
			..string.replace(url,"@\","/")
			)
			return ..string.concat( "res://", ..io._exepath , "/RES/" ,url); 
		} 
		return local
	}
	return url;
}

class form{

	ctor( winform,hostflag,dlControl,agent)begin
		this.dlControl = dlControl;
		this.agent = agent;
	
		//默认是有滚动条的，没有才需要设置
		if( not winform[["scroll"]]){
			hostflag = hostflag?(hostflag|0x8/*_UIFLAG_SCROLL_NO*/) : hostflag/*_UIFLAG_SCROLL_NO*/ 
		} 
 		this._hostflag = hostflag; 
 		
 		//响应默认DISPID的Invoke调用
 		this[-5512] = IDisptch[-5512] 
 		this[-5513] = IDisptch[-5513] 
 		
		..com.CreateEmbed( this ,winform ) 
		/*
		this._form = winform
		this._host = 宿主对象
		this._object = 控件对象
		*/ 
		 
		winform.web = this;
		this._browser = this._object 
		this.hwndEmbedding = ..win.findEx( winform.hwnd,0,"shell embedding" )
		this.hwndControl = ..win.getLeaf( winform.hwnd )  
		
		//如果是控件,查找父窗口  
		var mainForm = ..win.ui.getForm(winform.hwnd)  
		if( ! mainForm[["_webHwnd"]] ){
			mainForm._webHwnd = {};//web窗体句柄映射关系
			
			var isChild = ..win.isChild;
			var getFocus =  ..win.getFocus;
			var isDialogMessage = ..win.isDialogMessage
			mainForm.isDialogMessage = function(hwnd,msg){  
				//if (   (msg.message >= 0x100/*_WM_KEYFIRST*/) && (msg.message <= 0x108/*_WM_KEYLAST*/) ) { 
					var focus = getFocus();
					for(hwnd,wb in mainForm._webHwnd ){ 
						if( isChild(hwnd,focus ) ){
							if( wb._host.tranacc(msg) )  
				   				return true;   
				   			return;
						} 
					} 
					return isDialogMessage(hwnd,msg);  
			 	//}
			}
			mainForm._ondestroy = function(){
				for(hwnd,wb in mainForm._webHwnd ){
					//必须按以下顺序释放资源
					collectgarbage("collect")
					..com.ReleaseConnection(wb._browser);
					..com.Release(wb._browser)
					wb._host.close()  
				} 
			}
		} 
		mainForm._webHwnd[ winform.hwnd ] = this;   
		 
		winform.adjust = function( cx,cy) {	 
			..win.setRect(this.hwndEmbedding,winform.clientRect)  
		};  
		var sink, cookie =..com.Connect(this._browser, this );
	end; 
	
	waitClose = function(){
		//等待直到web窗口被关闭
		var hwnd = this._form.hwnd; 
		while( ..win.isWindow(hwnd) ) 
			..win.delay(100)  
	}
	
	isbrowser = function(pdisp){
		return ..com.topointer(this._browser) == ..com.topointer(pdisp)
	}
 	
	wait = function(url,timeout){ 
		//等待页面下载完成(如果不指定url参数，则等待当前页面打开)
		var hwnd = this._form.hwnd; 
		var delay = ..win.delay;
		var browser = this._browser;
		var curl;
		var tk = 0;
		var iswindow = ..win.isWindow;
		while( iswindow(hwnd) ){ 
		  	
				do { 
	   				delay(100)
	   				tk+=101;
	   				
	   				if( timeout && tk>timeout)
						return false,"Timeout!";
						
				}while( iswindow(hwnd) && ( (browser.ReadyState != 4/*READYSTATE_COMPLETE*/) || browser.Busy ) )
			 	
			 	//如果用户没有指定需要到达的URL
				if(!url)
					return true;   
				if( ..string.find( browser.LocationURL,url) )
					return true;
					
				curl = ..string.lower(  browser.LocationURL ) ; 
				if( ..string.startWith( curl, "res://") ){ 
	   				if(..string.find( curl,"err") )  
	   					return false; 
				}			
					 
				delay(100) 
				tk+=101;
				if( timeout && tk>timeout)
					return false,"Timeout!";
	  	
		} 
		return false;
	}
	
	waitEle = function(name,frame,timeout){ 
		//等待页面下载完成(如果不指定url参数，则等待当前页面打开)
		var hwnd = this._form.hwnd; 
		var delay = ..win.delay; 
		var ele;
		var tk = 0;
		while( ..win.isWindow(hwnd) ){ 
			delay(100)
			tk+=101;
			ele = this.getEle(name,frame) 
			if(ele) 
				return ele;
			if( timeout && tk>timeout)
					return null,"Timeout!"
					
		} 
		return null;
	}
	waitDoc = function( frame,timeout){ 
		//等待页面下载完成(如果不指定url参数，则等待当前页面打开)
		var hwnd = this._form.hwnd; 
		var delay = ..win.delay; 
		var doc;
		var tk = 0;
		while( ..win.isWindow(hwnd) ){ 
			delay(100)
			tk+=101;
			doc = this.getDoc(frame) 
			if(doc) 
				return doc;
				
			if( timeout && tk>timeout)
					return null,"Timeout!"
					
		} 
		return null;
	}
 	
	doScript = function(s,frame,n="javascript"){//执行网页脚本或框架内脚本
		var doc = this.getDoc(frame)
		if( doc  ){
			var wd =  doc.parentWindow or doc.contentWindow 
			return wd ? wd.execScript(s,n);
		} 
   	
	}
	
	fromPoint = function(x = 0,y=0,frame){
		var doc = this.getDoc(frame);
   		if( doc  ){
				return doc.elementFromPoint(x,y);
   		}
	}
	
	getDoc = function(frame){ 
   		if(#frame){
   			var ele =  this._browser.Document.getElementById(frame);
   			if(ele){
   				//return ele.contentDocument;
   				return ele.contentWindow.Document; 
   			}
   				
   		}
   		else
   			return this._browser.Document; 
	}
	
	
	getEle = function(id,frame){
		var doc = this.getDoc(frame);
		if(doc){
			var ele = doc.getElementById(id);
			if(ele) return ele;
		 	
			var eles = doc.getElementsByName(id);
			return eles(0); 
		} 
	}
	getEles = function(name,frame){
   		var doc = this.getDoc(frame);
   		return doc && doc.getElementsByName(name);
	}
 	
 	
	
 	getOption = function(name,ind,frame){
		var ele = this.getEle(name,frame);  
		return ele.options(ind);
	}
	
	findOption = function(name,v,frame){
		var ele = this.getEle(name,frame);  
		for i,opt in com.each(ele.options) {
			if(opt.value=v or opt.innerText==v)
				return opt;
		} 
	} 
	
	
	write = function(strhtml,frame ){
		var doc = this.getDoc(frame)
		if(!doc){ 
			if(!frame){
				this.go("about:blank")
				doc = this.document;
			}
		}
		if(!doc)
			return false;
		
		doc.write(strhtml); 
		doc.close();
	}   
	
	go = function(url,headers,target="_self"){  
		url = ..web.mapurl(url);  
		this._browser.Navigate(url,0,target,null,..string.concat(headers,this.addHeaders))
	}
	post = function(url,postdata,headers='\r\nContent-Type: application/x-www-form-urlencoded',target="_self"){ 
		if(headers=="")headers=null;
		if(!postdata)return this.go(url); 
		url = ..web.mapurl(url);
		this._browser.Navigate(url,0,target,{ postdata/* 转换为字节数组*/ } ,..string.concat(headers,this.addHeaders) )
	}
	
	goback = function(){ 
		this._browser.GoBack()
	} 
	goforward = function(){ 
		this._browser.GoForward()
	} 
	gohome = function(){ 
		this._browser.GoHome()
	} 
	gosearch = function(){ 
		this._browser.GoSearch()
	} 
	refresh = function(){ 
		this._browser.Refresh()
	}
	refresh2 = function(ref=REFRESH_COMPLETELY){ 
		this._browser.Refresh2(0)
	}
	refresh3 = function(ref=REFRESH_COMPLETELY){ 
		this._browser.Refresh2(3)
	}
	stop = function(){
		this._browser.Stop()
	}  
	
	eachAll = function(tag,frame){
		var doc = this.getDoc(frame); 
		if(doc){
			if(tag)
				return ..com.each( doc.all.tags(tag)  );
			 	
			return ..com.each( doc.all  );
		}
	}
	
	eachLinks = function(frame){
		return this.eachAll('A',frame )  ); 
	}
	
	@metaProperty;
}
 
namespace form { 

	IDisptch = {
		[-5512] = function(){
 			return owner.dlControl;
 		}
 		[-5513] = function(){ 
 				return owner.agent
 		}
	}

	metaProperty = ..util.metaProperty(
	
		["type"] = {
			_get = function(){ 
				return  owner._browser.Type
			} 	
		}; 
		document = {
			_get = function(){ 
				return  owner._browser.Document
			} 
		};
		host = {
			_get = function(){  
 				return  owner._browser.Document.parentWindow.location.host
			} 	
		}; 
		body = {
			_get = function(){ 
				return  owner._browser.Document.Body
			} 	
		};   
		location = {
			_get = function(){ 
			 	return owner._browser.LocationURL ;  
			}
			_set = function( value ){
				owner._browser.Navigate(value) ;  
			} 	
		};  
		silent = {
			_get = function(){ 
				return owner._browser.Silent ;  
			}
			_set = function( value ){
				owner._browser.Silent = value;  
			} 	
		}; 
		application = {
			_get = function(){ 
				return owner._browser.Application ;  
			}
		}
		execEle = function(ele,cmd,val,ui){ 
			if( type(ele)==type.string)
				ele = owner.getEle(ele);
				
			var controlRange = ele.document.body.createControlRange(); 
			if(!controlRange)
				return;
				
			//ele.contentEditable = true; 
			controlRange.addElement(ele); 
			controlRange.execCommand( cmd,ui,val); 
			//ele.contentEditable = false;  
		}
		exec = function(cmd,val,ui){
			owner.document.execCommand(cmd,ui,val,0); 
		} 
		execWb =  function(id,val,opt=1){ 
			return owner._browser.ExecWB(id,opt,val) 
		}  
		openproxy = {
			_get = function(){  
				var ie = ..com.CreateObject("InternetExplorer.Application.1")  
				ie.left=5000 
				ie.top=5000
				
				var wb = owner;//因为每个函数有自已的owner参数，创建一个wb变量将这里的owner保留给ie.DWebBrowserEvents2.BeforeNavigate2使用
				ie.DWebBrowserEvents2 = {
					BeforeNavigate2 = function( pDisp, url, Flags, TargetFrameName, PostData, Headers, Cancel ) begin 
						ie.Quit(); 
						ie = null;
						wb.post(url,PostData,Headers ) 
						return true;
					end; 
				} 
				..com.Connect(ie, ie.DWebBrowserEvents2 ) 
				ie.Application.RegisterAsBrowser = true;
				return ie.Application; 
			} 	
		};   
		
		["select"] = function(name,v,sel=true,frame){//支持框架
			var ele = owner.getEle(name,frame);   
			var opt;
			if(ele){
   				if(type(v)==type.number and v < ele.length){
   	   				opt = ele.options(v);
   				}
   				else{
   	   				for i,child in ..com.each(ele.options) {
						if(child.value=v or child.innerText==v){
							opt=child;
						}
					} 
   				}
			} 
			if( opt ){
				opt.selected = sel;
				if( ele.onchange )
					ele.fireEvent("onchange")
					
				return opt;
			}
		}
	 	
	) 
}
 
//自动提示
/******intellisense( ) 
web.mapurl(__/*根目录相对路径*/) = 将根目录下的相对路径转换为正确的URL\n支持发布后的内嵌资源文件\n此函数在web.form库内定义
web.form( __/*winform对象*/ ) = 创建web窗体
!wb.dlControl = 修改下载控制台参数\n
!wb.hwndEmbedding = 嵌入窗口
!wb.hwndControl = 控件窗口
!wb._browser = 浏览器控件,com对象
!wb._object = 控件对象
!wb.addHeaders = 设置默认的请求头\n在调用go()或post()函数时,将自动附加addHeaders
!wb.write("__") =  将字符串值写入网页、不允许追加
!wb.write("__","框架名") = 将字符串值写入框架网页、不允许追加
!wb.type = 返回当前加载的文件类型\n例如doc文件返回Microsoft Word Document 
!wb.wait(__,20000) = 等待指定的网址下载完成\n第二个参数指定最大超时值(毫秒)
!wb.wait("__") = 等待指定的网址下载完成，支持模式语法
!wb.wait() = 等待网页下载完成
!wb.write("__") = 将字符串值写入网页
!wb.waitClose() = 等待网页被关闭
!wb.showhelp = 是否允许显示帮助对话框
!wb.silent = 组件对话框、脚本错误对话框静默模式\n如果仅需禁用脚本错误对话框，建议设置noScriptErr属性
!wb.noScriptErr = @.noScriptErr=true;\n//禁止弹出脚本错误对话框，并允许脚本继续执行
!wb.go("__/*网址*/") = 打开网址或本地路径\n注意驱动器根目录要以反斜杠结束
!wb.post(.("__/*网址*/","k=v&k2=v2") = 自动提交表单
!wb.post(.("__/*网址*/","k=v&k2=v2","自定义http头") = 自动提交表单
!wb.post(.("__/*网址*/","k=v&k2=v2","自定义http头","目标框架") = 自动提交表单
!wb.location = 当前网址
!wb.host = 当前网址所在主机名
!wb.go("__/*网址*/","自定义http头") = 打开网址
!wb.go("__/*网址*/","自定义http头","目标框架") = 打开网址
?wb.eachAll = !ele.
?wb.eachLinks = !ele.
!wb.eachLinks() = @//创建迭代器,迭代页面所有超链接，例：\nfor i,link in ??.eachLinks() {\n	__\n}\n
!wb.eachAll() = @//创建迭代器,迭代页面所有节点，例：\nfor i,ele in ??.eachAll() {\n	__\n}\n
!wb.eachLinks("框架名") = @//创建迭代器,迭代页面所有超链接，例：\nfor i,link in ??.eachLinks("__/*框架名*/") {\n	\n}\n
!wb.eachAll("input") = @//创建迭代器,迭代页面所有输入控件，例：\nfor i,input in ??.eachAll("input") {\n	__\n}\n
!wb.eachAll("input","框架名") = @//创建迭代器,迭代页面所有输入控件，例：\nfor i,input in ??.eachAll("input","框架名") {\n	__\n}\n
!wb.goback()=导航到历史列表中的上一个页面
!wb.goforward()=导航到历史历表中的下一个项目
!wb.gohome()=导航到缺省页面
!wb.gosearch()=导航到缺省页面
!wb.refresh()=刷新页面\n如果服务器未更新则不会重新下载，类似在浏览器中按F5的效果
!wb.refresh2()=重新下载页面
!wb.refresh3()=重新下载最新页面\n添加Pragma:no-cache请求头,强制服务端刷新\n类似在浏览器中按下Ctrl+F5的效果
!wb.refresh2=根据指定的刷新级别刷新当前页面
!wb.stop()=停止当前导航
!wb.BeforeNavigate2 = @.BeforeNavigate2=function( pDisp, url, Flags, TargetFrameName, PostData, Headers, Cancel ) { 
/*导航发生前触发（打开网页前），刷新时不触发*/
__/*请输入代码*/
} 

!wb.showMenu = @.showMenu=function(x,y,id,ele){
	/*定义此事件函数则禁用默认的右键弹出菜单*/
	select(id) { 
		case 0/*_CONTEXT_MENU_DEFAULT */ {
		
			}
		case 1/*_CONTEXT_MENU_IMAGE*/ {
		
			}
		case 2/*_CONTEXT_MENU_CONTROL*/ {
		
			}
		case 4/*_CONTEXT_MENU_TEXTSELECT */ {
		
			}
		case 5/*_CONTEXT_MENU_ANCHOR*/ {
		
			}
	}
	return false;//返回false禁止默认菜单

}
!wb.showMsg = @.showMsg=function(text/*信息*/,caption/*标题*/){
	/*弹出对话框触发此事件*/
	
	return true; /*返回false则不显示对话框*/
}

!wb.CommandStateChange = @.CommandStateChang=function(cmd,enable) {
 	/*当命令的激活状态改变时触发。它表明何时激活或关闭Back和Forward菜单项或按钮 */
 	select(cmd) {
 		case 0xFFFFFFFF/*_CSC_UPDATECOMMANDS*/ {  
 			/*更新控制按钮*/
 		}
 		case 0x2/*_CSC_NAVIGATEBACK*/ {
 			/*启用或禁用后退按钮*/
 			__/*请输入代码*/
 		}
 		case 0x1/*_CSC_NAVIGATEFORWARD*/ {
 			/*启用或禁用前进按钮*/
 		}  
 	}
 } 

!wb.DocumentComplete = @.DocumentComplete=function( pDisp, url) {
	/*当整个文档完成时触发，刷新页面不触发*/
	__/*请输入代码*/
} 
 
!wb.DownloadBegin = @.DownloadBegin=function() {
	/*当某项下载操作已经开始后触发，刷新也可触发此事件*/
	__/*请输入代码*/
} 

!wb.DownloadComplete = @.DownloadComplete=function() {
	/*当某项下载操作已经完成后触发，刷新也可触发此事件*/
	__/*请输入代码*/
} 

!wb.FileDownload = @.FileDownload=function( activeDocument, cancel /*返回值*/) {
	__/*请输入代码*/
}   

!wb.NavigateComplete2 = @.NavigateComplete2=function(pDisp, url) {
	/*导航完成后触发，刷新时不触发*/
	__/*请输入代码*/
} 

!wb.OnVisible = @.OnVisible=function( Visible ) {
	/*显示触发*/
	__/*请输入代码*/
} ;

!wb.NavigateError = @.NavigateError=function(pDisp,url,target,statusCode,cancel /*返回值*/) {
	/*导航遇到错误时触发*/
	__/*请输入代码*/
} ; 

!wb.NewWindow3 = @.NewWindow3=function(ppDisp, Cancel,dwFlags,bstrUrlContext, bstrUrl ) {
 	/*弹出新窗口以前触发 */
	__/*请输入代码*/
} ; 

!wb.TitleChange = @.TitleChange=function( text ) {
	/*网页标题改变时触发*/
	__/*请输入代码*/
} ;

				

!wb.NewWindow2 = @.NewWindow2=function( ppDisp, Cancel) {
	/*弹出新窗口以前触发 */
	return owner.openproxy /*创建代理窗口捕获网址并在当前窗口打开*/  
	
	return ppDisp, true; /*第二个返回值如果为真，则取消新窗口*/
	/*新建的web窗体，并将application作为返回值，则在该web窗口中打开*/
	/*return wbother.application; */
} 

!wb._form = !winform.
!ele.fireEvent("onclick") = 自动触发element元素节点的事件脚本.
!ele.click = 模拟鼠标点击\n如果节点有脚本事件,请调用fireEvent方法
!ele.setAttribute("属性名","属性值")  = 修改属性\n也可以直接写 ele.属性名字 = 值
!ele.getAttribute("属性名")  = 获取属性\n也可以直接写 var 返回值=ele.属性名字
!ele.innerHTML = 返回节点内的HTML代码
!ele.outerHTML = 返回该节点的HTML代码
!ele.checked = 复选框、单选框等选中状态
!ele.form.submit() = 自动提交表单
!ele.selected = 设置为下拉选框选中项
!ele.href = 超链接网址
!ele.value = input控件值
?.getEle= !ele. 
?.waitEle= !ele. 
ele = !ele.

?.all = !ele. 
!document.write(__/*输入HTML*/) = 将HTML写入网页,允许追加输出
!document.writeln(__/*输入HTML*/) = 将HTML写入网页,并添加换行符,允许追加输出
!document.all(1__/*输入序号*/) = 返回指定的节点
!document.attachEvent("onclick",__/*指定dispath接口*/) = 绑定DOM事件接口
!wb.document = !document.
?wb.getDoc=!document.
?wb.waitDoc=!document.
!wb.getDoc(__/*框架名*/) = 获取文档对象 
!wb.waitDoc(__/*框架名*/) = 等待页页文档对象创建\n并获取文档对象  
!wb.waitDoc("",20000) = 返回一个节点对像\n第三个参数指定超时值(毫秒)

!wb.select("控件名字",__/*输入选项索引,或选项值、选项文本*/) = 查找下拉选框的指定选项,选中并返回选项节点
!wb.select("控件名字",__/*输入选项索引,或选项值、选项文本*/,false) = 查找下拉选框的指定选项,取消选定并返回选项节点
?.select = !ele.

!wb.exec("__") = 执行命令
!wb.exec("__", ) = 执行命令
!wb.exec("__", ,true) = 执行命令
!wb.execEle(ele,"__") = 执行命令
!wb.execEle(ele,"__", ) = 执行命令
!wb.execEle(ele,"__", ,true) = 执行命令
!wb.execWb( __ ) = 执行命令\n命令ID为_OLECMDID_前缀的常量
!wb.execWb( __, ) = 执行命令,并传入参数\n命令ID为_OLECMDID_前缀的常量
!wb.external = @.external={
	__/*输入要公开的成员*/
}
!wb.doScript(.(js脚本) =执行js脚本
!wb.doScript(.(js脚本,框架名称) =执行js脚本
!wb.doScript(.(js脚本,框架名称,脚本语言名称="javascript") =执行js脚本
!wb.body = !ele.
!wb.waitEle("__") = 返回一个节点对像或框架内子节点对像\n并等待加载完成
!wb.getEle("__") = 返回一个节点对像或框架内子节点对像
!wb.waitEle("__","框架名字") = 返回一个节点对像或框架内子节点对像\n并等待加载完成
!wb.getEle("__","框架名字") = 返回一个节点对像或框架内子节点对像
!wb.waitEle("__","",20000) = 返回一个节点对像\n第三个参数指定超时值(毫秒)
!wb.getEles("__") = 返回同名的所有节点,例如\nele = wb.getEles("节点名字");\nele(1).setAttribute("属性名字", "修改第一个节点属性值");
!wb.getEles("__","框架名字") = 返回同名的所有节点,例如\nele = wb.getEles("节点名字");\nele(1).setAttribute("属性名字", "修改第一个节点属性值");
!wb.fromPoint(.(x坐标,y坐标) = 自指定的坐标获取节点
!wb.fromPoint(.(x坐标,y坐标,框架名) = 自指定的坐标获取节点
?wb.fromPoint = !ele.
?web.form = !wb.


end intellisense******/



 /**intellisense()
_DLCTL_DLIMAGES=@0x10/*_DLCTL_DLIMAGES*/
_DLCTL_VIDEOS=@0x20/*_DLCTL_VIDEOS*/
_DLCTL_BGSOUNDS=@0x40/*_DLCTL_BGSOUNDS*/
_DLCTL_NO_SCRIPTS=@0x80/*_DLCTL_NO_SCRIPTS*/
_DLCTL_NO_JAVA=@0x100/*_DLCTL_NO_JAVA*/
_DLCTL_NO_RUNACTIVEXCTLS=@0x200/*_DLCTL_NO_RUNACTIVEXCTLS*/
_DLCTL_NO_DLACTIVEXCTLS=@0x400/*_DLCTL_NO_DLACTIVEXCTLS*/
_DLCTL_DOWNLOADONLY=@0x800/*_DLCTL_DOWNLOADONLY*/
_DLCTL_NO_FRAMEDOWNLOAD=@0x1000/*_DLCTL_NO_FRAMEDOWNLOAD*/
_DLCTL_RESYNCHRONIZE=@0x2000/*_DLCTL_RESYNCHRONIZE*/
_DLCTL_PRAGMA_NO_CACHE=@0x4000/*_DLCTL_PRAGMA_NO_CACHE*/
_DLCTL_NO_BEHAVIORS=@0x8000/*_DLCTL_NO_BEHAVIORS*/
_DLCTL_NO_METACHARSET=@0x10000/*_DLCTL_NO_METACHARSET*/
_DLCTL_URL_ENCODING_DISABLE_UTF8=@0x20000/*_DLCTL_URL_ENCODING_DISABLE_UTF8*/
_DLCTL_URL_ENCODING_ENABLE_UTF8=@0x40000/*_DLCTL_URL_ENCODING_ENABLE_UTF8*/
_DLCTL_NOFRAMES=@0x80000/*_DLCTL_NOFRAMES*/
_DLCTL_FORCEOFFLINE=@0x10000000/*_DLCTL_FORCEOFFLINE*/
_DLCTL_NO_CLIENTPULL=@0x20000000/*_DLCTL_NO_CLIENTPULL*/
_DLCTL_SILENT=@0x40000000/*_DLCTL_SILENT*/
_DLCTL_OFFLINEIFNOTCONNECTED=@0x80000000/*_DLCTL_OFFLINEIFNOTCONNECTED*/
_DLCTL_OFFLINE=@0x80000000/*_DLCTL_OFFLINE*/
_UIFLAG_DIALOG=@0x1/*_UIFLAG_DIALOG*/
_UIFLAG_DISABLE_HELP_MENU=@0x2/*_UIFLAG_DISABLE_HELP_MENU*/
_UIFLAG_NO3DBORDER=@0x4/*_UIFLAG_NO3DBORDER*/
_UIFLAG_SCROLL_NO=@0x8/*_UIFLAG_SCROLL_NO*/
_UIFLAG_DISABLE_SCRIPT_INACTIVE=@0x10/*_UIFLAG_DISABLE_SCRIPT_INACTIVE*/
_UIFLAG_OPENNEWWIN=@0x20/*_UIFLAG_OPENNEWWIN*/
_UIFLAG_DISABLE_OFFSCREEN=@0x40/*_UIFLAG_DISABLE_OFFSCREEN*/
_UIFLAG_FLAT_SCROLLBAR=@0x80/*_UIFLAG_FLAT_SCROLLBAR*/
_UIFLAG_DIV_BLOCKDEFAULT=@0x100/*_UIFLAG_DIV_BLOCKDEFAULT*/
_UIFLAG_ACTIVATE_CLIENTHIT_ONLY=@0x200/*_UIFLAG_ACTIVATE_CLIENTHIT_ONLY*/
_UIFLAG_OVERRIDEBEHAVIORFACTORY=@0x400/*_UIFLAG_OVERRIDEBEHAVIORFACTORY*/
_UIFLAG_CODEPAGELINKEDFONTS=@0x800/*_UIFLAG_CODEPAGELINKEDFONTS*/
_UIFLAG_URL_ENCODING_DISABLE_UTF8=@0x1000/*_UIFLAG_URL_ENCODING_DISABLE_UTF8*/
_UIFLAG_URL_ENCODING_ENABLE_UTF8=@0x2000/*_UIFLAG_URL_ENCODING_ENABLE_UTF8*/
_UIFLAG_ENABLE_FORMS_AUTOCOMPLETE=@0x4000/*_UIFLAG_ENABLE_FORMS_AUTOCOMPLETE*/
_UIFLAG_ENABLE_INPLACE_NAVIGATION=@0x10000/*_UIFLAG_ENABLE_INPLACE_NAVIGATION*/
_UIFLAG_IME_ENABLE_RECONVERSION=@0x20000/*_UIFLAG_IME_ENABLE_RECONVERSION*/
_UIFLAG_THEME=@0x40000/*_UIFLAG_THEME*/
_UIFLAG_NOTHEME=@0x80000/*_UIFLAG_NOTHEME*/
_UIFLAG_NOPICS=@0x100000/*_UIFLAG_NOPICS*/
_UIFLAG_NO3DOUTERBORDER=@0x200000/*_UIFLAG_NO3DOUTERBORDER*/
_UIFLAG_DISABLE_EDIT_NS_FIXUP=@0x400000/*_UIFLAG_DISABLE_EDIT_NS_FIXUP*/
_UIFLAG_LOCAL_MACHINE_ACCESS_CHECK=@0x800000/*_UIFLAG_LOCAL_MACHINE_ACCESS_CHECK*/
_UIFLAG_DISABLE_UNTRUSTEDPROTOCOL=@0x1000000/*_UIFLAG_DISABLE_UNTRUSTEDPROTOCOL*/
_UIFLAG_HOST_NAVIGATES=@0x2000000/*_UIFLAG_HOST_NAVIGATES*/
_UIFLAG_ENABLE_REDIRECT_NOTIFICATION=@0x4000000/*_UIFLAG_ENABLE_REDIRECT_NOTIFICATION*/
_UIFLAG_USE_WINDOWLESS_SELECTCONTROL=@0x8000000/*_UIFLAG_USE_WINDOWLESS_SELECTCONTROL*/
_UIFLAG_USE_WINDOWED_SELECTCONTROL=@0x10000000/*_UIFLAG_USE_WINDOWED_SELECTCONTROL*/
_UIFLAG_ENABLE_ACTIVEX_INACTIVATE_MODE=@0x20000000/*_UIFLAG_ENABLE_ACTIVEX_INACTIVATE_MODE*/
_UIFLAG_DPI_AWARE=@0x40000000/*_UIFLAG_DPI_AWARE*/
_NWMF_UNLOADING=@0x1/*_NWMF_UNLOADING*/
_NWMF_FIRST=@0x4/*_NWMF_FIRST*/
_NWMF_OVERRIDEKEY=@0x8/*_NWMF_OVERRIDEKEY*/
_NWMF_SHOWHELP=@0x10/*_NWMF_SHOWHELP*/
_NWMF_HTMLDIALOG=@0x20/*_NWMF_HTMLDIALOG*/
_NWMF_FROMDIALOGCHILD=@0x40/*_NWMF_FROMDIALOGCHILD*/
_NWMF_USERREQUESTED=@0x80/*_NWMF_USERREQUESTED*/
_NWMF_USERALLOWED=@0x100/*_NWMF_USERALLOWED*/
_NWMF_FORCEWINDOW=@0x10000/*_NWMF_FORCEWINDOW*/
_NWMF_FORCETAB=@0x20000/*_NWMF_FORCETAB*/
_NWMF_SUGGESTWINDOW=@0x40000/*_NWMF_SUGGESTWINDOW*/
_NWMF_SUGGESTTAB=@0x80000/*_NWMF_SUGGESTTAB*/
_NWMF_INACTIVETAB=@0x100000/*_NWMF_INACTIVETAB*/
_CSC_UPDATECOMMANDS=@0xFFFFFFFF/*_CSC_UPDATECOMMANDS*/
_CSC_NAVIGATEFORWARD=@0x1/*_CSC_NAVIGATEFORWARD*/
_CSC_NAVIGATEBACK=@0x2/*_CSC_NAVIGATEBACK*/
_OLECMDID_OPEN=@0x1/*_OLECMDID_OPEN*/
_OLECMDID_NEW=@0x2/*_OLECMDID_NEW*/
_OLECMDID_SAVE=@0x3/*_OLECMDID_SAVE*/
_OLECMDID_SAVEAS=@0x4/*_OLECMDID_SAVEAS*/
_OLECMDID_SAVECOPYAS=@0x5/*_OLECMDID_SAVECOPYAS*/
_OLECMDID_PRINT=@0x6/*_OLECMDID_PRINT*/
_OLECMDID_PRINTPREVIEW=@0x7/*_OLECMDID_PRINTPREVIEW*/
_OLECMDID_PAGESETUP=@0x8/*_OLECMDID_PAGESETUP*/
_OLECMDID_SPELL=@0x9/*_OLECMDID_SPELL*/
_OLECMDID_PROPERTIES=@0xA/*_OLECMDID_PROPERTIES*/
_OLECMDID_CUT=@0xB/*_OLECMDID_CUT*/
_OLECMDID_COPY=@0xC/*_OLECMDID_COPY*/
_OLECMDID_PASTE=@0xD/*_OLECMDID_PASTE*/
_OLECMDID_PASTESPECIAL=@0xE/*_OLECMDID_PASTESPECIAL*/
_OLECMDID_UNDO=@0xF/*_OLECMDID_UNDO*/
_OLECMDID_REDO=@0x10/*_OLECMDID_REDO*/
_OLECMDID_SELECTALL=@0x11/*_OLECMDID_SELECTALL*/
_OLECMDID_CLEARSELECTION=@0x12/*_OLECMDID_CLEARSELECTION*/
_OLECMDID_ZOOM=@0x13/*_OLECMDID_ZOOM*/
_OLECMDID_GETZOOMRANGE=@0x14/*_OLECMDID_GETZOOMRANGE*/
_OLECMDID_UPDATECOMMANDS=@0x15/*_OLECMDID_UPDATECOMMANDS*/
_OLECMDID_REFRESH=@0x16/*_OLECMDID_REFRESH*/
_OLECMDID_STOP=@0x17/*_OLECMDID_STOP*/
_OLECMDID_HIDETOOLBARS=@0x18/*_OLECMDID_HIDETOOLBARS*/
_OLECMDID_SETPROGRESSMAX=@0x19/*_OLECMDID_SETPROGRESSMAX*/
_OLECMDID_SETPROGRESSPOS=@0x1A/*_OLECMDID_SETPROGRESSPOS*/
_OLECMDID_SETPROGRESSTEXT=@0x1B/*_OLECMDID_SETPROGRESSTEXT*/
_OLECMDID_SETTITLE=@0x1C/*_OLECMDID_SETTITLE*/
_OLECMDID_SETDOWNLOADSTATE=@0x1D/*_OLECMDID_SETDOWNLOADSTATE*/
_OLECMDID_STOPDOWNLOAD=@0x1E/*_OLECMDID_STOPDOWNLOAD*/
_OLECMDEXECOPT_DODEFAULT=@0x0/*_OLECMDEXECOPT_DODEFAULT*/
_OLECMDEXECOPT_PROMPTUSER=@0x1/*_OLECMDEXECOPT_PROMPTUSER*/
_OLECMDEXECOPT_DONTPROMPTUSER=@0x2/*_OLECMDEXECOPT_DONTPROMPTUSER*/
_OLECMDEXECOPT_SHOWHELP=@0x3/*_OLECMDEXECOPT_SHOWHELP*/
end intellisense**/

 