function openWindow(url) {
  var w = window.open(url,"popup","width=800,height=550,left=20,top=20,location=no,status=no,toolbar=no,resizable=yes,scrollbars=yes,menubar=yes");
  w.focus();
}


function openPrintWindow(url) {
  w = window.open(url,"popup","width=1000,height=650,left=20,top=20,location=no,status=no,toolbar=no,resizable=yes,scrollbars=yes,menubar=yes");
  w.focus();
}


function daIPE_getObjAttrs(obj) {
    // returnt string mit attribut : value fuer alle Attribute in obj, \n seperated
    var result = "";
    for (attr in obj) {
		try {
		    var val = obj[attr];
		}
		catch (e) {
		    val = "couldn't be read";
		}
		result += attr + " : " + val + "<br>";
    }
    return result;
}

function daIPE_showObjAttrs(obj) {
    daIPE_makeTextareaWindow(daIPE_getObjAttrs(obj));
}

function daIPE_makeTextareaWindow(text) {
    w = window.open();
	w.document.writeln('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">');
	w.document.writeln('<html>');
	w.document.writeln('<head>');
	w.document.writeln('<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">');
	w.document.writeln('</head>');
    w.document.write("<body>")
    w.document.write(text);
    return w;
}

function getValue(selobj) {
    // nur fuer selects gedacht

    var result = new Object();
    var debug = "";
    my_heart:
    for (var i=0; i<selobj.length; i++) {
	if ((selobj.options[i].selected) || (selobj.options[i].selected == "true")) {
	    result.text = selobj.options[i].text;
	    result.id = i;
	    break my_heart;
	}
    }
    result.integer = parseInt(result.text);
    if (isNaN(result.integer)) {
	result.integer = false;
    }
    return result;
}
function setSelectValue(selobj, value) {
    // nur fuer selects gedacht
    for (i=0; i<selobj.length; i++) {
		if (selobj.options[i].value == value){
			selobj.options[i].selected = true;
		    break;
		}
    }
}

function getRadioValue(obj) {
    var result = "";
    for (var i=0; i<obj.length; i++) {
	if (obj[i].checked) {
	    result = obj[i].value;
	}
    }
    return result;
}

function getValueString(obj) {
    var ourtype = obj.type;
    if (ourtype == undefined) {
	ourtype = obj[0].type;
    }
    var result = "";
    switch (ourtype) {
    case "radio":
	result = getRadioValue(obj);
	break;
    case "checkbox":
	if (obj.checked) {
	    result = obj.value;
	}
	break;
    case "text":
	result = obj.value;
	break;
    case "select":
	result = getValue(obj);

    }
    return result;

}

function ebi(id) {
    return document.getElementById(id);
}
function compareDates() {
    // return:  false bei Fehler (nur enddatum, inkorrektes datum, unvollstaendiges datum)
    //          1 wenn gar nix eingegeben
    //          2 wenn Datum da und okay

	var fd = getValue(ebi("fromDay")).integer;
	var fm = getValue(ebi("fromMonth")).integer;
	var fy = getValue(ebi("fromYear")).integer;

	var td = getValue(ebi("toDay")).integer;
	var tm = getValue(ebi("toMonth")).integer;
	var ty = getValue(ebi("toYear")).integer;

	if (!(fd || fm || fy || td || tm || ty)) {
		return 1;
	}
	if (!(fd && fm && fy) && (fd || fm || fy)) {
		alert("Startdatum unvollständig!");
		return false;
	}
	if (!(td && tm && ty) && (td || tm || ty)) {
		alert("Enddatum unvollständig!");
		return false;
	}
	if ((fd && fm && fy) && !(td || tm || ty)) {
		// nur erstes Datum eingetragen, setze zweites Datum auf dummy Werte und fahre fort.
		td = 1;
		tm = 1;
		ty = 9999;
	}
	if ((td && tm && ty) && !(fd || fm || fy)) {
		// zweites Datum vollstaendig eingetragen, kein erstes Datum eingetragen => setze Startdatum=heute
		dummy = new Date();
		fd = dummy.getDate();
		fm = 1 + dummy.getMonth();
		fy = 1900 + dummy.getYear();
		setSelectValue(ebi("fromDay"), fd);
		setSelectValue(ebi("fromMonth"), fm);
		setSelectValue(ebi("fromYear"), fy);		
	}
	// months are zerobased in js
	fm--;
	tm--;
	from = new Date (fy, fm, fd);
	to = new Date (ty, tm, td);

	if ((parseInt(from.getMonth()) != fm) || (parseInt(from.getFullYear()) != fy)) {
		alert("Startdatum ist ung&uuml;ltig.");
		return false;
	}
	if ((to.getMonth() != tm) || (to.getFullYear() != ty)) {
		alert("Enddatum ist ung&uuml;ltig.");
		return false;
	}
	if (to >= from) {
		return 2;
	} else {
		alert("Das Startdatum muss vor dem Enddatum liegen");
		return false;
	}
}

function doIT(landkreis) {
obj = document.getElementById('landkreis');
  for (var i = 0; i < obj.options.length; i++){
    if (obj.options[i].value == landkreis) {
      obj.options[i].selected = true;
    }
  }
}

function searchboxCheck(me) {
	if (me.value == "-- bitte eingeben --")
		me.value = "";
}

function searchboxBlur(me) {
	if (me.value == "")
		me.value = "-- bitte eingeben --";
}

function placeboxCheck(me) {
	if (me.value == "-- an allen Orten suchen --")
		me.value = "";
}

function placeboxBlur(me) {
	if (me.value == "")
		me.value = "-- an allen Orten suchen --";
}

var allchecked = false;

function checkAll() {
    if (!allchecked)
		newcheck = true;
    else
		newcheck = false;
    allchecked = newcheck;
    f = document.getElementById("unsereForm");
    for (i = 0; i < f.elements.length; i++) {
		e = f.elements[i];
		if (e.className == "mycheckbox") {
		    e.checked = newcheck;
		}
    }
}



function checkSanity() {
    var x = true;
    var in1 = document.getElementById("suchbegriff");
    var schlagwort = (in1.value != "-- bitte eingeben --");
    var datum = compareDates();
    var loc = document.getElementById("suchort");
    var place = (loc.value != "-- an allen Orten suchen --");
    
    var legal = document.getElementsByName("legalClass");
    var bLegal = false;
    for (var i = 0; i<legal.length; i++) { // at least one checkbox checked?
    	var l = legal[i];
    	bLegal = bLegal || l.checked;
    }
    
    if (!datum) {
	// falls ein ungueltiges Datum eingegeben ist, gehen wir gar nicht erst weiter
         return false;
    }
    /*
    if (!(schlagwort||place)){
    	// Datum verwendet ==> Suchbegriff oder Ort ist Pflicht
    	if (datum>1) {
      		alert ("Bitte Suchbegriff eingeben!");
      		return false;
      	}
      	in1.value = "";
     	 //schlagwort = true;
    } 
    else*/
    if(schlagwort||place) {
    	var query = in1.value;
    	if (query.match(/\*/) && query.match(/[^\s]\s+[^\s]/)) {
    		alert("Der Joker * darf nicht mit anderen Operatoren verknüpft werden!");
    		return false;
    	}
    }
    datum--; // das macht datum zu einem feld == false falls keins da ist und == true falls ein gueltiges da is
    var e = ebi("filter1");
    
    
    var onefilter = false;
    var f11 = ebi("filter11") && ebi("filter11").value != "-1"? true:false;
    var f10 = ebi("filter10") && ebi("filter10").value != "-1"? true:false;
    var f14 = ebi("filter14") && ebi("filter14").value != "-1"? true:false;
    var f9 = ebi("filter9") && ebi("filter9").value != "-1"? true:false;
    var f4 = ebi("filter4") && ebi("filter4").value != "-1"? true:false;
    
    if (f11 || f10||f9 || f4 || f14) {
    	onefilter = true;
    }
    
    if (!e && !onefilter) {
		// filter1 existiert nicht, wir sind in der einfachen
		// suche, return schlagwort || datum (mindestens eins muss da sein)
		if (datum || schlagwort || place || bLegal) {
		} 
		else {
			// not e, neither datum nor schlagwort - wir sind in einfach, nichts is eingegeben
        	alert("Bitte geben Sie zumindest ein Suchkriterium ein!");
	        return false;
       }
    }
    
    if (ebi("kosten")) {
	if (isNaN(ebi("kosten").value)) {
	    alert("Bitte geben Sie eine Zahl im Feld 'Maximale Kosten' ein!");
	    x = false;
             return x;
	}
    }
    
    var i = 2;
    var newe = "filter1";
    the_law:
    while (e) {
	if (getValue(e).id > 0) {
	    onefilter = true;
	    break the_law;
	}
	newe = "filter" + i;
	e = ebi(newe);
	i++;
    }
    if (!onefilter && ebi("landkreis")) {
	onefilter = (getValue(ebi("landkreis")).id>0);
    }
    if (!onefilter && ebi("kosten")) {
	onefilter = (ebi("kosten").value != 0 );
    }
    if (schlagwort || datum || onefilter || place || bLegal) {
    }
    else {
     alert("Bitte geben Sie zumindest ein Suchkriterium ein!");
     x = false;
     return x;
    }
    return x;
}

/* Event: user changed a search result checkbox.
*/
function changeSelection(checkbox) {
    var myForm = checkbox.form;
    var numChecked = myForm.numChecked;
	if (checkbox.checked) {
		// checkbox activated
		numChecked.value = numChecked.value + "1";
		var count = 1;
		var courseElements = myForm.getElementsByTagName("crs_id");
		for (var i = 0; i < courseElements.length; i++) {
			var e = courseElements[i];
			if (e.className == "mycheckbox") {
				count = count + 1;
			}
		}
		if (count == numChecked.value.length) {
			// all courses have been selected ==> activate also the two "select all" check boxes
			myForm.allbox.checked = true;
			myForm.allbox2.checked = true;
		}
	} else {
		// checkbox deactivated
		numChecked.value = numChecked.value.substr(0, numChecked.value.length - 1);
		// deactivate also the two "select all" check boxes
		myForm.allbox.checked = false;
		myForm.allbox2.checked = false;
	}
}

/* A course has been selected for displaying the course details.
*/
function selectCourse(form, id) {
	var courseElements = form.getElementsByTagName("input");
	for (var i = 0; i < courseElements.length; i++) {
		var e = courseElements[i];
		if (e.className == "mycheckbox" && e.value == id) {
			if (!e.checked)
				e.click();
			form.operation.value="detailView";
			form.target="popup";
			form.submit();
		}
	}
}

/* A course has been marked for displaying the course details.
*/
function markCourse(form, id) {
	var courseElements = form.getElementsByTagName("input");
	for (var i = 0; i < courseElements.length; i++) {
		var e = courseElements[i];
		if (e.className == "mycheckbox" && e.value == id) {
			if (!e.checked)
				e.click();
		}
	}
}