function searchKeyword() {
	var keywords = gsdlGetValue(document.QueryForm.countries);
	var queryOptions = '&amp;g=Sec&amp;t=0&amp;r=1';

	if (keywords.length > 0) {
		var strURL = gsdlQueryURL;
		argfqs = cgiarg.s + ',0,0,0,0';
		argfqk = cgiarg.k + ',0,0,0,0';
		argfqc = 'and,and,and,and';
		strURL += '&amp;a=q' + queryOptions + '&amp;fqv=%22' + gsdl_encode(format(keywords)) + '%22,,,,&amp;fqf=TI:TX,PU,SU,ORG,LA';
		strURL += '&amp;fqk=' + argfqk + '&amp;fqs=' + argfqs + '&amp;fqc=' + argfqc;
		gsdl_goto(strURL);
	}
}

function searchHomeKeyword() {
	var keywords = gsdlGetValue(document.QueryForm.kw);
	var queryOptions = '&amp;g=Sec&amp;t=0&amp;r=1';
	var strURL = gsdlQueryURL;

	argfqs = cgiarg.s + ',0,0,0,0';
	argfqk = cgiarg.k + ',0,0,0,0';
	argfqc = 'and,and,and,and';
	strURL += '&amp;a=q' + queryOptions + '&amp;fqv=,,' + keywords + ',&amp;fqf=TI:TX,PU,SU,ORG,LA';
	strURL += '&amp;fqk=' + argfqk + '&amp;fqs=' + argfqs + '&amp;fqc=' + argfqc;
	gsdl_goto(strURL);
}

function appendKeyword() {
	var myText = gsdlGetValue(document.QueryForm.kw);

	if (document.QueryForm.fqv[fqvtextidx].value) {
		document.QueryForm.fqv[fqvtextidx].value = document.QueryForm.fqv[fqvtextidx].value + ' "' + myText + '"';
	} else {
		document.QueryForm.fqv[fqvtextidx].value = '"' + myText + '"';
	}
}

function submitSimpleSearch() {
	argfqv = gsdl_encode(format(gsdlGetValue(document.QueryForm.fqv[fqvtextidx]))) + ',,,';
	var strText = gsdl_encode(format(gsdlGetValue(document.QueryForm.fqv[fqvtextidx])));
	if (strText.length == 0) {
		return false;
	}
	var arrArgfqf = argfqf.split(',');
	argfqf = '';
	if (arrArgfqf.length > fqvtextidx && arrArgfqf[fqvtextidx].length > 0)
		argfqf += arrArgfqf[fqvtextidx];
	else
		argfqf += 'TI:TX';
	argfqf += ',PU,SU,ORG,LA';

	argfqs = cgiarg.s + ',0,0,0,0';
	argfqk = cgiarg.k + ',0,0,0,0';
	argfqc = 'and,and,and,and';
	var stdarg = '&amp;g=Sec&amp;t=' + cgiarg.t + '&amp;r=1&amp;hs=0';
	gsdl_goto(gsdlQueryURL + stdarg+ advformargs + getsearchargs());
	return false;
}

function getsearchargs () {
	var args = '';
	args += '&amp;fqa=0&amp;fqv=' + argfqv + '&amp;fqf=' + argfqf;
	args += '&amp;fqk=' + argfqk + '&amp;fqs=' + argfqs + '&amp;fqc=' + argfqc;

	return args;
}

function getqueryargs () {
	return '&amp;fqa=1' + '&amp;q=' + argq + '&amp;fqv=' + argfqv + '&amp;fqf=' + argfqf
		 + '&amp;fqk=' + argfqk + '&amp;fqs=' + argfqs + '&amp;fqc=' + argfqc;
}

function getstdargs() {
	stdarg = '';
	if (cgiarg.h != '') {
		value = gsdlGetValue(document.QueryForm.h);
		if (value != cgiarg.h) stdarg += '&amp;h=' + value;
	}
	if (havegselection) {
		var sText = '' + gsdlGetValue(document.QueryForm.fqv[fqvtextidx]);
		if (sText.length > 0) sText = 'Sec';
		else sText = 'Doc';
		stdarg += '&amp;g=' + sText;
	}
	if (cgiarg.j != '') {
		value = gsdlGetValue(document.QueryForm.j);
		if (value != cgiarg.j) stdarg += '&amp;j=' + value;
	}

	var value = gsdlGetValue(document.QueryForm.t);
	if (value != cgiarg.t) stdarg += '&amp;t=' + value;

	if (document.QueryForm.s != null && document.QueryForm.s != 'undefined') {
		value = gsdlGetValue(document.QueryForm.s);
		if (value == '1') value = '0';
		else value = '1';
		stdarg += '&amp;s=' + value;
	}
	stdarg += '&amp;r=1&amp;hs=0';
	return stdarg;
}

function query_initialize() {
	if (document.QueryForm.fqf != null) {initfqf(); }
	gsdlInitValue(document.QueryForm.t, cgiarg.t);
	initfqv();
	if (cgiarg.b == '1') {
		initfqs();
		initfqk();
		initfqc();
		initq();
	}
	return true;
}

// fqf - the field selection box
function initfqf() {
	var i;
	var fqf = argfqf.split(',');
	for (i = 0; i < fqf.length; ++i) {
		if (fqf[i] != '') { gsdlInitValue(document.QueryForm.fqf[i], fqf[i]); }
	}
	if (fqf.length < document.QueryForm.fqf.length) { // initialize remaining ones
		var v = 1; // the option with a null value is either at place 1 or 2
		if (document.QueryForm.fqf[0].options != null && document.QueryForm.fqf[0].options[v].value != '') ++v;
		for (i = fqf.length; i < document.QueryForm.fqf.length; ++i) {
			if (document.QueryForm.fqf[i].options != null) {
				var z=i;
				while (z >= document.QueryForm.fqf[i].options.length - 1) {
					z = z - (document.QueryForm.fqf[i].options.length - 1);
				}
				if (z >= v) ++z; // skip over the void value
				document.QueryForm.fqf[i].options[z].selected = true;
			}
		}
	}
	updatefqf();

}

function inittxti() {
	var fqf = argfqf.split(',');
	if (fqf.length > fqvtextidx) {
		gsdlInitValue(document.QueryForm.txti, fqf[fqvtextidx]);
	} else {
		gsdlInitValue(document.QueryForm.txti, document.QueryForm.fqf[fqvtextidx]);
	}
}

function updatetxti() {
	gsdlInitValue(document.QueryForm.fqf[fqvtextidx], gsdlGetValue(document.QueryForm.txti));
	updatefqf();
}

function updatefqf() {
	var i;
	argfqf = '';
	argfqf += gsdlGetValue(document.QueryForm.fqf[0]);
	for (i = 1; i < document.QueryForm.fqf.length; ++i) {
		argfqf += ',' + gsdlGetValue(document.QueryForm.fqf[i]);
	}
}


function clearfqf() {
	var i;
	for (i = 0; i < document.QueryForm.fqf.length; ++i) {
		var z = i;
		if (i >= document.QueryForm.fqf[i].options.length) z = z - document.QueryForm.fqf[i].options.length;
		document.QueryForm.fqf[i].options[z].selected = true;
	}
	updatefqf();
}

// fqc - the boolean operator selection box
function initfqc() {
	var i,j;
	fqc = argfqc.split(',');
	if (cgiarg.fqn == 2 || typeof(document.QueryForm.fqc[0]) == 'undefined') { // there will only be one fqc element
		gsdlInitValue(document.QueryForm.fqc, fqc[0]);
	}
	else {
	for (i = 0; i < fqc.length; ++i) {
			gsdlInitValue(document.QueryForm.fqc[i], fqc[i]);
	}
	}
	updatefqc();

}

function updatefqc() {
	var i;
	argfqc = '';
	if (cgiarg.fqn == 2 || typeof(document.QueryForm.fqc[0]) == 'undefined') {
		argfqc += gsdlGetValue(document.QueryForm.fqc);
	}
	else {
		argfqc += gsdlGetValue(document.QueryForm.fqc[0]);
		for (i = 1; i < document.QueryForm.fqc.length; ++i) {
			argfqc += ',' + gsdlGetValue(document.QueryForm.fqc[i]);
		}
	}
}


function clearfqc() {
	var i;
	if (cgiarg.fqn == 2) {
		document.QueryForm.fqc.options[0].selected = true;
	}
	else {
		for (i = 0; i < document.QueryForm.fqc.length; ++i) {
			document.QueryForm.fqc[i].options[0].selected = true;
		}
	}
	updatefqc();
}

// fqv - the query word/phrase text box
function initfqv() {
	var i;
	var fqv= argfqv.split(",");
	for (i=0; i < fqv.length; i++) {
		if (i == fqvtextidx) {
			var ligatureReg = new RegExp(String.fromCharCode(7527) + '(AND|OR|NOT|NEAR)' + String.fromCharCode(7527), 'g');
			gsdlInitValue(document.QueryForm.fqv[i], fqv[i].replace(ligatureReg, '$1'));
		} else {
			gsdlInitValue(document.QueryForm.fqv[i], fqv[i]);
		}
	}
	updatefqv();
}

function updatefqv() {
	var i;
	argfqv = '';
	argfqv += gsdl_encode(format(gsdlGetValue(document.QueryForm.fqv[0])));
	for (i = 1; i < document.QueryForm.fqv.length; ++i) {
		argfqv += ',';
		argfqv +=  gsdl_encode(format(gsdlGetValue(document.QueryForm.fqv[i])));
	}
}

function clearfqv() {
	var i;
	for (i = 0; i < document.QueryForm.fqv.length; ++i) {
		document.QueryForm.fqv[i].value = '';
	}
	updatefqv();
}

// fqs - the stemming checkboxes
function initfqs() {
	var i;
	fqs = argfqs.split(',');
	for (i = 0; i < fqs.length; ++i) {
		gsdlInitValue(document.QueryForm.fqs[i], fqs[i]);
	}
	updatefqs();
}

function update_exactmatch(field_idx) {
	var sValue = gsdlGetValue(document.QueryForm.s);
	if (sValue == '1') sValue = '0';
	else sValue = '1';
	gsdlInitValue(document.QueryForm.fqs[field_idx], sValue);
	updatefqs();
}

function updatefqs() {
	argfqs = '';
	argfqs += gsdlGetValue(document.QueryForm.fqs[0]);
	var i;
	for (i = 1; i < document.QueryForm.fqs.length; ++i) {
		argfqs += ',' + gsdlGetValue(document.QueryForm.fqs[i]);
	}
}


function clearfqs() {
	var i;
	for (i = 0; i < document.QueryForm.fqs.length; ++i) {
		document.QueryForm.fqs[i].checked = false;
	}
	updatefqs();
}

// kqk - the casefolding checkboxes
function initfqk() {
	var i;
	fqk = argfqk.split(',');
	for (i = 0; i < fqk.length; ++i) {
		gsdlInitValue(document.QueryForm.fqk[i], fqk[i]);
	}
	updatefqk();
}


function updatefqk() {
	argfqk = '';
	argfqk += gsdlGetValue(document.QueryForm.fqk[0]);
	var i;
	for (i = 1; i < document.QueryForm.fqk.length; ++i) {
		argfqk += ',' + gsdlGetValue(document.QueryForm.fqk[i]);
	}
}

function clearfqk() {
	var i;
	for (i = 0; i < document.QueryForm.fqk.length; ++i) {
		document.QueryForm.fqk[i].checked = false;
	}
	updatefqk();
}

// q - the advanced query box
function initq() {
	updateq();
}

function updateq() {
	argq = '';
	argq += gsdl_encode(document.QueryForm.q.value);
}

function clearq() {
	document.QueryForm.q.value = '';
}

// convert commas and spaces to plus
function format(string) {
	var str = '' + string;
	var out = '', flag = 0;
	var j;
	for (j = 0; j < str.length; j++) {
		if (str.charAt(j) == ' ' || str.charAt(j) == ',') {
			if (flag == 0) {
				out += '+';
				flag = 1;
			}
		}
		else {
			out += str.charAt(j);
			flag = 0;
		}
	}
	return out;
}
function submitSearch() {
	updatefqv(); updatefqf(); updatefqs(); updatefqk(); updatefqc();
	beginSearch();
	return false;
}

function beginSearch() {
	gsdl_goto(gsdlQueryURL + getstdargs() + advformargs + getsearchargs());
}

function runQuery() {
	gsdl_goto(gsdlQueryURL+getstdargs() + advformargs + getqueryargs());
}

function clearForm() {
	clearfqf();
	clearfqv();

	if (cgiarg.b == '1') {
		clearfqk();
		clearfqs();
		clearfqc();
	}
}

function clearFilters() {
	var i;
	argfqv = '';
	argfqv += gsdl_encode(format(gsdlGetValue(document.QueryForm.fqv[0])));
	for (i = 1; i < document.QueryForm.fqv.length; ++i) {
		argfqv += ",";
		if (i == 1) {
			argfqv +=  gsdl_encode(format(gsdlGetValue(document.QueryForm.fqv[i]))); 
		}
	}
	updatetxti(); updatefqf(); updatefqs(); updatefqk(); updatefqc();
	beginSearch();
	return false;
}
