// JavaScript Document (Refer to docsearch.js for commenting of this file, as they are similar in function)

function enableBtn(btn) {
	document.placesearch.elements[btn].disabled = false;
}
function disableBtn(btn) {
	document.placesearch.elements[btn].disabled = true;
}
function getFormName() {
	return "placesearch";
}

function resetForm() {
	var frm = document.placesearch;
	
	frm.placetypes_str.value = "";
	frm.topics_str.value = "";
	frm.keywords.value = "";
	frm.kwlist.value = "";
	
	reloadDiv_kw();
	reloadDiv('topics');
	reloadDiv_type('placetypes');
	reloadDiv_type('peoplelink');
}

function isBlank() {
	var frm = document.placesearch;
	
	if (frm.topics_str.value.length > 0) return false;
	if (frm.placetypes_str.value.length > 0) return false;
	if (frm.peoplelink_str.value.length > 0) return false;
	if (frm.keywords.value.length > 0) return false;
	if (frm.kwlist.value.length > 0) return false;
	
	return true;
}

function isNumeric(str) {
	var validchars = "0123456789";
	
	for (var i = 0; i < str.length; i++) {
		if (validchars.indexOf(str.charAt(i)) == -1)
			return false;
	}
	
	return true;
}

function submitForm() {
	var frm = document.placesearch;
	
	if (isBlank()) {
		window.alert("Form is empty!");
		return false;
	}
	
	if (frm.keywords.length != 0) {
		addKW();
	}
	
	frm.is_search.value = "1";
	
	return true;
}


function findKey(src, k) {
	var expr = new RegExp(k + ":","ig");
	var elem = document.placesearch.elements[src];
	if (elem.value.match(expr)) {
		return true;
	}
	return false;
}

function addKey(type) {
	var sel = document.placesearch.elements[type];
	var k = sel.options[sel.selectedIndex].value;
	var k_str = sel.options[sel.selectedIndex].text;
	
	if (findKey(type + "_str", k_str))
		window.alert("Item already selected.");
	else if (k == -1)
		;
	else {
		// add the text to the hidden fields
		document.placesearch.elements[type + "_ids"].value += k + ",";
		document.placesearch.elements[type + "_str"].value += k_str + ":";
		// add a record entry
		reloadDiv(type);
	}
	document.placesearch.keywords.focus();
}

function addKW() {
	var txt = document.placesearch.keywords.value;
	var type = document.placesearch.noteslist.value;
	
	txt = txt.replace( /[\"`\.,;!#|\$\/:\?\(\)\[\]_\-\\]/g, '');
	
	if (txt.length == 0) {
		return;
	}
	
	document.placesearch.kwlist.value += type + ":" + txt + "|";
	document.placesearch.keywords.value = "";
	reloadDiv_kw();
	document.placesearch.keywords.focus();
}

function addType(type) {
	var txt = document.placesearch.elements[type].value;
	
	if (findKey(type + "_str", txt))
		window.alert("Item already selected.");
	else if (txt == -1)
		;
	else {
		// add the text to the hidden fields
		document.placesearch.elements[type + "_str"].value += txt + ":";
		// add entry to div
		reloadDiv_type(type);
	}
	document.placesearch.keywords.focus();
}

function remType(type, k) {
	var elem = document.placesearch.elements[type + "_str"];
	elem.value = elem.value.replace(k + ":", "");
	reloadDiv_type(type);
	document.placesearch.keywords.focus();
}

function remKey(type, k) {
	var elem = document.placesearch.elements[type + "_ids"];
	elem.value = elem.value.replace(k + ",", "");
	reloadDiv(type);
	document.placesearch.keywords.focus();
}

function remKW(txt) {
	var elem = document.placesearch.kwlist;
	elem.value = elem.value.replace(txt.replace("``", "'") + "|", "");
	reloadDiv_kw();
	document.placesearch.keywords.focus();
}

function reloadDiv_kw() {
	var divname="kw_div";
	var divLayer = document.getElementById(divname);
	var frm = document.placesearch;
	var str = frm.kwlist.value;
	
	if (str.length == 0) {
		divLayer.innerHTML = "";
		return;
	}
	var idArray = str.substr(0, str.length).split('|');
	
	var txtcolor = "#ffffff";
	
	var blank = true;
	divLayer.innerHTML = "";
	for (var i = 0; i < idArray.length; i++) {
		if (i == 0) {
			blank = false;
			divLayer.innerHTML = "<br/><font class=\"divTitle\">All of:</font><span align=\"right\"><ul>";
		}
		
		var delim;
		if (idArray[i].indexOf(':') > 0)
			delim = ":";
		else if (idArray[i].indexOf(';') > 0)
			delim = ";";
		else if (idArray[i].indexOf('!') > 0)
			delim = "!";
		
		if (!idArray[i].length)
			continue;
		
		var txtTypeArray = idArray[i].split(delim);
		var txtType;
		if (txtTypeArray[0] == 1)
			txtType = "All Relevant Text";
		else if (txtTypeArray[0] == 2)
			txtType = "Place Name";
		else if (txtTypeArray[0] == 3)
			txtType = "Parent Name";
		else if (txtTypeArray[0] == 4)
			txtType = "Place Notes";
		
		divLayer.innerHTML += "<li class=\"divRem\"><font class=\"divItem\">" + txtTypeArray[1] + " (in " + txtType + ")</font>&nbsp;" +
								"<a class=\"remove\" href=\"javascript:remKW('" + idArray[i].replace(/\'/g, "\\\'") + "');\">(remove)</a>";
	}
	if (!blank)
		divLayer.innerHTML += "</ul></span>";
	
}

function reloadDiv_type(type) {
	var divname = type + "_div";
	var idlist = type + "_str";
	var divLayer = document.getElementById(divname);
	var frm = document.placesearch;
	var str = frm.elements[idlist].value;
	var txtcolor = "";
	
	if (str.length == 0) {
		divLayer.innerHTML = "";
		return;
	}
	var idArray = str.substr(0, str.length - 1).split(':');
	
	txtcolor = "#7b5223";
			
	var blank = true;
	divLayer.innerHTML = "";
	for (var i = 0; i < idArray.length; i++) {
		if (i == 0) {
			blank = false;
			divLayer.innerHTML = "<br/><font class=\"divTitle\">Any of:</font>";
			divLayer.innerHTML += "<span align=\"right\"><ul>";
		}
		divLayer.innerHTML += "<li class=\"divRem\"><font class=\"divItem\">" + idArray[i] + "</font>&nbsp;" +
								"(<a class=\"remove\" href=\"javascript:remType('" + type + "','" + 
								idArray[i].replace(/\'/g, "\\\'") + "');\">remove</a>)";
	}
	
	if (!blank) {
		divLayer.innerHTML += "</span></ul>";
	}
	
	
}

function reloadDiv(type) {
	var divname = type + "_div";
	var idlist = type + "_ids";
	var divLayer = document.getElementById(divname);
	var frm = document.placesearch;
	var str = frm.elements[idlist].value;
	var txtcolor = "";
	
	if (str.length == 0) {
		divLayer.innerHTML = "";
		return;
	}
	var idArray = str.substr(0, str.length - 1).split(',');
	
	if (type == "topics")
		txtcolor = "#7b5223";
			
	var blank = true;
	divLayer.innerHTML = "";
	for (var i = 0; i < idArray.length; i++) {
		if (i == 0) {
			blank = false;
			divLayer.innerHTML = "<br/><font class=\"divTitle\">All of:</font><span align=\"right\"><ul>";
		}
		divLayer.innerHTML += "<li class=\"divRem\"><font class=\"divItem\">" + getTextforID(type, idArray[i]) + "</font>&nbsp;" +
								"(<a class=\"remove\" href=\"javascript:remKey('" + type + 
			"', " + idArray[i] + ");\">remove</a>)";
	}
	if (!blank)
		divLayer.innerHTML += "</ul></span>";
}

function getTextforID(type, id) {
	var sel = document.placesearch.elements[type];
	for (var i = 0; i < sel.options.length; i++) {
		if (id == sel[i].value)
			return sel[i].text;
	}
	return "text not found";
}