// JavaScript Document (Refer to docsearch.js for commenting of this file, as they are similar in function)
function dateType() {
	var frm = document.volsearch;
	var sel = frm.daterangeselect.value;
	
	if (sel == 3){
		document.getElementById("toFields").style.display = "block";
		frm.fromyear.disabled = false;
		frm.frommnth.disabled = false;
		frm.fromday.disabled = false;
	}else if (sel == 0 || sel == 1 || sel == 2 || sel == 4) {
		if (sel == 0) {
			frm.fromyear.disabled = true;
			frm.frommnth.disabled = true;
			frm.fromday.disabled = true;
		}else {
			frm.fromyear.disabled = false;
			frm.frommnth.disabled = false;
			frm.fromday.disabled = false;
		}
		frm.toyear.value = "yyyy";
		frm.tomnth.value = "0";
		frm.today.value = "dd";
		document.getElementById("toFields").style.display = "none";
	}
}

function mdpType() {
	var frm = document.volsearch;
	var sel = frm.mdpselect.value;
	var layer = document.getElementById("mdprange");
	
	if (sel == 1) {
		layer.style.display = "none";
		frm.mdp2.value = "";
	}else {
		layer.style.display = "inline";
	}
	
}

function enableBtn(btn) {
	document.volsearch.elements[btn].disabled = false;
}
function disableBtn(btn) {
	document.volsearch.elements[btn].disabled = true;
}
function getFormName() {
	return "volsearch";
}

function resetForm() {
	var frm = document.volsearch;
	
	frm.mdp.value = "";
	frm.mdp2.value = "";
	frm.daterangeselect.value = "0";
	frm.fromyear.value = "yyyy";
	frm.frommnth.value = "0";
	frm.fromday.value = "dd";
	frm.keywords.value = "";
	frm.kwlist.value = "";
	
	reloadDiv_kw();
}

function isBlank() {
	var frm = document.volsearch;
	
	if (frm.mdp.value.length > 0) return false;
	if (frm.mdp2.value.length > 0) return false;
	if (frm.fromyear.value.length > 0 && frm.fromyear.value != "yyyy" && frm.daterangeselect.value != 0) return false;
	if (frm.daterangeselect.value == 4 && 
		(frm.fromyear.value != "yyyy" || frm.frommnth.value != 0 || frm.fromday.value != "dd")) return false;
	if (frm.toyear.value.length > 0 && frm.toyear.value != "yyyy") 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 yearFormat(yr, mnth, dy) {
	
	if (yr.length != 4)
		return false;
	
	if (yr == "yyyy" && (mnth != 0 || dy != "dd"))
		return false;
	
	if (yr != "yyyy" && !isNumeric(yr))
		return false;
	
	if (dy.length != 0 && dy != "dd" && !isNumeric(dy))
		return false;
	
	if (dy > 31)
		return false;
	
	if (dy.length != 0 && dy != "dd" && mnth == "0")
		return false;
	
	if (dy != "dd" && dy > 29 && mnth == "02")
		return false;
	
	if (dy != "dd" && dy > 30 && (mnth == "04" || mnth == "06" || mnth == "09" || mnth == "11"))
		return false;
	
	return true;
	
}

function submitForm() {
	var frm = document.volsearch;
	
	if (isBlank()) {
		window.alert("Form is empty!");
		return false;
	}
	
	// perform validation on date
	if (frm.fromyear.value.length != 0) {
		if (!yearFormat(frm.fromyear.value, frm.frommnth.value, frm.fromday.value) && frm.daterangeselect.value != "4") {
			window.alert("From date not valid!");
			return false;
		}
		if (frm.daterangeselect.value == "3") {
			if (!yearFormat(frm.toyear.value, frm.tomnth.value, frm.today.value)) {
				window.alert("To date not valid!");
				return false;
			}
			
			if (frm.fromyear.value + 0 > frm.toyear.value + 0) {
				window.alert("From date must occur before To date!");
				return false;
			}
			
		}
	}
	
	// mdp and mdp2 must both be numeric, and mdp cannot be empty if mdp2 is unempty
	if (frm.mdp.value != "") {
		if(frm.mdpselect.value == 2) {
			if (frm.mdp2.value.length == 0) {
				window.alert("You must enter an upper limit for volume number.");
				return false;
			}
		}
	}else {
		if (frm.mdp2.value.length > 0) {
			window.alert("You must enter a lower limit for volume number.");
			return false;
		}
	}
	
	if (frm.keywords.length != 0) {
		addKW();
	}
	
	frm.is_search.value = "1";
	
	return true;
}

function addKW() {
	var txt = document.volsearch.keywords.value;
	var type = document.volsearch.noteslist.value;
	
	txt = txt.replace( /[\"`\.,;!#|\$\/:\?\(\)\[\]_\-\\]/g, '');
	
	if (txt.length == 0) {
		return;
	}
	
	document.volsearch.kwlist.value += type + ":" + txt + "|";
	document.volsearch.keywords.value = "";
	reloadDiv_kw();
	document.volsearch.keywords.focus();
}

function remKW(txt) {
	var elem = document.volsearch.kwlist;
	elem.value = elem.value.replace(txt.replace("``", "'") + "|", "");
	reloadDiv_kw();
	document.volsearch.keywords.focus();
}

function reloadDiv_kw() {
	var divname="kw_div";
	var divLayer = document.getElementById(divname);
	var frm = document.volsearch;
	var str = frm.kwlist.value;
	
	if (str.length == 0) {
		divLayer.innerHTML = "";
		return;
	}
	var idArray = str.substr(0, str.length - 1).split('|'); // str.length - 1 removes the last '|'
	
	var txtcolor = "#7b5223";
	
	var blank = true;
	divLayer.innerHTML = "";
	for (var i = 0; i < idArray.length; i++) {
		if (i == 0) {
			blank = false;
			divLayer.innerHTML = "<br/>All of:<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 = "Volume Titles and Notes";
		else if (txtTypeArray[0] == 2)
			txtType = "Titles";
		else if (txtTypeArray[0] == 3)
			txtType = "Notes";
		
		divLayer.innerHTML += "<li ><font color=\"" + txtcolor + "\">" + txtTypeArray[1]+ " (in " + txtType + ")</font>&nbsp;" +
								"(<a class=\"remove\" href=\"javascript:remKW('" + idArray[i].replace(/\'/g, "\\\'") + "');\">remove</a>)";
	}
	if (!blank)
		divLayer.innerHTML += "</ul></span>";
	
}
