/*<dtml-call standard_html_request>
<dtml-with zmsObj>*/

/*-- spam protection --*/

    function getAdr(prefix, postfix, text) {
        document.write('<a href="mailto:' + prefix + '@' + postfix + '">' + (text ? text.replace(/&quot;/g, '"').replace(/%EMAIL%/, prefix + '@' + postfix) : prefix + '@' + postfix) + '</a>');
    }


/*--- Formular Bestellung AB Oberlaa ---*/

//checkEmail - needed for forms
function checkEmail(val) {
    if (val) {
        var usr = "([a-zA-Z0-9][a-zA-Z0-9_.-]*|\"([^\\\\\x80-\xff\015\012\"]|\\\\[^\x80-\xff])+\")";
        var domain = "([a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*[a-zA-Z0-9][a-zA-Z0-9._-]*\\.[a-zA-Z]{2,5}";
        var regex = "^"+usr+"\@"+domain+"$";
        var myrxp = new RegExp(regex);
        var check = (myrxp.test(val));
        if (check!=true) {
            return false;
        }
        else {
            return true;
        }
    }
}


function validateForm(form, specialfields) {

    var errors = new Array();
    var fields = form.getElementsByTagName('label');
    for (i = 0; i < fields.length; i++) {
        var span = fields[i].getElementsByTagName('span')[0];
        if (span) {
            var label = span.firstChild.data;
            label = label.trim();
            // if there is a '*' in the label - this indicates the inputfield has to be filled
            if (label.charAt(label.length - 1) == '*') {
                label = label.substring(0, label.length - 1).trim();
                // get the inputfield
                var obj_input = fields[i].getElementsByTagName('input');
                if (!obj_input[0])
                    obj_input = fields[i].getElementsByTagName('select');
                if (!obj_input[0])
                    obj_input = fields[i].getElementsByTagName('textarea');

                // if there is an inputfield
                if (obj_input && obj_input[0]) {
                    input = obj_input[0];
                    error = false;
                    
                    // check if the inputfield has a value
                    if (!input.value || input.value.trim().length==0) {
                        error = true;
                        errors.push(label + ' nicht eingegeben');
                    }
                    
                    // check the inputfield for special things (email, ...)
                    if (!error && specialfields[input.name]){
                        specialfield = specialfields[input.name];
                        for (check in specialfield){
                            check_function = specialfield[check].split(',')[0];
                            check_message = specialfield[check].split(',')[1];
                            if (!eval(check_function)(input.value)){
                                error = true;
                                errors.push(label + ' ' + check_message);
                            }
                        }
                    }

                    // on error give the label the className 'error' otherwise delete the className 'error' (if exists)
                    if (error) {
                        className = fields[i].className;
                        if (className.length>0){
                            className = className + ' ';
                        }
                        fields[i].className = className + 'error';
                    } else {
                            className = fields[i].className;
                        if (className.indexOf('error')>-1){
                                className = className.replace(' error', '');
                                className = className.replace('error', '');
                                fields[i].className = className;
                        }
                    }
                }
            }
        }
    }

    return errors;
}



/*-- swap image --*/

    function swapImage(element, newimage) {
        var oldsrc = element.src;
        element.src = newimage;
        if (!element.onmouseout) {
            element.onmouseout = function () {
                swapImage(this, oldsrc);
            }
        }
    }

/*-- popup --*/

    function popup(url, width, height) {
        window.open(url, 'Popup', 'width=' + width + ', height=' + height + ',scrollbars=1');
        return false;
    }

/*-- getElementsByClassName --*/

    function getElementsByClass(strClass, strTag, objContElm) {
        strTag = strTag || "*";
        objContElm = objContElm || document;
        var objColl = objContElm.getElementsByTagName(strTag);
        if (!objColl.length &&  strTag == "*" &&  objContElm.all) objColl = objContElm.all;
        var arr = new Array();
        var delim = strClass.indexOf('|') != -1  ? '|' : ' ';
        var arrClass = strClass.split(delim);
        for (var i = 0, j = objColl.length; i < j; i++) {
            var arrObjClass = objColl[i].className.split(' ');
            if (delim == ' ' && arrClass.length > arrObjClass.length) continue;
            var c = 0;
            comparisonLoop:
            for (var k = 0, l = arrObjClass.length; k < l; k++) {
                for (var m = 0, n = arrClass.length; m < n; m++) {
                    if (arrClass[m] == arrObjClass[k]) c++;
                    if (( delim == '|' && c == 1) || (delim == ' ' && c == arrClass.length)) {
                        arr.push(objColl[i]);
                        break comparisonLoop;
                    }
                }
            }
        }
        return arr;
    }

/*-- validform --*/

    function init_forms() {

        var content = document.getElementById('content');
        if(content) {
            var forms = content.getElementsByTagName('form');
            for(f=0; f<forms.length; f++) {
                      init_form(forms[f]);
            }
        }
        var email_empfaenger;
        var inputs = document.getElementsByTagName('*');
        for(i=0; i < inputs.length; i++) {
            if(inputs[i].name) {
                if(inputs[i].name == 'email_empfaenger') {
                    email_empfaenger = inputs[i];
                }
            }
        }
        if(email_empfaenger) {
            if(email_empfaenger.tagName.toLowerCase() == 'select') {
                var options = email_empfaenger.getElementsByTagName('option');
                for(o=0; o<options.length; o++) {
                    options[o].value = options[o].value.replace(/\+at\+/g, '@');
                }
                email_empfaenger.onchange = function() {
                    var options = this.getElementsByTagName('option');
                    for(o=1; o<options.length; o++) {
                        if(options[o].selected) {
                            var location_data = $($('.form_locations>div')[o-1]).find('span');
                            var form = this.parentNode;
                            while(form.tagName.toLowerCase() != 'form') {
                                form = form.parentNode;
                            }
                            for(i=0; i<location_data.length; i++) {
                                if(location_data[i].title != 'location_id') {
                                    form['to_' + location_data[i].title].value = location_data[i].innerHTML;
                                }
                            }
                        }
                    }
                }
                email_empfaenger.onchange();
            }
            else {
                email_empfaenger.value = email_empfaenger.value.replace(/\+at\+/g, '@');
            }
        }

        // check for form_application
        var url = document.location.href;
        if(url.indexOf('job_title') > -1 && document.getElementById('form_application')) {
            var spliturl = url.split('?');
            var splitparams = spliturl[1].split('&');
            var params = new Object();
            for(i=0; i<splitparams.length; i++) {
                var splitvalues = splitparams[i].split('=');
                params[splitvalues[0]] = splitvalues[1];
            }

            if(params['job_title'] && params['location_id'] && $("select[name='email_empfaenger']").length > 0) {
                $('.job input')[0].value = params['job_title'];
                $('.form_locations>div').each(function(i) {
                    $(this).find('span').each(function(s) {
                        if(this.title == 'location_id' && this.innerHTML == params['location_id']) {
                            $("select[name='email_empfaenger'] option")[i+1].selected = true;
                            $("select[name='email_empfaenger']")[0].disabled = true;
                        }
                    });
                });
                $("select[name='email_empfaenger']")[0].onchange();
            }
        }
    }

    function init_form(form) {
        var required = getElementsByClass('required', '*', form);
        for(i=0; i<required.length; i++) {
            required[i].oldformonblur = required[i].onblur;
            required[i].onblur = function() {
                validate(this);
                if(this.oldformonblur)
                    this.oldformonblur();
            }
        }

        form.onsubmit = function() {
            var doSubmit = true;
            var list = new Array();
            var required = getElementsByClass('required', '*', this);
            for(v=0; v<required.length; v++) {
//                alert(v);
                if(! validate(required[v])) {
                    doSubmit = false;
                    list.push(required[v]);
                }
            }
            var checkboxeles = getElementsByClass('required_checkbox', '*', this);
            for(i=0; i<checkboxeles.length; i++) {
                valid = false;
                checkboxes = checkboxeles[i].getElementsByTagName('input');
                for(c=0; c<checkboxes.length; c++) {
                    if(checkboxes[c].type == 'checkbox') {
                        checkboxeles[i].name = checkboxes[c].name; // we need the name to check for custom_required_texts
                        if(checkboxes[c].checked)
                            valid = true;
                    }
                }
    
                if(valid == false) {
                    doSubmit = false;
                    set_msg(checkboxeles[i], FORM_valid_checkbox);
                    list.push(checkboxeles[i]);
                }
                else {
                    clear_msg(checkboxeles[i]);
                }
            }
            var radioeles = getElementsByClass('required_radio', '*', this);
            for(i=0; i<radioeles.length; i++) {
                valid = false;
                radios = radioeles[i].getElementsByTagName('input');
                for(c=0; c<radios.length; c++) {
                    if(radios[c].type == 'radio') {
                        radioeles[i].name = radios[c].name; // we need the name to check for custom_required_texts
                        if(radios[c].checked)
                            valid = true;
                    }
                }
    
                if(valid == false) {
                    doSubmit = false;
                    set_msg(radioeles[i], FORM_valid_radio);
                    list.push(radioeles[i]);
                } 
                else {
                    clear_msg(radioeles[i]);
                }
            }

        if($(".ordertable").length) {
            if(!$(".ordertable input:checked").length) {
                doSubmit = false;
                set_msg(this, "Bitte wählen sie einen Jahrgang aus!");
                list.push(this);
            } else {
                $(".ordertable input:checked").each(function(){    
                    val = $("#anzahl_"+$(this).val() ).val();
                    if( isNaN ( val ) || val == "" ) {
                        doSubmit = false;
                        set_msg(this, "Bitte geben Sie eine gültige Anzahl für den Jahrgang " + $(this).val() + " ein.");
                        list.push(this);
                    }
                });
            }
        }

            if(doSubmit == false) {
                show_error(list);
                return doSubmit;
            }
        }
    }

    function validate(el) {
        var valid = true;
        clear_msg(el);
        switch(el.type) {
            case 'text':
            case 'textarea':
            case 'select-one':
                if(el.value != '') {
                    if(el.className.indexOf('email') > -1) {
                        var regEmail = /^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/;
                        if(el.value.toUpperCase().match(regEmail)){
                            valid = true;
                        }
                        else {
                            valid = false;
                            set_msg(el, FORM_valid_email);
                        }
                    }
                    if(el.className.indexOf('number') > -1) {
                        if(el.value == Math.round(el.value)) {
                            valid = true;
                        }
                        else {
                            valid = false;
                            set_msg(el, FORM_valid_postal_code);
                        }
                    }
                }
                else {
                    valid = false;
                    set_msg(el);
                }
                break;
        }
    
        return valid;
    }

    function set_msg(el, msg) {
        if(msg == undefined) {
            msg = el.parentNode.getElementsByTagName('span')[0].innerHTML.replace(' *', '') + ' ' + FORM_valid_required;
        }

        if(custom_required_text[el.name])
            msg = custom_required_text[el.name];

        el.errorMessage = msg;
        if(el.parentNode.className.indexOf('error') == -1)
            el.parentNode.className += ' error';
    }

    function clear_msg(el) {
        var classes = el.parentNode.className.split(' ');
        for(e=0; e<classes.length; e++) {
            if(classes[e].indexOf('error') > -1)
                classes[e] = "";
        }
        el.parentNode.className = classes.join(' ');
        el.errorMessage = "";
    }

    function show_error(list) {
        errorlist = '<ul>';
        for(i=0; i<list.length; i++) {
            el = list[i];
            if(el.errorMessage != undefined)
                errorMessage = el.errorMessage;
            else
                var errorMessage = el.parentNode.getElementsByTagName('span')[0].innerHTML.replace(' *', '') + ' ' + FORM_valid_required;
    
            errorlist += '<li>' + errorMessage + '</li>';
        };
        errorlist += '</ul>';
    
        var validationMessage = document.getElementById('validationMessage');
        validationMessage.innerHTML = '<h2 title="' + FORM_valid_error + '">' + FORM_valid_error + '</h2>' + errorlist;
        document.location.href = '#validationMessage';
    }

    $(function(){
        init_forms();
    });

  
/*-- display elements onmouseover --*/

    var hover_links = new Array();
    hover_links.push(new Array('fontchange', 'fontsize'));
    // To add more links, follow the same pattern
    // hoverLinks.push(new Array('linkid', 'elementid'));

    function init_show_elements() {
        for (i = 0; i < hover_links.length; i++) {
            var link = document.getElementById(hover_links[i][0]);
            if (link) {
                link.el = document.getElementById(hover_links[i][1]);
                if (link.el) {
                    link.onmouseover = function() {
                        this.el.style.display = 'block';
                    };
                    link.onmouseout = function() {
                        this.el.style.display = 'none';
                    }
                    link.onclick = function() {
                        return false;
                    }
                }
            }
        }
    }

    $(function(){
        init_show_elements();
    });      
              
    /* nav height fix */

    $(function() {
        $('#nav li').hover(function() {
            if($(this).find('ul').length) {
                var ul = $(this).find('ul')[0];
                $(ul).removeClass('navbottom');
                var parent = ul;
                var offset = 0;
                while(parent) {
                    offset += parent.offsetTop;
                    parent = parent.offsetParent;
                }

                if(ul.origOffset == undefined) {
                    ul.origOffset = offset;
                }

                if(document.body.offsetHeight - 20 < (offset + $(ul).height())) {
                    $(ul).addClass('navbottom');
                }
                else {
                    $(ul).removeClass('navbottom');
                }
            }
        });
    });

    /* search word highlighting */

    $(function() {
        var url = document.location.href;
        var ref = document.referrer;
        if(ref.indexOf('%') > -1) {
            ref = decodeURI(ref);
        }
        if(ref.indexOf('words=') > -1 && url.indexOf('words=') == -1) {
            var words = ref.split('words=');
                        if(words[1].indexOf('&') == -1) {
                                words = words[1].split(';'); // if navigating to another page, params are separated by ; instead of &
                        }
                        else {
                                words = words[1].split('&');
                        }
                        words = words[0].split('+');
            for(w=0; w<words.length; w++) {
                var word = words[w];

                var realels = document.getElementById('content').getElementsByTagName('*');
                var els = new Array(); // make a real array, otherwise .length is increased while making changes
                for(e=0; e<realels.length; e++) {
                    els.push(realels[e]);
                }
                for(e=0; e<els.length; e++) {
                    var el = els[e];
                    if(el.hasChildNodes()) {
                        var realkids = el.childNodes;
                        var kids = new Array();
                        // make a real array, otherwise childNodes.length is increased while making changes
                        for(i=0; i<realkids.length; i++) {
                            kids.push(realkids[i]);
                        }
                        for(i=0; i<kids.length; i++) {
                            if(kids[i].nodeType == 3) { // textnode
                                if(kids[i].data.toLowerCase().indexOf(word.toLowerCase()) > -1) {
                                    // get real word
                                    var pos = kids[i].data.toLowerCase().indexOf(word.toLowerCase());
                                    var origword = kids[i].data.substr(pos, word.length);
                                    // split and fill in <span>s
                                    var remainingtext = kids[i].data.split(origword);
                                    for(r=0; r<remainingtext.length; r++) {
                                        var newtextnode = document.createTextNode(remainingtext[r]);
                                        el.insertBefore(newtextnode, kids[i]);
                                        if(r <remainingtext.length-1) {
                                            var newelement = document.createElement('span');
                                            newelement.innerHTML = origword;
                                            newelement.className = "searchhighlight";
                                            newelement.style.color = "red";
                                            newelement.style.background = "yellow";
                                            el.insertBefore(newelement, kids[i]);
                                        }
                                    }
                                    el.removeChild(kids[i]);
                                }
                            }
                        }
                    }
                }
            }

            // scroll to first found word
            setTimeout("scrollFirstHighlight()", 500);
        }
    });

    $(function() {
        if($('#stichwort .infolist_toplink').length) {
            $('#stichwort .infolist_toplink').click(function() {
                $('#content').animate({scrollTop: 0}, 500);
                return false;
            });
        }
    });

    function scrollFirstHighlight() {
        if($('.searchhighlight').length) {
            $('#content').animate({scrollTop: $('.searchhighlight').position().top}, 500);
        }
    }
/*</dtml-with>*/



