/**
 * RUZEE.ShadedBorder 0.6.2
 * (c) 2006 Steffen Rusitschka
 *
 * RUZEE.ShadedBorder is freely distributable under the terms of an MIT-style license.
 * For details, see http://www.ruzee.com/
 */


		var RUZEE = window.RUZEE || {};
		
		RUZEE.ShadedBorder = {
		
		create: function(opts) {
		  var isie = /msie/i.test(navigator.userAgent) && !window.opera;
		  var isie6 = isie && !window.XMLHttpRequest;
		  function sty(el, h) {
			for(k in h) {
			  if (/ie_/.test(k)) {
				if (isie) el.style[k.substr(3)]=h[k];
			  } else el.style[k]=h[k];
			}
		  }
		  function crdiv(h) {
			var el=document.createElement("div");
			el.className = "sb-gen";
			sty(el, h);
			return el;
		  }
		  function op(v) {
			v = v<0 ? 0 : v;
			if (v>0.99999) return "";
			return isie ? " filter:alpha(opacity=" + (v*100) + ");" : " opacity:" + v + ';';
		  }
		
		  var sr = opts.shadow || 0;
		  var r = opts.corner || 0;
		  var bor = 0;
		  var bow = opts.border || 0;
		  var boo = opts.borderOpacity || 1;
		  var shadow = sr != 0;
		  var lw = r > sr ? r : sr;
		  var rw = lw;
		  var th = lw;
		  var bh = lw;
		  if (bow > 0) {
			bor = r;
			r = r - bow;
		  }
		  var cx = r != 0 && shadow ? Math.round(lw/3) : 0;
		  var cy = cx;
		  var cs = Math.round(cx/2);
		  var iclass = r > 0 ? "sb-inner" : "sb-shadow";
		  var sclass = "sb-shadow";
		  var bclass = "sb-border";
		  var edges = opts.edges || "trlb";
		  if (!/t/i.test(edges)) th=0;
		  if (!/b/i.test(edges)) bh=0;
		  if (!/l/i.test(edges)) lw=0;
		  if (!/r/i.test(edges)) rw=0;
		
		  var p = { position:"absolute", left:"0", top:"0", width:lw + "px", height:th + "px", 
					ie_fontSize:"1px", overflow:"hidden", margin:"0", padding:"0" }; var tl = crdiv(p);
		  delete p.left; p.right="0"; p.width=rw + "px"; var tr = crdiv(p);
		  delete p.top; p.bottom="0"; p.height=bh + "px"; var br = crdiv(p);
		  delete p.right; p.left="0"; p.width=lw + "px"; var bl = crdiv(p);
		
		  var tw = crdiv({ position:"absolute", width:"100%", height:th + "px", ie_fontSize:"1px",
						   top:"0", left:"0", overflow:"hidden", margin:"0", padding:"0" });
		  var t = crdiv({ position:"relative", height:th + "px", ie_fontSize:"1px",
						  margin:"0 "+ rw + "px 0 " + lw + "px", overflow:"hidden", padding:"0" });
		  tw.appendChild(t);
		
		  var bw = crdiv({ position:"absolute", left:"0", bottom:"0", width:"100%", height:bh + "px", 
						   ie_fontSize:"1px", overflow:"hidden", margin:"0", padding:"0" });
						   
		  var b = crdiv({ position:"relative", height:bh + "px", ie_fontSize:"1px",
						  margin:"0 "+ rw + "px 0 " + lw + "px", overflow:"hidden", padding:"0" });
						  
		  bw.appendChild(b);
		
		  var mw = crdiv({ position:"absolute", top:(-bh)+"px", left:"0", width:"100%", height:"100%",
						   overflow:"hidden", ie_fontSize:"1px", padding:"0", margin:"0" });
		
		  function corner(el,t,l) {
			var w = l ? lw : rw;
			var h = t ? th : bh;
			var s = t ? cs : -cs;
			var dsb = []; var dsi = []; var dss = [];
			
			var xp=0; var xd=1; if (l) { xp=w-1; xd=-1; }
			for (var x=0; x<w; ++x) {
			  var yp=h-1; var yd=-1; if (t) { yp=0; yd=1; }
			  var finished=false;
			  for (var y=h-1; y>=0 && !finished; --y) {
				var div = '<div style="position:absolute; top:' + yp + 'px; left:' + xp + 'px; ' +
						  'width:1px; height:1px; overflow:hidden; margin:0; padding:0;';
		
				var xc = x - cx; var yc = y - cy - s;
				var d = Math.sqrt(xc*xc+yc*yc);
				var doShadow = false;
		
				if (r > 0) {
				  // draw border
				  if (xc < 0 && yc < bor && yc >= r || yc < 0 && xc < bor && xc >= r) {
					dsb.push(div + op(boo) + '" class="' + bclass + '"></div>');
				  } else
				  if (d<bor && d>=r-1 && xc>=0 && yc>=0) {
					var dd = div;
					if (d>=bor-1) {
					  dd += op((bor-d)*boo);
					  doShadow = true;
					} else dd += op(boo);
					dsb.push(dd + '" class="' + bclass + '"></div>');
				  }
				  
				  // draw inner
				  var dd = div + ' z-index:2;' + (t ? 'background-position:0 -' + (r-yc-1) + 'px;' : 'background-image:none;');
				  var finish = function() {
					if (!t) dd = dd.replace(/top\:\d+px/, "top:0px");
					dd = dd.replace(/height\:1px/, "height:" + (y+1) + "px");
					dsi.push(dd + '" class="' + iclass + '"></div>');
					finished = true;
				  };
				  if (xc < 0 && yc < r || yc < 0 && xc < r) {
					finish();
				  } else
				  if (d<r && xc>=0 && yc>=0) {
					if (d>=r-1) {
					  dd += op(r-d);
					  doShadow = true;
					  dsi.push(dd + '" class="' + iclass + '"></div>');
					} else {
					  finish();
					}
				  } else doShadow = true;
				} else doShadow = true;
				
				// draw shadow
				if (sr > 0 && doShadow) {
				  d = Math.sqrt(x*x+y*y);
				  if (d<sr) {
					dss.push(div + ' z-index:0; ' + op(1-(d/sr)) + '" class="' + sclass + '"></div>');
				  }
				}
				yp += yd;
			  }
			  xp += xd;
			}
			el.innerHTML = dss.concat(dsb.concat(dsi)).join('');
		  }
		  
		  function mid(mw) {
			var ds = [];
		
			ds.push('<div style="position:relative; top:' + (th+bh) + 'px; height:2048px; ' +
					' margin:0 ' + (rw-r-cx) + 'px 0 ' + (lw-r-cx) + 'px; ' +
					' padding:0; overflow:hidden;' +
					' background-position:0 ' + (th > 0 ? -(r+cy+cs) : '0') + 'px;"' +
					' class="' + iclass + '"></div>');
		
			var dd = '<div style="position:absolute; width:1px;' +
				' top:' + (th+bh) + 'px; height:2048px; padding:0; margin:0;';
			if (sr>0) {
			  for (var x=0; x<lw-r-cx; ++x) {
				ds.push(dd + ' left:' + x + 'px;' + op((x+1.0)/lw) + 
					'" class="' + sclass + '"></div>');
			  }
		
			  for (var x=0; x<rw-r-cx; ++x) {
				ds.push(dd + ' right:' + x + 'px;' + op((x+1.0)/rw) + 
					'" class="' + sclass + '"></div>');
			  }
			}
		
			if (bow > 0) {
			  var su = ' width:' + bow + 'px;' + op(boo) + '" class="' + bclass + '"></div>';
			  ds.push(dd + ' left:' + (lw-bor-cx) + 'px;' + su);
			  ds.push(dd + ' right:' + (rw-bor-cx) + 'px;' + su);
			}
		
			mw.innerHTML = ds.join('');
		  }
		
		  function tb(el, t) {
			var ds = [];
			var h = t ? th : bh;
			var dd = '<div style="height:1px; overflow:hidden; position:absolute; margin:0; padding:0;' +
				' width:100%; left:0px; ';
			var s = t ? cs : -cs;
			for (var y=0; y<h-s-cy-r; ++y) {
			  if (sr>0) ds.push(dd + (t ? 'top:' : 'bottom:') + y + 'px;' + op((y+1)*1.0/h) + 
				  '" class="' + sclass + '"></div>');
			}
			if (y >= bow) {
			  ds.push(dd + (t ? 'top:' : 'bottom:') + (y - bow) + 'px;' + op(boo) +
				  ' height:' + bow + 'px;" class="' + bclass + '"></div>');
			}
		
			ds.push(dd + (t ? 'background-position-y:0; top:' : 
							  'background-image:none; bottom:') + y + 'px;' +
				' height:' + (r+cy+s) + 'px;" class="' + iclass + '"></div>');
		
			el.innerHTML = ds.join('');
		  }
		
		  corner(tl, true, true); corner(tr, true, false);
		  corner(bl, false, true); corner(br, false, false);
		  mid(mw); tb(t, true); tb(b, false);
		  needsCloning = false;
		
		  return {
			render: function(el) {
			  if (typeof el == 'string') el = document.getElementById(el);
			  if (el.length != undefined) {
				for (var i=0; i<el.length; ++i) this.render(el[i]);
				return;
			  }
			  el.className += " sb";
			  sty(el, { position:"relative", background:"transparent" });
		
			  // remove generated children
			  var node = el.firstChild;
			  while (node) {
				var nextNode = node.nextSibling;
				if (node.nodeType == 1 && node.className == 'sb-gen')
				  el.removeChild(node);
				node = nextNode;
			  }
		
			  var iel = el.firstChild;
		
			  var twc = needsCloning ? tw.cloneNode(true) : tw;
			  var mwc = needsCloning ? mw.cloneNode(true) : mw;
			  var bwc = needsCloning ? bw.cloneNode(true) : bw;
			  var tlc = needsCloning ? tl.cloneNode(true) : tl;
			  var trc = needsCloning ? tr.cloneNode(true) : tr;
			  var blc = needsCloning ? bl.cloneNode(true) : bl;
			  var brc = needsCloning ? br.cloneNode(true) : br;
			  
			  el.insertBefore(tlc, iel); el.insertBefore(trc, iel);
			  el.insertBefore(blc, iel); el.insertBefore(brc, iel);
			  el.insertBefore(twc, iel); el.insertBefore(mwc, iel);
			  el.insertBefore(bwc, iel);
		
			  if (isie6) {
				el.onmouseover=function() { this.className += " hover"; }
				el.onmouseout=function() { this.className = this.className.replace(/ hover/,""); }
			  }
			  if (isie) {
				function resize() {
				  twc.style.width = bwc.style.width = mwc.style.width = el.offsetWidth + "px";
				  if (isie6) {
					mwc.firstChild.style.height = el.offsetHeight + "px";
				  } else {
					for (var i=0; i<mwc.childNodes.length; ++i) {
					  mwc.childNodes[i].style.height = (el.offsetHeight - bh - th)  + "px";
					}
				  }
				  trc.style.right = brc.style.right = null;
				  trc.style.left  = brc.style.left  = (el.offsetWidth - rw) + "px";
				}
				el.onresize=resize;
				resize();
			  }
			  needsCloning = true;
			}
		  };
		}
		}
		
		// add our styles to the document
		document.write('\
		  <style type="text/css">\
		  .sb, .sbi, .sb *, .sbi * { position:relative; z-index:1; }\
		  * html .sb, * html .sbi { height:1%; }\
		  .sbi { display:inline-block; }\
		  .sb-inner { background:#fff; }\
		  .sb-shadow { background:#4c4c4c; }\
		  .sb-border { background:#bbb; }\
		  </style>\
		');

        var myBorder = RUZEE.ShadedBorder.create({ corner:1, shadow:11 });
		myBorder.render('sadrzaj');

