function cvt_query(genus, x_query) {
	var re_del = new RegExp("[\*\?@<>()\\,\\[\\]\"\'\\\\]", "g");
	var x_query_en = x_query.replace(re_del, " ");
	re_del = new RegExp("\\s+", "g");
	x_query_en = x_query_en.replace(re_del, " ");

	x_query_en = x_query_en.replace(/^\s*/, "").replace(/\s*$/, " ");
	var ui_syntax = "and && & or \\|\\| \\| near \\^ not !";
	var arr_ui_syntax = ui_syntax.split(/\s+/);

	var en_syntax = "<and> <and> <and> <or> <or> <or> <near> <near> <not> <not>";
	var arr_en_syntax = en_syntax.split(/\s+/);

	if (genus == "common") {
		for (var i = 0; i < arr_ui_syntax.length; i++) {
			re_del = new RegExp(arr_ui_syntax[i] + " ", "gi");
			x_query_en = x_query_en.replace(re_del, arr_en_syntax[i]);
		}
	} else {
		for (var i = 0; i < arr_ui_syntax.length; i++) {
			re_del = new RegExp(arr_ui_syntax[i] + " ", "gi");
			x_query_en = x_query_en.replace(re_del, " ");
		}
	}

	x_query_en = x_query_en.replace(" <", "<");
	x_query_en = x_query_en.replace(/^\s*/, "").replace(/\s*$/, "");
	re_del = new RegExp("\\s+", "g");
	
	if (genus == "or") x_query_en = x_query_en.replace(re_del, "<or>");
//	else if (genus == "thesaurus") x_query_en = x_query_en.replace(re_del, "<thesaurus>");
//	else if (genus == "not") x_query_en = x_query_en.replace(re_del, "<not>");
	else if (genus == "and") x_query_en = x_query_en.replace(re_del, "<and>");
	else x_query_en = x_query_en.replace(re_del, " ");

	{
		while(x_query_en.indexOf("><not>") != -1) {
			re_del = new RegExp("<[^>]+><not>", "g");
			x_query_en = x_query_en.replace(re_del, "<not>");
		}

		while(x_query_en.indexOf("><") != -1) {
			re_del = new RegExp("><[^>]+>", "g");
			x_query_en = x_query_en.replace(re_del, ">");
		}

		if (x_query_en.charAt(0) == "<") {
			re_del = new RegExp("^<[^>]+>");
			x_query_en = x_query_en.replace(re_del, "");
		}
		
		if (x_query_en.charAt(x_query_en.length - 1) == ">") {
			re_del = new RegExp("<[^<]+>$");
			x_query_en = x_query_en.replace(re_del, "");
		}
		
		if (genus == "common") {
			//x_query_en = x_query_en.replace(">", "><thesaurus>");
			//x_query_en = "<thesaurus>" + x_query_en;
		} else if (genus == "not") {
			x_query_en = x_query_en.replace("<not>", "<and><not>");
			x_query_en = "<not>" + x_query_en;
		}
	}

	return x_query_en;
}
function cvt_quot(genus, x_query) {
	var re_del = "";
	
	if (genus == "de_quot") { // &quot; >> "
		re_del = new RegExp("&quot;", "gi");
		x_query = x_query.replace(re_del, "\"");
	} else { // " >> &quot;
		re_del = new RegExp("[\"]", "g");
		x_query = x_query.replace(re_del, "&quot;");
	}

	return x_query;
}

function cln_query(x_query) {
	var genus = "common";
	var re_del = new RegExp("[\*\?@<>()\\,\\[\\]\"\'\\\\]", "g");
	var x_query_en = x_query.replace(re_del, " ");
	re_del = new RegExp("\\s+", "g");
	x_query_en = x_query_en.replace(re_del, " ");

	x_query_en = x_query_en.replace(/^\s*/, "").replace(/\s*$/, " ");
	var ui_syntax = "and && & or \\|\\| \\| near \\^ not !";
	var arr_ui_syntax = ui_syntax.split(/\s+/);

	var en_syntax = "<and> <and> <and> <or> <or> <or> <near> <near> <not> <not>";
	var arr_en_syntax = en_syntax.split(/\s+/);

	if (genus == "common") {
		for (var i = 0; i < arr_ui_syntax.length; i++) {
			re_del = new RegExp(arr_ui_syntax[i] + " ", "gi");
			x_query_en = x_query_en.replace(re_del, arr_en_syntax[i]);
		}
	} else {
		for (var i = 0; i < arr_ui_syntax.length; i++) {
			re_del = new RegExp(arr_ui_syntax[i] + " ", "gi");
			x_query_en = x_query_en.replace(re_del, " ");
		}
	}

	x_query_en = x_query_en.replace(" <", "<");
	x_query_en = x_query_en.replace(/^\s*/, "").replace(/\s*$/, "");
	re_del = new RegExp("\\s+", "g");
	
	x_query_en = x_query_en.replace(re_del, " ");

	return x_query_en;
}
