// Convert user's query inputed into a VQL
function cvt_query(x_query, genus) {
	var re_del = new RegExp("[@<>()\\,\\[\\]\"\'\\\\]", "g");
	var x_query_en = x_query.replace(re_del, " "); //Æ¯¼ö±âÈ£Á¦°Å
	
	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>";
	if(genus == "thesaurus") en_syntax = "<and><thesaurus> <and><thesaurus> <and><thesaurus> <or><thesaurus> <or><thesaurus> <or><thesaurus> <near><thesaurus> <near><thesaurus> <not><thesaurus> <not><thesaurus>";
	var arr_en_syntax = en_syntax.split(/\s+/); //VQL °Ë»ö¿¬»êÀÚ

	var tmp_query = x_query_en;
	if (genus == "common"||genus == "thesaurus") {
		for (var i = 0; i < arr_ui_syntax.length; i++) { //VQL °Ë»ö¿¬»êÀÚ·Î º¯È¯
			re_del = new RegExp(arr_ui_syntax[i] + " ", "gi");
	        tmp_query = tmp_query.replace(re_del, " ").replace(/^\s*/, "").replace(/\s*$/, "");
			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");
	        tmp_query = tmp_query.replace(re_del, " ").replace(/^\s*/, "").replace(/\s*$/, "");
			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 == "common") x_query_en = x_query_en.replace(re_del, "<and>");
	else if (genus == "thesaurus") x_query_en = x_query_en.replace(re_del, "<and>");
	else if (genus == "not") x_query_en = x_query_en.replace(re_del, "<not>");
	else if (genus == "name") x_query_en = x_query_en.replace(re_del, "<or>");

	//VQL °Ë»ö¿¬»êÀÚ ¼öÁ¤ º¯°æ
	{
		while(x_query_en.indexOf("><not>") != -1) {
			re_del = new RegExp("<[^>]+><not>", "g");
			x_query_en = x_query_en.replace(re_del, "<not>");
		}

	    if(genus != "thesaurus"){
		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 == "thesaurus") {
			x_query_en = x_query_en.replace("<and>", "<and><thesaurus>");
			x_query_en = x_query_en.replace("<and><thesaurus><thesaurus>", "<and><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;
		} else if (genus == "name") {
			//x_query_en = x_query_en.replace("<word>", "<or><word>");
			//x_query_en = "<word>" + x_query_en;
		}
//		x_query_en = "<freetext>('" + tmp_query + "')<or>(" + x_query_en + ")";
	}

	return x_query_en;
}

// Convert " into a double quotation
function cvt_quot(x_query, genus) {
	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;
}
