/*!
 * jQuery Corners 0.3
 * Copyright (c) 2008 David Turnbull, Steven Wittens
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 */
jQuery.fn.corners = function(options){
    var doneClass = 'rounded_by_jQuery_corners'; /* To prevent double rounding */
    var settings = parseOptions(options);
    var webkitAvailable = false;
    try {
        webkitAvailable = (document.body.style.WebkitBorderRadius !== undefined);
        /* Google Chrome corners look awful */
        var versionIndex = navigator.userAgent.indexOf('Chrome');
        if (versionIndex >= 0) 
            webkitAvailable = false;
    } 
    catch (err) {
    }
    var mozillaAvailable = false;
    try {
        mozillaAvailable = (document.body.style.MozBorderRadius !== undefined);
        /* Firefox 2 corners look worse */
        var versionIndex = navigator.userAgent.indexOf('Firefox');
        if (versionIndex >= 0 && parseInt(navigator.userAgent.substring(versionIndex + 8)) < 3) 
            mozillaAvailable = false;
    } 
    catch (err) {
    }
    return this.each(function(i, e){
        $e = jQuery(e);
        if ($e.hasClass(doneClass)) 
            return;
        $e.addClass(doneClass);
        var classScan = /{(.*)}/.exec(e.className);
        var s = classScan ? parseOptions(classScan[1], settings) : settings;
        var nodeName = e.nodeName.toLowerCase();
        if (nodeName == 'input') 
            e = changeInput(e);
        if (webkitAvailable && s.webkit) 
            roundWebkit(e, s);
        else 
            if (mozillaAvailable && s.mozilla && (s.sizex == s.sizey)) 
                roundMozilla(e, s);
            else {
                var bgColor = backgroundColor(e.parentNode);
                var fgColor = backgroundColor(e);
                switch (nodeName) {
                    case 'a':
                    case 'input':
                        roundLink(e, s, bgColor, fgColor);
                        break;
                    default:
                        roundDiv(e, s, bgColor, fgColor);
                        break;
                }
            }
    });
    
    function roundWebkit(e, s){
        var radius = '' + s.sizex + 'px ' + s.sizey + 'px';
        var $e = jQuery(e);
        if (s.tl) 
            $e.css('WebkitBorderTopLeftRadius', radius);
        if (s.tr) 
            $e.css('WebkitBorderTopRightRadius', radius);
        if (s.bl) 
            $e.css('WebkitBorderBottomLeftRadius', radius);
        if (s.br) 
            $e.css('WebkitBorderBottomRightRadius', radius);
    }
    
    function roundMozilla(e, s){
        var radius = '' + s.sizex + 'px';
        var $e = jQuery(e);
        if (s.tl) 
            $e.css('-moz-border-radius-topleft', radius);
        if (s.tr) 
            $e.css('-moz-border-radius-topright', radius);
        if (s.bl) 
            $e.css('-moz-border-radius-bottomleft', radius);
        if (s.br) 
            $e.css('-moz-border-radius-bottomright', radius);
    }
    
    function roundLink(e, s, bgColor, fgColor){
        var table = tableElement("table");
        var tbody = tableElement("tbody");
        table.appendChild(tbody);
        var tr1 = tableElement("tr");
        var td1 = tableElement("td", "top");
        tr1.appendChild(td1);
        var tr2 = tableElement("tr");
        var td2 = relocateContent(e, s, tableElement("td"));
        tr2.appendChild(td2);
        var tr3 = tableElement("tr");
        var td3 = tableElement("td", "bottom");
        tr3.appendChild(td3);
        if (s.tl || s.tr) {
            tbody.appendChild(tr1);
            addCorners(td1, s, bgColor, fgColor, true);
        }
        tbody.appendChild(tr2);
        if (s.bl || s.br) {
            tbody.appendChild(tr3);
            addCorners(td3, s, bgColor, fgColor, false);
        }
        e.appendChild(table);
        /* Clicking on $('a>table') in IE will trigger onclick but not the href  */
        if (jQuery.browser.msie) 
            table.onclick = ieLinkBypass;
        /* Firefox 2 will render garbage unless we hide the overflow here */
        e.style.overflow = 'hidden';
    }
    
    function ieLinkBypass(){
        if (!this.parentNode.onclick) 
            this.parentNode.click();
    }
    
    function changeInput(e){
        var a1 = document.createElement("a");
        a1.id = e.id;
        a1.className = e.className;
        if (e.onclick) {
            a1.href = 'javascript:'
            a1.onclick = e.onclick;
        }
        else {
            jQuery(e).parent('form').each(function(){
                a1.href = this.action;
            });
            a1.onclick = submitForm;
        }
        var a2 = document.createTextNode(e.value);
        a1.appendChild(a2);
        e.parentNode.replaceChild(a1, e);
        return a1;
    }
    
    function submitForm(){
        jQuery(this).parent('form').each(function(){
            this.submit()
        });
        return false;
    }
    
    function roundDiv(e, s, bgColor, fgColor){
        var div = relocateContent(e, s, document.createElement('div'));
        e.appendChild(div);
        if (s.tl || s.tr) 
            addCorners(e, s, bgColor, fgColor, true);
        if (s.bl || s.br) 
            addCorners(e, s, bgColor, fgColor, false);
    }
    
    function relocateContent(e, s, d){
        var $e = jQuery(e);
        var c;
        while (c = e.firstChild) 
            d.appendChild(c);
        if (e.style.height) {
            var h = parseInt($e.css('height'));
            d.style.height = h + 'px';
            h += parseInt($e.css('padding-top')) + parseInt($e.css('padding-bottom'));
            e.style.height = h + 'px';
        }
        if (e.style.width) {
            var w = parseInt($e.css('width'));
            d.style.width = w + 'px';
            w += parseInt($e.css('padding-left')) + parseInt($e.css('padding-right'));
            e.style.width = w + 'px';
        }
        d.style.paddingLeft = $e.css('padding-left');
        d.style.paddingRight = $e.css('padding-right');
        if (s.tl || s.tr) {
            d.style.paddingTop = adjustedPadding(e, s, $e.css('padding-top'), true);
        }
        else {
            d.style.paddingTop = $e.css('padding-top');
        }
        if (s.bl || s.br) {
            d.style.paddingBottom = adjustedPadding(e, s, $e.css('padding-bottom'), false);
        }
        else {
            d.style.paddingBottom = $e.css('padding-bottom');
        }
        e.style.padding = 0;
        return d;
    }
    
    function adjustedPadding(e, s, pad, top){
        if (pad.indexOf("px") < 0) {
            try {
                //TODO Make this check work otherwise remove it
                console.error('%s padding not in pixels', (top ? 'top' : 'bottom'), e);
            } 
            catch (err) {
            }
            pad = s.sizey + 'px';
        }
        pad = parseInt(pad);
        if (pad - s.sizey < 0) {
            try {
                console.error('%s padding is %ipx for %ipx corner:', (top ? 'top' : 'bottom'), pad, s.sizey, e);
            } 
            catch (err) {
            }
            pad = s.sizey;
        }
        return pad - s.sizey + 'px';
    }
    
    function tableElement(kind, valign){
        var e = document.createElement(kind)
        e.style.border = 'none';
        e.style.borderCollapse = 'collapse';
        e.style.borderSpacing = 0;
        e.style.padding = 0;
        e.style.margin = 0;
        if (valign) 
            e.style.verticalAlign = valign;
        return e;
    }
    
    function backgroundColor(e){
        try {
            var c = jQuery.css(e, "background-color");
            if (c.match(/^(transparent|rgba\(0,\s*0,\s*0,\s*0\))$/i) && e.parentNode) 
                return backgroundColor(e.parentNode);
            if (c == null) 
                return "#ffffff";
            if (c.indexOf("rgb") > -1) 
                c = rgb2hex(c);
            if (c.length == 4) 
                c = hexShort2hex(c);
            return c;
        } 
        catch (err) {
            return "#ffffff";
        }
    }
    
    function hexShort2hex(c){
        return '#' +
        c.substring(1, 2) +
        c.substring(1, 2) +
        c.substring(2, 3) +
        c.substring(2, 3) +
        c.substring(3, 4) +
        c.substring(3, 4);
    }
    
    function rgb2hex(c){
        var x = 255;
        var hex = '';
        var i;
        var regexp = /([0-9]+)[, ]+([0-9]+)[, ]+([0-9]+)/;
        var array = regexp.exec(c);
        for (i = 1; i < 4; i++) 
            hex += ('0' + parseInt(array[i]).toString(16)).slice(-2);
        return '#' + hex;
    }
    
    function parseOptions(options, settings){
        var options = options || '';
        var s = {
            sizex: 5,
            sizey: 5,
            tl: false,
            tr: false,
            bl: false,
            br: false,
            webkit: true,
            mozilla: true,
            transparent: false
        };
        if (settings) {
            s.sizex = settings.sizex;
            s.sizey = settings.sizey;
            s.webkit = settings.webkit;
            s.transparent = settings.transparent;
            s.mozilla = settings.mozilla;
        }
        var sizex_set = false;
        var corner_set = false;
        jQuery.each(options.split(' '), function(idx, option){
            option = option.toLowerCase();
            var i = parseInt(option);
            if (i > 0 && option == i + 'px') {
                s.sizey = i;
                if (!sizex_set) 
                    s.sizex = i;
                sizex_set = true;
            }
            else 
                switch (option) {
                    case 'no-native':
                        s.webkit = s.mozilla = false;
                        break;
                    case 'webkit':
                        s.webkit = true;
                        break;
                    case 'no-webkit':
                        s.webkit = false;
                        break;
                    case 'mozilla':
                        s.mozilla = true;
                        break;
                    case 'no-mozilla':
                        s.mozilla = false;
                        break;
                    case 'anti-alias':
                        s.transparent = false;
                        break;
                    case 'transparent':
                        s.transparent = true;
                        break;
                    case 'top':
                        corner_set = s.tl = s.tr = true;
                        break;
                    case 'right':
                        corner_set = s.tr = s.br = true;
                        break;
                    case 'bottom':
                        corner_set = s.bl = s.br = true;
                        break;
                    case 'left':
                        corner_set = s.tl = s.bl = true;
                        break;
                    case 'top-left':
                        corner_set = s.tl = true;
                        break;
                    case 'top-right':
                        corner_set = s.tr = true;
                        break;
                    case 'bottom-left':
                        corner_set = s.bl = true;
                        break;
                    case 'bottom-right':
                        corner_set = s.br = true;
                        break;
                }
        });
        if (!corner_set) {
            if (!settings) {
                s.tl = s.tr = s.bl = s.br = true;
            }
            else {
                s.tl = settings.tl;
                s.tr = settings.tr;
                s.bl = settings.bl;
                s.br = settings.br;
            }
        }
        return s;
    }
    
    function alphaBlend(a, b, alpha){
        var ca = Array(parseInt('0x' + a.substring(1, 3)), parseInt('0x' + a.substring(3, 5)), parseInt('0x' + a.substring(5, 7)));
        var cb = Array(parseInt('0x' + b.substring(1, 3)), parseInt('0x' + b.substring(3, 5)), parseInt('0x' + b.substring(5, 7)));
        r = '0' + Math.round(ca[0] + (cb[0] - ca[0]) * alpha).toString(16);
        g = '0' + Math.round(ca[1] + (cb[1] - ca[1]) * alpha).toString(16);
        b = '0' + Math.round(ca[2] + (cb[2] - ca[2]) * alpha).toString(16);
        return '#' +
        r.substring(r.length - 2) +
        g.substring(g.length - 2) +
        b.substring(b.length - 2);
    }
    
    function addCorners(e, s, bgColor, fgColor, top){
        if (s.transparent) 
            addTransparentCorners(e, s, bgColor, top);
        else 
            addAntiAliasedCorners(e, s, bgColor, fgColor, top);
    }
    
    function addAntiAliasedCorners(e, s, bgColor, fgColor, top){
        var i, j;
        var d = document.createElement("div");
        d.style.fontSize = '1px';
        d.style.backgroundColor = bgColor;
        var lastarc = 0;
        for (i = 1; i <= s.sizey; i++) {
            var coverage, arc2, arc3;
            // Find intersection of arc with bottom of pixel row
            arc = Math.sqrt(1.0 - Math.pow(1.0 - i / s.sizey, 2)) * s.sizex;
            // Calculate how many pixels are bg, fg and blended.
            var n_bg = s.sizex - Math.ceil(arc);
            var n_fg = Math.floor(lastarc);
            var n_aa = s.sizex - n_bg - n_fg;
            // Create pixel row wrapper
            var x = document.createElement("div");
            var y = d;
            x.style.margin = "0px " + n_bg + "px";
            x.style.height = '1px';
            x.style.fontSize = '1px';
            x.style.lineHeight = '1px';
            x.style.overflow = 'hidden';
            // Create the pixel divs for a row (at least one)
            for (j = 1; j <= n_aa; j++) {
                // Calculate coverage per pixel (approximates arc within the pixel)
                if (j == 1) {
                    if (j == n_aa) {
                        // Single pixel
                        coverage = ((arc + lastarc) * .5) - n_fg;
                    }
                    else {
                        // First in a run
                        arc2 = Math.sqrt(1.0 - Math.pow(1.0 - (n_bg + 1) / s.sizex, 2)) * s.sizey;
                        coverage = (arc2 - (s.sizey - i)) * (arc - n_fg - n_aa + 1) * .5;
                    }
                }
                else 
                    if (j == n_aa) {
                        // Last in a run
                        arc2 = Math.sqrt(1.0 - Math.pow((s.sizex - n_bg - j + 1) / s.sizex, 2)) * s.sizey;
                        coverage = 1.0 - (1.0 - (arc2 - (s.sizey - i))) * (1.0 - (lastarc - n_fg)) * .5;
                    }
                    else {
                        // Middle of a run
                        arc3 = Math.sqrt(1.0 - Math.pow((s.sizex - n_bg - j) / s.sizex, 2)) * s.sizey;
                        arc2 = Math.sqrt(1.0 - Math.pow((s.sizex - n_bg - j + 1) / s.sizex, 2)) * s.sizey;
                        coverage = ((arc2 + arc3) * .5) - (s.sizey - i);
                    }
                
                addCornerDiv(s, x, y, top, alphaBlend(bgColor, fgColor, coverage));
                y = x;
                var x = y.cloneNode(false);
                x.style.margin = "0px 1px";
            }
            addCornerDiv(s, x, y, top, fgColor);
            lastarc = arc;
        }
        if (top) 
            e.insertBefore(d, e.firstChild);
        else 
            e.appendChild(d);
    }
    
    function addCornerDiv(s, x, y, top, color){
        if (top && !s.tl) 
            x.style.marginLeft = 0;
        if (top && !s.tr) 
            x.style.marginRight = 0;
        if (!top && !s.bl) 
            x.style.marginLeft = 0;
        if (!top && !s.br) 
            x.style.marginRight = 0;
        x.style.backgroundColor = color;
        if (top) 
            y.appendChild(x);
        else 
            y.insertBefore(x, y.firstChild);
    }
    
    function addTransparentCorners(e, s, bgColor, top){
        var d = document.createElement("div");
        d.style.fontSize = '1px';
        var strip = document.createElement('div');
        strip.style.overflow = 'hidden';
        strip.style.height = '1px';
        strip.style.borderColor = bgColor;
        strip.style.borderStyle = 'none solid';
        var sizex = s.sizex - 1;
        var sizey = s.sizey - 1;
        if (!sizey) 
            sizey = 1; /* hint for 1x1 */
        for (var i = 0; i < s.sizey; i++) {
            var w = sizex - Math.floor(Math.sqrt(1.0 - Math.pow(1.0 - i / sizey, 2)) * sizex);
            if (i == 2 && s.sizex == 6 && s.sizey == 6) 
                w = 2; /* hint for 6x6 */
            var x = strip.cloneNode(false);
            x.style.borderWidth = '0 ' + w + 'px';
            if (top) 
                x.style.borderWidth = '0 ' + (s.tr ? w : 0) + 'px 0 ' + (s.tl ? w : 0) + 'px';
            else 
                x.style.borderWidth = '0 ' + (s.br ? w : 0) + 'px 0 ' + (s.bl ? w : 0) + 'px';
            top ? d.appendChild(x) : d.insertBefore(x, d.firstChild);
        }
        if (top) 
            e.insertBefore(d, e.firstChild);
        else 
            e.appendChild(d);
    }
    
    
};










jQuery.fn.corners2 = function(options){

    var defaults = {
        "top": true,
        "bottom": true,
        "padding": true
    };
    
    var css_option = {
        "position": "relative",
        "top": "0",
        "right": "-8px",
        "float": "right",
        "width": "8px",
        "height": "8px"
    };
    var css_option_right = {
        "position": "relative",
        "top": "0",
        "left": "-8px",
        "background-position": "8px 0"
    };
    var css_option_moveleft = {
        "position": "relative",
        "top": "0",
        "left": "-8px",
        "height": "8px"
    };
    var opts = jQuery.extend(defaults, options);
    return this.each(function(i, e){
        $e = jQuery(e);
        
        
        var brokenstring = location.pathname.split("/");
        
        
        css_option["background"] = "url(/" + brokenstring[1] + "/public/default/default/german/images/borderblue-top-right.png)";
        
        var top = jQuery("<div>").attr("id", "main_content_info_top");
        css_option_moveleft["background"] = "url(/" + brokenstring[1] + "/public/default/default/german/images/borderblue-top-left.png) 8px 0 no-repeat";
        top.css(css_option_moveleft);
        
        var topright = jQuery("<div>").attr("id", "top-r").css(css_option);
        topright.appendTo(top);
        
        
        css_option["background"] = "url(/" + brokenstring[1] + "/public/default/default/german/images/borderblue-bottom-right.png)";
        var bottom = jQuery("<div>").attr("id", "main_content_info_bottom");
        css_option_moveleft["background"] = "url(/" + brokenstring[1] + "/public/default/default/german/images/borderblue-bottom-left.png) 8px 0 no-repeat";
        bottom.css(css_option_moveleft);
        var bottomright = jQuery("<div>").attr("id", "bottom-r").css(css_option);
        bottomright.appendTo(bottom);
        if (defaults["padding"]) 
            jQuery($e).wrap("<div id='main_content_wrapper'></div>");
        
        if (defaults["bottom"]) 
            bottom.insertAfter($e);
        if (defaults["top"]) 
            top.insertBefore($e);
        
        
    });
};
