function searchIt(els, ctypes, stypes, attrs, grps, agrps) {
	   var url = window.top.location.search.substring(1);
		var msgdiv = document.getElementById('msg');
		var termspre,  termsname, termsregex, sens;
		var terms = trim(getParameter(url,'terms'));
		if (terms.indexOf(":",1) < 0) {
		  termspre = "";
		  termsname = terms;
		}
		else {
			temp = terms.split(':');
			termspre = temp[0];
			termsname = temp[1];
		}
		var ns = getParameter(url,'ns');
		if (ns=="null" && termspre!="") {
			ns = termspre;
		};
		var sensbox = getParameter(url,'sens');
		sensbox=='yes' ? sens = "" : sens = "i";
		var count = 0;
		try {
			termsregex = new RegExp(termsname, sens);
		}
		catch(err) {
			msg.innerHTML = "Invalid regular expression. No results shown.";
			return;
		}
		if (getParameter(url,'compsE')=='E') {
			count += getMatches(els,document.getElementById('ediv'), termsregex, ns, 'e');
		}
		if (getParameter(url,'compsT')=='T') {
			count += getMatches(ctypes,document.getElementById('ctdiv'), termsregex, ns, 't');
			count += getMatches(stypes,document.getElementById('stdiv'), termsregex, ns, 't');
		}
		if (getParameter(url,'compsCT')=='CT') {
			count += getMatches(ctypes,document.getElementById('ctdiv'), termsregex, ns, 't');
		}
		if (getParameter(url,'compsST')=='ST') {
			count += getMatches(stypes,document.getElementById('stdiv'), termsregex, ns, 't');
		}
		if (getParameter(url,'compsA')=='A') {
			count += getMatches(attrs,document.getElementById('adiv'), termsregex, ns, 'a');
		}
		if (getParameter(url,'compsG')=='G') {
			count += getMatches(grps,document.getElementById('gdiv'), termsregex, ns, 'g');
		}
		if (getParameter(url,'compsAG')=='AG') {
			count += getMatches(agrps,document.getElementById('agdiv'), termsregex, ns, 'ag');
		}
		msg.innerHTML = "Search for " + terms + " yielded " + count + " results.";
	}
	
function getMatches ( names, place, termsregex, ns, ctype ) {
	var i;
   var localcount = 0;
	var htmlstr = '';
	for (i=0;i< names.length;i++) {
		var fullname = names[i];
		var nameparts = fullname.split(':');
		var pre = nameparts[0];
		var name = nameparts[1];
		if (ns=="null" || ns==pre) {
			if (termsregex.test(name)) {
				htmlstr += link(pre, ctype, nameparts, name);
				localcount = localcount + 1;
			}
		}
	}
	place.innerHTML = htmlstr;
	return localcount;
}
function link (pre, ctype, nameparts, name) {
	var str = "<p><a href='" + ctype + "-";
	if (pre != "") {
		str += pre + "_";
	}
	str += name;
	if (nameparts.length > 2) {
		str += "-" + nameparts[2];
	}
	str += ".html'>"
	if (pre != "") {
		str += pre + ":";
	}
	str += name +"</a></p>";
	return str;
}

function getParameter ( queryString, parameterName ) {
   var begin;
   var end;
   var parameterName = parameterName + "=";
   if ( queryString.length > 0 ) {
      begin = queryString.indexOf ( parameterName );
      if ( begin != -1 ) {
         begin += parameterName.length;
         end = queryString.indexOf ( "&" , begin );
      if ( end == -1 ) {
         end = queryString.length
      }
      return unescape ( queryString.substring ( begin, end ) );
   }
   return "null";
   }
}


function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}
