function searchKeyword() {
	var strText = gsdlGetValue(document.QueryForm.countries).gsdl_clean();
	if (strText.length == 0) {
		return false;
	}
	argfqv = '"' + strText + '"' + ",";
	argfqf = 'TI:TX,PU,SU,ORG,LA';
	argfqs = cgiarg.s + ',0,0,0,0';
	argfqk = cgiarg.k + ',0,0,0,0';
	argfqc = 'and,and,and,and';

	beginPostSearch();
	return false;
}

function searchHomeKeyword() {
	var strText = gsdlGetValue(document.QueryForm.kw).gsdl_clean();
	if (strText.length == 0) {
		return false;
	}
	argfqv = ',,' + strText + ',';
	argfqf = 'TI:TX,PU,SU,ORG,LA';
	argfqs = gsdlGetCookieInt('s', gsdlDefaults.args.s) + ',0,0,0,0';
	argfqk = gsdlGetCookieInt('k', gsdlDefaults.args.k) + ',0,0,0,0';
	argfqc = 'and,and,and,and';

	beginPostSearch();
}

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() {
	var strText = gsdlGetValue(document.QueryForm.fqv).gsdl_clean();
	if (strText.length == 0) {
		return false;
	}
	argfqv = strText + ',,,,';
	argfqf = 'TI:TX,PU,SU,ORG,LA';
	argfqs = gsdlGetCookieInt('s', gsdlDefaults.args.s) + ',0,0,0,0';
	argfqk = gsdlGetCookieInt('k', gsdlDefaults.args.k) + ',0,0,0,0';
	argfqc = 'and,and,and,and';

	beginPostSearch();
	return false;
}

function getsearchargs (theForm) {
	if (theForm != null) {
		gsdlInitValue(theForm.fqv, unescape(argfqv));
		gsdlInitValue(theForm.fqf, unescape(argfqf));
		gsdlInitValue(theForm.fqk, unescape(argfqk));
		gsdlInitValue(theForm.fqs, unescape(argfqs));
		gsdlInitValue(theForm.fqc, unescape(argfqc));
	} else {
		var args = '';
		args += '&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(theForm) {
	var value = '';
	stdarg = '';
	if (cgiarg.h != '') {
		value = gsdlGetValue(document.QueryForm.h);
		if (value != cgiarg.h) {
			stdarg += '&amp;h=' + value;
			if (theForm != null) gsdlInitValue(theForm.h, value);
		}
	}
	stdarg += '&amp;g=Sec';
	if (theForm != null) gsdlInitValue(theForm.g, 'Sec');
	if (typeof(document.QueryForm.j) != 'undefined' && document.QueryForm.j != null) {
		value = gsdlGetValue(document.QueryForm.j);
		if (value != cgiarg.j) {
			stdarg += '&amp;j=' + value;
			if (theForm != null) gsdlInitValue(theForm.j, value);
		}
	}
	
	if (typeof(document.QueryForm.t) != 'undefined' && document.QueryForm.t != null) {
		value = gsdlGetValue(document.QueryForm.t);
		if (value != cgiarg.t) {
			stdarg += '&amp;t=' + value;
			if (theForm != null) gsdlInitValue(theForm.t, value);
		}
	}

	if (typeof(document.QueryForm.s) != 'undefined' && document.QueryForm.s != null) {
		value = gsdlGetValue(document.QueryForm.s);
		if (value == '1') value = '0';
		else value = '1';
		stdarg += '&amp;s=' + value;
		if (theForm != null) gsdlInitValue(theForm.s, value);
	}
	stdarg += '&amp;r=1';
	var date = new Date();
	value = '' + date.getTime();
	stdarg += '&amp;uq=' + value;
	if (theForm != null) gsdlInitValue(theForm.uq, value);
	value = '' + gsdlNewQueryUniqueId();
	stdarg += '&amp;qu=' + value;
	if (theForm != null) gsdlInitValue(theForm.qu, value);
	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 gsdlQueryEncode(text) {
	return text;
}

function updatefqv() {
	var i;
	argfqv = '';
	for (i = 0; i < document.QueryForm.fqv.length; ++i) {
		if (i > 0) argfqv += ',';
		argfqv += gsdlQueryEncode(mgpp_format(gsdlGetValue(document.QueryForm.fqv[i]).gsdl_clean()));
	}
}

// convert commas and spaces to plus
function mgpp_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 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 = '';
}

function submitSearch() {
	updatefqv(); updatefqf(); updatefqs(); updatefqk(); updatefqc();
	beginPostSearch();
	return false;
}

function beginPostSearch() {
	if (argfqv == ',,,,') 
		return false;
	var queryForm = gsdlGetElement('QueryPostForm');
	g_gsdlPreferenceState.SetFormArgs(queryForm);
	getstdargs(queryForm);
	getsearchargs(queryForm);
	queryForm.submit();
	return false;
}

function beginSearch() {
	if (argfqv == ',,,,') 
	return false;
	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(mgpp_format(gsdlGetValue(document.QueryForm.fqv[0])));
	for (i = 1; i < document.QueryForm.fqv.length; ++i) {
		argfqv += ",";
		if (i == 1) {
			argfqv +=  gsdl_encode(mgpp_format(gsdlGetValue(document.QueryForm.fqv[i]))); 
		}
	}
	updatetxti(); updatefqf(); updatefqs(); updatefqk(); updatefqc();
	beginSearch();
	return false;
}

function searchWords(strText, strLanguage, strWhere) {
	if (typeof(strWhere) == 'undefined' || strWhere == null) strWhere = 'TI';
	strText = mgpp_format(strText).gsdl_clean();
	if (strText.length == 0) {
		return false;
	}
	if (typeof(strLanguage) == 'undefined' || strLanguage == null)
		strLanguage = '';

	var frmQueryPost = gsdlGetElement('QueryPostForm');
	g_gsdlPreferenceState.SetFormArgs(frmQueryPost);

	frmQueryPost.fqf.value = strWhere + ',,,,LA';
	frmQueryPost.fqv.value = strText + ',,,,' + strLanguage;
	frmQueryPost.fqk.value = '1,0,0,0,0';
	frmQueryPost.fqs.value = '0,0,0,0,0';
	frmQueryPost.fqc.value = 'and,and,and,and';
	frmQueryPost.g.value = 'Sec';
	var date = new Date();
	frmQueryPost.uq.value = '' + date.getTime();
	frmQueryPost.submit();

	return false;
}
