jQuery.voormedia = {};

// DROPDOWN MENU

jQuery.voormedia.dropdown = {
	options: {
		linkSelector: "a.parent",
		dropdownSelector: "div.dropdownmenu",
		activeClass: "active",
		hideClass: "hidden",
		align: "left"
	},
	initialize: function(options) {
		this.options = jQuery.extend({}, this.options, options);
		this.initialized = false;
		var container = this;
		var link = jQuery(container).find(container.options.linkSelector);
		var dropdown = jQuery(container).find(container.options.dropdownSelector);
		var activeClass = container.options.activeClass;
		var hideClass = container.options.hideClass;
		$(container).hover(function(){
			link.addClass(activeClass);
			dropdown.removeClass(hideClass);
		}, function(){
			link.removeClass(activeClass);
			dropdown.addClass(hideClass);
		});
		jQuery(container).mouseover(function(){
			if(!container.initialized) {
				container.initialized = true;
				if (container.options.align=="right") {
					if (dropdown.width()<link.outerWidth()-2) {
						dropdown.width(link.outerWidth()-2);
					} else {
						dropdown.css({ "margin-left":"-"+(dropdown.width()-link.outerWidth()+2)+"px"} );
					}
				}
				/* $("head").prepend('<script src="/relevant/javascript/atlassianheader.js" type="text/javascript"></script>'); */
			}
		});
	}
};

jQuery(function() {
	jQuery("div.dropdown").each(function() {
		jQuery(this).extend(jQuery.voormedia.dropdown).initialize({
			align: "right"
		});
	});

	jQuery("li.ajs-menu-item").each(function() {
		jQuery(this).extend(jQuery.voormedia.dropdown).initialize({
			linkSelector: "a.ajs-menu-title",
			dropdownSelector: "div.ajs-drop-down",
			align: "right"
		});
	});
});

jQuery(document).ready(function() {
	jQuery("#quick-search-query").attr({autocomplete: "off"});
});


// ROUNDED CORNERS

// Rounded corners Javascripts
// Contributors
// Ilkka Huotari at http://www.editsite.net
// Mathieu 'p01' HENRI at http://www.p01.org/
// http://seky.nahory.net/2005/04/rounded-corners/
// Steven Wittens at http://www.acko.net/anti-aliased-nifty-corners
// Original Nifty Corners by Alessandro Fulciniti at http://pro.html.it/esempio/nifty/
// Rewritten syntax to Camel Case 2009-12-26

function niftyCheck() {
    if(!document.getElementById || !document.createElement) {
        return false;
    }
    var b = navigator.userAgent.toLowerCase();
    if (b.indexOf("msie 5") > 0 && b.indexOf("opera") == -1) {
        return false;
    }
    return true;
}

function roundedCorners(className, sizex, sizey, sizex_b, sizey_b) {
    var bk;
    if (!niftyCheck()) return;
    if (typeof(sizex_b) == 'undefined') sizex_b = sizex;
    if (typeof(sizey_b) == 'undefined') sizey_b = sizey;
    var v = getElements(className);
    var l = v.length;
    for (var i = 0; i < l; i++) {
        color = getCurrentStyle(v[i],"background-color","transparent");
        bk = getCurrentStyle(v[i].parentNode,"background-color","transparent");
        addRounded(v[i], bk, color, sizex, sizey, true);
        addRounded(v[i], bk, color, sizex_b, sizey_b, false);
    }
}

Math.sqr = function (x)
{
    return x*x;
};

function blendColor(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)) );
    return '#' + ('0'+Math.round(ca[0] + (cb[0] - ca[0])*alpha).toString(16)).slice(-2).toString(16)
               + ('0'+Math.round(ca[1] + (cb[1] - ca[1])*alpha).toString(16)).slice(-2).toString(16)
               + ('0'+Math.round(ca[2] + (cb[2] - ca[2])*alpha).toString(16)).slice(-2).toString(16);
    return '#' + ('0'+Math.round(ca[0] + (cb[0] - ca[0])*alpha).toString(16)).slice(-2).toString(16)
               + ('0'+Math.round(ca[1] + (cb[1] - ca[1])*alpha).toString(16)).slice(-2).toString(16)
               + ('0'+Math.round(ca[2] + (cb[2] - ca[2])*alpha).toString(16)).slice(-2).toString(16);
}

function addRounded(el, bk, color, sizex, sizey, top)
{
    if (!sizex && !sizey)	return;
    var i, j;
    var d = document.createElement("div");
    d.style.backgroundColor = bk;
    var lastarc = 0;
    for (i = 1; i <= sizey; i++) {
        var coverage, arc2, arc3;
        // Find intersection of arc with bottom of pixel row
        arc = Math.sqrt(1.0 - Math.sqr(1.0 - i / sizey)) * sizex;
        // Calculate how many pixels are bg, fg and blendColored.
        var n_bg = sizex - Math.ceil(arc);
        var n_fg = Math.floor(lastarc);
        var n_aa = 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.overflow='hidden';
        // Make a wrapper per anti-aliased pixel (at least one)
        for (j = 1; j <= n_aa; j++) {
            // Calculate coverage per pixel
            // (approximates circle by a line 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.sqr((sizex - n_bg - j + 1) / sizex)) * sizey;
                    coverage = (arc2 - (sizey - i)) * (arc - n_fg - n_aa + 1) * .5;
                    // Coverage is incorrect. Why?
                    coverage = 0;
                }
            } else if (j == n_aa) {
                // Last in a run
                arc2 = Math.sqrt(1.0 - Math.sqr((sizex - n_bg - j + 1) / sizex)) * sizey;
                coverage = 1.0 - (1.0 - (arc2 - (sizey - i))) * (1.0 - (lastarc - n_fg)) * .5;
            } else {
                // Middle of a run
                arc3 = Math.sqrt(1.0 - Math.sqr((sizex - n_bg - j) / sizex)) * sizey;
                arc2 = Math.sqrt(1.0 - Math.sqr((sizex - n_bg - j + 1) / sizex)) * sizey;
                coverage = ((arc2 + arc3) * .5) - (sizey - i);
            }
            x.style.backgroundColor = blendColor(bk, color, coverage);
            if (top) y.appendChild(x);
            else y.insertBefore(x, y.firstChild);
            y = x;
            var x = document.createElement("div");
            x.style.height='1px';
            x.style.overflow='hidden';
            x.style.margin = "0px 1px";
        }
        x.style.backgroundColor = color;
        if (top) y.appendChild(x);
        else y.insertBefore(x, y.firstChild);
        lastarc = arc;
    }
    if (top) el.insertBefore(d, el.firstChild);
    else el.appendChild(d);
}

function getElements(className)
{
    var elements = [];
    var el = document.getElementsByTagName('DIV');
    var regexp=new RegExp("\\b"+className+"\\b");
    for (var i = 0; i < el.length; i++) {
        if (regexp.test(el[i].className)) elements.push(el[i]);
    }
    return elements;
}

function getCurrentStyle(element,property,not_accepted)
{
    var ee,i,val,apr;
    try
    {
        var cs=document.defaultView.getComputedStyle(element,'');
        val=cs.getPropertyValue(property);
    }
    catch(ee)
    {
        if(element.currentStyle) {
            apr=property.split("-");
            for(i=1;i<apr.length;i++) apr[i]=apr[i].toUpperCase();
            apr=apr.join("");
            val=element.currentStyle.getAttribute(apr);
        }
    }
    if ((val.indexOf("rgba") > -1 || val==not_accepted) && element.parentNode) {
        if (element.parentNode != document) val=getCurrentStyle(element.parentNode,property,not_accepted);
        else val = '#FFFFFF';
    }
    if (val.indexOf("rgb") > -1 && val.indexOf("rgba") == -1) val = rgb2hex(val);
    if (val.length == 4) val = '#'+val.substring(1,1)+val.substring(1,1)+val.substring(2,1)+val.substring(2,1)+val.substring(3,1)+val.substring(3,1);
    return val;
}

function rgb2hex(value)
{
    var x = 255;
    var hex = '';
    var i;
    var regexp=/([0-9]+)[, ]+([0-9]+)[, ]+([0-9]+)/;
    var array=regexp.exec(value);
    for(i=1;i<4;i++) hex += ('0'+parseInt(array[i]).toString(16)).slice(-2);
    return '#'+hex;
}

jQuery(document).ready(function() {
	if (jQuery.browser.msie) {
		roundedCorners('rounded', 6, 6);
		jQuery(".rounded").css("padding","0");
	}
});
