function format(str) {
    for (var i = 1; i < arguments.length; i++)
        str = str.replace(new RegExp('\\{' + (i - 1) + '\\}', 'g'), arguments[i]);

    return str;
}


function supportsBoxShadow() {
  var s = document.body.style;
  return s.WebkitBoxShadow !== undefined || s.MozBoxShadow !== undefined;
}

//$(document.body).addClass("withBoxShadow");

function applyShadow() {   
    // this doesn't work in old Operas
    if ($.browser.opera && parseFloat($.browser.version) < 9.5 && this.nodeName.toUpperCase() == "A")
        return;

    if (supportsBoxShadow()) // we already got a CSS shadow
        return;
    
    var element = $(this).css('position', 'relative');
    
    var steps = 3, start = 170, end = 220, offset = 0;

    var shadow = [];
    for (var i = 0; i < steps; ++i) {
        var c = parseInt(start + i * (end - start) / (steps - 1));
        var template = '<div class="dynamicallyAddedShadow" style="position:absolute;overflow:hidden;background-color:rgb(' + [c, c, c].join(',') + ');margin:0;padding:0;height:{0};width:{1};{2}"></div>';
        
        shadow.push(format(template, 1 + 'px', '100%',
                           'left:' + (i + 1) + 'px;' +
                           'bottom:' + (-(i + offset)) + 'px'));
        shadow.push(format(template, '100%', 1 + 'px',
                           'top:' + (i + 1) + 'px;' +
                           'right:' + (-(i + offset)) + 'px'));
    }

    element.find("div.dynamicallyAddedShadow").remove();
    element.append(shadow.join(""));
}





$(document).ready(function() 
{
	$('div.shadow').each(applyShadow);
});

