
function delItems(deltext){
    question_text = document.getElementById(deltext).innerHTML;
    return confirm(trim(question_text))
}

//remove additional spaces
function trim(str) {
    str = this != window? this : str;
    return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
}

function show_licence_explanation() {
    prev_elem = document.getElementById("test:prev");
    prev = document.getElementById("test:prev").value;
    if ( prev.length>0 ) {
        k = document.getElementById(prev+"_explain");
        k.style.display = 'none';
    }
    lic = document.getElementById("test:licence");
    for ( var i=0 ; i<lic.options.length ; i++ ) {
        if ( lic.options[i].selected ) {
            n = document.getElementById(lic.options[i].value+"_explain");
            n.style.display = 'block';
            prev_elem.value = lic.options[i].value;
        }
    }
}

function HideOrShowBoxes(element) {
    var school_checkbox_div = document.getElementById("school_checkbox");
    var school_checkbox = document.getElementById("has_school");
    var is_school_attr_elem = document.getElementById("registrations:is_school_attr");
    if (is_school_attr_elem == null) {
        is_school_attr_elem = document.getElementById("is_school_attr");
    }
    var is_school_attr = String(is_school_attr_elem.value);
    if (element.value == 'admin' ) {
        if (is_school_attr == "true") {
            school_checkbox_div.style.display = "none";
            document.getElementById("school").style.display = "none";
        }
        document.getElementById("group").style.display = "none";
    }
    if (element.value == 'local_admin' ) {
        if (is_school_attr == "true") {
            school_checkbox_div.style.display = "";        
            if (school_checkbox.checked == false) {
                document.getElementById("school").style.display = "none";    
            } else {
                document.getElementById("school").style.display = "";
        }
        }
        document.getElementById("group").style.display = "none";
    }
    if (element.value == 'user' ) {
        if (is_school_attr == "true") {
            school_checkbox_div.style.display = "";
            if (school_checkbox.checked == false) {
                document.getElementById("school").style.display = "none";    
            } else {
                document.getElementById("school").style.display = "";
            }
        }
        document.getElementById("group").style.display = "";
    }
}

function HideOrShowSchoolBox() {
    var school_checkbox = document.getElementById("has_school");
    if (school_checkbox.checked == false) {
        document.getElementById("school").style.display = "none";
        showGroupsWithoutSchools();
    } else {
        document.getElementById("school").style.display = "block";
        showSchoolsGroups();
        hideGroupsWithoutSchools();
    }    
}

function showGroupsWithoutSchools() {
    var all_groups = document.getElementById("registrations:all_groups").value;
    var user_groups = document.getElementById("registrations:subgroup");
    var groups = all_groups.split(";");
    var length = groups.length - 1;
    for (var i=0; i<length; i++) {
        //alert("group: "+groups[i]);
        var group_values = groups[i].split(":");
        var group_school_id = group_values[0];
        if (group_school_id == "-") {
            var elOptNew = new Option();
            elOptNew.id = group_school_id;
            elOptNew.value = group_values[1];
            elOptNew.text = group_values[2];
            try {
                user_groups.add(elOptNew, null); // standards compliant; doesn't work in IE
            } catch(ex) {
                user_groups.add(elOptNew); // IE only
            }
        }
    }
    for (var u=0; u<user_groups.options.length; u++) {
        var groupvalue = user_groups.options[u].id;
        if (!(groupvalue.indexOf("-")>=0 || groupvalue.indexOf("nogroup")>=0)) {
            user_groups.remove(u);
            u--;
        }
    }
   
}

function hideGroupsWithoutSchools() {
    var groupsBox = document.getElementById("registrations:subgroup");
    for (var i=0; i<groupsBox.options.length; i++) {
        var groupval = groupsBox.options[i].id;
        if (groupval.indexOf("-")>=0) {
            groupsBox.remove(i);
            i--;
        }
    }
}

function showSchoolsGroups() {
    var schoolBox = document.getElementById("registrations:schools");
    if (schoolBox == null) {
        schoolBox = document.getElementById("schools");
    }
    var user_groups = document.getElementById("registrations:subgroup");
    //var groupsBox = document.getElementById("registrations:all_groups");
    var all_groups = document.getElementById("registrations:all_groups").value;
    var groups = all_groups.split(";");
    var all_groups_length = groups.length - 1;

    for (var i=0; i<schoolBox.options.length; i++) {
        var school = schoolBox.options[i].value;
        if (schoolBox.options[i].selected) {
            for (var j=0; j<all_groups_length; j++) {
                var group_values = groups[j].split(":");
                var group_school_id = group_values[0];
                //var groupval = groupsBox.options[j].id;
                //if (group_school_id.indexOf(";"+school+";")>=0) {
                if (group_school_id == school) {
                    //var elOptNew = document.createElement('option');
                    var elOptNew = new Option();
                    elOptNew.id = group_school_id;
                    elOptNew.value = group_values[1];
                    elOptNew.text = group_values[2];
                    try {
                        user_groups.add(elOptNew, null); // standards compliant; doesn't work in IE
                    } catch(ex) {
                        user_groups.add(elOptNew); // IE only
                    }
                }
            }
        }
    }

    for (var s=0; s<schoolBox.options.length; s++) {
        var schoolid = schoolBox.options[s].value;
        if (!schoolBox.options[s].selected) {
            for (var u=0; u<user_groups.options.length; u++) {
                var groupvalue = user_groups.options[u].id;
                if (groupvalue == schoolid) {
                    user_groups.remove(u);
                    u--;
                }
            }
        }
    }
}

function HideOrShowSchools() {
    var school_checkbox = document.getElementById('school_subgroup');
    if (school_checkbox.checked == true){
        document.getElementById('schools_list').style.display = "";
        if (document.getElementById('class_row')){
            document.getElementById('class_row').style.display = "";    
        }
    } else {
        document.getElementById('schools_list').style.display = "none";
        if (document.getElementById('class_row')){
            document.getElementById('class_row').style.display = "none";    
        }
    }
}

function addUserRow() {
    table = document.getElementById('users_table')
    
    c_elem = document.getElementById('count');
    var count = parseInt(c_elem.value) + 1;
    c_elem.value = count;
    
    var tr = document.createElement('tr');
    table.appendChild(tr);
    
    var td1 = document.createElement('td');
    td1.setAttribute('align', 'right');
    tr.appendChild(td1);
    
    var nr = document.createTextNode(count+'. ');
    td1.appendChild(nr)
    
    var td2 = document.createElement('td');
    tr.appendChild(td2);
    
    var fname = document.createElement('input');
    fname.setAttribute('type', 'text');
    fname.setAttribute('id', 'registrations:fname'+count);
    fname.setAttribute('name', 'registrations:fname'+count);
    td2.appendChild(fname);
    
    var td3 = document.createElement('td');
    tr.appendChild(td3);
    
    var lname = document.createElement('input');
    lname.setAttribute('type', 'text');
    lname.setAttribute('id', 'registrations:lname'+count);
    lname.setAttribute('name','registrations:lname'+count);
    td3.appendChild(lname);
    
    var td4 = document.createElement('td');
    tr.appendChild(td4);
    
    var email = document.createElement('input');
    email.setAttribute('type', 'text');
    email.setAttribute('id', 'registrations:email'+count);
    email.setAttribute('name', 'registrations:email'+count);
    td4.appendChild(email);
}

function checkUsersData() {
    var count = document.getElementById('count').value;
    var hasErrors = false;
    var namereg = /^([A-ZŠŽÕÄÖÜa-zšžõäöü0-9_ .\-])+$/;
    for (i=1; i<=count; i++) {
        var fname = document.getElementById("registrations:fname"+i).value;
        var lname = document.getElementById("registrations:lname"+i).value;
        var email = document.getElementById("registrations:email"+i).value;
        if (fname == "" && lname == "" && email == "") {
            continue;
        }
        if (fname == "" || namereg.test(fname) == false) {
            document.getElementById("registrations:fname"+i).setAttribute("class", "input_error");
            document.getElementById("registrations:fname"+i).setAttribute("className", "input_error"); // this is for IE
            hasErrors = true;
        } else {
            document.getElementById("registrations:fname"+i).setAttribute("class", "");
            document.getElementById("registrations:fname"+i).setAttribute("className", "");
        }
        if (lname == "" || namereg.test(lname) == false) {
            document.getElementById("registrations:lname"+i).setAttribute("class", "input_error");
            document.getElementById("registrations:lname"+i).setAttribute("className", "input_error");
            hasErrors = true;
        } else {
            document.getElementById("registrations:lname"+i).setAttribute("class", "");
            document.getElementById("registrations:lname"+i).setAttribute("className", "");
        }
        if (email == "") {
            document.getElementById("registrations:email"+i).setAttribute("class", "input_error");
            document.getElementById("registrations:email"+i).setAttribute("className", "input_error");
            hasErrors = true;
        } else {
            var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
            if(reg.test(email) == false) {
                document.getElementById("registrations:email"+i).setAttribute("class", "input_error");
                document.getElementById("registrations:email"+i).setAttribute("className", "input_error");
                hasErrors = true;
           } else {
               document.getElementById("registrations:email"+i).setAttribute("class", "");
               document.getElementById("registrations:email"+i).setAttribute("className", "");
           }

        }
    }
    if (hasErrors) {
        document.getElementById("error_table").style.display = "block";
    } else {
        var register_button = document.getElementById("registrations:register_button");
        register_button.click();
    }
}

function showChosenAttempt(element, page) {
    var attempt_nr = element.value;
    if (page == "quiz_stats") {
        window.location.href = "quiz_stats.faces?attempt="+attempt_nr;
    }
    var user_assessment = document.getElementById("user_assessment").value;
    if (page == "user_feedback") {
        window.location.href = "quiz_feedback.faces?assessment="+user_assessment+"&attempt="+attempt_nr;
    } else {
        var user_id = document.getElementById("userid").value;
        attempt_nr = attempt_nr.replace("attempt", "");
        window.location.href = "user_answers.faces?user="+user_id+"&assessment="+user_assessment+"&attempt="+attempt_nr;
    }
}

// hide or show assessment options 
function hideOrShowOptions() {
    var chosen = "";
    var radioObj = document.assessment.elements["assessment_type"];
    var radioLength = radioObj.length;
    for(var i = 0; i < radioLength; i++) {
        if(radioObj[i].checked) {
            chosen = radioObj[i].value;
        }
    }
    if (chosen == "quiz" || chosen == "self_quiz") {
        document.getElementById("start_day_row").style.display = "";
        document.getElementById("start_time_row").style.display = "";
        document.getElementById("finish_day_row").style.display = "";
        document.getElementById("finish_time_row").style.display = "";
        document.getElementById("timelimit_row").style.display = "";
        document.getElementById("randomization_row").style.display = "";
        document.getElementById("reactivation_row").style.display = "";
        if (document.getElementById("email_row")) document.getElementById("email_row").style.display = "none";
        document.getElementById("questionnaire_row").style.display = "none";
    }
    if (chosen == "questionnaire") {
        document.getElementById("start_day_row").style.display = "";
        document.getElementById("start_time_row").style.display = "";
        document.getElementById("finish_day_row").style.display = "";
        document.getElementById("finish_time_row").style.display = "";
        document.getElementById("timelimit_row").style.display = "none";
        document.getElementById("randomization_row").style.display = "none";
        document.getElementById("reactivation_row").style.display = "none";
        if (document.getElementById("email_row")) document.getElementById("email_row").style.display = "";
        document.getElementById("questionnaire_row").style.display = "";
    }
    if (chosen == "self_test") {
        document.getElementById("start_day_row").style.display = "none";
        document.getElementById("start_time_row").style.display = "none";
        document.getElementById("finish_day_row").style.display = "none";
        document.getElementById("finish_time_row").style.display = "none";
        document.getElementById("timelimit_row").style.display = "none";
        document.getElementById("randomization_row").style.display = "";
        document.getElementById("reactivation_row").style.display = "none";
        if (document.getElementById("email_row")) document.getElementById("email_row").style.display = "none";
        document.getElementById("questionnaire_row").style.display = "none";
    }
}

function changeTab(tab_val) {
    var old_tab = document.getElementById('old_tab').value;
    document.getElementById('old_tab').value = tab_val;
    document.getElementById(trim(old_tab)).style.display = 'none';
    document.getElementById('tab_'+trim(old_tab)).setAttribute('class', '');
    document.getElementById('tab_'+trim(old_tab)).setAttribute('className', '');
    document.getElementById(tab_val).style.display = 'block';
    document.getElementById('tab_'+tab_val).setAttribute('class', 'active_tab');
    document.getElementById('tab_'+tab_val).setAttribute('className', 'active_tab');
}

function showTestSearchArea() {
    document.getElementById('test_search').style.display = 'block';
    document.getElementById('test_change_button').style.display = 'none';
}

function hideTestSearchArea() {
    document.getElementById("test_search").style.display = "none";
    document.getElementById("test_change_button").style.display = "";
}

// create assessment -> certificate preview page
function showCertificatePreview() {
    var template_id = document.getElementById("certificate:template").value;
    var cert_name = document.getElementById("certificate:certificate_name").value;
    var annotation = document.getElementById("certificate:annotation").value;
    var url = "certificate_preview.faces?template_id="+template_id + "&name="+cert_name + "&annotation=" + annotation;
    window.open(url, "preview", "scrollbars=yes, location=no");
}

function createOverlay() {
    var bod = $(document.body)
    d = new Element('div', {'class' : 'overlay', 'id' : 'overlay'});
    d.inject(bod, 'top');
    d.setStyle('height', bod.getScrollSize().y);

    vc = new Element('div', {'class' : 'vocContainer', 'id' : 'vocContainer'});
    vc.inject(bod);
    //vc.setStyle('width', window.getSize().x-600);
    vc.setStyle('width', 500);
    //vc.setStyle('height', window.getSize().y-200);
    vc.setStyle('height', 300);

//     var topposition = top + (height / 3) - (dialogheight / 2);
//    var leftposition = left + (width / 2) - (dialogwidth / 2);
    var height = window.getSize().y
    var toppos = (height / 2) - 150;
    var width = window.getSize().x;
    var leftpos = (width / 2) - 250;

    vc.setStyle('top', toppos+window.getScroll().y);

    vc.setStyle('left', leftpos);

    cl = new Element('span', {
        'class' : 'vocClose',
        'events': {'click': destroyOverlay}
    });
    cl.set('html', '<span>Close</span>');
    //cl.inject(vc);
    
    helptext = $('page_helptext').get('html');
    c = $('vocContainer');
    p = new Element('div', {'class' : 'helpdialog', 'html': helptext});
    /*txt = new Element('div', {'class' : 'helpheader'});
    title = new Element('span', {'class' : 'helptitle', 'text': helptitle});
    title.inject(txt);
    cl.inject(txt);
    txt.inject(p);

    helptext = $(helptitle+'_helptext').get('text');
    helptxt = new Element('div', {'class': 'helpcontent', 'text': helptext});
    helptxt.inject(p);*/
    p.inject(vc);


}

function destroyOverlay() {
    $('overlay').destroy();
    $('vocContainer').destroy();
    document.fireEvent('overlayClosed');
}

function redirectToSelftest() {
    var radioObj = document.selftests.elements["sel_test"];
    var radioLength = radioObj.length;
    for(var i = 0; i < radioLength; i++) {
        if(radioObj[i].checked) {
            var chosen = radioObj[i].value;
        }
    }
    window.location.href = "selftest.faces?id="+chosen;


}