//
// (c) 2000-2003 Bit Media eLearning Solution Gmbh
//
// $Id: itk_js.js 76306 2008-10-07 12:54:53Z ghuth $
//



var itk_browser_returnvalues = new Array;
var itk_browser_return;

var itk_formelement_ref = null;
var itk_zoom_window = null;

var itk_formelements_refs = new Array;
var itk_window = null;

var sprintf_num_substitutions = null;

function logout_quiet(logout_usr,path){

    stat = window.open(path + "/sitosstatus.php?logout_usr='" + logout_usr + "'&path='" + path + "'","sitosstatus", "width=200, height=1" );
    stat.blur();
    self.focus();
}

function validateDate (strDate) {
    var parsedDate = strDate.split ("-") ;
    if (parsedDate.length != 3) return strDate;

    var day, month, year ;
    year  = parsedDate[0] ;
    month = parsedDate[1] ;
    day   = parsedDate[2] ;

    var objDate = new Date(year, month-1, day);

    year  = objDate.getFullYear() ;
    month = objDate.getMonth() + 1 ;
    day   = objDate.getDate() ;

    strDate = year + '-' + month + '-' + day ;
    return strDate ;
}

function itk_browser_transfer_data(form_id, sep) {
    var werte;

    if (itk_browser_return) {
        for (z=2; z < arguments.length; z++) {
            werte = '';

            if (typeof(itk_browser_return) == 'object') {
                for (x=0; x < itk_browser_return.length; x++) {
                    if (itk_browser_return[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_return + ']';
                elem = document.forms[form_id].elements[elemname];
                werte = elem.value;
            }

            itk_browser_returnvalues[z - 2] = werte;

        }
    }
}


function itk_add_event( obj, type, fn )
{
   if (obj.addEventListener) {
      obj.addEventListener( type, fn, false );
   } else if (obj.attachEvent) {
      obj["e"+type+fn] = fn;
      obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
      obj.attachEvent( "on"+type, obj[type+fn] );
   }
}

function itk_remove_event( obj, type, fn )
{
   if (obj.removeEventListener) {
      obj.removeEventListener( type, fn, false );
   } else if (obj.detachEvent) {
      obj.detachEvent( "on"+type, obj[type+fn] );
      obj[type+fn] = null;
      obj["e"+type+fn] = null;
   }
}

function itk_ccimport(aServer, aRoot, aCallType, aDisposition, aLO_ID, aLO_CODE, aPARENT_ID)
{
	var Application =  window.external.Application;
	var tModule = Application.module;
	var tLocalTempDir = Application.helper.GetTemporaryDirectory();
	var tZIPName = "scorm_zip_"+Math.floor(Math.random()*10000)+".zip";
	var tZIP = tLocalTempDir + tZIPName;
	Application.setOption("export.copyprotection", "0");
	Application.setOption("export.add_course_item", "0");
	var tOK = tModule.FullExport(
		 false /* show user interface */
		,tLocalTempDir + "export" /*path*/
        ,"" /* modulePath */
		,true /* zap (clear directory first) */
		,true /*copy content player */
		,false /* embed design */
		,true /* create index.html */
		,true /* create scorm zip */
		,tZIP
		,true);
	if (!tOK) {
		alert("Das Modul konnte nicht exportiert werden!");
		return;
	} 
	
	var tPostCtrl = Application.GetUploader();
	if (!tPostCtrl.OpenConnectionHTTP(aServer)) {
		alert("Verbindung konnte nicht aufgebaut werden!");
		return;
	}
	
	tPostCtrl.HTTPAddField("is_persistent", "");
	tPostCtrl.HTTPAddField("usergroup_id", "1");
	tPostCtrl.HTTPAddField("description", "Standard");
	tPostCtrl.HTTPAddField("calltype_id", aCallType);
	tPostCtrl.HTTPAddField("lo_id", aLO_ID);
	tPostCtrl.HTTPAddField("lo_code",aLO_CODE);
	tPostCtrl.HTTPAddField("parent_id",aPARENT_ID);
	tPostCtrl.HTTPAddField("language[]", "de");
	tPostCtrl.HTTPAddField("disposition", aDisposition);
	tPostCtrl.HTTPAddField("subdir_name", "cc_" + tModule.modulid + "_" + Math.floor(Math.random()*10000));
	tPostCtrl.HTTPAddField("id_praefix", ""); //"cc_" + tModule.modulid);
	tPostCtrl.HTTPAddField("temporary", "0");
	tPostCtrl.HTTPAddField("zip", "");
	tPostCtrl.HTTPAddField("MAX_FILE_SIZE", "125829120");
	tPostCtrl.HTTPAddField("input_characterset", "utf8");
	tPostCtrl.HTTPAddField("btn_import_it_zip", "btn_import_it_zip");

	tPostCtrl.HTTPAddFile("zip_upload", tZIP);
	var tOK = tPostCtrl.HTTPSend(aRoot + "lms/los_ccimport.php?frm_id=frm_scorm_import&"+document.cookie);

	if(!tOK) {
		alert("Das Modul konnte nicht auf den FTP-Server gespielt werden!");
		return;
	} else {
		var tResult = tPostCtrl.HTTPResult();
		if(tResult.indexOf("ERROR") >0) {
			alert("Es sind Fehler beim Import aufgetreten");
		} else {
			alert("Import erfolgreich");
		}
		/*
		try {
			with(window.open()) {
				document.open();
				document.write(tResult);
				document.close();
			}
		}catch(e) {
			alert("ex:"+e.message);
		}
		*/
	}
	Application.helper.xdel(tLocalTempDir);
	window.external.closeDialog();
}

function itk_get_form_value(form_id, fieldname)
{
	if(typeof(document.forms[form_id])=="undefined") return null;
	var elem = document.forms[form_id].elements[fieldname];
	if(typeof(elem)=="undefined") return null;
	
	if(typeof(elem.length)=="number") {
		for(var i=0;i<elem.length;++i) {
				if(elem[i].checked)
					return elem[i].value;
		}
		return null;
	} 
	return  elem.value;
}

function itk_browser_transfer_exportdata(aJustCheck, aServer, aRoot, aCallType, form_id,fieldnames) {
    var z, werte
		,tDISPOSITION = ""
		,tLO_ID = ""
		,tLO_CODE = ""
		,tPARENT_ID = ""
		;

	tDISPOSITION 	= itk_get_form_value("disposition", fieldnames[0]);
	tLO_ID				= itk_get_form_value(form_id, fieldnames[1]+"["+itk_browser_return+"]");
	tLO_CODE 		= itk_get_form_value(form_id, fieldnames[2]+"["+itk_browser_return+"]");
	tPARENT_ID		= itk_get_form_value(form_id, fieldnames[3]+"["+itk_browser_return+"]");
	
	if(tLO_ID == null) {
		return false;
	}
	switch(tDISPOSITION) {
		case "1":break;
		case "-1":break;
		
		case "-1u":
		case "1u":
			if(tPARENT_ID == null) {
				return false;
			}
			var tForm = itk_form_by_name(form_id);
			var parent_at = -1;
			for(var i=itk_browser_return;i>=0;--i) {
				if(tPARENT_ID == itk_get_form_value(form_id, fieldnames[1]+"["+i+"]")) {
					parent_at = i;
					break;
				}
			}
			if(parent_at == -1) {
				return false;
			}
			tLO_ID				= itk_get_form_value(form_id, fieldnames[1]+"["+parent_at+"]");
			tLO_CODE 		= itk_get_form_value(form_id, fieldnames[2]+"["+parent_at+"]");
			tPARENT_ID		= itk_get_form_value(form_id, fieldnames[3]+"["+parent_at+"]");
			tDISPOSITION	= tDISPOSITION.replace("u", "");
			break;
		case "1d":
			tPARENT_ID = tLO_ID;
			tLO_ID = '';
			tDISPOSITION = tDISPOSITION.replace("d", "");
			break;
		default:
			return false;
	}
	if(aJustCheck) return true;
	return itk_ccimport(aServer, aRoot, aCallType, tDISPOSITION, tLO_ID, tLO_CODE, tPARENT_ID);	
}

function itk_take_replacements_element(form_id, form_dest, name, elemname, elemname1) {
    if(document.forms[form_id].elements[name] != null) {
        if (opener.document.forms[form_dest].elements[elemname].value == 'checkbox') {
            if (document.forms[form_id].elements[name].checked) {
                opener.document.forms[form_dest].elements[elemname1].value = 'j';
            } else {
                opener.document.forms[form_dest].elements[elemname1].value = 'n';
            }
        } else {
            opener.document.forms[form_dest].elements[elemname1].value = document.forms[form_id].elements[name].value;
        }
    } else if (document.forms[form_id].elements[name + '[0]'] != null) {
        for(i=0; document.forms[form_id].elements[name + '[' + i + ']'] != null; i++) {
            if(document.forms[form_id].elements[name + '[' + i + ']'].type == 'checkbox') {
                if(!document.forms[form_id].elements[name + '[' + i + ']'].checked) {
                    continue;
                }
            }
            opener.document.forms[form_dest].elements[elemname1].value += '|' + document.forms[form_id].elements[name + '[' + i + ']'].value;
        }
    } else {
        alert('Missing ' + elemname1);
    }
}

function itk_take_replacements(form_id, form_dest) {
    for (z=2; z < arguments.length; z++) {
        elemname = "uebernehmen_ersetzung_" + arguments[z];
        if (opener.document.forms[form_dest].elements[elemname] != null && document.forms[form_id].elements[elemname] != null) {
            if (document.forms[form_id].elements[elemname].checked) {
                opener.document.forms[form_dest].elements[elemname].value = document.forms[form_id].elements[elemname].value;

                elemname1 = "ersetzung_" + arguments[z];
                if (opener.document.forms[form_dest].elements[elemname1] != null) {
                    itk_take_replacements_element(form_id, form_dest, arguments[z], elemname, elemname1);
                } else {
                    alert('Missing ' + elemname1);
                }
            }
        } else {
            alert('Missing ' + elemname);
        }
    }
    opener.document.forms[form_dest].elements['btn_set'].value = 'Ersetzen';
    opener.document.forms[form_dest].submit();
}

function itk_clean_calendar_fields(form_id) {

    for (k = 1; k < arguments.length; k++) {
        elemname = arguments[k];

        if (document.forms[form_id].elements['edt_datum_jahr_' + elemname])
        document.forms[form_id].elements['edt_datum_jahr_' + elemname].selectedIndex = 0;

        if (document.forms[form_id].elements['edt_datum_monat_' + elemname])
        document.forms[form_id].elements['edt_datum_monat_' + elemname].selectedIndex = 0;

        if (document.forms[form_id].elements['edt_datum_tag_' + elemname])
        document.forms[form_id].elements['edt_datum_tag_' + elemname].selectedIndex = 0;

        if (document.forms[form_id].elements[elemname])
        document.forms[form_id].elements[elemname].value = '';
    }

}

function itk_cleanup_browser_fields(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_get_formelement_by_name(form_name, formelem_name)
{
	var formelem = null;
	var form = document.forms[form_name];
	if(typeof(form)=="undefined") return null;
	if(form == null) return null;
	
	formelem = form[formelem_name];
	if(typeof(formelem)=="undefined") return null;
	return formelem;
}
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_window_take_data(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_table_input_changed(itk_formelement_ref.form,RegExp.$1);
        }

        itk_zoom_window = null;
    }
}

function itk_table_input_changed(form_ref, row_no, elemname) {
    var checkbox_ref;

    if (elemname == null) {
        elemname = 'itk_row_nr[]';
    }
    prefixed_elemname = form_ref.name + "_" + elemname;

    if(form_ref[elemname] != null) {
        checkbox_ref = form_ref[elemname][row_no];
        if (checkbox_ref == null) {
            checkbox_ref = form_ref[elemname];
        }
    }
    if(checkbox_ref == null && form_ref[prefixed_elemname] != null) {
        checkbox_ref = form_ref[prefixed_elemname][row_no];
        if (checkbox_ref == null) {
            checkbox_ref = form_ref[prefixed_elemname];
        }
    }

    if (checkbox_ref) {
        checkbox_ref.checked = true;
        checkbox_ref.value = row_no;
    }
    checkbox_ref = null;
}

function itk_table_input_changed2(form_ref, row_no, elemname) {
    elemname = 'itk_changed[]';

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

    if (checkbox_ref) checkbox_ref.value = 1;
    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_options_set(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_selections(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;
}

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

    var halign = "center";
    var valign = "center";
    var toolbar = "no";
    var status = "no";
    var menubar = "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 (k == 11) menubar = arguments[k];
    }

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

    if (status != "yes") {
        status = "";      //Shows no in IE
    }

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


    total_fullscr = (hoehe == -1 && breite == -1);
    relax_fullscr = (hoehe == 0 && breite == 0) ;

    if (hoehe == 0) {
        hoehe = screen.availHeight - 24 - 15;
        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 (breite == 0) {
        breite = screen.availWidth - 4 ;
        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=" + menubar +
    ",left=" + links +
    ",top=" + oben +
    ",width=" + breite + ",height=" + hoehe +
    ",innerWidth=" + breite + ",innerHeight=" + hoehe ;

    itk_formelements_refs = new Array;

    for (z = 0, k = 12; k < arguments.length; k++, z++) {
        itk_formelements_refs[z] = itk_formelement_by_name(arguments[k]);
    }

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

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

    if(total_fullscr) fenster_attr = "scrollbars=no, status=no, menubar = no, toolbar=no";

    itk_window = open(seite, title, fenster_attr);

    if(seite.indexOf(window.location.hostname) >= 0) {

        if(total_fullscr) {
            itk_window.moveTo(-4,-24) ;
            itk_window.resizeTo(screen.width + 8, screen.height + 28) ;
        } else if (relax_fullscr){
            itk_window.resizeTo(screen.availWidth, screen.availHeight) ;
        }

    }

    if (itk_window != null) itk_window.focus();
    return itk_window ;
}


function itk_usergroups_assignment_open(title, seite, e, breite, hoehe, gruppen) {
    itk_open_window(title, seite, e, breite, hoehe, "yes", "yes", true,  "center", "center", "no", "no", gruppen);
}

function itk_usergroups_assignment_load(formelem_name, form_name) {
    formelem = null;
    var i = 0;
    var kk = 0;
    var e = 0;
    var arr_benutzergruppen = new Array;
    for (i=0; i < opener.document.forms.length; i++) {
        form_ref = opener.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;
    }
    if (formelem.value.length > 0) {
        arr_bengrp_role = formelem.value.split(',');
        for (kk=0; kk < arr_bengrp_role.length; kk++) {
            arr_benutzergruppe = arr_bengrp_role[kk].split(':');
            arr_benutzergruppen[arr_benutzergruppe[0]] = arr_benutzergruppe[1];
            i = 0;
            bngrp = itk_get_formelement_by_name(form_name, 'usergroup_id[' + i + ']')
            while(bngrp != null) {
                if (bngrp.value == arr_benutzergruppe[0]) {
                    role = itk_get_formelement_by_name(form_name, 'role[' + i + ']');
                    role.value = arr_benutzergruppe[1];
                }
                i++;
                bngrp = itk_get_formelement_by_name(form_name, 'usergroup_id[' + i + ']')
            }
        }
    }
}

function itk_usergroups_assignments_save(formelem_name, bezeichnung_formelem_name, form_name) {
    formelem = null;
    
    var i = 0;
    var kk = 0;
    var e = 0;
    var arr_benutzergruppen = new Array;
    var result = '';
    var bezeichnung_result = '';
	
    result = '';
    bngrp = itk_get_formelement_by_name( form_name, 'usergroup_id[' + i + ']')
    bngrp_bez = itk_get_formelement_by_name( form_name,'name[' + i + ']')
    while(bngrp != null) {
        role = itk_get_formelement_by_name( form_name,'role[' + i + ']');
        if (role.value.length>0) {
            if (result.length>0) {
                result = result + ',';
                bezeichnung_result = bezeichnung_result + ',';
            }
            result = result + bngrp.value + ':' + role.value;
            bezeichnung_result = bezeichnung_result + bngrp_bez.value + ':' + role.value;
        }
        i++;
        bngrp = itk_get_formelement_by_name( form_name,'usergroup_id[' + i + ']')
        bngrp_bez = itk_get_formelement_by_name( form_name,'name[' + i + ']')
    }
    for (i=0; i < opener.document.forms.length; i++) {
        form_ref = opener.document.forms[i];

        for (e=0; e < form_ref.elements.length; e++) {
            if(form_ref.elements[e].name == formelem_name) {
                form_ref.elements[e].value = result;
            }
        }
        for (e=0; e < form_ref.elements.length; e++) {
            if(form_ref.elements[e].name == bezeichnung_formelem_name) {
                form_ref.elements[e].value = bezeichnung_result;
            }
        }
    }
}

function itk_calender_close(return_values) {
    if(return_values != null) {
        for(i = 0; i < return_values.length; i++) {
            if (itk_formelements_refs[i]) {
                formname = itk_formelements_refs[i].form;
                elemname = itk_formelements_refs[i].name;
                datum = return_values[i].split('-');

                if (formname.elements['edt_datum_jahr_' + elemname]){
                    select_null = formname.elements['edt_datum_jahr_' + elemname].options[0].value == null ? 0 : 1;
                    datum[0] = datum[0] - formname.elements['edt_datum_jahr_' + elemname].options[select_null].value;
                    jahr =  select_null ? datum[0] + 1 : datum[0];
                    formname.elements['edt_datum_jahr_' + elemname].selectedIndex = jahr;
                }

                if (formname.elements['edt_datum_monat_' + elemname]){
                    select_null = formname.elements['edt_datum_monat_' + elemname].options[0].value;
                    monat = select_null ? datum[1] - 1 : datum[1];
                    formname.elements['edt_datum_monat_' + elemname].selectedIndex = monat;
                }

                if (formname.elements['edt_datum_tag_' + elemname]){
                    select_null = formname.elements['edt_datum_tag_' + elemname].options[0].value;
                    tag = select_null ? datum[2] - 1 : datum[2];
                    formname.elements['edt_datum_tag_' + elemname].selectedIndex = tag;
                }

                if (formname.elements['edt_datum_jahr_' + elemname].onchange) {
                    formname.elements['edt_datum_jahr_' + elemname].onchange();
                    return;
                }
                if (formname.elements['edt_datum_monat_' + elemname].onchange) {
                    formname.elements['edt_datum_monat_' + elemname].onchange();
                    return;
                }
                if (formname.elements['edt_datum_tag_' + elemname].onchange) {
                    formname.elements['edt_datum_tag_' + elemname].onchange();
                    return;
                }

            }
        }
    }
}

// arguments[1] ........ true = add values, false = replace values
// arguments[2] ........ separator string
// arguments[3] ........ format string
function itk_window_close(return_values) {
    if(return_values != null) {
        if (arguments[3] && arguments[3].length > 0) {
            var formats = arguments[3].split('|');

            for (i = 0; i < formats.length; i++) {
                var value = '';

                eval("value = sprintf(formats[i], '" + return_values.join("','") + "');");

                if (itk_formelements_refs[i]) {
                    if (arguments[1] == true) {
                        if (itk_formelements_refs[i].value.length > 0) {
                            itk_formelements_refs[i].value = itk_formelements_refs[i].value + arguments[2] + value;
                        } else {
                            itk_formelements_refs[i].value = itk_formelements_refs[i].value + value;
                        }
                    } else {
                        itk_formelements_refs[i].value = value;
                    }

                    if (itk_formelements_refs[i].onchange) itk_formelements_refs[i].onchange();
                    res = itk_formelements_refs[i].name.search(/\[([0-9]+)\]$/);
                    if (res != -1) {
                        itk_table_input_changed(itk_formelements_refs[i].form, RegExp.$1);
                    }
                }

                for (j = 0; j < sprintf_num_substitutions; j++) {
                    return_values.shift();
                }
            }
        } else {
            for(i = 0; i < return_values.length; i++) {
                if (itk_formelements_refs[i]) {
                    if (arguments[1] == true) {
                        if (itk_formelements_refs[i].value.length > 0) {
                            itk_formelements_refs[i].value = itk_formelements_refs[i].value + arguments[2] + return_values[i];
                        } else {
                            itk_formelements_refs[i].value = itk_formelements_refs[i].value + return_values[i];
                        }
                    } else {
                        itk_formelements_refs[i].value = return_values[i];
                    }

                    if (itk_formelements_refs[i].onchange) itk_formelements_refs[i].onchange();
                    res = itk_formelements_refs[i].name.search(/\[([0-9]+)\]$/);
                    if (res != -1) {
                        itk_table_input_changed(itk_formelements_refs[i].form, RegExp.$1);
                    }
                }
            }
        }
    }

    itk_window = null;
}

var top_alignment = '';
function itk_set_selectcheckboxes(f, checked, anzahl_angezeigt, elemname, top_alignment) {
    if (elemname == null) {
        elemname = 'itk_row_nr[]';
    }

    var len = f.length;

    for (var i = 0; i < len; i++) {
        if (f.elements[i].name == elemname) {
            f.elements[i].checked = checked;

            if (f.elements[i].value >= anzahl_angezeigt) {
                f.elements[i].checked = false;
            }

            if (top_alignment != null) {
                if (f.elements[i].value == 0) {
                    f.elements[i].checked = false;
                }
            }

            if (f.elements[i].onclick) {
                f.elements[i].onclick();
            }
        }
    }
}

function itk_set_checkboxes(f, checked, elemname) {
    if (elemname == null) {
        elemname = 'itk_row_nr';
    }
    len = f.length;
    j = 0;
    for (i = 0; i < len; i++)
    if (f.elements[i].name == elemname + "[" + j + "]") {
        f.elements[i].checked = checked;
        if (f.elements[i].onclick) f.elements[i].onclick();
        j++;
    }
}

function itk_fieldfilter(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;
    }
    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_open_zoom_window(formelementname, e, max, style, bgcolor, img_pfad, links) {
    itk_formelement_ref = itk_formelement_by_name(formelementname);

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

    if (!itk_zoom_window) {
        itk_zoom_window = itk_open_window(__('Zoom'), "", e, 530, 250);
        itk_zoom_window.document.open();
        itk_zoom_window.document.writeln('<html><head><title>' + __('Zoom') + '</title>');

        if (style) itk_zoom_window.document.writeln('<link rel="stylesheet" type="text/css" href="' + style + '">');

        itk_zoom_window.document.writeln('<script language="javascript">');
        itk_zoom_window.document.writeln('function textSizeCounter(field, maxlimit) {');
        itk_zoom_window.document.writeln('if (field.value.length > maxlimit) field.value = field.value.substring(0, maxlimit);');
        itk_zoom_window.document.writeln('}');
        itk_zoom_window.document.writeln('</script>');

        itk_zoom_window.document.writeln('</head>');
        itk_zoom_window.document.writeln('<body bgcolor="' + bgcolor + '" onload="window.focus(); document.dummy.itk_zoom_text.focus()">');
        itk_zoom_window.document.writeln('<div align="center">');
        itk_zoom_window.document.writeln('<form name="dummy">');
        itk_zoom_window.document.writeln('<table><tr><td class="ffldi">');
        itk_zoom_window.document.writeln('<textarea name="itk_zoom_text" cols="60" rows="10" wrap="virtual" onkeydown="textSizeCounter(this,' + max + ');" onkeyup="textSizeCounter(this,' + max + ');">' + itk_formelement_ref.value + '</textarea>');
        itk_zoom_window.document.writeln('</td></tr>');
        itk_zoom_window.document.writeln('</table>');
        itk_zoom_window.document.writeln('<table width="80%"><tr><td width="40%" align="left">');

        if(links) {
            itk_zoom_window.document.writeln('<a class="aktion" href="" onClick="opener.itk_zoom_window_take_data(document.dummy.itk_zoom_text); window.close();return false;"><img src="' + img_pfad + 'action_replace.gif" border="0">' + __('Uebernehmen') + '</a>');
            itk_zoom_window.document.writeln('</td><td width="40%" align="right">');
            itk_zoom_window.document.writeln('<a class="aktion" href="" onClick="window.close();return false;"><img src="' + img_pfad + 'action_cancel.gif" border="0">' + __('Abbrechen') + '</a>');
        } else {
            itk_zoom_window.document.writeln('<input type="submit" name="uebernehmen" value="' + __('Uebernehmen') + '" onClick="opener.itk_zoom_window_take_data(this.form.itk_zoom_text); window.close();return false;">');
            itk_zoom_window.document.writeln('</td><td width="40%" align="right">');
            itk_zoom_window.document.writeln('<input type="submit" name="abbrechen" value="' + __('Abbrechen') + '" onClick="window.close();return false;">');
        }

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

function itk_preview_window_open(content, title, width, height, e, style, bgcolor, img_pfad, links) {
    if (itk_window) if (itk_window.closed) {
        itk_window = null;
    }

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

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

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

        itk_window.document.writeln(content);

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

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

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

    itk_window.focus();
}

function itk_show_help_window(url, ev) {
    itk_open_window(__('Hilfe'), url, ev, 800, 600, "yes", "yes");
    itk_window.focus();
}

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 == null) return false;
    if (elem.style.display == 'none') {
        elem.style.display = 'block';
        link.firstChild.nodeValue =  label_ein + ' ' + label;
        if (document.forms[form_id] != null && document.forms[form_id].elements != null && elemname != '') document.forms[form_id].elements[elemname].value = '1';
    } else {
        elem.style.display = 'none';
        link.firstChild.nodeValue = label_aus + ' ' + label;
        if (document.forms[form_id] != null && document.forms[form_id].elements != null && elemname != '') document.forms[form_id].elements[elemname].value = '0';
    }
    return true;
}

function decodeHTML(strIn) {
    var strOut;
    var regexp = /%39/g
    strOut = strIn.replace(regexp, "'");
    regexp = /%34/g
    strOut = strOut.replace(regexp, '"');
    regexp = /%60/g
    strOut = strOut.replace(regexp, '<');
    regexp = /%62/g
    strOut = strOut.replace(regexp, '>');
    return strOut;
}

function frm_element_focus(frm_name, frm_element) {
    if(document.forms != null &&
    document.forms[frm_name] != null &&
    document.forms[frm_name].elements != null &&
    document.forms[frm_name].elements[frm_element] != null)
    document.forms[frm_name].elements[frm_element].focus();
}

function itk_url(url, str) {
    return url + ((url.indexOf('?') == -1) ? '?' : '&') + str;
}

function sprintf() {
    if (!arguments || arguments.length < 1 || !RegExp) {
        return;
    }

    var str = arguments[0];
    var re = /([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X)(.*)/;
	var a = b = [], numSubstitutions = numMatches = 0;
   
	while (a = re.exec(str)) {
		var leftpart = a[1], pPad = a[2], pJustify = a[3], pMinLength = a[4];
		var pPrecision = a[5], pType = a[6], rightPart = a[7];

		numMatches++;
		
		if (pType == '%') {
			subst = '%';
		} else {
			numSubstitutions++;
			
			if (numSubstitutions >= arguments.length) {
				alert('Error! Not enough function arguments (' + (arguments.length - 1)
					+ ', excluding the string)\n'
    + 'for the number of substitution parameters in string ('
    + numSubstitutions + ' so far).');
}

var param = arguments[numSubstitutions];
var pad = '';

if (pPad && pPad.substr(0,1) == "'") {
    pad = leftpart.substr(1,1);
} else if (pPad) {
    pad = pPad;
}

var justifyRight = true;

if (pJustify && pJustify === "-") {
    justifyRight = false;
}

var minLength = -1;

if (pMinLength) {
    minLength = parseInt(pMinLength);
}

var precision = -1;

if (pPrecision && pType == 'f') {
    precision = parseInt(pPrecision.substring(1));
}

var subst = param;

switch (pType) {
    case 'b':
    subst = parseInt(param).toString(2);
    break;
    case 'c':
    subst = String.fromCharCode(parseInt(param));
    break;
    case 'd':
    subst = parseInt(param) ? parseInt(param) : 0;
    break;
    case 'u':
    subst = Math.abs(param);
    break;
    case 'f':
    subst = (precision > -1)
    ? Math.round(parseFloat(param) * Math.pow(10, precision))
    / Math.pow(10, precision)
    : parseFloat(param);
    break;
    case 'o':
    subst = parseInt(param).toString(8);
    break;
    case 's':
    subst = param;
    break;
    case 'x':
    subst = ('' + parseInt(param).toString(16)).toLowerCase();
    break;
    case 'X':
    subst = ('' + parseInt(param).toString(16)).toUpperCase();
    break;
}

var padLeft = minLength - subst.toString().length;

if (padLeft > 0) {
    var arrTmp = new Array(padLeft+1);
    var padding = arrTmp.join(pad?pad:" ");
} else {
    var padding = "";
}
}

str = leftpart + padding + subst + rightPart;
}

sprintf_num_substitutions = numSubstitutions;

return str;
}


//  msvrlo note - in "onReadyStateFunction" you need to specify "handler fuction"
var http_request = false;
function getXhttpRequest(url, onReadyStateFunction) {
    if (window.XMLHttpRequest) {
        http_request = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {
            }
        }
    }
    if (!http_request) {
        alert('Cannot create XMLHTTP instance');
        return false;
    }
    http_request.onreadystatechange = onReadyStateFunction;
    http_request.open('GET', url, true);
    http_request.send(null);
}

function refresh_page(offset){
	window.location.reload();
	window.setTimeout("refresh_page()", 1000*60*offset);
}
function auto_refresh(offset){

	window.setTimeout("refresh_page("+offset+")", 1000*60*offset);
}


