﻿// 判断连接符是否大于一个
function chkstr_connector(str) {	

	str = str.replace(/(\s{1,1})(\+\+)(\s{1,1})/g, '@@@+###');
	str = str.replace(/(\s{1,1})(--)(\s{1,1})/g, '@@@-###');
	str = str.replace(/(\s{1,1})(!)(\s{1,1})/g, '@@@!###');

	str = str.replace(/(\s{1,1})(AND)(\s{1,1})/g, '@@@+###');
	str = str.replace(/(\s{1,1})(OR)(\s{1,1})/g, '@@@-###');
	str = str.replace(/(\s{1,1})(NOT)(\s{1,1})/g, '@@@!###');

	str = str.replace(/(\s{1,1})/g, '@@@+###');

	var num = 0;
	num +=(str.indexOf("@@@+###") != -1)?1:0;	
	num +=(str.indexOf("@@@-###") != -1)?1:0;	
	num +=(str.indexOf("@@@!###") != -1)?1:0;	
	if(num > 1) return false;

	num = 0;
	var tmp = -1;
	for (i=0; i<2; i++){
		tmp = str.indexOf("@@@!###", tmp+1);
		if(tmp != -1) num++;
	}
	if(num > 1) return false;
	
	return true;
}

// 过滤掉引号内头尾的非法连接符及空格	
	function removeStartEndIllegalConectorInQuotationMarks(str){
	
		var strArray = str.split('"');
		var num = strArray.length;
		
		for (var i = 0; i < num; i++){
			// 删除头尾不需要的字符
		    if (i % 2 == 1){
    			strArray[i] = removeEndIllegalConector(strArray[i]);
    			var re = /\s{0,}$/g
    			strArray[i] = strArray[i].replace(re, '');
    			strArray[i] = removeStartIllegalConector(strArray[i]);
    			var re = /^\s{0,}/g
    			strArray[i] = strArray[i].replace(re, '');
            }
		}
		
		var tmpStr = strArray.join(' " ');
		
		for (var i = 0; i < num - 1; i++){
			if (i % 2 == 1){
				tmpStr = tmpStr.replace(' " ', '" ');
			}else{
				tmpStr = tmpStr.replace(' " ', ' "');
			}
		}
	
		// 处理多余空格
		var re = /\s{2,}/g
		str = tmpStr.replace(re, ' ');
		var re = /\s{0,}$/g
		str = str.replace(re, '');
		var re = /^\s{0,}/g
		str = str.replace(re, '');
		
		return str;
	}

// 简单搜索中双引号处理
	function formatQuotationMarks(str) {
	
		var strArray = str.split('"');
		var num = strArray.length;
		
		// 一个双引号直接替换退出
		if (num == 2){
			str = str.replace('"', '');
			return str;
		}
		
		// 单偶数的双引号处理
		var tmpStr = "";
		
		if ((num - 1) % 2 == 1){
			for (var i = 0; i < num; i++){
				if (i == num - 1){
					tmpStr = tmpStr+'" ';
				}
				tmpStr = tmpStr+strArray[i];
				if (i == 0){
					tmpStr = tmpStr+' "';
				}
			}
		}else{
			tmpStr = strArray.join(' " ');
			for (var i = 0; i < num - 1; i++){
				if (i % 2 == 1){
					tmpStr = tmpStr.replace(' " ', '" ');
				}else{
					tmpStr = tmpStr.replace(' " ', ' "');
				}
			}
		}
		
		// 处理多余空格
		var re = /\s{2,}/g
		str = tmpStr.replace(re, ' ');
		var re = /\s{0,}$/g
		str = str.replace(re, '');
		var re = /^\s{0,}/g
		str = str.replace(re, '');
		
		// 过滤掉引号内头尾的非法连接符及空格
		str = removeStartEndIllegalConectorInQuotationMarks(str);
		
		return str;
	}

// 格式化指定字符串里的不规则搜索连接符
	function formatSearchQuery(str) {
		
		// 替换全角字符
		str = str.replace(/　/g, ' ');
		str = str.replace(/＋/g, '+');
		str = str.replace(/－/g, '-');
		str = str.replace(/“/g, '"');
		str = str.replace(/”/g, '"');
		str = str.replace(/！/g, '!');
		str = str.replace(/＂/g, '"');
		
		// 替换连续的+,-,!,"
		var re = /[+]{2,}/g
		str = str.replace(re, '++');
		var re = /[-]{2,}/g
		str = str.replace(re, '--');
		var re = /[!]{2,}/g
		str = str.replace(re, '!');
		var re = /["]{2,}/g
		str = str.replace(re, '"');
		
		// 先格式化成对的+,-
		str = str.replace(/[+]{2,2}/g," ++ ");
		str = str.replace(/[-]{2,2}/g," -- ");
		str = str.replace(/[!]{1}/g," ! ");
		
		// 将两个以上的空格替换成一个空格
		var re = /\s{2,}/g
		str = str.replace(re, ' ');
		str = removeEndIllegalConector(str);
		str = removeStartIllegalConector(str);
		
		// 删除头尾空格
		var re = /\s{0,}$/g
		str = str.replace(re, '');
		var re = /^\s{0,}/g
		str = str.replace(re, '');
		
		return str;
	}

	// 递归去掉末尾的不规则字符
	function removeEndIllegalConector(str) {
		var re = /(\s{0,})?(\+\+|AND|--|OR|!|NOT)(\s{0,})?$/g
		for(i=0; ;i++) {
			str = str.replace(re, '');
			if(str.match(re) == null) break;
		}
		return str;
	}
	
	// 递归去掉头部的不规则字符
	function removeStartIllegalConector(str) {
		var re = /^(\s{0,})?(\+\+|AND|--|OR|!|NOT)(\s{0,})/g
		for(i=0; ;i++) {
			str = str.replace(re, '');
			if(str.match(re) == null) break;
		}
		return str;
	}
