ck24 = {
    vars : [],
    delays : [],
    isIE6 : jQuery.browser.msie && /6.0/.test(navigator.userAgent),
    isIE7 : (document.all && !window.opera && window.XMLHttpRequest) ? true : false,
    isFF2 : jQuery.browser.mozilla && (parseFloat(jQuery.browser.version) < 1.9), 

    
    set : function(name, value) {
        this.vars[name] = value;
    },
    
    get : function(name) {
        return this.vars[name];
    },    
        
    delaySet : function(id, ms, func) {
        this.delayClear(id);
        this.delays[id] = setTimeout(func +'()' , ms);
    },
    
    delayClear : function(id) {
        if (this.delays[id]) {
            clearTimeout(this.delays[id]);
            this.delays[id] = false;
        }
    },    
    
    include : function(src, id) {
        var script = document.createElement('script');
        script.src = src;
        script.type = 'text/javascript';
        script.defer = true;
        if (id) script.id = id;

        var head = document.getElementsByTagName('head').item(0);
        head.appendChild(script);
    },
    
    popup : function() {
        var w = arguments[0] ? arguments[0] : '580';
        var h = arguments[1] ? arguments[1] : '360';
        var popup = window.open('', 'popup', 'width='+w+',height='+h+',scrollbars=yes, toolbar=no,status=no,resizable=yes,menubar=no,location=no,directories=no,top=10,left=10');
        popup.focus();
    }
};

ck24_faqtip = {
        active : false,
        
        //register fagtips
        register : function() {
            
            $('.ck24-faqtip').each(function () {
                var faqtip = $(this);
                var faqtip_content = faqtip.find('.ck24-faqtip-content');
                
                faqtip_content.html(
                    '<div class="ck24-faqtip-inner">' +
                        faqtip_content.html() +                    
                        '<div class="ck24-faqtip-corner">&nbsp;</div>' +
                        '<div class="ck24-faqtip-close">&nbsp;</div>' +
                    '</div>'
                );
                //faqtip_content.bgiframe();
                
                faqtip.click(function(e) {
                    if(ck24.isIE6){
                        faqtip_content.show();
                        if(ck24_faqtip.active!=faqtip_content){
                            if (ck24_faqtip.active) {
                                ck24_faqtip.active.hide();
                            }
                            ck24_faqtip.active = faqtip_content;
                            e.stopPropagation();
                        }
                    }
                    else{
                        faqtip_content.fadeIn('fast', function() {
                            ck24_faqtip.active = faqtip_content;
                        });
                    }
                });
                
                
                faqtip.find('.ck24-faqtip-title').hover(
                    function() {
                        $(this).addClass('ck24-faqtip-hover');
                    },
                    function() {
                        $(this).removeClass('ck24-faqtip-hover');
                    }
                );
                
            });
            
            $(document).click(function() {
                ck24_faqtip.close();
            });
        },
        
        close : function() {
            if (this.active) {
                if(ck24.isIE6){
                    this.active.hide();
                }
                else{
                    this.active.fadeOut('fast');
                }
                this.active=false;
            }            
        }
    };

ck24_hotlinetip = {
    //register hotlinetips
    register : function() {
        $('.ck24-hotlinetip').each(function () {
            var hotlinetip = $(this);
            var hotlinetip_content = hotlinetip.find('.ck24-hotlinetip-content');
            
            hotlinetip_content.html(
                '<div class="ck24-hotlinetip-inner">' +
                hotlinetip_content.html() +                    
                    '<div class="ck24-hotlinetip-corner">&nbsp;</div>' +
                '</div>'
            );

            if (hotlinetip.hoverIntent) {
                hotlinetip.hoverIntent({
                    sensivity: 3,
                    interval: 200,
                    over: function(e) { hotlinetip_content.fadeIn('fast'); },
                    out: function(e) { hotlinetip_content.fadeOut('fast'); },
                    timeout: 500
                });
            }
        });
    }
};



ck24_navi = {
    init : function() {
    
        if (ck24.get('menu')) {
            $('.navi-arrow').show().mouseover(function() {
                ck24.delaySet('navi_open', 111, 'ck24_navi.open');
            });            
            
            $('#navi_clickable').mouseover(function() {
                ck24.delaySet('navi_open', 111, 'ck24_navi.open');
            });    
            
            $('#navi_content').mouseout(function(event) {
                var node = $(event.relatedTarget);
                var id = node.attr('id');
                
                if (id != 'navi') {    
                    if (id == '') {
                        var mt =  new Date().getTime();
                        id =  'bubble' + mt;
                        node.attr('id', 'bubble' + mt);
                    }
                    
                    if ($('#navi').find('#'+ id).length == 0) {
                        ck24.delaySet('navi_close', 333, 'ck24_navi.close');
                    }
                }
            });
            
            $('#navi_content').mouseover(function() {
                ck24.delayClear('navi_close');
            });
            
            $('.navi-arrow').mouseout(function() {
                ck24.delayClear('navi_open');
            });            
        
        } else {
            
        }
        
        //register sub menus
        $('.navi-sub').mouseover(function() {
            ck24.delayClear('navi_sub');
            ck24_navi.closeSub();
            $(this).find('.navi-sub-list').show();
        });
        
        $('.navi-sub').mouseout(function() {
            ck24.delaySet('navi_sub', 333, 'ck24_navi.closeSub');
        });        
    },
    
    open : function(instant) {
        var navi = $('#navi_content');
        
        if (navi.prop('open') != '1') {
            ck24_faqtip.close();        
            navi.prop('open', 1);
            $('.navi-arrow').addClass('navi-arrow-hovered');
            $('#navi_clickable').addClass('navi-clickable-hovered');
            navi.show(instant || ck24.isIE6 ? null : 'blind', 333);
            if (ck24.isIE6 || ck24.isIE7) $('.navi').css('zIndex', '100');
        }        
    },
    
    close : function(instant) {
        var navi = $('#navi_content');
        
        if (navi.prop('open') == '1') {
            ck24_faqtip.close();
            navi.prop('open', 0);
            
            navi.hide(instant || ck24.isIE6 ? null : 'blind', 333, function(){
                $('.navi-arrow').removeClass('navi-arrow-hovered');
                $('#navi_clickable').removeClass('navi-clickable-hovered');
                if (ck24.isIE6 || ck24.isIE7) {
                    $('.navi').css('zIndex', '1');
                }
            });
        }        
    },
    
    closeSub : function () {
        $('.navi-sub-list').hide();
    },
    
    toggle : function() {
        var navi = $('#navi_content');
        
        if (navi.prop('open') == '1') {
            navi.prop('open', 0);
            navi.hide('blind');
        } else {
            navi.prop('open', 1);
            navi.show('blind');        
        }        
    }
}

function c24_iframe_resizer(){
    // Set specific variable to represent all iframe tags.
    var iFrames = $('.ck24-resize-iframe');

    // Resize heights.
    function iResize()
    {
        // Iterate through all iframes in the page.
        for (var i = 0, j = iFrames.length; i < j; i++)
        {
            // Set inline style to equal the body height of the iframed content.
            iFrames[i][0].style.height = iFrames[i][0].contentWindow.document.body.offsetHeight + 'px';
        }
    }

    // Check if browser is Safari or Opera.
    if (jQuery.browser.safari || jQuery.browser.opera)
    {
        // Start timer when loaded.
        $('.ck24-resize-iframe').load(function()
            {
                setTimeout(iResize, 0);
            }
        );

        // Safari and Opera need a kick-start.
        for (var i = 0, j = iFrames.length; i < j; i++)
        {
            var iSource = iFrames[i][0].src;
            iFrames[i][0].src = '';
            iFrames[i][0].src = iSource;
        }
    }
    else
    {
        // For other good browsers.
        $('.ck24-resize-iframe').load(function()
            {
                    innerDoc = (this.contentDocument) ? this.contentDocument : this.contentWindow.document;
                    objToResize = (this.style) ? this.style : this;
                    objToResize.height = innerDoc.body.scrollHeight + 10;
            }
        );
    }

}

$(function() {
    ck24_navi.init();
    ck24_faqtip.register();
    ck24_hotlinetip.register();

    
    c24_iframe_resizer();
    
    $('.home').hover(
        function() {
            $('#home_hover').show();
        },
        function() {
            $('#home_hover').hide();
        }
    );
});





if (!jQuery.fn.alphanumeric) {(function($){

    $.fn.alphanumeric = function(p) { 


        p = $.extend({
            ichars: "��!@#$%^&*()+=[]\\\';,/{}|\":<>?~�`.- ",
            nchars: "",
            allow: ""
          }, p);    

        return this.each
            (
                function() 
                {

                    if (p.nocaps) p.nchars += "ABCDEFGHIJKLMNOPQRSTUVWXYZ���";
                    if (p.allcaps) p.nchars += "abcdefghijklmnopqrstuvwxyz���";
                    
                    s = p.allow.split('');
                    for ( i=0;i<s.length;i++) if (p.ichars.indexOf(s[i]) != -1) s[i] = "\\" + s[i];
                    p.allow = s.join('|');
                    
                    var reg = new RegExp(p.allow,'gi');
                    var ch = p.ichars + p.nchars;
                    ch = ch.replace(reg,'');
                    

                    $(this).keypress
                        (
                            function (e)
                                {
                                
                                    if (!e.charCode) k = String.fromCharCode(e.which);
                                        else k = String.fromCharCode(e.charCode);
                                    
                                    if (e.ctrlKey&&k=='v') return true;
                                        
                                    if (ch.indexOf(k) != -1) e.preventDefault();
                                    if (e.ctrlKey&&k=='v') e.preventDefault();
                                    
                                }
                                
                        );
                        
                    $(this).bind('contextmenu',function () {return false});
                                    
                }
            );

    };

    $.fn.numeric = function(p) {
    
        var az = "abcdefghijklmnopqrstuvwxyz����";
        az += az.toUpperCase();

        p = $.extend({
            nchars: az
          }, p);    
              
        return this.each (function()
            {
                $(this).alphanumeric(p);
            }
        );
            
    };
    
    $.fn.alpha = function(p) {

        var nm = "1234567890";

        p = $.extend({
            nchars: nm
          }, p);    

        return this.each (function()
            {
                $(this).alphanumeric(p);
            }
        );
            
    };    

})(jQuery)};


/*
 * hoverIntent r5 // 2007.03.27 // jQuery 1.1.2+
 * http://cherne.net/brian/resources/jquery.hoverIntent.html
 * 
 * Copyright (c) 2009 Brian Cherne <brian@cherne.net>
 */
(function($){$.fn.hoverIntent=function(f,g){var cfg={sensitivity:7,interval:100,timeout:0};cfg=$.extend(cfg,g?{over:f,out:g}:f);var cX,cY,pX,pY;var track=function(ev){cX=ev.pageX;cY=ev.pageY;};var compare=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);if((Math.abs(pX-cX)+Math.abs(pY-cY))<cfg.sensitivity){$(ob).unbind("mousemove",track);ob.hoverIntent_s=1;return cfg.over.apply(ob,[ev]);}else{pX=cX;pY=cY;ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}};var delay=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);ob.hoverIntent_s=0;return cfg.out.apply(ob,[ev]);};var handleHover=function(e){var p=(e.type=="mouseover"?e.fromElement:e.toElement)||e.relatedTarget;while(p&&p!=this){try{p=p.parentNode;}catch(e){p=this;}}if(p==this){return false;}var ev=jQuery.extend({},e);var ob=this;if(ob.hoverIntent_t){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);}if(e.type=="mouseover"){pX=ev.pageX;pY=ev.pageY;$(ob).bind("mousemove",track);if(ob.hoverIntent_s!=1){ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}}else{$(ob).unbind("mousemove",track);if(ob.hoverIntent_s==1){ob.hoverIntent_t=setTimeout(function(){delay(ev,ob);},cfg.timeout);}}};return this.mouseover(handleHover).mouseout(handleHover);};})(jQuery);


/*** CALC ***/

function isValidZipCodeInput(id) {
    var plz = $('#'+ id).val();
    if (ck24_validPlz[plz] != 1) {
        $('#'+ id + '_error').show();
        return false;
    } else {
        $('#'+ id + '_error').hide();
    }
    
    return true;
}

function isValidAreaCodeInput(id) {
    var areacode = $('#'+ id).val();
    if (/^0\d{2,4}$/.test(areacode) == false) {
        alert('Bitte geben Sie eine gültige Vorwahl ein.');
        return false;
    }
    
    return true;
}

function isValidAreaCodeInput2(id) {
    var areacode = $('#'+ id).val();
    if (/^0\d{2,4}$/.test(areacode) == false) {
        $('#'+ id + '_error').show();
        return false;
    } else {
        $('#'+ id + '_error').hide();
    }
    
    return true;
}
