//extends the effect-class
Effect.BlindLeft = function(element) {
    element = $(element);
    element.makeClipping();
    return new Effect.Scale(element, 0,
        Object.extend({
            scaleContent: false, 
            scaleY: false,                     
            restoreAfterFinish: true,
            afterFinishInternal: function(effect) {
                effect.element.hide().undoClipping();
            } 
        }, arguments[1] || {})
    );
}

//extends the effect-class
Effect.BlindRight = function(element) {
    element = $(element);
    var elementDimensions = element.getDimensions();
    return new Effect.Scale(element, 100, Object.extend({ 
        scaleContent: false, 
        scaleY: false,
        scaleFrom: 0,
        scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
        restoreAfterFinish: true,
        afterSetup: function(effect) {
            effect.element.makeClipping().setStyle({width: '0px'}).show(); 
        },  
        afterFinishInternal: function(effect) {
            effect.element.undoClipping();
        }
    }, arguments[1] || {}));
}

//open the box
function openBox() {    
    var box_main   = ($('box_main'))?$('box_main'):null;
    
    if ((box_main) && (box_main.visible() == false)) {
        new Effect.BlindRight(box_main, {duration: speed_hide, fps: fps_hide});
    } else {
        return;
    }
}

//close the box
function closeBox() {    
    var box_main   = ($('box_main'))?$('box_main'):null;
    
    if ((box_main) && (box_main.visible() == true)) {
        new Effect.BlindLeft(box_main, {duration: speed_show, fps: fps_show});
    } else {                
        return;
    }
}

//switch to another language
function toggleLanguage() {
    current_lang = (current_lang == 'lang_de') ? 'lang_en' : 'lang_de';
    var new_lang = current_lang.replace(/lang_/, '');
    $('lang_switch').addClassName('lang_switch' + new_lang);
    //document.location.href = './' + new_lang;
    document.location.href = '?lang=' + new_lang;
}

//open another pager
function jumpTo(elem) {
    window.clearInterval(slider);    
    elem = String(elem);
    var trigger_base = elem.replace(/_(.*)/, '');   
    (trigger_base == 'm1')?closeBox():openBox();    
    var action = trigger_base.replace(/m/, '');
    
    url = 'index.php?ajax=true&action=' + action;
    new Ajax.Updater('container', url, {
        evalScripts: true,
        onComplete:  function() {            
            var item = $(trigger_base + '_val');
            var icon = $(trigger_base + '_icn');
            if (current_item != '') {
                $(current_item + '_val').removeClassName('menuitem_active');
                $(current_item + '_icn').removeClassName('menuicon_active');
            }
            $(trigger_base + '_val').addClassName('menuitem_active');
            $(trigger_base + '_icn').addClassName('menuicon_active');
            current_item = trigger_base;
        }
    });
}

//called after send/not send mail
function mailDone() {
    jumpTo(current_item);
}

//shows job-details
function showJob(jobid) {
    var params = 'ajax=true&action=jobdetail&jobid=' + escape(jobid);
    new Ajax.Updater('container', 'index.php', {parameters: params, evalScripts:true});
}

//next page
function nextPage() {
    if (current_page == max_pages) {
        current_page = 0;
    }
    current_page++;
    loadPage();
}

//prev page
function prevPage() {
    if (current_page == 1) {
        current_page = max_pages;
    } else {
        current_page--;
    }
    loadPage();
}

//load page
function loadPage() {
    var params = 'ajax=true&action=loadpage&pageid=' + escape(current_page);
    new Ajax.Updater('subst', 'index.php', {parameters: params, evalScripts:true});
}

//back from jobdetails
function jobDone() {
    jumpTo(current_item);
}

//clear input
function clearField(field, defvalue) {
    if ($F(field) == defvalue) {
        $(field).value = '';
        $(field).removeClassName('ori');
    }
}

//reset input
function resetField(field, defvalue) {
    if ($F(field) == '') {
        $(field).value = defvalue;
        $(field).addClassName('ori');
    }
}

//check required-fields
function checkForm(formid) {
    var elems = $(formid).getElements();
    var check = true;
    elems.each(function(elem) {
        if (elem.classNames().include('required')) {
            if ((elem.classNames().include('ori')) || ($F(elem) == '')) {
                elem.addClassName('error');
                check = false;
            } else {
                elem.removeClassName('error');
            }
        }        
    });
    return check;
}

//try to check if mail-address is valid
function checkMail(mailfield) {
    var mail    = $F(mailfield) || '';
    var pattern = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/i;
    return pattern.test(mail);
}

//send the contactform
function submitForm(formid, mailfield) {
    if (checkForm(formid)) {
        if (checkMail(mailfield)) {            
            var params = 'action=sendform1&' + Form.serializeElements($(formid).getElements());
            new Ajax.Updater('captcha', 'index.php', {parameters: params, evalScripts:true, onComplete: function() {
                $('captcha').addClassName('captcha');
            }});
        } else {
            alert(error_mail);
        }
    } else {
        var navi = navigator.userAgent;
        if (navi.search(/safari/i) > -1) {
            alert(error_form);
        }
    }
}

//send the captcha
function submitCaptcha(field) {        
    var params = 'action=sendform2&cnt_hash=' + escape($F(field));
    new Ajax.Updater('container', 'index.php', {parameters: params, evalScripts:true});
}

//send form on enter-key
function sendFormHandler(e) { 
    var code;
    if (!e) var e = window.event;
    if (e.keyCode) code = e.keyCode;
    else if (e.which) code = e.which;
    if (code == Event.KEY_RETURN) {
        submitForm('contactform', 'cnt_mail');
        return false;
    }
}

//send captcha on enter-key
function sendCaptchaHandler(e) { 
    var code;
    if (!e) var e = window.event;
    if (e.keyCode) code = e.keyCode;
    else if (e.which) code = e.which;
    if (code == Event.KEY_RETURN) {
        submitCaptcha('cnt_hash')
        return false;
    }
}

//slide background-images
function slideImages() {
    if (slides.length > 0) {
        var url = 'images/photo/' + slides[current_slide];
        Element.setStyle($('subst'), {backgroundImage: 'url(' + url + ')'});
        if (current_slide == (slides.length-1)) {
            current_slide = 0;
        } else {
            current_slide++;
        }
    }
}
