function showDistinct(type, td) {
	var o = document.getElementById('market_distinct_'+type);
//alert(o.offsetLeft);
//	o.style. = 0;
	if (o) {
		o.style.display = 'block';
	}
	var pos = findPos(o.parentNode);
	o.style.left = pos[0];
	o.style.top = pos[1] + td.offsetHeight -2;
	if (o.offsetWidth < td.offsetWidth) {
		o.style.width = td.offsetWidth + 'px';
	}
	td.style.backgroundColor = '#E2E7EA';
}

function parseStrValues(s, key) {
//alert('regex1');
	var r = new RegExp("(^|\\s)" + key + ":\\s*([^\"' ]\\S*|\"[^\"]*\"|'[^']*')","i");
//	var r = new RegExp("(^|\\s)" + key + ":\\s*([^\"' ]\\S*?|\"[^\"]*\"|'[^']*')","i");
//alert('regex2');
	var arr = r.exec(s);
	var _s = '';
	var chunks = new Array();
	if (arr) {
		do {
			s = s.substr(0, arr.index) + ' ' + s.substr(arr.index + arr[0].length);
			s = s.replace(/(^\s+|\s+$)/,'');
			if (arr[2].charAt(0) == '"' || arr[2].charAt(0) == "'") {
				_s = arr[2].substr(1, arr[2].length-2);
			} else {
				_s = arr[2];
			}
			chunks = chunks.concat(_s.split(';'));
			arr = r.exec(s);
		} while(arr);
	}
	return [s, chunks];
}

function toggleSearchValue(add, key, value) {
//alert('checked ' + add);
	if (add) {
		addToSearchStr(key,value);
	} else {
		delFromSearchStr(key,value);
	}
}

function addToSearchStr(key, value) {
//var _time = 
	var s = document.getElementById('market_search_field').value;
	var r = parseStrValues(s, key);
	s = r[0];
	var values = r[1];

	var f = 0;
	for(var i = 0; i < values.length; i++) {
		if (values[i] == value) {
			f = 1;
			break;
		}
	}
	if (!f) {
		values[values.length] = value;
	}
	if (s) {
		s += ' ';
	}
	s += key + ':"' + values.join(';') + '"';
	document.getElementById('market_search_field').value = s;
}

function delFromSearchStr(key, value) {
	var s = document.getElementById('market_search_field').value;
	var r = parseStrValues(s, key);
	s = r[0];
	var values = r[1];
	var vs = new Array();
	for(var i = 0; i < values.length; i++) {
		if (values[i] != value) {
			vs[vs.length] =values[i];
		}
	}
	if (vs.length) {
		if (s) {
			s += ' ';
		}
		s += key + ':"' + vs.join(';') + '"';
	}
	document.getElementById('market_search_field').value = s;
}

function hideDistinct(type, td) {
	var o = document.getElementById('market_distinct_'+type);
	if (o) {
		o.style.display = 'none';
	}	
	td.style.backgroundColor = '#EAEFF2';
}

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		} while (obj = obj.offsetParent);
	}
	return [curleft,curtop];
}
