function buildJSMenus() {
	var objects = document.getElementById('objects');
	var operators = document.getElementById('operators');
	var statements = document.getElementById('statements');
	var events = document.getElementById('events');	
	var HTMLTags = document.getElementById('HTMLTags');
	var attributes = document.getElementById('attributes');
	var htmlEnts = document.getElementById('htmlEnts');	
	var returnToWindow = document.getElementById('returnToWindow');
	var cssProperties = document.getElementById('cssProperties');
	
	var objectsList = ['ActiveXObject','ActiveXObject("Microsoft.XMLHTTP")','Array','Boolean','Date','Debug','Enumerator','Error','EvalError','Function','JSON','JavaArray','JavaClass','JavaObject','JavaPackage','Math','Namespace()','Number','Object','Packages','QName()','RangeError','ReferenceError','RegExp','String','SyntaxError','TypeError','URIError','VBArray','XML()','XMLHttpRequest','XMLList()','arguments','isXMLName()','java','netscape','sun'];
	var statementList = ['default xml namespace ..','export','let',':','import','for each...in','break','catch','@cc_on','//','/*..*/','continue','debugger','do...while','for','for...in','Statement','function','@if','if...else','return','@set','switch','this','throw','try','var','while','with'].sort();
	var operatorsList = ['*=','/=','%=','+=','-=','<<=','>>=','>>>=','&=','^=','|=','yield','set','new','let','get','=',',','?:','||','&&','|','^','&','==','!=','===','!==','<','<=','>','>=','instanceof','<<','>>','>>>','+','-','*','/','%','++','--','~','!','in','delete','new','typeof','void','.','[]','()'].sort();
	var eventsList = ['onabort','onactivate','onafterprint','onafterupdate','onbeforeactivate','onbeforecopy','onbeforecut','onbeforedeactivate','onbeforeeditfocus','onbeforepaste','onbeforeprint','onbeforeunload','onbegin','onblur','onbounce','oncellchange','onchange','onclick','oncontextmenu','oncontrolselect','oncopy','oncut','ondataavailable','ondatasetchanged','ondatasetcomplete','ondblclick','ondeactivate','ondrag','ondragend','ondragleave','ondragenter','ondragover','ondragdrop','ondrop','onend','onerror','onerrorupdate','onexit','onfilterchange','onfinish','onfocus','onfocusin','onfocusout','onhelp','onkeydown','onkeypress','onkeyup','onlayoutcomplete','onload','onlosecapture','onmediacomplete','onmediaerror','onmousedown','onmouseenter','onmouseleave','onmousemove','onmouseout','onmouseover','onmouseup','onmousewheel','onmove','onmoveend','onmovestart','onoutofsync','onpaste','onpause','onprogress','onpropertychange','onreadystatechange','onrepeat','onreset','onresize','onresizeend','onresizestart','onresume','onreverse','onrowenter','onrowexit','onrowdelete','onrowinserted','onscroll','onseek','onselect','onselectionchange','onselectstart','onstart','onstop','onsynchrestored','onsubmit','ontimeerror','ontrackchange','onunload','onurlflip','seeksegmenttime','oncanplay','oncanplaythrough','ondragstart','ondurationchange','onemptied','onended','onloadeddata','onloadedmetadata','onloadstart','onmessage','onoffline','ononline','onplay','onplaying','onratechange','onsearch','onseeked','onseeking','onstalled','onstorage','onsuspend','ontimeupdate','onvolumechange','onwaiting','onwebkitanimationend','onwebkitanimationiteration','onwebkitanimationstart','onwebkittransitionend'].sort();
	var tagsList = ['video','time','source','section','rule','progress','output','nest','nav','meter','m','header','footer','figure','event-source','datatemplate','datalist','datagrid','command','colgroup','canvas','audio','aside','article','embed','a','abbr','acronym','address','applet','area','b','base','bdo','big','body','br','button','caption','center','cite','code','col','dd','del','dfn','dir','div','dl','dt','em','font','form','frame','h1','h2','h3','h4','h5','h6','head','hr','html','i','iframe','img','input','ins','isindex','kbd','label','legend','li','link','map','menu','meta','object','ol','option','p','param','pre','q','s','samp','script','select','small','span','strike','strong','style','sub','sup','table','tbody','td','tfoot','th','thead','title','tr','tt','u','ul','var','blink','marquee','!doctype','basefont','bgsound','blockquote','fieldset','frameset','ilayer','image','keygen','listing','multicol','nobr','noembed','noframes','noscript','nolayer','optgroup','plaintext','rb','rbc','rp','rtc','rt','ruby','spacer','textarea','wbr','xml','xmp'].sort();
	
	var attributesList = ['template','tabindex','registrationmark','ref','irrelevant','draggable','dir','contentextmenu','contenteditable','accesskey','abbr','accept','action','align','alink','alt','axis','char','charoff','charset','checked','cite','class','classid','clear','code','colspan','compact','content','coords','data','datetime','declare','defer','enctype','for','frame','headers','height','href','hreflang','hspace','id','ismap','lang','link','media','method','name','nohref','nowrap','object','onblur','onload','profile','prompt','rel','rev','rowspan','rules','scheme','scope','shape','size','span','src','standby','start','style','summary','target','text','title','type','usemap','valign','value','version','vlink','vspace','width','accept-charset','archive','background','bgcolor','border','cellpadding','cellspacing','codebase','codetype','color','cols','face','frameborder','http-equiv','label','language','marginheight','marginwidth','maxlength','multiple','noresize','noshade','readonly','rows','scrolling','selected','valuetype'].sort();
	
	var cssPropsList = ['--standard--','azimuth','background','background-attachment','background-color','background-image','background-position','background-repeat','border','border-collapse','border-color','border-spacing','border-style','border-top','border-right','border-bottom','border-left','border-top-color','border-right-color','border-bottom-color','border-left-color','border-top-style','border-right-style','border-bottom-style','border-left-style','border-top-width','border-right-width','border-bottom-width','border-left-width','border-width','bottom','caption-side','clear','clip','color','content','counter-increment','counter-reset','cue','cue-after','cue-before','cursor','direction','display','elevation','empty-cells','float','font','font-family','font-size','font-size-adjust','font-stretch','font-style','font-variant','font-weight','height','left','letter-spacing','line-height','list-style','list-style-image','list-style-position','list-style-type','margin','margin-top','margin-right','margin-bottom','margin-left','marker-offset','marks','max-height','max-width','min-height','min-width','orphans','outline','outline-color','outline-style','outline-width','overflow','padding','padding-top','padding-right','padding-bottom','padding-left','page','page-break-after','page-break-before','page-break-inside','pause','pause-after','pause-before','pitch','pitch-range','play-during','position','quotes','richness','right','size','speak','speak-header','speak-numeral','speak-punctuation','speech-rate','stress','table-layout','text-align','text-decoration','text-indent','text-shadow','text-transform','top','unicode-bidi','vertical-align','visibility','voice-family','volume','white-space','widows','width','word-spacing','z-index',
						'--mozilla--','-moz-appearance','-moz-background-clip','-moz-background-inline-policy','-moz-background-origin','-moz-border-bottom-colors','-moz-border-left-colors','-moz-border-right-colors','-moz-border-top-colors','-moz-binding','-moz-border-end','-moz-border-end-color','-moz-border-end-style','-moz-border-end-width','-moz-border-image','-moz-border-radius','-moz-border-radius-bottomleft','-moz-border-radius-bottomright','-moz-border-radius-topleft','-moz-border-radius-topright','-moz-border-start','-moz-border-start-color','-moz-border-start-style','-moz-border-start-width','-moz-box-align','-moz-box-direction','-moz-box-flex','-moz-box-flexgroup','-moz-box-ordinal-group','-moz-box-orient','-moz-box-pack','-moz-box-shadow','-moz-box-sizing','-moz-column-count','-moz-column-gap','-moz-column-width','-moz-column-rule','-moz-column-rule-width','-moz-column-rule-style','-moz-column-rule-color','-moz-float-edge','-moz-force-broken-image-icon','-moz-image-region','-moz-margin-end','-moz-margin-start','-moz-opacity','-moz-outline','-moz-outline-color','-moz-outline-offset','-moz-outline-radius','-moz-outline-radius-bottomleft','-moz-outline-radius-bottomright','-moz-outline-radius-topleft','-moz-outline-radius-topright','-moz-outline-style','-moz-outline-width','-moz-padding-end','-moz-padding-start','-moz-stack-sizing','-moz-transform','-moz-transform-origin','-moz-user-focus','-moz-user-input','-moz-user-modify','-moz-user-select','-moz-window-shadow',
						'--ie--','-ms-accelerator','-ms-background-position-x','-ms-background-position-y','-ms-behavior','-ms-block-progression','-ms-filter','-ms-ime-mode','-ms-layout-grid','-ms-layout-grid-char','-ms-layout-grid-line','-ms-layout-grid-mode','-ms-layout-grid-type','-ms-line-break','-ms-line-grid-mode','-ms-interpolation-mode','-ms-overflow-x','-ms-overflow-y','-ms-scrollbar-3dlight-color','-ms-scrollbar-arrow-color','-ms-scrollbar-base-color','-ms-scrollbar-darkshadow-color','-ms-scrollbar-face-color','-ms-scrollbar-highlight-color','-ms-scrollbar-shadow-color','-ms-scrollbar-track-color','-ms-text-align-last','-ms-text-autospace','-ms-text-justify','-ms-text-kashida-space','-ms-text-overflow','-ms-text-underline-position','-ms-word-break','-ms-word-wrap','-ms-writing-mode','-ms-zoom',
						'--opera--','-o-replace','-o-set-link-source','-o-use-link-source',
						'--webkit--','-webkit-appearance','-webkit-background-clip','-webkit-background-composite','-webkit-background-origin','-webkit-background-size','-webkit-binding','-webkit-border-bottom-left-radius','-webkit-border-bottom-right-radius','-webkit-border-fit','-webkit-border-horizontal-spacing','-webkit-border-image','-webkit-border-radius','-webkit-border-top-left-radius','-webkit-border-top-right-radius','-webkit-border-vertical-spacing','-webkit-box-align','-webkit-box-direction','-webkit-box-flex','-webkit-box-flex-group','-webkit-box-lines','-webkit-box-ordinal-group','-webkit-box-orient','-webkit-box-pack','-webkit-box-shadow','-webkit-box-sizing','-webkit-column-break-after','-webkit-column-break-before','-webkit-column-break-inside','-webkit-column-count','-webkit-column-gap','-webkit-column-rule','-webkit-column-rule-color','-webkit-column-rule-style','-webkit-column-rule-width','-webkit-column-width','-webkit-columns','-webkit-dashboard-region','-webkit-font-size-delta','-webkit-highlight','-webkit-line-break','-webkit-line-clamp','-webkit-margin-bottom-collapse','-webkit-margin-collapse','-webkit-margin-start','-webkit-margin-top-collapse','-webkit-marquee','-webkit-marquee-direction','-webkit-marquee-increment','-webkit-marquee-repetition','-webkit-marquee-speed','-webkit-marquee-style','-webkit-match-nearest-mail-blockquote-color','-webkit-nbsp-mode','-webkit-padding-start','-webkit-rtl-ordering','-webkit-text-decorations-in-effect','-webkit-text-fill-color','-webkit-text-security','-webkit-text-size-adjust','-webkit-text-stroke','-webkit-text-stroke-color','-webkit-text-stroke-width','-webkit-user-drag','-webkit-user-modify','-webkit-user-select'						
						];
	
	var htmlEntsList = ['nbsp','iexcl','cent','pound','curren','yen','brvbar','sect','uml','copy','ordf','laquo','not','shy','reg','macr',
						'deg','plusmn','sup2','sup3','acute','micro','para','middot','cedil','sup1','ordm','raquo','frac14','frac12','frac34',
						'iquest','Agrave','Aacute','Acirc','Atilde','Auml','Aring','AElig','Ccedil','Egrave','Eacute','Ecirc','Euml','Igrave',
						'Iacute','Icirc','Iuml','ETH','Ntilde','Ograve','Oacute','Ocirc','Otilde','Ouml','times','Oslash','Ugrave','Uacute',
						'Ucirc','Uuml','Yacute','THORN','szlig','agrave','aacute','acirc','atilde','auml','aring','aelig','ccedil','egrave',
						'eacute','ecirc','euml','igrave','iacute','icirc','iuml','eth','ntilde','ograve','oacute','ocirc','otilde','ouml',
						'divide','oslash','ugrave','uacute','ucirc','uuml','yacute','thorn','yuml',
						'fnof','Alpha','Beta','Gamma','Delta','Epsilon','Zeta','Eta','Theta','Iota','Kappa','Lambda','Mu','Nu','Xi','Omicron',
						'Pi','Rho','Sigma','Tau','Upsilon','Phi','Chi','Psi','Omega','alpha','beta','gamma','delta','epsilon','zeta','eta',
						'theta','iota','kappa','lambda','mu','nu','xi','omicron','pi','rho','sigmaf','sigma','tau','upsilon','phi','chi','psi',
						'omega','thetasym','upsih','piv','bull','hellip','prime','Prime','oline','frasl','weierp','image','real','trade',
						'alefsym','larr','uarr','rarr','darr','harr','crarr','lArr','uArr','rArr','dArr','hArr','forall','part','exist',
						'empty','nabla','isin','notin','ni','prod','sum','minus','lowast','radic','prop','infin','ang','and','or','cap',
						'cup','int','there4','sim','cong','asymp','ne','equiv','le','ge','sub','sup','nsub','sube','supe','oplus','otimes',
						'perp','sdot','lceil','rceil','lfloor','rfloor','lang','rang','loz','spades','clubs','hearts','diams',
						'quot','amp','lt','gt','OElig','oelig','Scaron','scaron','Yuml','circ','tilde','ensp','emsp','thinsp','zwnj','zwj',
						'lrm','rlm','ndash','mdash','lsquo','rsquo','sbquo','ldquo','rdquo','bdquo','dagger','Dagger','permil','lsaquo',
						'rsaquo','euro'].sort();
						
	var returnToWindowVectors = ['this','frames','top','self','parent','constructor','window.window','content','window[0]','(function(){ return arguments.callee.caller.arguments.callee.caller.arguments[0].view })();',
								 '[].sort.apply(null)','x=[].sort,x()','x={}.valueOf,x()','x=[].valueOf,x()','parent','__proto__.__parent__','constructor','({}).valueOf.call(null)',
								 '[].sort.call(null)','(function(){}).__proto__.__parent__','var win = null;var forEach = [].forEach;forEach(function(val, prop,thisp) {win = thisp;}, []);win',
								 'document.documentElement.ownerDocument.defaultView','(function(){ return arguments.callee.constructor.__parent__; })()','x=[].some,x(function(x,y,win){ alert(win) })',"x=''.split,x(null)"].sort();
				  
	for(var i=0;i<objectsList.length;i++) {
		var optn = document.createElement("OPTION");
		optn.text = objectsList[i];
		optn.value = objectsList[i];
		objects.options.add(optn);
		objects.onchange=function() {
			document.getElementById('output').value += this.value;
		}			
	}
	for(var i=0;i<statementList.length;i++) {
		var optn = document.createElement("OPTION");
		optn.text = statementList[i];
		optn.value = statementList[i];
		statements.options.add(optn);
		statements.onchange=function() {
			document.getElementById('output').value += this.value;
		}		
	}	
	for(var i=0;i<operatorsList.length;i++) {
		var optn = document.createElement("OPTION");
		optn.text = operatorsList[i];
		optn.value = operatorsList[i];		
		operators.options.add(optn);
		operators.onchange=function() {
			document.getElementById('output').value += this.value;
		}
	}	
	
	for(var i=0;i<eventsList.length;i++) {
		var optn = document.createElement("OPTION");
		optn.text = eventsList[i];
		optn.value = eventsList[i];		
		events.options.add(optn);
		events.onchange=function() {
			document.getElementById('output').value += this.value;
		}
	}	
	
	for(var i=0;i<tagsList.length;i++) {
		var optn = document.createElement("OPTION");
		optn.text = tagsList[i];
		optn.value = tagsList[i];		
		HTMLTags.options.add(optn);
		HTMLTags.onchange=function() {
			document.getElementById('output').value += '<' + this.value + '>' + '</' + this.value + '>';
		}
	}	
	
	for(var i=0;i<attributesList.length;i++) {
		var optn = document.createElement("OPTION");
		optn.text = attributesList[i];
		optn.value = attributesList[i];		
		attributes.options.add(optn);
		attributes.onchange=function() {
			document.getElementById('output').value += this.value;
		}
	}

	for(var i=0;i<cssPropsList.length;i++) {
		var optn = document.createElement("OPTION");
		optn.text = cssPropsList[i];
		optn.value = cssPropsList[i];		
		cssProperties.options.add(optn);
		cssProperties.onchange=function() {
			document.getElementById('output').value += this.value;
		}
	}	
	
	for(var i=0;i<htmlEntsList.length;i++) {
		var optn = document.createElement("OPTION");
		optn.text = htmlEntsList[i];
		optn.value = htmlEntsList[i];		
		htmlEnts.options.add(optn);
		htmlEnts.onchange=function() {
			document.getElementById('output').value += '&' + this.value + ';';
		}
	}			

	
	for(var i=0;i<returnToWindowVectors.length;i++) {
		var optn = document.createElement("OPTION");
		optn.text = returnToWindowVectors[i];
		optn.value = returnToWindowVectors[i];		
		returnToWindow.options.add(optn);
		returnToWindow.onchange=function() {
			document.getElementById('output').value += this.value;
		}
	}		
		
}

window.onload = function() {
	if(document.getElementById('objects')) {
		buildJSMenus();
	}
	window.parser = JSReg.create();
	Hackvertor.settings({
		input: document.getElementById('input'),
		output: document.getElementById('output'),
		inputCharLen:document.getElementById('inputCharLen'),
		outputCharLen:document.getElementById('outputCharLen'),
		inputUnicodeCharLen:document.getElementById('inputUnicodeCharLen'),
		outputUnicodeCharLen:document.getElementById('outputUnicodeCharLen'),
		tagContainer:document.getElementById('tags'),
		hvurlWindow:document.getElementById('hvurl'),
		hvurlData:document.getElementById('data'),
		preview:document.getElementById('htmlpreview'),
		source:document.getElementById('source'),
		sourceCode:document.getElementById('sourceCode'),
		iframe:document.getElementById('iframe'),
		errorConsole:document.getElementById('errorConsole')
	});
	var hash = location.hash.slice(1);
	if (hash) {
		var input = unescape(hash);
	} else {
		var input = unescape(location.search.slice(7));
	}
	if(!input.match(/[^a-zA-Z=+0-9\/]/) && input != '') {
		try {
			if(input.length > 0) {
				input = String.fromCharCode.apply(null, Crypto.util.base64ToBytes(input));
				document.getElementById('input').value = input;
				setTimeout(function() {
					window.Hackvertor.convert();									
				},500);
			}
		} catch(e) {}	
	} else { 		
		if(window.Hackvertor.settings.input && window.Hackvertor.settings.input.value) {			
			window.Hackvertor.convert();
		}	
	}
	
	if(document.getElementById('category')) {
		Hackvertor.changeCategory(1);
	}
	if(document.getElementById('usersHVURLS')) {
		Hackvertor.loadHvurls(document.getElementById('usersHVURLS').options[document.getElementById('usersHVURLS').selectedIndex].value);
	}
	if(document.getElementById('DOM')) {
		window.DOM = document.getElementById('DOM');
	}
}
