function SocioFluidDock(node, imageDetails, minimumSize, maximumSize, range, growDir, hintPos, newWindow) {
	var growDirConfig = growDir;
	var hintPosConfig = hintPos;
	var iconsNode = document.createElement('div');
	node.appendChild(iconsNode);
	iconsNode.style.textAlign = 'center';
	iconsNode.style.height = maximumSize + 'px';
	var maximumWidth = 0;
	var scale = 0;
	var closeTimeout = null;
	var closeInterval = null;
	var openInterval = null;
	var images = [];
	var hints = [];
	var iconNodes = [];
	var iconSizes = [];
	for (var i = 0; i < imageDetails.length; i++) {
	  if (!imageDetails[i]) break;
		var link = document.createElement('a');
		link.setAttribute("href", imageDetails[i].url);
		if (newWindow) link.setAttribute("target", "_blank");
		iconNodes[i] = document.createElement('img');
		iconNodes[i].style.position = 'relative';
		iconNodes[i].style.border = 'none';
		iconSizes[i] = minimumSize;
		updateIconProperties(i);
		link.appendChild(iconNodes[i]);
		iconsNode.appendChild(link);
		if (iconNodes[i].addEventListener) {
			iconNodes[i].addEventListener('mousemove', processMouseMove, false);
			iconNodes[i].addEventListener('mouseout', processMouseOut, false)
		} else if (iconNodes[i].attachEvent) {
			iconNodes[i].attachEvent('onmousemove', processMouseMove);
			iconNodes[i].attachEvent('onmouseout', processMouseOut)
		}
		var image = document.createElement('img');
		image.setAttribute('src', imageDetails[i].name + minimumSize + '.png');
		images.push(image);
		var image = document.createElement('img');
		image.setAttribute('src', imageDetails[i].name + maximumSize + '.png');
		images.push(image);
		hints.push(imageDetails[i].hint);
		if (hint == null && hintPosConfig != 'none') {
			var hint = document.createElement('div');
			hint.style.position = 'absolute';
			hint.style.display = 'block';
			hint.style.left = '20px';
			hint.innerHTML = '';
			if (hintPosConfig == 'up') hint.style.top = -20 + 'px';
			else hint.style.top = maximumSize + 'px';
			node.appendChild(hint)
		}
	}
	function updateIconProperties(index) {
		var size = minimumSize + scale * (iconSizes[index] - minimumSize);
		var thesize = minimumSize;
		if (minimumSize < size) thesize = maximumSize;
		if (size == maximumSize) {} else {
			iconNodes[index].setAttribute('src', imageDetails[index].name + thesize + '.png')
		}
		iconNodes[index].setAttribute('width', size);
		iconNodes[index].setAttribute('height', size);
		if (growDirConfig == 'up') {
			iconNodes[index].style.marginTop = Math.round(maximumSize - size) + 'px'
		} else if (growDirConfig == 'down') {
			iconNodes[index].style.marginTop = '0px';
			iconNodes[index].style.marginBottom = Math.round(maximumSize - size) + 'px'
		} else {
			iconNodes[index].style.marginTop = Math.round((maximumSize - size) / 2) + 'px';
			iconNodes[index].style.marginBottom = Math.round((maximumSize - size) / 2) + 'px'
		}
	}
	function processMouseMove(e) {
		window.clearTimeout(closeTimeout);
		closeTimeout = null;
		window.clearInterval(closeInterval);
		closeInterval = null;
		if (scale != 1 && !openInterval) {
			openInterval = window.setInterval(function () {
				if (scale < 1) scale += 0.125;
				if (scale >= 1) {
					scale = 1;
					window.clearInterval(openInterval);
					openInterval = null
				}
				for (var i = 0; i < iconNodes.length; i++) {
					updateIconProperties(i)
				}
			},
			20)
		}
		if (!e) e = window.event;
		var target = e.target || e.srcElement;
		var index = 0;
		while (iconNodes[index] != target) index++;
		var across = (e.layerX || e.offsetX) / iconSizes[index];
		if (across) {
			var currentWidth = 0;
			for (var i = 0; i < iconNodes.length; i++) {
				if (i < index - range || i > index + range) {
					iconSizes[i] = minimumSize
				} else if (i == index) {
					iconSizes[i] = maximumSize
				} else if (i < index) {
					iconSizes[i] = minimumSize + Math.round((maximumSize - minimumSize - 1) * (Math.cos((i - index - across + 1) / range * Math.PI) + 1) / 2);
					currentWidth += iconSizes[i]
				} else {
					iconSizes[i] = minimumSize + Math.round((maximumSize - minimumSize - 1) * (Math.cos((i - index - across) / range * Math.PI) + 1) / 2);
					currentWidth += iconSizes[i]
				}
				if (hint != null && hints != null && hintPosConfig != 'none') {
					hint.style.display = 'block';
					var dist = 0;
					for (var ii = 0; ii < index; ii++) dist += iconSizes[ii];
					if (hints[index].length <= 6) dist += (8 - hints[index].length) * 2;
					hint.style.left = dist + 'px';
					hint.innerHTML = hints[index]
				}
			}
			if (currentWidth > maximumWidth) maximumWidth = currentWidth;
			if (index >= range && index < iconSizes.length - range && currentWidth < maximumWidth) {
				iconSizes[index - range] += Math.floor((maximumWidth - currentWidth) / 2);
				iconSizes[index + range] += Math.ceil((maximumWidth - currentWidth) / 2)
			}
			for (var i = 0; i < iconNodes.length; i++) updateIconProperties(i)
		}
	}
	function processMouseOut() {
		if (hint != null) {
			hint.style.display = 'none';
			hint.innerHTML = ''
		}
		if (!closeTimeout && !closeInterval) {
			closeTimeout = window.setTimeout(function () {
				closeTimeout = null;
				if (openInterval) {
					window.clearInterval(openInterval);
					openInterval = null
				}
				closeInterval = window.setInterval(function () {
					if (scale > 0) scale -= 0.125;
					if (scale <= 0) {
						scale = 0;
						window.clearInterval(closeInterval);
						closeInterval = null
					}
					for (var i = 0; i < iconNodes.length; i++) {
						updateIconProperties(i)
					}
				},
				20)
			},
			100)
		}
	}
}

var thisUrl = encodeURIComponent(location.href);
var thisTitle = encodeURIComponent(document.title);

function createDockParameters(name){    return [ { name:"http://swami-center.org/picnew/sf/digg_",hint:"Digg",url:"http://digg.com/submit?phase=2&url="+thisUrl+"&title="+thisTitle+""},{ name:"http://swami-center.org/picnew/sf/stumbleupon_",hint:"StumbleUpon",url:"http://www.stumbleupon.com/submit?url="+thisUrl+"&title="+thisTitle+""},{ name:"http://swami-center.org/picnew/sf/delicious_",hint:"delicious",url:"http://del.icio.us/post?url="+thisUrl+"&title="+thisTitle+""},{ name:"http://swami-center.org/picnew/sf/myspace_",hint:"Myspace",url:"http://www.myspace.com/Modules/PostTo/Pages/?u="+thisUrl+"&t="+thisTitle+""},{ name:"http://swami-center.org/picnew/sf/facebook_",hint:"Facebook",url:"http://www.facebook.com/sharer.php?u="+thisUrl+"&p="+thisTitle+""},{ name:"http://swami-center.org/picnew/sf/yahoobuzz_",hint:"Yahoo Buzz",url:"http://buzz.yahoo.com/submit?submitUrl="+thisUrl+"&submitHeadline="+thisTitle+""},{ name:"http://swami-center.org/picnew/sf/twitter_",hint:"Twitter",url:"http://twitter.com/home?status=Reading:"+thisUrl+""},];}  var dock = new SocioFluidDock( document.getElementById("sociofluid"),	createDockParameters(),	24,	32,	2, "up", "down", false);

