//
// (c) 2000-2002 JAWA Management Software GmbH
//
// $Id: itk_js.js 2383 2007-11-09 08:52:18Z mpetelin $
//

var itk_browser_rueckgabewerte = new Array;
var itk_browser_rueckgabe;

var itk_formelement_ref = null;
var itk_zoom_fenster = null;

var itk_formelemente_refs = new Array;
var itk_rueckgabewerte = new Array;
var itk_fenster = null;

var itk_calendars = new Array;

function itk_calendar(formname, formelemname, image) {
	elem = document.forms[formname].elements[formelemname];
	itk_calendars[itk_calendars.length] = new dynCalendar('itk_calendars[' + itk_calendars.length + ']', 'setDateFromCalendar', elem, image);
}

function itk_browser_rueckgabe_ermitteln(form_id, sep) {
    var werte;

    if (itk_browser_rueckgabe) {
        for (z=2; z < arguments.length; z++) {
            werte = '';
            if (typeof(itk_browser_rueckgabe) == 'object') {
            
                for (x=0; x < itk_browser_rueckgabe.length; x++) {
                    if (itk_browser_rueckgabe[x]) {
                        elemname = arguments[z] + '[' + x + ']';        
                        elem = document.forms[form_id].elements[elemname];
                        if (werte) werte = werte + sep;
                        werte = werte + elem.value;
                    }
                }
                
            } else {
                elemname = arguments[z] + '[' + itk_browser_rueckgabe + ']';        
                elem = document.forms[form_id].elements[elemname];
                werte = elem.value;
            }
            
            itk_browser_rueckgabewerte[z - 2] = werte;
            
        }
    }
}

function itk_browserfelder_verwerfen(form_id) { 

    for (k = 1; k < arguments.length; k++) {
        elemname = arguments[k];
        if (document.forms[form_id].elements[elemname])
            document.forms[form_id].elements[elemname].value = '';
    }

}

function itk_formelement_by_name(formelem_name) {
    formelem = null;

    for (i=0; i < document.forms.length; i++) {
        form_ref = document.forms[i];

        for (e=0; e < form_ref.elements.length; e++) {
            if(form_ref.elements[e].name == formelem_name) {
                formelem = form_ref.elements[e];
                break;
            }
        }

        if (formelem != null) break;
    }

    return formelem;
}

function itk_form_by_name(form_name) {

    for (i=0; i < document.forms.length; i++) {
        if (document.forms[i].name == form_name) return document.forms[i];
    }

    return null;
}

function itk_zoom_fenster_uebernehmen(formelement_ref) {

    if(itk_formelement_ref) {
        itk_formelement_ref.value = formelement_ref.value;
        res = itk_formelement_ref.name.search(/\[([0-9]+)\]$/);

        if (res != -1) {
            itk_tabelleneingabe_geaendert(itk_formelement_ref.form,RegExp.$1);
        }

        itk_zoom_fenster = null;
    }
}

function itk_tabelleneingabe_geaendert(form_ref, zeile_nr, elemname) {
	if (elemname == null) {
		elemname = 'itk_zeile_nr[]';
	}

    checkbox_ref = form_ref[elemname][zeile_nr];
    if (checkbox_ref == null) {
        checkbox_ref = form_ref[elemname]
    };

    if (checkbox_ref) checkbox_ref.checked = true;
    checkbox_ref = null;
}

function itk_select_leeren(ref_select) {
    anz = ref_select.options.length;

    for(i = 0; i < anz; i++) {
        ref_select.options[0] = null;
    }

}

function itk_select_optionen_setzen(ref_select, optionsliste) {

    for(i = 0; i<optionsliste.length; i++) {
        neue_option = new Option(optionsliste[i]);
        if (arguments[2]) {
			neue_option.label = arguments[2][i];
			neue_option.text = arguments[2][i];
			neue_option.value = optionsliste[i];
		}
        ref_select.options[i] = neue_option;
    }

}

function itk_select_selektionen(ref_select) {
    var selektionen = new Array;
    k = 0;

    for(i=0; i < ref_select.options.length; i++) {
        if(ref_select.options[i].selected) {
			selektionen[k] = ref_select.options[i].value;
            k++;
        }
    }

    return selektionen;
}

function itk_select_selektieren(ref_select, wert) {

    for(i = 0; i < ref_select.options.length; i++) {

        if(ref_select.options[i].value == wert) {
            ref_select.selectedIndex = i;
        }

        if(ref_select.options[i].text == wert) {
            ref_select.selectedIndex = i;
        }

    }

}

//in array arguments can be also argument in order halign, valign, toolbar
function itk_fenster_oeffnen(titel, seite, e, breite, hoehe, resizeable, scrollbars, neu) {
    if (!resizeable) resizeable = "no";
    if (resizeable == "yes") {
        dependent = "no"
    } else {
        dependent = "yes";
    }

    halign = "center";
    valign = "center";
    toolbar = "no";
    status = "no";
    for (k = 7; k < arguments.length; k++) {
        if (k == 7) halign = arguments[k];
        if (k == 8) valign = arguments[k];
        if (k == 9) toolbar = arguments[k];
        if (k == 10) status = arguments[k];
    }
    if (toolbar != "yes") {
        toolbar = "no";
    }

    if (status != "yes") {
        status = "no";
    }

    if (hoehe == 0) {
        hoehe = screen.availHeight-24;
        oben = 0;
    } else if (hoehe < 0) {
        hoehe = screen.availHeight + hoehe;
        oben = Math.round((screen.availHeight - hoehe) / 2);
    } else {

        switch (valign) {
            case "top":
                oben = 0;
                break;
            case "bottom":
                oben = screen.availHeight - hoehe;
                break;
            default:
                oben = Math.round((screen.availHeight - hoehe) / 2 - 30);
				if (oben < 0) oben = 0;
		}

    }
    if (breite == 0) {
       breite = screen.availWidth-12;
       links = 0;
    } else if (breite < 0) {
        breite = screen.availWidth + breite;
        links = Math.round((screen.width - breite) / 2);
     } else {
       switch (halign) {
            case "left":
                links = 12;
                break;
            case "right":
                links = screen.width - breite - 12;
                if (links < 0) links = 0;
                break;
            case "center":
            default:
                 links = Math.round((screen.width - breite) / 2);
      }
    }

    if (!scrollbars) scrollbars = "no";
    var fenster_attr = "resizable=" + resizeable +
                       ",scrollbars=" + scrollbars +
                       ",dependent=" + dependent +
                       ",status=" + status +
                       ",toolbar=" + toolbar +
                       ",menubar=no" +
                       ",left=" + links +
                       ",top=" + oben +
                       ",width=" + breite + ",height=" + hoehe +
                       ",innerWidth=" + breite + ",innerHeight=" + hoehe ;

    z = 0;

    for (k=7; k < arguments.length; k++) {
        itk_formelemente_refs[z] = itk_formelement_by_name(arguments[k]);
        z++;
    }

    if (itk_fenster) 
        if (itk_fenster.closed) {
            itk_fenster = null;
        }

    if (itk_fenster && !neu) itk_fenster.close();

    if (neu) {
        return open(seite, titel, fenster_attr);
    } else {
        itk_fenster = open(seite, titel, fenster_attr);
        return itk_fenster;
    }
}

function itk_zugriffslisten_oeffnen(titel, seite, zeile_nr, e, breite, hoehe, gruppen_acl, rollen_acl) {
    select_form_id = itk_formelement_by_name('objekt_id[' + zeile_nr + ']');
	if (seite.indexOf('?') > 0) {
		link = seite + '&objekt_id=';
	} else {
    	link = seite + '?objekt_id=';
    }
    link = link + select_form_id.options[select_form_id.selectedIndex].value;
    itk_fenster_oeffnen(titel, link, e, breite, hoehe, "no", "no", gruppen_acl, rollen_acl);
}

function itk_fenster_schliessen(rueckgabewerte) {
	
    if(rueckgabewerte != null) {
		
        for(i = 0; i < rueckgabewerte.length; i++) {
			
            if (itk_formelemente_refs[i]) {
                if (arguments[1] == true) {
                    itk_formelemente_refs[i].value = itk_formelemente_refs[i].value + rueckgabewerte[i];
                } else {
                    itk_formelemente_refs[i].value = rueckgabewerte[i];					
                }
                if (itk_formelemente_refs[i].onchange) itk_formelemente_refs[i].onchange();
                res = itk_formelemente_refs[i].name.search(/\[([0-9]+)\]$/);

                if (res != -1) {					
					// workaround für tabelleneingabeformulare in subformularen
					// itk_tabelleneingabe_geaendert(itk_formelemente_refs[i].form,RegExp.$1);
                }

            }

        }

    }

    itk_fenster = null;
}


function itk_fenster_schliessen_hinzufuegen(rueckgabewerte, seperator) {

    if(rueckgabewerte != null) {

        for(i = 0; i < rueckgabewerte.length; i++) {

            if (itk_formelemente_refs[i]) {
				if (seperator != null)
				{
					itk_formelemente_refs[i].value = itk_formelemente_refs[i].value + rueckgabewerte[i] + seperator;
				} else {
	                itk_formelemente_refs[i].value = itk_formelemente_refs[i].value + rueckgabewerte[i];
				}
                if (itk_formelemente_refs[i].onchange) itk_formelemente_refs[i].onchange();
                res = itk_formelemente_refs[i].name.search(/\[([0-9]+)\]$/);
                if (res != -1) {
                    itk_tabelleneingabe_geaendert(itk_formelemente_refs[i].form,RegExp.$1);
                }

            }

        }

    }
    itk_fenster = null;
}



function itk_setze_auswahlcheckboxen(f, checked, anzahl_angezeigt, elemname) {
	if (elemname == null) {
		elemname = 'itk_zeile_nr[]';
	}
    len = f.length;
    a = 1;
    for (i = 0; i < len; i++) if (f.elements[i].name == elemname) {
        if (a > anzahl_angezeigt) return;
        f.elements[i].checked = checked;
        a++;
    }
}

function itk_entzerre_email(obj) {
    maillink = obj.href.replace(/^.+#/, 'mailto:');
    obj.href = maillink.replace(/ at /, '@');
}

function itk_feldfilter(evnt, regex) {
    var theChar="", theRegExp=/[0-9,\010]/, bFound=false;

    if(document.all) {
        evnt=window.event;
        theChar=String.fromCharCode(evnt.keyCode);
        if(!evnt.shiftKey) theChar=theChar.toLowerCase();
        bFound=regex.test(theChar);
        evnt.returnValue=bFound;
    } else if (document.layers) {
        theChar=String.fromCharCode(evnt.which);
        bFound=regex.test(theChar)
    } else {
        theChar = String.fromCharCode(evnt.charCode);
        bFound = (evnt.keyCode!=0) || regex.test(theChar);
        evnt.cancelBubble=!bFound;
    }
    return bFound;
}

function resize_to(x,y) {
    if (y > 0) {
        height = y;
    } else {
        height = screen.availHeight-20;
    }
    if (x > 0) {
        width = x;
    } else {
        width = screen.availWidth;
    }
    window.resizeTo(width, height);
    return true;
}

function move_to(x,y) {
    window.moveTo(x, y);
    return true;
}

function itk_zoom_fenster_anzeigen(formelementname, e, style, bgcolor, img_pfad, links) {
	itk_formelement_ref = itk_formelement_by_name(formelementname);

    if (itk_zoom_fenster && itk_zoom_fenster.closed) {
    	itk_zoom_fenster = null;
    }

    if (!itk_zoom_fenster) {
		itk_zoom_fenster = itk_fenster_oeffnen(_('Zoom'), "", e, 640, 480);
		itk_zoom_fenster.document.open();
		itk_zoom_fenster.document.writeln('<html><head><title>' + _('Zoom') + '</title>');
		if (style) itk_zoom_fenster.document.writeln('<link rel="stylesheet" type="text/css" href="' + style + '">');
		itk_zoom_fenster.document.writeln('</head>');
		itk_zoom_fenster.document.writeln('<body bgcolor="' + bgcolor + '">');
		itk_zoom_fenster.document.writeln('<div align="center">');
		itk_zoom_fenster.document.writeln('<form name="dummy">');
		itk_zoom_fenster.document.writeln('<table><tr><td class="ffldi">');
		itk_zoom_fenster.document.writeln('<textarea name="itk_zoom_text" cols="90" rows="30" wrap="virtual">');
		itk_zoom_fenster.document.writeln(itk_formelement_ref.value);
		itk_zoom_fenster.document.writeln('</textarea>');
		itk_zoom_fenster.document.writeln('</td></tr><tr><td class="flbl">');
		itk_zoom_fenster.document.writeln('<input type="checkbox" name="chk_konvert_cr" value="1">' + _('Zeilenumbruch erhalten'));
		itk_zoom_fenster.document.writeln('</td></tr></table>');
		itk_zoom_fenster.document.writeln('<table width="80%"><tr><td width="40%" align="left">');

    	if (links) {
			itk_zoom_fenster.document.writeln('<a class="aktion" href="" onClick="opener.itk_zoom_fenster_uebernehmen(document.dummy.itk_zoom_text); window.close();return false;"><img src="' + img_pfad + 'aktion_uebernehmen.gif" border="0">' + _('&Uuml;bernehmen') + '</a>');
    	  	itk_zoom_fenster.document.writeln('</td><td width="40%" align="right">');
			itk_zoom_fenster.document.writeln('<a class="aktion" href="" onClick="window.close();return false;"><img src="' + img_pfad + 'aktion_abbrechen.gif" border="0">' + _('Abbrechen') + '</a>');
	    } else {
			itk_zoom_fenster.document.writeln('<input type="submit" name="uebernehmen" value="' + _('&Uuml;bernehmen') + '" onClick="opener.itk_zoom_fenster_uebernehmen(this.form.itk_zoom_text); window.close();return false;">');
      		itk_zoom_fenster.document.writeln('</td><td width="40%" align="right">');
			itk_zoom_fenster.document.writeln('<input type="submit" name="abbrechen" value="' + _('Abbrechen') + '" onClick="window.close();return false;">');
    	}

   		itk_zoom_fenster.document.writeln('</td></tr></table>');
		itk_zoom_fenster.document.writeln('</form>');
		itk_zoom_fenster.document.writeln('</div>');
		itk_zoom_fenster.document.writeln('</body></html>');
		itk_zoom_fenster.document.close();
	} else {
		itk_zoom_fenster.document.forms[0].itk_zoom_text.value = itk_formelement_ref.value;
	}

	itk_zoom_fenster.focus();

	if (itk_zoom_fenster.document.forms[0]) {
		itk_zoom_fenster.document.forms[0].itk_zoom_text.focus();
	}

}

function itk_preview_fenster_oeffnen(content, titel, width, height, e, style, bgcolor, img_pfad, links) {
    if (itk_fenster) if (itk_fenster.closed) {
    	itk_fenster = null;
    }

    if (!itk_fenster) {
		itk_fenster = itk_fenster_oeffnen(titel, "", e, width, height, 1, 1);
		itk_fenster.document.open();
		itk_fenster.document.writeln('<html><head><title>' + titel + '</title>');

		if (style) itk_fenster.document.writeln('<link rel="stylesheet" type="text/css" href="' + style + '">');
		itk_fenster.document.writeln('</head>');
		itk_fenster.document.writeln('<body bgcolor="' + bgcolor + '">');
		itk_fenster.document.writeln('<div align="center">');
		itk_fenster.document.writeln('<form name="dummy">');

		itk_fenster.document.writeln('<table widht="100%"><tr><td>');

		itk_fenster.document.writeln(content);

		itk_fenster.document.writeln('</td></tr></table>');

		itk_fenster.document.writeln('<table align="center"><tr><td>');
    	if(links) {
			itk_fenster.document.writeln('<a class="aktion" href="" onClick="window.close();return false;"><img src="' + img_pfad + 'aktion_abbrechen.gif" border="0">' + _('Abbrechen') + '</a>');
	    } else {
			itk_fenster.document.writeln('<input type="submit" name="abbrechen" value="' + _('Abbrechen') + '" onClick="window.close();return false;">');
    	}

   		itk_fenster.document.writeln('</td></tr></table>');
		itk_fenster.document.writeln('</form>');
		itk_fenster.document.writeln('</div>');
		itk_fenster.document.writeln('</body></html>');
		itk_fenster.document.close();
	}

	itk_fenster.focus();
}

function itk_hilfe_fenster_anzeigen(url, ev) {
	itk_fenster_oeffnen(_('Hilfe'), url, ev, 800, 600, "yes", "yes");
	itk_fenster.focus();
}

function itk_verwische_feld(formelem_ref) {
	var str = '';
	for(i = 0; i < formelem_ref.value.length; i++) str += '*';
	formelem_ref.value = str;
}

function itk_swap_content(form_id, elemname, link, label, label_ein, label_aus, spanid) {
	var elem;
	if (!document.getElementById) return false;
	elem = document.getElementById(spanid);
	if (elem.style.display == 'none') {
		elem.style.display = 'block';
		link.firstChild.nodeValue = label + ' ' + label_ein;
		document.forms[form_id].elements[elemname].value = '1';
	} else {
		elem.style.display = 'none';
		link.firstChild.nodeValue = label + ' ' + label_aus;
		document.forms[form_id].elements[elemname].value = '0';
	}
	return true;
}

function itk_switch_span(obj) {

	if (document.getElementById(obj).style.display == 'block'){
		document.getElementById(obj).style.display = 'none';
	} else {
		document.getElementById(obj).style.display = 'block';
	}

	return false;
}

function itk_char_count(f, maxlength, spanid)
{       
	var input = f.value.length;
                        
	if (input > maxlength) {
		f.value = f.value.substring(0,maxlength-1);
		input = maxlength;
	}

	if (!document.getElementById) {
		return false;
	} else {                        
		document.getElementById(spanid).firstChild.data = '[' + input + '/' + maxlength +']';
	}

}

function itk_feldfilter_replace(formelement, regex, replace) {    
	var text;
	
	text = formelement.value;
	formelement.value = text.replace(regex, replace);
    return true;
}

// dummy Funktion damit der Fehler beim Login nicht kommt.
function itk_md5_challenge()
{
	return true;
}

/**
 * Objekt Ein und Ausblenden von elementen
*/

function Explorer() { 
	this.image_prefix = "collapseimg_";
	this.image_postfix = "_collapsed";
	this.image_type = ".gif";

	this.browser_check = function browser_check()
	{
		if (!document.getElementById) return false;	

		return true;
	}	

	this.itk_explorer = function itk_explorer(form_id, span_id)
	{		
		if (!this.browser_check())
		{
			return false;
		}

		var img = document.getElementById(this.image_prefix + span_id);
		var obj = document.getElementById(span_id);	

		if (obj.tagName == "TBODY" && is_ie == false)
		{
			var diplay_code_block = "table-row-group";
		} else {
			var diplay_code_block = "block";
		}

		if (obj.style.display == "none")
		{

			obj.style.display = diplay_code_block;
			if (img)
			{
				img_re = new RegExp(this.image_postfix + "\\" + this.image_type + "$");
				img.src = img.src.replace(img_re, this.image_type);
			}		
		}
		else
		{
			obj.style.display = "none";
			if (img)
			{
				img_re = new RegExp("\\" + this.image_type + "$");
				img.src = img.src.replace(img_re, this.image_postfix + this.image_type);
			}		
		}

		this.itk_save_explorer(form_id, span_id, obj.style.display);
	}

	this.itk_save_explorer = function itk_save_explorer(form_id, objid, addcollapsed)
	{
		var collapsed = itk_fetch_cookie("itk_" + form_id);		
		var tmp = new Array();
		
		if (collapsed != null)
		{
			collapsed = collapsed.split("\n");
			
			for (i in collapsed)
			{
				if (collapsed[i] != objid && collapsed[i] != "")
				{
					tmp[tmp.length] = collapsed[i];
				}
			}
		}

		if (addcollapsed != 'none')
		{
			tmp[tmp.length] = objid;
		}
			
		this.itk_set_cookie("itk_" + form_id, tmp.join("\n"));
	}
	
	this.itk_fetch_cookie = function itk_fetch_cookie(name)
	{
		var cookie_name = name + "=";
		var cookie_length = document.cookie.length;
		var cookie_begin = 0;
	
	
		while (cookie_begin < cookie_length)
		{
			var value_begin = cookie_begin + cookie_name.length;
	
			if (document.cookie.substring(cookie_begin, value_begin) == cookie_name)
			{
				var value_end = document.cookie.indexOf (";", value_begin);
				if (value_end == -1)
				{
					value_end = cookie_length;
				}
				return unescape(document.cookie.substring(value_begin, value_end));
			}
			cookie_begin = document.cookie.indexOf(" ", cookie_begin) + 1;
			if (cookie_begin == 0)
			{
				break;
			}
		}
		return null;
	}
	
	this.itk_set_cookie = function itk_set_cookie(name, value)
	{	
		document.cookie = name + "=" + escape(value) + "; path=/";
	}
}

var itk_explorer_class = new Explorer();


function enableMenuesIE(classname)
{
		if (classname == null) classname='dropdown';
	
		if (document.all)
		{
		uls = document.getElementsByTagName('UL');
 
		for(i = 0; i < uls.length; i++)
		{
			if (uls[i].className == classname)
			{
				var lis = uls[i].getElementsByTagName('li');
 
				for (j = 0; j < lis.length; j++)
				{
					if(lis[j].lastChild.tagName == 'UL')
					{
						lis[j].onmouseover = function() { 										
							this.lastChild.style.display = 'block'; 
						}
						lis[j].onmouseout = function() { 								
							this.lastChild.style.display = 'none'; 
						}							
					}
				}
			}
		}
	}
}


/**
 * @author mpetelin
 */

var ITK_Container = new Object({

    init: function(cookiename){
        this.cookiename = cookiename;        
		var cookie_daten = this.fetch_cookie();
        var container_liste = document.getElementsByTagName("dir");
       
        for (var index = 0; index < container_liste.length; index++) {
        
            var element = container_liste[index];
            
            for (var i = 0; i < element.childNodes.length; i++) {
                var child = element.childNodes[i];
                var h1;
                if (child.tagName == "H1") {
                    child.className = "close";
                    child.divobj = new Object();
                    this.addEvent(child, 'click', this.onclickevent, false);
                    child.attachevent
                    h1 = child;
                }
                
                if (child.tagName == "DIV") {
                    h1.divobj = child;
					if (this.get_display(child, cookie_daten)) {
						child.className = "container-open";
						h1.className = "open";
					} else {
						child.className = "container-close";
						h1.className = "close";
					}
                    
                }
            }
            
        }
    },
    
    addEvent: function(obj, eventType, funktion, useCaption){
        if (obj.addEventListener) {
            obj.addEventListener(eventType, funktion, useCaption);
            return true;
        }
        else 
            if (obj.attachEvent) {
                var retVal = obj.attachEvent("on" + eventType, funktion);
                return retVal;
            }
            else {
                return false;
            }
    },
    
    
    onclickevent: function(e){
		if (!e) var e = window.event;
		obj = e.srcElement || e.currentTarget;
		
        if (obj.divobj.className == "container-open") {
            obj.divobj.className = "container-close";
            obj.className = "close";
            ITK_Container.save(obj.divobj, false);
        }
        else {
            obj.divobj.className = "container-open";
            obj.className = "open";
            ITK_Container.save(obj.divobj, true);
        }
    },
    
    fetch_cookie: function(){
        var cookie_name = this.cookiename + "=";
        var cookie_length = document.cookie.length;
        var cookie_begin = 0;
        
        
        while (cookie_begin < cookie_length) {
            var value_begin = cookie_begin + cookie_name.length;
            
            if (document.cookie.substring(cookie_begin, value_begin) == cookie_name) {
                var value_end = document.cookie.indexOf(";", value_begin);
                if (value_end == -1) {
                    value_end = cookie_length;
                }
                return unescape(document.cookie.substring(value_begin, value_end)).split("\n");
            }
            cookie_begin = document.cookie.indexOf(" ", cookie_begin) + 1;
            if (cookie_begin == 0) {
                break;
            }
        }
        return new Array();
    },
    
    set_cookie: function(value){
        document.cookie = this.cookiename + "=" + escape(value) + "; path=/";
    },
    
    save: function(objid, display){
        var collapsed = this.fetch_cookie();
        var tmp = new Array();
        
              
        for (i in collapsed) {
            if (collapsed[i] != objid.id && collapsed[i] != "") {
                tmp[tmp.length] = collapsed[i];
            }
        }        
        
        if (display) {
            tmp[tmp.length] = objid.id;
        }
        
        this.set_cookie(tmp.join("\n"));
    },
	
	get_display: function (objid, liste) {
		for (i = 0; i < liste.length; i++) {
			if (objid.id == liste[i]) return true;
		}
		
		return false;
	}
    
    
    
});

