﻿dode.bib = {
	suchbox : function () {
		var objHomeSuchbox = document.getElementById("suchbox"); // form id
		var objHomeHidden = document.getElementById("suchEingabe");// fieldset
		var objSuchfeld = document.getElementById("query_bib");// suchschlitz
		var objSuchButton = document.getElementById("suchButton");
		var objFieldsetRadioId = "suchAuswahl";
		var objFieldsetRadioClass = "radioButtons";
		var nameRadioButtons = "suchZiel";
		var isRadioChecked = false;
		var isSearchCleared = false;
		var objectPreSelected = null;
		var textSuchfeld = "Bibliothek Suche";
		var isIE = false;
		if (navigator.appName === "Microsoft Internet Explorer") { isIE = true;	}

		if (!objHomeSuchbox || !objHomeHidden || !objSuchfeld || !objSuchButton) {
			return false;
		}
		/*
		* Suchbutton -> Radio-Button
		*  id, value, text, action, method, target, suchfeldName, hidden[]
		*  hidden -> name, value
		*/
		radioSearch = {};
		// Objektname muss identisch mit ID-Name sein! Spart Arbeit ;-)
		//radioSearch.radio1 = {"id":"radio1","value":"Unser Katalog","text":"Katalogsuche","action":"http://katalog.dortmund.de:8080/webpac-bin/wgbroker.exe","target":"_blank","suchfeldName":"INPUT","hidden":{}};

		radioSearch.radio1 = {"id":"radio1","value":"Katalogsuche","text":"Katalogsuche","action":"http://katalog.dortmund.de:8080/webpac-bin/wgbroker.exe?+new+-access+top.do_intern_ger+search+open+GK+{INPUT}","method":"POST","target":"_blank","suchfeldName":"INPUT","hidden":{}};

		radioSearch.radio2 = {"id":"radio2","value":"DigiBib-Literatursuchmaschine","text":"DigiBib-Literatursuche","action":"http://www.digibib.net/opensearch","method":"GET","target":"_blank","suchfeldName":"QUERY_alAL","hidden":{}};
		radioSearch.radio2.hidden.data1 = {"name":"LOCATION","value":"060"};
		radioSearch.radio2.hidden.data2 = {"name":"S.SEARCH_SBDO","value":"on"};
		radioSearch.radio2.hidden.data3 = {"name":"S.SEARCH_HBZ","value":"on"};
		radioSearch.radio2.hidden.data4 = {"name":"S.SEARCH_FISB","value":"on"};
		radioSearch.radio2.hidden.data5 = {"name":"DP_S.SEARCH_BASE","value":"on"};

		
		radioSearch.radio3 = {"id":"radio3","value":"Munzinger-Lexikonsuche","text":"Lexikonsuche","action":"http://www.munzinger.de/search/katalog/query-simple","method":"POST","target":"_blank","suchfeldName":"stichwort","hidden":{}};
		radioSearch.radio3.hidden.data1 = {"name":"portalid","value":"56094"};

		objectPreSelected = radioSearch.radio1;
		
		var submitForm = function () {
			if (!isRadioChecked) {
				var out = "";
				for (var i in radioSearch) {
					out += "\n"+radioSearch[i].text;
				}
				alert("Wählen Sie bitte eine Suche aus: "+out);
				return false;
			}
			if (objSuchfeld.value && objSuchfeld.value.match(/^\s+$/) == null && isSearchCleared) {
				if (document.getElementById("query_bib").name === "INPUT") {
					var suchstring = escape(document.getElementById("query_bib").value);
					var indexSuchstring = document.getElementById("suchbox").action.lastIndexOf("{INPUT}");
					var actionPre = document.getElementById("suchbox").action.substring(0,indexSuchstring);
					document.getElementById("suchbox").action = document.getElementById("suchbox").action.replace(/{INPUT}/,suchstring);
					document.suchbox.submit();
					// Action zurücksetzen!
					document.getElementById("suchbox").action = actionPre+"{INPUT}";
				} else {
					document.suchbox.submit();
				}
			} else {
				objSuchfeld.value = "Bitte einen Suchbegriff angeben!";
				isSearchCleared = false;
			}
			return true;
		}

		var eventSubmit = function (e) {
			dode.newevent.preventDefaultEvent(e);
			submitForm();
			return true;
		};
		
		var filterType = function (obj,text) {
			if (obj.type && obj.type === text) { return obj; }
			return false;
		};
		
		var setInputHidden = function (objName) {
			var	hiddenFieldList = dode.util.runOnNodes(objHomeHidden,filterType,"hidden");
			for (var ii = 0; ii < hiddenFieldList.length; ii++) {
				var node = hiddenFieldList[ii].parentNode;
				node.removeChild(hiddenFieldList[ii]);
			}
			for (var item in radioSearch[objName].hidden) {
				var newHidden = dode.util.makeNewHtmlElement ("input","type=\"hidden\" name=\""+radioSearch[objName].hidden[item].name+"\" value=\""+radioSearch[objName].hidden[item].value+"\"");
				objHomeHidden.appendChild(newHidden);
				newHidden = null;
			}
			return true;
		};
		
		var setFormValue = function (dataId) {
			objSuchfeld.name = radioSearch[dataId].suchfeldName;
			objHomeSuchbox.action = radioSearch[dataId].action;
			objHomeSuchbox.target = radioSearch[dataId].target;
			objHomeSuchbox.method = radioSearch[dataId].method;
			if (radioSearch[dataId].target === "") { objHomeSuchbox.target = "_self"; }
			setInputHidden(dataId);
			isRadioChecked = true;
			return true;
		}
		
		var eventFocus = function (e) {
			if (!isSearchCleared) {
				this.value = "";
				isSearchCleared = true;
			}
		};
		
		var eventChange = function (e) {
			var eventTarget = dode.newevent.getEventTarget(e);
			setFormValue(eventTarget.id);
			return true;
		};
		
		var eventEnter = function (e) {
			var code = 0;
			if (e.keyCode) { code = e.keyCode; }
			else if (e.which) { code = e.which; }
			if (code === 13) { dode.newevent.preventDefaultEvent(e); submitForm(); }
			return true;
		};
		
		var buildRadioButtons = function () {
			var fieldset = dode.util.makeNewHtmlElement ("fieldset","class=\""+objFieldsetRadioClass+"\" id=\""+objFieldsetRadioId+"\" ");
			for (var item in radioSearch) {
				var labelElement = dode.util.makeNewHtmlElement("label","");
				var isPreSelected = "";
				if (radioSearch[item] === objectPreSelected) {
					isPreSelected = "checked=\"checked\"";
					isRadioChecked = true;
				}
				var radioAttributes = "id=\""+radioSearch[item].id+"\" type=\"radio\" "+isPreSelected+" name=\""+nameRadioButtons+"\" value=\""+radioSearch[item].value+"\"";
				var newRadio = dode.util.makeNewHtmlElement ("input",radioAttributes);
				labelElement.appendChild(newRadio);
				labelElement.appendChild(document.createTextNode(radioSearch[item].text));
				fieldset.appendChild(labelElement);
				dode.newevent.addEvent(newRadio,"change",eventChange);
				labelElement = null;
				newRadio = null;
			}
			objHomeSuchbox.insertBefore(fieldset,objSuchButton);
			dode.newevent.addEvent(objSuchButton,"click",eventSubmit);
			dode.newevent.addEvent(objSuchfeld,"focus",eventFocus);
			if (isIE) { dode.newevent.addEvent(objSuchfeld,"keypress",eventEnter); }
			fieldset = null;
			// document.getElementById("labelSuchbegriff").firstChild.replaceData(0,document.getElementById("labelSuchbegriff").firstChild.nodeValue.length,textSuchfeld);
			if (objectPreSelected) {
				setFormValue(objectPreSelected.id);
			}
		} ();
	}

};
dode.domLoad.registerOnLoad(dode.bib.suchbox);
