//.. Web窗体
import com;
import win.ui; 
import util.metaProperty

namespace web; 

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;
}

var delay = ..win.delay; 

class form{

	ctor( winform,hostflag,dlControl,agent,securityTrusted)begin
		this.dlControl = dlControl;
		this.agent = agent;
		this.securityTrusted = securityTrusted;
	
		//默认是有滚动条的，没有才需要设置
		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" ) 
		
		//如果是控件,查找父窗口  
		var mainForm = ..win.form.getForm(winform.hwnd)  
		if( ! mainForm[["_hwndToWebForms"]] ){
			mainForm._hwndToWebForms = {}; 
			mainForm._onDestroy = function(){
				for(hwnd,wb in mainForm._hwndToWebForms ){
					//必须按以下顺序释放资源
					collectgarbage("collect") 
					if( ..com.IsObject(wb._browser) ){
						..com.ReleaseConnection(wb._browser); 
						..com.Release(wb._browser) 
					}
					wb._host.close()  
				} 
			}
			 
			var isChild = ..win.isChild;
			var getFocus =  ..win.getFocus;
			var defIsDialogMessage =  mainForm.isDialogMessage or ..win.isDialogMessage;
			mainForm.isDialogMessage = function(hwnd,msg){   
				var focus = getFocus();
				for(hwnd,webForm in mainForm._hwndToWebForms ){ 
					if( isChild(hwnd,focus ) ){
						if( webForm._host.tranacc(msg) )  
				   			return true;   
						return;
					} 
				} 
				return defIsDialogMessage(hwnd,msg);   
			};
		} 
		mainForm._hwndToWebForms[ winform.hwnd ] = this;   
		 
		winform.adjust = function( cx,cy) {	 
			..win.setRect(this.hwndEmbedding,winform.getClientRect() )  
		};  
		var sink, cookie =..com.Connect(this._browser, this );
	end;  
	@_metaProperty;
}
 
import web.form.query;
namespace form { 

	IDisptch = {
		[-5512] = function(){
 			return owner.dlControl;
 		}
 		[-5513] = function(){ 
 				return owner.agent
 		}
	}
 
	var isWnd = ..win.isWindow; 
	_metaProperty = ..util.metaProperty( 
	 
		["type"] = {
			_get = function(){ 
				return  owner._browser.getType()
			} 	
		}; 
		
		hwndControl = {
			_get = function(){ 
				owner.wait()
				return  ..win.getLeaf( owner.hwndEmbedding )
			} 	
		};
		
		waitClose = function(){
			//等待直到web窗口被关闭
			var hwnd = owner._form.hwnd; 
			while( delay(200) && isWnd(hwnd)  ) {
			} 	  
		}
		
		isbrowser = function(pdisp){
			return ..com.topointer(owner._browser) == ..com.topointer(pdisp)
		}
 		
		wait = function(url,timeout){ 
			//等待页面下载完成(如果不指定url参数，则等待当前页面打开)
			var hwnd = owner._form.hwnd;  
			var browser = owner._browser;
			var curl;
			var tk = 0;
			
			while( delay(200) && isWnd(hwnd)  ){ 
		  		
					do { 
	   					if(!delay(200)) return false;	
						if( timeout ) {
							tk+=101;
							if( tk>timeout )
								return null,"Timeout!"  
						};
							
					}while( isWnd(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; 
					}			
					  	
					if( timeout ) {
						tk+=101;
						if( tk>timeout )
							return null,"Timeout!"  
					};
	  		
			} 
			return false;
		}
		
		waitEle = function(name,frame,timeout,complete=true ){  
			var ele;
			var wb = owner;
			return ..win.wait(
				function(){
					ele = ele || wb.getEle(name,frame) 
					if(ele && ( (!complete) || ele.readyState == 'loaded' || ele.readyState == 'complete')  )
						return ele;
				},
				wb._form.hwnd,timeout,200
			); 
		} 
		
		waitDoc = function( frame,timeout,complete=true){ 
			var doc;
			var wb = owner;
			return ..win.wait(
				function(){
					doc = wb.getDoc(frame) 
					if(doc && ( (!complete) || doc.readyState == 'loaded' || doc.readyState == 'complete')  )
						return doc;
				},
				wb._form.hwnd,timeout,200
			); 
		}
 		
 		attach = function( func,event, ...){  
 			var ele,frame = ...
 			if( !ele )
 				ele = owner.getDoc();
 			elseif( type(ele) == type.string ){
 				ele = owner.getEle(...); 
 			}
 			if(!ele)
 				return false;
 			
			return ele.attachEvent(event, func )
		}
		
		attachAll = function( tEle,frame ){
			for( ele,tEvent in tEle ){ 
				for(event,func in tEvent ){
					owner.attach( func,event,ele,frame);
				} 
			} 
		} 
		
		doScript = function(s,frame,n="javascript"){//执行网页脚本或框架内脚本 
			var doc = owner.getDoc(frame)
			if( doc  ){
				var wd =  doc.parentWindow
				return wd ? wd.execScript(s,n);
			}  
		} 
		
		eventScript = function(s,id,event="onclick",frame,n="javascript"){
			var doc = owner.waitDoc(frame)
			var ele = doc.createElement("script");
			ele.type = "text/" + n;   
    		ele.text = s; 
    		ele.htmlFor = id;
    		ele.event = ..string.match(event,"[^(]+") + "()";
    		doc.getElementsByTagName('head')(0).appendChild(ele)  
		} 
		
		loadScript  = function(path,frame,charset){   
			var doc = owner.waitDoc(frame)  
			var mtype = ..string.endWith(path,".vbs",true) 
    			? "vbs"
    			: "javascript"
    				
			if( (!charset) && (doc.charSet == "utf-8") ){
				charset = "utf-8"
			}
			
			var s = ..string.load( path );
			if( s ){ 
				if( s[1] == 0xEF  && s[2] == 0xBB && s[3] == 0xBF) {
					s = ..string.fromto( string.sub(s,4 ) );
				}
				else if ( ..string.cmp(charset,"utf-8") == 0 ){
					s = ..string.fromto( s );
				};
				
				return owner.doScript( s, frame,mtype); 
			} 
			var ele = doc.createElement("script");
			ele.type = "text/" + mtype; 
			ele.charset = charset;
    		ele.src = path;
    		while( ele.readyState != 'loaded'  && ele.readyState != 'complete'  ){
    			if(!delay(10)) return false;
    		}  
    		doc.getElementsByTagName('head')(0).appendChild(ele) ;
		};

		fromPoint = function(x = 0,y=0,frame){
			var ele = owner.getDoc(frame);
   			if( ele  ){
   				try {
					ele = ele.elementFromPoint(x,y);
				}
				return ele;
   			}
		};
		
		getPoint = function(ele){
			var x,y = 0,0;
			while(ele && (ele.offsetLeft!==null) ){
				x+=ele.offsetLeft
				y+=ele.offsetTop
				ele= ele.offsetparent
			} 
			return x,y;
		};
		
		getPos = function(ele,screen){  
			var x,y = owner.getPoint(ele); 
			var doc = ele.ownerDocument;
			if(!doc)
				return 0,0,0,0;
				
			var eleDoc = doc.documentElement : doc.body
			x,y = x - eleDoc.scrollLeft,y - eleDoc.scrollTop;
		
			if(screen){
				var wd = doc.parentWindow;
				x,y = x + wd.screenLeft,y + wd.screenTop;
			}
			return x,y,ele.offsetWidth,ele.offsetHeight 
		};
		
		getEle = function(id,frame){
			if( type(id) == "table" ) return id;
			
			var doc = owner.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 = owner.getDoc(frame);
   			return doc && doc.getElementsByName(name);
		}; 
		
		getElesByTag = function(name,frame){
   			var doc = owner.getDoc(frame); 
   			return doc && doc.getElementsByTagName(name);
		};  
		
		queryEles = function(opt,waitDocTimeout){
		 	var tab = {}
		 	var cmp = ..string.cmp_match
		 	var parent = opt.parent;
		 	opt.parent = null; 
		 	var attr;
			for i,ele in owner.eachAll( ,parent,waitDocTimeout ) {
				try {
					for(k,v in opt) { 
						attr = ele.getAttribute(k);
						if( type(attr) == "table" ){
							if( type(v) == "table" ){
								for(attr_k,attr_v in v){
									if( ! cmp( attr[attr_k],attr_v )){  
										return;
									} 
								} 
							}
							else {
								return;
							};
						} 
						elseif( ( attr!=v ) && ( ! cmp( attr,v ) ) ){  
							return;
						} 
					} 
					..table.push(tab,ele);
				}
			} 
			return query( tab,owner );
		};
		
		waitQueryEles = function(arg,timeout,complete=true ){
			var qEle;
			var wb = owner;
			return ..win.wait(
				function(){
					var qEle =  wb.queryEles(arg,timeout,true) 
					if( #qEle > 0  && ( (!complete) || qEle.readyState == 'loaded' || qEle.readyState == 'complete')  )
						return qEle;
				},
				wb._form.hwnd,timeout,200
			); 	
		} 
		 
		write = function(strhtml,frame ){
			var doc = owner.getDoc(frame)
			if(!doc){ 
				if(!frame){
					owner.go("about:blank")
					doc = owner.document;
				}
			}
			if(!doc)
				return false;
				 
			doc.write(strhtml); 
			doc.close();
		};   
		
		go = function(url,headers,target="_self"){  
			url = ..web.mapurl(url);  
			owner._browser.Navigate(url,0,target,null,..string.concat(headers,owner.addHeaders))
		};
		
		post = function(url,postdata,headers='\r\nContent-Type: application/x-www-form-urlencoded',target="_self"){ 
			if(headers=="")headers=null;
			if(!postdata)return owner.go(url); 
			url = ..web.mapurl(url);
			owner._browser.Navigate(url,0,target,{ _safearray = postdata/* 转换为字节数组*/ } ,..string.concat(headers,owner.addHeaders) )
		};
		
		goback = function(){ 
			owner._browser.GoBack()
		}; 
		goforward = function(){ 
			owner._browser.GoForward()
		}; 
		gohome = function(){ 
			owner._browser.GoHome()
		}; 
		gosearch = function(){ 
			owner._browser.GoSearch()
		}; 
		refresh = function(){ 
			owner._browser.Refresh()
		};
		refresh2 = function(lev=0){ 
			owner._browser.Refresh2(lev)
		};
		refresh3 = function(lev=3){ 
			owner._browser.Refresh2(lev)
		};
		stop = function(){
			owner._browser.Stop()
		}; 
		eachFrames = function(frame){
			var doc = owner.getDoc(frame); 
			if(doc)
				return ..com.each( doc.frames  );
		};
		eachAll = function(tag,parent,timeout){
			var doc;
			if( type(parent) == type.table ){
				doc = parent;
			}
			else {	
				doc = owner.waitDoc(parent,timeout,false );
			}
				
			if(doc){
				if(tag)
					return ..com.each( doc.all.tags(tag)  );
			 		
				return ..com.each( doc.all  );
			}
			return function(){};
		}; 
		eachLinks = function(parent,timeout){
			return owner.eachAll('A',parent,timeout)  ); 
		};
		getFrame = function(frame){
			
			if(type(frame)==type.table)
				return frame[["contentWindow"]] : frame;
	 
			var ele;
			if(type(frame)==type.number) {
				var ind = frame;
				var f = owner.waitDoc().frames;
				if( ind >=0 && ind < f.length ) {
					ele = f(ind) 
				}
			} 
   			else if(#frame){
   				ele =  owner.getEle(frame);
   				if(ele)
   					ele = ele.contentWindow;
   			}  
   			return ele;
		};
		getDoc = function(frame){  
			if(frame===null)
				return owner._browser.Document; 
			
			var ele = owner.getFrame(frame);  
   			if(ele){
   				var doc;
   				try{
   					doc = ele.Document : ele ; //ele.contentDocument
   				}
   				return doc;
   			}
		};
		getWebForm  = function(){
			error("请调用web.form.util.crossDomain(true)",2)
		};
		jQuery = {
			_get = function(){ 
				var s = owner.waitDoc().Script; 
				var jq = s.jQuery
				if(jq)
					return jq;
				
				owner.loadScript( "/res/js/jQuery/jQuery.min.js", ,"utf-8" );
				 
				if( ! s.jQuery ){
					owner.loadScript( "http://ajax.googleapis.com/ajax/libs/jquery/1.6.3/jquery.min.js", ,"utf-8" ); 
					if( ! s.jQuery )
						owner.loadScript( "http://code.jquery.com/jquery-1.6.3.min.js", ,"utf-8" );   
				} 
				return s.jQuery;
			} 
		}; 
		document = {
			_get = function(){ 
				return  owner.getDoc()
			} 
		};
		script = {
			_get = function(){
				return owner.waitDoc().getScript();
			}
		}
		getScript = function(...){
				return owner.waitDoc(...).getScript(); 
		}
		host = {
			_get = function(){  
 				return  owner.getDoc().parentWindow.location.host
			} 	
		}; 
		body = {
			_get = function(){ 
				return  owner.getDoc().getBody()
			} 	
		}; 
		head = {
			_get = function(){ 
				return  owner.getDoc().getElementsByTagName('head').item(0)
			} 	
		};   
		location = {
			_get = function(){ 
			 	return owner._browser.getLocationURL() ;  
			}
			_set = function( value ){
				owner._browser.Navigate(value) ;  
			} 	
		};  
		silent = {
			_get = function(){   
				return owner._browser.getSilent() ;  
			}
			_set = function( value ){
				owner._browser.setSilent(value);  
			} 	
		}; 
		application = {
			_get = function(){ 
				return owner._browser.getApplication() ;  
			}
		}
		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.getDoc().execCommand(cmd,ui,val,0); 
		} 
		execWb =  function(id,val,opt=1){ 
			return owner._browser.ExecWB(id,opt,val) 
		}  
		openproxy = {
			_get = function(){  
				if(! owner[["_proxyOpen"]] ){
					owner.proxyForm = ..win.form(parent=owner._form;right=1;bottom=1 ) 
					owner._proxyOpen = ..web.form( owner.proxyForm );
					var wb = owner;
					owner._proxyOpen.BeforeNavigate2 = function( pDisp, url, flags, target, postData, headers, cancel ) begin 
						wb.post(url,postData,headers ) 
						return url, flags, target, postData, headers,true;
					end; 
				} 
				return owner._proxyOpen.application; 
			} 	
		};  

		click = function(eleName,min=1,max=500,frame){
			var ele = owner.getEle(eleName,frame); 
			ele.fireEvent("onmousemove"); 
			ele.fireEvent("onmouseenter"); 
			ele.fireEvent("onmouseover");  
			
    		..win.delay( ..math.random(min,max) );
    		ele.fireEvent("onkeydown");
    		ele.fireEvent("onkeyup");
    		ele.fireEvent("onmousedown");
    		ele.fireEvent("onmouseup") 
    		
    		ele.click(); 
    		ele.fireEvent("onclick");
    		if(ele.tagName=="INPUT"){ ele.focus();}
    		ele.fireEvent("onfocus");
    		
    		ele.fireEvent("onmousemove"); 
    		ele.fireEvent("onmouseleave");
    		owner.wait(); 
		};  
		
		["setEle"] = function(eleName,val,name,frame){ 
			var ele = owner.getEle(eleName,frame);  
			
			if( type(val) == type.table ){
				for(k,v in val) 
					owner.setEle(eleName,v,k,frame); 
			}
			elseif(name){ 
				ele[name] = val;
			}
			if( ..string.cmp(ele.tagName,"textArea") == 0  ){
				ele.innerText = val;
			}
			elseif( !  ..string.cmp(ele.tagName,"input") ){
				select(ele.type) { 
					case "radio","checkbox" {
						ele.checked = val;
					};
					else {
						ele.value = val;
					};
				};
			}; 
			elseif(  ..string.cmp(ele.tagName,"select") == 0 ){
				owner.select( ele,val );
			}
		}; 
		
		["select"] = function(eleName,v,sel=true,frame){ 
			var ele = owner.getEle(eleName,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._crossDomain = 该对象是否使用跨域框架创建
!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头","目标框架") = 打开网址
!jsGlobal.frameElement = 获取在父文档中生成 window 的 frame 或 iframe 对象
!jsGlobal.parent = 获取对象层次中的父窗口
!jsGlobal.document = document.
!jsGlobal.location = 当前URL
!jsGlobal.location.
!jsGlobal.location.hash = 网址“#”号后面的分段
!jsGlobal.location.host = URL的主机以及端口号部份
!jsGlobal.location.hostname = URL中的域名主机部份
!jsGlobal.location.href = URL网址
!jsGlobal.location.pathname = URL中的文件路径
!jsGlobal.location.port = 端口号
!jsGlobal.location.protocol = URL使用的协议
!jsGlobal.location.search = 问号后面的部份 
!jsGlobal.navigate(__/*url*/) = 在当前窗口中装入指定 URL
!jsGlobal.prompt(.(消息,默认值) = 显示输入对话框
!jsGlobal.screenTop = 网页正文部分上
!jsGlobal.screenLeft = 网页正文部分左
!jsGlobal.height = 屏幕分辨率的高
!jsGlobal.width = 屏幕分辨率的宽
!jsGlobal.focus() = 获得焦点
!jsGlobal.脚本函数名__() =  调用JS函数必须有实参\n无参数调用则返回函数类对象
!jsGlobal.window = !jsGlobal.
!jsGlobal.navigator = !navigator.
!navigator.platform = 操作系统名称
!navigator.systemLanguage = 系统默认语言
!navigator.browserLanguage = 浏览器当前语言 
!navigator.appVersion = 浏览器运行平台和版本 
!navigator.cpuClass = CPU 等级 x86 
!navigator.cookieEnabled  = 是否允许cookie

!wb.eachFrames() = @//创建迭代器,迭代页面所有框架窗口，例：\nfor i,frame in ??.eachFrames() {\n	__\n}\n
!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.eachLinks(父节点) = @//创建迭代器,迭代页面所有超链接，例：\nfor i,link in ??.eachLinks( ??.getEle("id") ) {\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.eachAll("DIV",父节点) = @//创建迭代器,迭代页面所有输入控件，例：\nfor i,input in ??.eachAll("DIV" ,??.getEle("id") ) {\n	__\n}\n
!wb.goback()=导航到历史列表中的上一个页面
!wb.goforward()=导航到历史历表中的下一个项目
!wb.gohome()=导航到缺省页面
!wb.gosearch()=导航到缺省页面
!wb.refresh()=刷新页面\n如果服务器未更新则不会重新下载，类似在浏览器中按F5的效果
!wb.refresh2(__)=重新下载页面\n可在参数中指定级别
!wb.refresh3()=重新下载最新页面\n添加Pragma:no-cache请求头,强制服务端刷新\n类似在浏览器中按下Ctrl+F5的效果 
!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 = @.CommandStateChange=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.StatusTextChange = @.StatusTextChange=function(text) { 
	__/*状态文本改变*/
}

!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) {
	/*弹出新窗口以前触发 */ 
	owner.go( owner.translateUrl )
	return ppDisp, true; /*第二个返回值如果为真，则取消新窗口*/ 
	/*return wb.openproxy; */ 
}

!wb.WindowClosing = @.WindowClosing = function (IsChildWindow, Cancel) {
    return true __/*返回true取消关闭操作*/; 
}

!wb.translate = @.translate = function( url ){
	/*解析URL时触发 */
	owner.translateUrl = url; 
	__/* if( string.startWith(url,"http:",true) )
	return 新的URL;*/
}
!wb._form = !winform.
!ele.type = 类型
!ele.src = 源文件地址
!ele.fireEvent("onclick") = 自动触发element元素节点的事件脚本.
!ele.click() = 触发onclick 事件来模拟单击
!ele.focus() = 使得元素得到焦点并执行由 onfocus 事件指定的代码。
!ele.blur() = 使元素失去焦点并触发onblur事件
!ele.doScroll("scrollbarDown") = Default. Down scroll arrow is at the specified location.    
!ele.doScroll("scrollbarPageDown") = Page-down scroll bar shaft is at the specified location.   
!ele.doScroll("down") = Composite reference to scrollbarDown.  
!ele.doScroll("pageDown") = Composite reference to scrollbarPageDown.  
!ele.setAttribute("属性名__","属性值")  = 修改属性\n也可以直接写 ele.属性名字 = 值
!ele.getAttribute("属性名__/*属性名*/")  = 获取属性\n也可以直接写 var 返回值=ele.属性名字
!ele.getAttributeNode("__/*属性名*/") = 获取attribute对象
!ele.hasChildNodes = 对象是否有子对象的值。 
!ele.appendChild(__) = 给对象添加一个子节点\n可使用wb.getDoc().createElement("TAG") 创建节点
!ele.innerHTML = 返回节点内的HTML代码
!ele.outerHTML = 返回该节点的HTML代码
!ele.innerText = 设置或获取对象的文本 
!ele.outerText = 设置或获取对象的文本 
!ele.insertAdjacentHTML("beforeBegin",__/*HTML代码*/) = 在节点之前插入HTML
!ele.insertAdjacentHTML("afterBegin",__/*HTML代码*/) = 在节点内部最前面插入HTML
!ele.insertAdjacentHTML("beforeEnd",__/*HTML代码*/) = 在节点内部最后面插入HTML 
!ele.insertAdjacentHTML("afterEnd",__/*HTML代码*/) = 在节点之后插入HTML
!ele.insertAdjacentText("beforeBegin",__/*文本*/) = 在节点之前插入文本
!ele.insertAdjacentText("afterBegin",__/*文本*/) = 在节点内部最前面插入文本
!ele.insertAdjacentText("beforeEnd",__/*文本*/) = 在节点内部最后面插入文本
!ele.insertAdjacentText("afterEnd",__/*文本*/) =  在节点之后插入文本
!ele.insertBefore(__/*新节点对象*/) = 第二个参数可选指定一个子节点对象\n在该节点前插入新节点,忽略则插入到最后面.
!ele.checked = 复选框、单选框等选中状态
!ele.form.submit() = 自动提交表单
!ele.elements(.(索引,子索引) = 表单控件集合,非表单节点该属性无性.\n索引可以为数值或字符串,\n如果有同名控件,可使用第二个参数指定在该集合中的索引.
!ele.elements() = !ele.
!ele.getElementsByTagName("__") = 获取基于指定元素名称的对象集合
!ele.getElementsByTagName() = !ele.
!ele.contains(ele2__) = 判断一个节点是否包含另外一个节点
!ele.selected = 设置为下拉选框选中项
!ele.href = 超链接网址
!ele.value = input控件值
!ele.tagName = 获取对象的标签名称
!ele.scrollHeight =  获取对象的滚动高度。 
!ele.scrollLeft =  设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离。 
!ele.scrollTop = 设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离。 
!ele.scrollWidth = 获取对象的滚动宽度。 
!ele.className = 设置或获取对象的CSS样式类
!ele.hasChildNodes() = 对象是否有子对象的值。
!ele.offsetParent = 获取定义对象 offsetTop 和 offsetLeft 属性的容器对象的引用
!ele.offsetLeft = 相对于offsetParent对象的左侧位置.
!ele.offsetTop =  相对于offsetParent对象的顶端位置.
!ele.offsetWidth = 包括边线的宽度
!ele.offsetHeight  = 包括边线的高度 
!ele.ownerDocument = document.
!ele.id = 获取标识对象的字符串 
!ele.uniqueID = 对象自动生成的唯一标识符
!ele.name = 设置或获取对象的名称 
!ele.nodeName = 获取特定结点类型的名称。 
!ele.nodeType = 获取所需结点的类型。 
!ele.nodeValue = 设置或获取结点的值。 
!ele.parentElement = 获取对象层次中的父对象\n!ele.
!ele.parentNode = 获取文档层次中的父对象\n!ele. 
!ele.childNodes() = !ele. 
!ele.children() = !ele. 
!ele.readyState = 获取对象的当前状态。 \n'uninitialized','loading','interactive','loaded' 'complete'
!ele.sourceIndex = 获取对象在源序中的依次位置，即document.all()中的位置参数. 
!ele.title = 提示信息
!ele.all(0__) = 对象所包含的元素集合中指定位置的对象
!ele.all() = !ele.
!ele.attributes("name__/*属性名称*/") = 对象标签属性的集合指定位置的对象  
!ele.childNodes(0__) =  对象直接后代的 HTML元素和TextNode对象的集合指定位置的对象
!ele.children(0__) =  获取作为对象直接后代的DHTML对象的集合指定位置的对象 
!ele.style.background = 背景
!ele.style.display = 显示
!ele.style.cursor = 鼠标指针
!ele.style.height = 高度
!ele.style.width = 宽度
!ele.style.top = 顶部位置
!ele.style.left = 左侧位置
!ele.style.margin = 外边距
!ele.style.padding = 内边距
!ele.contentEditable = @.contentEditable = "true__"
!ele.firstChild =  childNodes集合的第一个子对象的引用\n!ele.
!ele.lastChild = childNodes集合中最后一个子对象的引用\n!ele.
!ele.nextSibling = 返回当前节点的兄弟下一个节点(下一个兄弟节点)\n!ele.
!ele.previousSibling = 返回紧挨当前节点、位于它之前的兄弟节点(上一个兄弟节点)\n!ele.
!ele.hidefocus = 是否隐藏焦点选框 

!ele.getAttributeNode() = !ele_attribute_node.
!ele.attributes() = !ele_attribute_node.

!ele_attribute_node.nodeName = 获取特定结点类型的名称
!ele_attribute_node.nodeType = 获取所需结点的类型
!ele_attribute_node.nodeValue = 设置或获取结点的值 
!ele_attribute_node.specified =  获取是否指定了该属性 
!ele_attribute_node.value =  设置或获取对象的值
document.open() = 打开一个新的空白文档 
document.write(__/*输入HTML*/) = 将HTML写入网页,允许追加输出
document.writeln(__/*输入HTML*/) = 将HTML写入网页,并添加换行符,允许追加输出
document.close() = 关闭输出流并强制将数据发送到显示
document.all(1__/*输入序号*/) = 返回指定的节点
document.all() = !ele.
document.attachEvent("onclick",__/*指定dispath接口*/) = 绑定DOM事件接口
document.detachEvent("onclick",__/*指定dispath接口*/) = 消指定函数的绑定
document.getElementById("__") = 获取对 ID 标签属性为指定值的第一个对象的引用。 
document.getElementsByName("__") =  根据 NAME 标签属性的值获取对象的集合。 
document.getElementsByTagName("__") =  获取基于指定元素名称的对象集合。 
document.title = 网页标题
document.body = !ele.
document.URL = 设置或获取当前文档的 URL。 
document.URLUnencoded = 获取文档的 URL，去除所有字符编码 
document.domain = 设置或获取文档的安全域名。 
document.designMode = 文档是否可被编辑\n"on"或"off"
document.elementFromPoint(x,y__) = 获取该位置的对象
document.parentWindow = !jsGlobal.
document.documentElement = !ele.
document.frames.length = 框架数目
document.frames(1__) = 在框架窗口集合(windows对象)中指定索引的对象
document.anchors(1__) = 在所有带有name或id属性的a对象中指定索引的对象
document.applets(1__) = 所有applet对象中指定索引的对象
document.childNodes(1__) = 在所有指定对象直接后代的HTML元素和TextNode对象中指定索引的对象 
document.embeds(1__) = 在所有embed对象中指定索引的对象
document.forms(1__) = 在以源顺序排列的文档中所有form对象中指定索引的对象 
document.images(1__) = 在以源顺序排列的文档中所有img对象中指定索引的对象
document.links(1__) = 在所有指定了HREF 性的a对象和所area对象中指定索引的对象
document.namespaces(1__) =  在所有namespace对象中指定索引的对象
document.scripts(1__) = 在所有script对象中指定索引的对象
document.styleSheets(1__) = 在styleSheet对象中指定索引的对象
document.activeElement = 焦点对象 
document.script = 可使用此对象直接调用页面脚本中的函数\n注意调用页面脚本函数时必须最少添加一个参数\n!jsGlobal. 
document.createElement("script__") = 创建HTML节点\n可使有ele.appendChild() ele.insertBefore()等函数插入新节点
document.charSet = 设置页面编码\n使用wb.refresh2(7)刷新生效.
document.location.href = 当前页面路径
document.location.reload() =  缓存刷新
document.location.reload(true) = 等价于按F5刷新
document.currentViewMode = 本地文件夹查看模式\n1 图标\n3 列表\n4 详细资料\n5 缩略图\n6 平铺\n7 幻灯片
document.compatMode = "BackCompat" 对应 quirks mode(无DTD声明)\n"CSS1Compat" 对应 strict mode 
document.selection = 代表了当前激活选中区 
document.selection.createRange().text = 获中选区内文本  
!wb.document=document.
!wb.getScript(__/*框架名*/) = 网页脚本对象
!wb.getScript()  = !jsGlobal.
!wb.script = 网页脚本对象\n!jsGlobal.
!wb.getFrame(__/*框架名*/) = 返回框架窗口对象\n参数可以是框架名,ID,基于0的索引,或者frame节点
!wb.getDoc(__/*框架名*/) = 获取文档对象\n参数可以是框架名,ID,基于0的索引,或者frame节点
!wb.waitDoc(__/*框架名*/) = 等待页页文档对象创建\n并获取文档对象  
!wb.waitDoc("",20000) = 返回一个节点对象\n第二个参数指定超时值(毫秒))\n如果不需要节点完全加载,可再附加一个false参数
!wb.attach = @.attach(\n	function(event){\n		io.print("点击坐标", event.screenX,event.screenY )\n		io.print("触发节点", event.srcElement.innerText )\n	}\n	,"onclick__",ele/*也可输入getEle()所需参数,省略表示doc*/ \n)
!wb.attachAll = @.attachAll(  \n	/* html节点ID = 事件触发函数表 */\n	caption_button_min = {\n		onclick = function(event){\n			wb._form.hitmin();	\n		} \n	}\n)
event.srcElement = !ele.
event.cancelBubble = 设置或获取事件是否向上冒泡\n是否允许触发上层父节点事件处理函数
event.button = 鼠标按钮
event.wheelDelta = 鼠标滚轮滚动的距离和方向
event.screenX = 鼠标屏幕 x坐标  
event.screenY = 鼠标屏幕 y坐标 
event.shiftKey = Shift键状态
event.ctrlKey = Ctrl键状态。 
event.altKey = Alt键状态
event.type = 事件名
event.returnValue = 设置事件返回值\n设为false阻止默认行为
event.keyCode = 设置或获取与导致事件的按键关联的 Unicode 按键代码。  
!wb.click(.(控件名字,随机延时最小值,延时最大值,框架名) = 模拟点击控件,\n第一个参数也可以是ele对象,\n随机延时值为可选参数,默认为1,500.\n框架名为可选参数.
!wb.setEle(.(控件名字,属性值,属性名,框架名) = 更新控件值,\n第一个参数也可以是ele对象,\n属性名,框架名为可选参数.\n属性值可以是一个指定多个属性键值对的table对象.
!wb.select("控件名字",__/*输入选项索引,或选项值、选项文本*/) = 查找下拉选框的指定选项,选中并返回选项节点\n第一个参数也可以是ele对象
!wb.select("控件名字",__/*输入选项索引,或选项值、选项文本*/,false) = 查找下拉选框的指定选项,取消选定并返回选项节点\n第一个参数也可以是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.eventScript = @//可选指定事件名,默认为onclick\nvar js = /**\n	alert( event.srcElement.id );\n**/\n??.eventScript(js,"__/*输入节点ID*/","onclick")
!wb.doScript = @var js = /**\n	alert("Javascript!");\n**/\n??.doScript(js,__

!wb.doScript(.(js脚本) = 执行js脚本
!wb.doScript(.(js脚本,框架名称) = 执行js脚本
!wb.doScript(.(js脚本,框架名称,"javascript__") = 执行js脚本
!wb.body = !ele.
!wb.head = !ele.
!wb.loadScript("js地址","框架名字") = 动态加载js文件
!wb.loadScript("js地址","框架名字","utf-8") = 动态加载js文件\N可选用第三个参数指定文件编码
!wb.jQuery("__") = jQuery选择器,并可自动载入jQuery库\nn首次调用按需加载jQuery v1.63以上版本:\n "/res/js/jQuery/jQuery.min.js"\n失败则通过网络CDN服务器下载jquery-1.6.3.min.js
!wb.jQuery() = 无参数时返回jQuery类对象\n首次调用按需加载 jQuery v1.63以上版本:\n "/res/js/jQuery/jQuery.min.js"\n失败则通过网络CDN服务器下载jquery-1.6.3.min.js\n!jQuery.
!jQuery.val() = 取值
!jQuery.val("__") = 赋值
!jQuery.hide() = 隐藏
!jQuery.show() = 显示
!jQuery.text() = 取innerHTML属性
!jQuery.text("__") = 修改innerHTML属性
!jQuery.css("属性__","值") = 添加CSS样式
!jQuery.load("html文件路径__") = 载入一个文件
!wb.getEle() = !ele.
!wb.waitQueryEles(.(查询参数,超时值,时间间隔,节点完全加载) = 第一个参数用于调用wb.queryEles()函数,其他参数可选\n该函数等待wb.queryEles()返回有效节点,\nweb窗体关闭或超时返回null空值
!wb.waitEle("__") = 返回一个节点对象或框架内子节点对象\n并等待加载完成
!wb.getEle("__") = 返回一个节点对象或框架内子节点对象
!wb.waitEle("__","框架名字") = 返回一个节点对象或框架内子节点对象\n并等待加载完成
!wb.getEle("__","框架名字") = 返回一个节点对象或框架内子节点对象
!wb.waitEle("__","",20000) = 返回一个节点对象\n第三个参数指定超时值(毫秒)\n如果不需要节点完全加载,可再附加一个false参数
!wb.getElesByTag("head") = 返回指定标记的所有节点
!wb.getElesByTag("head","框架名字") = 返回指定标记的所有节点
!wb.getEles("__") = 返回同名的所有节点,例如\nele = wb.getEles("节点名字");\nele(1).setAttribute("属性名字", "修改第一个节点属性值");
!wb.getEles("__","框架名字") = 返回同名的所有节点,例如\nele = wb.getEles("节点名字");\nele(1).setAttribute("属性名字", "修改第一个节点属性值");
!wb.queryEles = @.//可指定任意个属性条件值.支持模式匹配语法\nqueryEles( parent = 可选指定父节点;className = "style2")
!wb.fromPoint(.(x坐标,y坐标) = 自指定的坐标获取节点
!wb.fromPoint(.(x坐标,y坐标,框架名) = 自指定的坐标获取节点
!wb.getPoint(ele__) = x,y=wb.getPoint(ele)\n返回对象的页面坐标
!wb.getPos(ele__) = x,y,cx,cy = wb.getPos(ele)\n返回对象的窗口客户区坐标
!wb.getPos(ele__,true) = x,y,cx,cy = wb.getPos(ele)\n返回对象的屏幕坐标
?web.form = !wb.
?.getWebForm = !wb.
!wb.getWebForm(__/*框架名字或索引*/) = 将框架转换为web.form对象\n必须调用web.form.util.crossDomain()启用此函数\n
!wb.getWebForm() = !wb.
!wb.queryEles() = !ele. 
!wb.waitQueryEles() = !ele.
!wb.waitEle()= !ele.

!wb.getEle() = !ele. 
!wb.queryEles() = !ele. 
!wb.waitQueryEles() = !ele.
!wb.waitEle()= !ele. 
!wb.all() = !ele.  
!wb.getDoc() = document.
!wb.waitDoc() = document.
!wb.select() = !ele.
!wb.jQuery() = !jQuery.
!wb.fromPoint() = !ele.
!wb.eachFrames() = !jsGlobal.
!wb.eachAll() = !ele.
!wb.eachLinks() = !ele.
!ele[] = !ele.
!ele() = !ele.
document.createElement() = !ele.
document.getElementById() = !ele.
document.getElementsByName() = !ele.
document.getElementsByTagName() = !ele.
!wb.select() = !ele.
!wb.getDoc() = document.
!wb.waitDoc() = document.
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**/

 