﻿//<![CDATA[

// -------------------------------------------------
// add special java scripts dynamically V2
// -------------------------------------------------

var jScriptEnabled = typeof ($) !== 'undefined';

if (jScriptEnabled) {
    $(document).ready(function() {
        $('textarea,input,a,img').each(function() {
            var o = this;
            var jO = $(this);
            var ctype = ca_getModuleArg(jO, 'ctype');
            if (ctype == null) ctype = ca_getModuleArg(jO, 'ca-type');

            if (ctype) {
                switch (ctype.toLowerCase()) {
                    case 'focused':
                    case 'autofocus':
                        jO.focus(function() { cj_changeFocusClass(this); })
					    .blur(function() { cj_restoreClass(this); });

                        if (ctype.toLowerCase() == 'focused') cj_changeFocusClass(o);
                        break;

                    case 'calendar':
                        var rows = ca_getModuleArg(jO, 'rows');
                        var cols = ca_getModuleArg(jO, 'cols');
                        var months = ca_getModuleArg(jO, 'months');
                        var buttons = ca_getModuleArg(jO, 'buttons');
                        var show = ca_getModuleArg(jO, 'showOn');

                        if (!rows) rows = 1;
                        if (!cols) cols = 1;
                        if (!months) months = 1;
                        if (!buttons) buttons = false;
                        if (!show) show = 'button';

                        jO.datepicker(
							{
							    duration: "",
							    buttonImage: "/media/calendar.gif",
							    buttonImageOnly: true,
							    numberOfMonths: [rows, cols],
							    numberOfMonths: months,
							    showButtonPanel: buttons,
							    showOn: show
							});
                        break;
                }
            }

            // set default value
            if (o.value || o.type == "password") {
                var cvalue = ca_getModuleArg(jO, 'cvalue');
                if (cvalue == null) cvalue = ca_getModuleArg(jO, 'ca-value');

                if (!cj_isEmpty(cvalue) && (cj_isEmpty(o.value) || o.value == "-" || o.type == "password")) {
                    o.value = cvalue;
                }
            }

            // check send
            var csend = ca_getModuleArg(jO, 'csend');
            if (csend == null) csend = ca_getModuleArg(jO, 'ca-send');

            if (!cj_isEmpty(csend))
                jO.keydown(function(event) { return cj_send(this, event); });

            // check action
            var caction = ca_getModuleArg(jO, 'caction');
            if (caction == null) caction = ca_getModuleArg(jO, 'ca-action');

            if (!cj_isEmpty(caction))
                jO.keydown(function(event) {
                    switch (event.keyCode) {
                        case 13:
                            // enter
                            cj_action($(this));
                            return false;
                            break;

                        default:
                            return true;
                            break;
                    }
                });

            // check mover
            var cmover = ca_getModuleArg(jO, 'cmover');
            if (cmover == null) cmover = ca_getModuleArg(jO, 'ca-mover');

            if (!cj_isEmpty(cmover)) {
                jO.mouseover(function() { cj_changeImage(this); })
			  .mouseout(function() { cj_restoreImage(this); });
            }

            // check click
            var carg = ca_getModuleArg(jO, 'carg');
            if (carg == null) carg = ca_getModuleArg(jO, 'ca-arg');

            if (!cj_isEmpty(carg)) {
                o.setAttribute('href', '#');
                jO.click(function() { return cj_callback(this); });
            }
        });

        // scroll window
        window.scrollTo(0, 0);

        // ------------------------------------------
        // contact-form interests dropdown
        // ------------------------------------------
        $(".interests-box").hover(function () {
            $(this).find(".interests").show();
        },
        function () {
            $(this).find(".interests").hide();
        });

    });
}

// -------------------------------------------------
// functions
// -------------------------------------------------

var _objFocus;

function cj_setFocus(o) {
    if (jScriptEnabled) {
        _objFocus = o;
        $(o).ready(function() { $(_objFocus).focus(); });
    }
}

function cj_callback(o) {
    if (jScriptEnabled) {
        if (o) {
            var argument = ca_getModuleArg(o, 'carg');
            if (argument == null) argument = ca_getModuleArg(o, 'ca-arg');

            if (argument) {
                var arguments = argument.split(',');
                var id = o.id;

                if (arguments.length > 1) {
                    id = arguments[0];
                    argument = arguments[1];
                }
                else {
                    if (id == '') {
                        id = ca_getModuleArg(o, 'cobj');
                        if (id == null) id = ca_getModuleArg(o, 'ca-obj');
                    }
                }

                cj_postback(id, argument);
            }
        }
    }
}

function cj_changeFocusClass(o) {
    if (jScriptEnabled) {
        if (o) {
            var jO = $(o);
            var prev = $(o).attr('__prevClass');
            if (prev == null) {
                prev = o.className;
                $(o).attr('__prevClass', prev);
            }
            o.className = prev + ' focus';

            var cvalue = ca_getModuleArg(jO, 'cvalue');
            if (cvalue == null) cvalue = ca_getModuleArg(jO, 'ca-value');

            if (!cj_isEmpty(cvalue)) {
                if (o.value == cvalue)
                    o.value = '';
                else {
                    o.select();
                }
            }
        }
    }
}

function cj_changeImage(o) {
    if (jScriptEnabled) {
        if (o) {
            var jO = $(o);
            var cmover = ca_getModuleArg(jO, 'cmover');
            if (cmover == null) cmover = ca_getModuleArg(jO, 'ca-mover');

            jO.attr('_oldImage', o.src);
            o.src = cmover;
        }
    }
}

function cj_checkMouseEnter(element, evt) {
    if (element.contains && evt.fromElement) {
        return !element.contains(evt.fromElement);
    }
    else if (evt.relatedTarget) {
        return !cj_containsDOM(element, evt.relatedTarget);
    }
}

function cj_checkMouseLeave(element, evt) {
    if (element.contains && evt.toElement) {
        return !element.contains(evt.toElement);
    }
    else if (evt.relatedTarget) {
        return !cj_containsDOM(element, evt.relatedTarget);
    }
}

function cj_containsDOM(container, containee) {
    var isParent = false;
    do {
        if ((isParent = container == containee))
            break;
        containee = containee.parentNode;
    }
    while (containee != null);
    return isParent;
}

function cj_send(o, e) {
    if (jScriptEnabled) {

        var cobj = cj_getObj($(this), 'cobj');
        var csend = cj_getAttr($(this), 'csend');

        if (cobj && csend) {
            csend = csend.toLowerCase();

            switch (e.keyCode) {
                case 13:
                    // enter
                    cj_postback(cobj, csend);
                    return false;
                    break;

                default:
                    return true;
                    break;
            }
        }
    }
}

function cj_action(o) {
    if (jScriptEnabled && o) {
        var cobj = cj_getObj(o, 'cobj');
        var carg = cj_getAttr(o, 'caction');

        if (cobj && carg) {
            cj_postback(cobj, carg);
        }
    }
}

function cj_isEmpty(value) {
    return value == null || value == '';
}

function cj_print() {
    window.print();
    window.focus();
    return false;
}

function cj_restoreClass(o) {
    if (jScriptEnabled) {
        if (o) {
            var jO = $(o);
            var prev = jO.attr('__prevClass');
            if (prev != null) o.className = prev;

            var cvalue = ca_getModuleArg(jO, 'cvalue');
            if (cvalue == null) cvalue = ca_getModuleArg(jO, 'ca-value');

            if (!cj_isEmpty(cvalue) && cj_isEmpty(o.value)) {
                o.value = cvalue;
            }
        }
    }
}

function cj_restoreImage(o) {
    if (jScriptEnabled) {
        if (o) {
            var jO = $(o);
            var old = ca_getModuleArg(jO, '_oldImage');
            if (old) o.src = old;
        }
    }
}

function cj_getObj(o) {
    return cj_getAttr(o, 'cobj');
}

function cj_getAttr(o, a) {
    var r = null;
    if (jScriptEnabled) {
        while (o.length != 0 && (r == null || typeof (r) == 'undefined')) {
            r = o.attr(a);
            if (r == null || typeof (r) == 'undefined') o = o.parent();
        }
    }
    return r;
}

function cj_findObj(n, d) { //v4.01
    var p, i, x; if (!d) d = document; if ((p = n.indexOf("?")) > 0 && parent.frames.length) {
        d = parent.frames[n.substring(p + 1)].document; n = n.substring(0, p);
    }
    if (!(x = d[n]) && d.all) x = d.all[n]; for (i = 0; !x && i < d.forms.length; i++) x = d.forms[i][n];
    for (i = 0; !x && d.layers && i < d.layers.length; i++) x = cu_findObj(n, d.layers[i].document);
    if (!x && d.getElementById) x = d.getElementById(n); return x;
}

// -------------------------------------------------
// postback
// -------------------------------------------------

function cj_postback(o, e) {
    try {
        __doPostBack(o, e);
    }
    catch (ae) {
    }
    finally {
    }
}

function __doPostBack(eventTarget, eventArgument) {
    if (!theForm) theForm = document.forms['aspnetForm'];

    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        if (theForm.__EVENTTARGET) theForm.__EVENTTARGET.value = eventTarget;
        if (theForm.__EVENTARGUMENT) theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}

// -------------------------------------------------
// checks
// -------------------------------------------------

function cj_isReturn(oEvent) {
    if (!oEvent)
        oEvent = window.event;

    if (oEvent.which) {
        keyCode = oEvent.which;
    }
    else if (oEvent.keyCode) {
        keyCode = oEvent.keyCode;
    }

    return keyCode == 13;
}

// -------------------------------------------------
// context menu
// -------------------------------------------------

function cj_showContextMenu(menu) {
    var menuOffset = 2
    menu.style.left = window.event.x - menuOffset;
    menu.style.top = window.event.y - menuOffset;
    menu.style.display = "";
    window.event.cancelBubble = true;

    return false;
}

function cj_trapESC(menu) {
    var key = window.event.keyCode;
    if (key == 27) {
        menu.style.display = 'none';
    }
}

// -------------------------------------------------
// cookies
// -------------------------------------------------
function createCookie(name, value, days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        var expires = "; expires=" + date.toGMTString();
    }
    else expires = "";
    document.cookie = name + "=" + value + expires + "; path=/";
}
function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
    return null;
}

function cj_copyToClipboard(text) {
    if (window.clipboardData && clipboardData.setData) {
        clipboardData.setData("Text", text);
    }
}

// ------------------------------------------
// histroy
// ------------------------------------------
function CL_back() {
    return cj_back();
}

function cj_back() {
    // return 
    if (history.length > 0) {
        if (CL_isIE())
            history.back();
        else
            history.back(1);
    }

    // break event
    return false;
}

// -------------------------------------------------
// browser check
// -------------------------------------------------

function CL_isIE() {
    return (navigator.appVersion.indexOf('MSIE') != -1) ? true : false;    	// TRUE if IE
}

// *************************************************
// global actions
// *************************************************

var _ca_postbackIds = new Array();
var _ca_popupClass = "popup";
var _ca_popupWidth = 745;
var _ca_popupHeight = 745;
var _ca_popupClassRecommend = "recommendPopup";
var _ca_popupWidthRecommend = 500;
var _ca_popupHeightRecommend = 430;

function ca_getModuleArg(o, key) {
    var result = null;
    if (o && key) {
        result = o.attr(key);
        if (result == null) {
            var a = ca_getModuleArgs(o, key);
            if (a.length > 0) result = a[0];
        }
    }
    return result;
}

function ca_getModuleArgs(o, key) {
    var result = new Array();
    if (o && key && o.attr('class')!=null) {
        key = key.toLowerCase();
        var c = o.attr('class').toLowerCase();
        var i = c.indexOf(key, 0);

        if (i >= 0) {
            var a = o.attr('class').substring(i + key.length + 1).split(' ');
            if (a.length > 0) {
                if (a[0].substring(0, 1) == '[') {
                    var i = 0;
                    var args = '';

                    while (i < a.length) {
                        if (args != '') args += ' ';
                        args += a[i].replace('[', '').replace(']', '');
                        if (a[i].indexOf(']', 0) >= 0) {
                            break;
                        }
                        i++;
                    }

                    result = args.split(',');
                }
            }
        }
    }
    return result;
}

function ca_initModulePostbackId(key, keyId) {
    _ca_postbackIds.push(key + keyId);
}

function cj_getModulePostbackId(key) {
    for (var i = 0; i < _ca_postbackIds.length; i++) {
        var value = _ca_postbackIds[i];
        if (value.indexOf(key) == 0) {
            return value.substring(key.length);
        }
    }
    return null;
}

// ---------------- action list ---------------------

if (jScriptEnabled) {
    $(document).ready(function() {
        $(".ca-privacy").click(function() {
            var args = ca_getModuleArgs($(this), "ca-privacy");
            if (args.length == 3) {
                cu_generatePopup(_ca_popupClass, "/pages/popup.aspx?page=" + args[1] + "&lang=" + args[2], _ca_popupWidth, _ca_popupHeight, args[0]);
            }
        });

        $(".ca-recommend").click(function() {
            var args = ca_getModuleArgs($(this), "ca-recommend");
            var page = args.length > 0 ? args[0] : "";
            var title = args.length > 1 ? args[1] : "";
            var language = args.length > 2 ? args[2] : "de";
            cu_generatePopup(_ca_popupClassRecommend, "/pages/recommend.aspx?page=" + page + "&lang=" + language, _ca_popupWidthRecommend, _ca_popupHeightRecommend, title);
        });

        $(".ca-postback").keydown(function(event) {
            switch (event.keyCode) {
                case 13:
                    var args = ca_getModuleArgs($(this), "ca-postback");
                    if (args.length == 2) {
                        var dest = cj_getModulePostbackId(args[0]);
                        if (dest != null) {
                            cj_postback(dest, args[1]);
                            return false;
                        }
                    }
                    break;

                default:
                    return true;
                    break;
            }
        });

        $(".ca-change").change(function () {
            var args = ca_getModuleArgs($(this), "ca-change");
            if (args.length == 2) {
                var dest = cj_getModulePostbackId(args[0]);
                if (dest != null) {
                    cj_postback(dest, args[1]);
                    return false;
                }
            }
        });
    });
}

//---------------------------------------------------
//  ie6 alpha bug
//---------------------------------------------------

jQuery.fn.supersleight = function(settings) {
    settings = jQuery.extend({
        imgs: true,
        backgrounds: true,
        shim: '/media/blank.gif',
        apply_positioning: true
    }, settings);

    return this.each(function() {
        if (jQuery.browser.msie && parseInt(jQuery.browser.version, 10) < 7 && parseInt(jQuery.browser.version, 10) > 4) {
            jQuery(this).find('*').andSelf().each(function(i, obj) {

                var self = jQuery(obj);
                // background pngs
                if (settings.backgrounds && self.css('background-image').match(/\.png/i) !== null) {
                    var bg = self.css('background-image');
                    var src = bg.substring(5, bg.length - 2);
                    var mode = (self.css('background-repeat') == 'no-repeat' ? 'crop' : 'scale');
                    var styles = {
                        'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='" + mode + "')",
                        'background-image': 'url(' + settings.shim + ')'
                    };
                    self.css(styles);
                };
                // image elements
                if (settings.imgs && self.is('img')) {
                    var styles = {
                        'width': self.width() + 'px',
                        'height': self.height() + 'px',
                        'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + self.attr('src') + "', sizingMethod='scale')"
                    };
                    self.css(styles).attr('src', settings.shim);
                };
                // apply position to 'active' elements
                if (settings.apply_positioning && self.is('a, input') && (self.css('position') === '' || self.css('position') == 'static')) {
                    self.css('position', 'relative');
                };
            });
        };
    });
};

// dummy
function addPngImage(o) { 
}

//]]>