function js_empty_field(formname, fieldname) {

    var formval = eval("document." + formname + "." + fieldname + ".value");
    if (formval != "" && formval.charAt(0) == " ") eval("document." + formname + "." + fieldname + ".value = ''");
    return true;
}

function altercountry(countryelement, form, field) {

    // (1) get the country
    eval ("var idx = document." + form + "." + countryelement + ".options.selectedIndex");
    eval ("var country = document." + form + "." + countryelement + ".options[idx].value");

    // if Lichtenstein, disable the select box
    if (country == "LI") {
        eval("document." + form + "." + field + "disabled = true");
        return
    } else {

        // otherwise, enable it
        eval("document." + form + "." + field + "disabled = false");

    }

    return

}


function alterselectbox(form, field, parent, optionvar, defaultlabel) {

    // delete current entries
    eval ("var nr = document." + form + "." + field + ".length");
    if (nr > 0) {
        for (i = nr-1; i>=0; i--) eval("document." + form + "." + field + ".options[i] = null");
    }


    // initialize some variables
    var j = 0;
    var place = 0;

    // default entry
    newEntry = new Option(defaultlabel,'',true,true);
    eval ("document." + form + "." + field + ".options[0] = newEntry");


    // which items children to display?

    // (1) get the parent
    eval ("var idx = document." + form + "." + parent + ".options.selectedIndex");
    eval ("var the_value = document." + form + "." + parent + ".options[idx].value");

    // (2) children are held in a variable "stateopts<id_of_parent>"
    var the_vals = eval(optionvar + the_value);

    // (3) children are given as a comma-separated list: "rubricid_0,rubricname_0,rubricid_1,rubricname_1, ..."
    the_options = the_vals.split(',,,');

    // any children at all?
    the_length = the_options.length;

    if (the_length > 1) {

        // (4) loop 'em!
        for (i=0; i<the_length; i++) {

            j = i;
            i++;
            place = 1 + (j / 2) ;

            // (4a) new option, not default, not selected
            newEntry = new Option(the_options[i],wong_escape(the_options[j]));
            eval ("document." + form + "." + field + ".options[place] = newEntry");

        }

    }

    return

}


function wong_escape(the_vals) {

    the_vals = the_vals.replace(/&uuml\;/g,"ü");
    the_vals = the_vals.replace(/&auml\;/g,"ä");
    the_vals = the_vals.replace(/&ouml\;/g,"ö");
    return the_vals;

}

function addMsgItemSelectbox(formname,sourcelement,targetelement,textelement) {

    var new_val = eval("document." + formname + "." + sourcelement + ".options[document." + formname + "." + sourcelement + ".selectedIndex].value");
    if (new_val == "") return false;

    var new_val_len = new_val.length;

    var the_values = eval("document." + formname + "." + targetelement + ".value");
    var the_texts = eval("document." + formname + "." + textelement + ".value");
    var the_values_len = the_values.length;
    var extended_new_val = new RegExp(" " + new_val + " ","i"); 

    if (the_values.substring(0,new_val_len) == new_val || the_values.substring(the_values_len - new_val_len, the_values_len) == new_val || the_values.search(extended_new_val) != "-1") return false;

    if (the_values == "") {
	the_values = new_val;
    } else {
	the_values = the_values + " " + new_val;
    }

    if (the_texts == "") {
	the_texts = eval("document." + formname + "." + sourcelement + ".options[document." + formname + "." + sourcelement + ".selectedIndex].text");
    } else {
	the_texts = the_texts + ", " + eval("document." + formname + "." + sourcelement + ".options[document." + formname + "." + sourcelement + ".selectedIndex].text");
    }

    
    eval("document." + formname + "." + targetelement + ".value =  the_values");
    eval("document." + formname + "." + textelement + ".value = the_texts");

    return true;

}


function jsPostQueryResult(myform,url) {

    var l = myform.f_watchlist_item.length;
    var count = 0;

    if (l == undefined) {

	if (myform.f_watchlist_item.checked = true) count++;

    } else {

	while (l > 0) {
	    l--;
	    if (myform.f_watchlist_item[l].checked == true) count++;
	}

    }
    
    //alert(myform.target);
    //if (arguments[2] == "same") myform.target = "";
    //alert(myform.target);

    if (count > 0) {

	myform.action = url;
	myform.submit();

    }
    
    return false;

}




function alterselectboxfromarray(form, field, parent, arrayname, defaultlabel) {

    // delete current entries
    eval ("var nr = document." + form + "." + field + ".length");
    if (nr > 0) {
        for (i = nr-1; i>=0; i--) eval("document." + form + "." + field + ".options[i] = null");
    }


    // initialize some variables
    var j = 0;
    var place = 0;

    // default entry
    newEntry = new Option(defaultlabel,'',true,true);
    eval ("document." + form + "." + field + ".options[0] = newEntry");


    // which items children to display?

    // (1) get the parent

    if (arguments.length == "5") {
	eval ("var idx = document." + form + "." + parent + ".options.selectedIndex");
	eval ("var the_value = document." + form + "." + parent + ".options[idx].value");
    } else {
	var the_value = arguments[5];
    }

    // any children at all?
    the_length = eval(arrayname + the_value + ".length");
    //alert(arrayname + the_value + "Laenge = " + the_length);
    //alert(arguments.length);

    var noption = "";
    //alert(arguments[6] + "     " + arguments[5]);
    if (the_length > 1) {

        // (4) loop 'em!
        for (i=0; i<the_length; i++) {

				      noption =  eval(arrayname + the_value + "[i].split('|')");

				      // (4a) new option, not default, not selected
				      newEntry = new Option(wong_escape(noption[1]),noption[0]);
				      eval ("document." + form + "." + field + ".options[i+1] = newEntry");
				      if (arguments.length == 7 && arguments[6] == noption[0]) {
					  //alert(arguments[6] + " == " + noption[0] + " im Feld " + field);
					  //alert("document." + form + "." + field + ".options " +  i+1 + ".selected = true");				      
					  eval ("document." + form + "." + field + ".options[i+1].selected = true");				      
					  //eval ("alert(document." + form + "." + field + ".options[1].selected)");
					  //alert(field + " = " + noption[1]);
					  //eval ("alert(noption[1] + \" = \" + document." + form + "." + field + ".options[1].selected)");				      
				      }
				  }



    }

    return

}



function jsFormatTextSelection(area, tag) {

  tag = unescape(tag);

  if (window.opera) {
    wrapMoz(area, tag);
  } else if (!(window.opera) && document.all) {
    wrapIE(tag);
  } else if (document.getElementById) {
    wrapMoz(area, tag);
  } else {
      alert('Sie verwenden keinen passenden Browser!');
  }

}

function wrapIE(tag) {
    strSelection = document.selection.createRange().text;
    if (strSelection!="") {
	document.selection.createRange().text = "[" + tag + "]" + strSelection + "[/" + tag + "]";
    }
    return;
}

function wrapMoz(txtarea, tag) {
    var ttt = txtarea.value;
    var selLength = txtarea.textLength;
    var selStart = txtarea.selectionStart;
    var selEnd = txtarea.selectionEnd;
    if (selStart == 'undefined') return;

    if (selEnd==1 || selEnd==2) selEnd=selLength;
    var s1 = ttt.substring(0,selStart);
    var s2 = ttt.substring(selStart, selEnd);
    var s3 = ttt.substring(selEnd, selLength);

    // check for tag already set before selection
    var taglength = tag.length;

    var s1length = s1.length;

    if (s1.substring(s1length - taglength - 2, s1length) == "[" + tag + "]") {
	
	s1 = s1.substring(0,s1length - taglength - 2);

	if (s3.substring(0, taglength + 3) == "[/" + tag + "]") {
	    var s3length = s3.length;
	    s3 = s3.substring(taglength + 3, s3length);
	} else  {
	    var s2length = s2.length;
	    if (s2.substring(s2length - taglength - 3, s2length) == "[/" + tag + "]") s2 = s2.substring(0,s2length - taglength - 3);
	}
	
	txtarea.value = s1 +  s2 + s3;

    } else if (s2.charAt(0) == "[") {
	// tag also selected, starting with bracket?
	s2 = s2.replace(/[[^]]*]/,"");
	s2 = s2.replace(/[\/[^]]*]/,"");
	txtarea.value = s1 + s2 + s3;
    } else {
	txtarea.value = s1 + "[" + tag + "]" + s2 + "[/" + tag + "]" + s3;
    }
    return;
}

function wrapOpera(txtarea, tag) {

    alert('Leider funktioniert die Text-Markierung nicht im Opera-Browser!');
    return;

    var ttt = txtarea.value;
    var selLength = txtarea.textLength;
    var selStart = txtarea.selectionStart;
    var selEnd = txtarea.selectionEnd;

    alert('length: ' + selLength + ' - start: ' + selStart + ' - end: ' + selEnd);

    if (selEnd==1 || selEnd==2) selEnd=selLength;
    var s1 = ttt.substring(0,selStart);
    var s2 = ttt.substring(selStart, selEnd);
    var s3 = ttt.substring(selEnd, selLength);
    txtarea.value = s1 + "[" + tag + "]" + s2 + "[/" + tag + "]" + s3;

    return;

}


function jsChangeImage(imgplace, imgname) {

    if(document.layers) eval("document.layers['" + imgplace + "'].src = " + imgname + ".src;");
    else if(document.images) eval("document.images['" + imgplace + "'].src = " + imgname + ".src;");
    else if((!document.all)&&(document.getElementById)) eval("document.getElementById('" + imgplace + "').src = " + imgname + ".src;");

    return true;

}


function jsChangeCkeckboxSelection(formname, elementname, newval) {

    var l = eval("document." + formname + "." + elementname + ".length");
    if (l == undefined) eval("document." + formname + "." + elementname + ".checked = " + newval);

    while (l > 0) {

	l--;
	eval("document." + formname + "." + elementname + "[" + l + "].checked = " + newval);

    }
    
    return;

}



function jsCheckStringLength(textElement,maxLen,outElement) {

     var strLen = textElement.value.length;
     var charsLeft = 0;

     if (strLen == 1 && textElement.value.substring(0,1) == " ") {
        textElement.value = "";
        StrLen = 0;
     }

     if (strLen > maxLen) {
	 textElement.value = textElement.value.substring(0,3999);
	 charsLeft = 0;
     } else {
	 charsLeft = maxLen - strLen;
     }

     eval('document.getElementById("' + outElement + '").innerHTML = ' + charsLeft);

     return true;
  
}



function changeBoxVisibility (button, boxid) {

    if (button && boxid) {

	if (document.getElementById(boxid).style.display == 'none') {
	    document.getElementById(boxid).style.display = '';
	    button.src = '/openbn/mat/box_ausblenden.gif';
	    ajaxurl = "/ajaxcalls/index.adp?object_id=1&mode=openbn_messagebox&element=" + boxid;
	} else {
	    document.getElementById(boxid).style.display = 'none';
	    button.src = '/openbn/mat/box_einblenden.gif';
	    ajaxurl = "/ajaxcalls/index.adp?object_id=0&mode=openbn_messagebox&element=" + boxid;
	}

	newAjaxRequest();

    }

    return;
}


function ajaxBuildBranchUrl(formname, formelement) {

    var rubric_id = eval("document." + formname + "." + formelement + ".options[document." + formname + "." + formelement + ".selectedIndex].value");

};


function newAjaxRequest() {

    try {

	if( window.XMLHttpRequest ) {
	    req = new XMLHttpRequest();
	} else if( window.ActiveXObject ) {
	    req = new ActiveXObject( "Microsoft.XMLHTTP" );
	} else {
	    alert( "Ihr Browser unterst&uuml;tzt die notwendige Funktionalit&auml;t nicht (AJAX)!" );
	}

	req.open( "GET", ajaxurl, true );
	req.onreadystatechange = ajaxSwitchHTML;
	req.send( null );

    } catch( e ) {

	alert( "Fehler: " + e );

    }

    return true;

}


function ajaxSwitchHTML() {

    if(req.readyState == 4) {

	if( req.status == 200 ) {
	    //newopts = req.responseText;
	} else {
	    //alert( "Fehler! " + req.status + " - " + req.statusText );
	}

    }

    return true;

}
