function GS(cb) {

	var that=this;
	var depth=6; 
	var containers=[];
	var colors=['#cacaca','#d0d0d0','#dcdcdc','#eaeaea','#f6f6f6','#fcfcfc'];
	var check_block=(cb === undefined ? false : cb);

	this.position=function() {

		var i;
		var x;
		var shadowdiv;
		if(containers.length>0) {

			for (i=containers.length-1;i >=0 ; i--) {

				for (x=depth-1; x >= 0;x--) {
					shadowdiv=document.getElementById('shadow'+i+'_'+x);
					if(check_block && (containers[i].style.display !== 'block') ) { continue; } 
					shadowdiv.style.display='block';
					shadowdiv.style.width = containers[i].offsetWidth + x + 1 - depth  + 'px';
					shadowdiv.style.height = containers[i].offsetHeight + x + 1 - depth + 'px';
					shadowdiv.style.left = containers[i].offsetLeft + depth + 'px';
					shadowdiv.style.top = containers[i].offsetTop + depth + 'px';
				}
			}
		}
	};

	var a = document.all ? document.all : document.getElementsByTagName('*');
	var newSd;
	var x;
	for (var i = 0;i < a.length;i++) {

		if (a[i].className !== 'shadow') { continue; }
		for (x=depth-1; x >=0 ;x--){

			newSd = document.createElement("DIV");
			newSd.className = "shadow_inner";
			newSd.id="shadow"+containers.length+"_"+x; //Each shadow DIV has an id of "shadowL_X" (L=index of target element, X=index of shadow (depth) 
			newSd.style.backgroundColor=colors[x]; //default shadow color if none specified
			document.body.appendChild(newSd);
		}
		containers[containers.length]=a[i];
	}
	that.position();
	window.onresize=function(){ window.location=window.location.pathname; };
}
