/*        mDock - Version 5.1      */
/* * * * * * * * * * * * * * * * * */

var md_dockwidth;
var md_label;
var md_oldtitle;
var md_isPreloading = false;
var md_bouncing = new Array();
var md_cmenu;
var md_mouseouttimer;

var md_cmenu_oldbodyclick;
var md_isLocked = false;

var md_shrink1 = new Array();
var md_shrink2 = new Array();

md_label_shadowText = new Array();
md_label_shadowText_text = new Array();


//var md_docksizetimers = new Array();

if(!md_auto_zIndex) { var md_auto_zIndex = true; }
if(!md_null_gif) { var md_null_gif = "null.gif"; }

if(!md_show_labels) { var md_show_labels = false; }
if(md_fade_labels && md_fade_labels == true) { var md_labelopacitytimers = new Array(); }
if(!md_label_shadows) { var md_label_shadows = false; }
if(!md_label_shadow_offsetTop) { var md_label_shadow_offsetTop=0; }
if(!md_label_shadow_offsetLeft) { var md_label_shadow_offsetLeft=0; }
if(!md_label_shadow_width) { var md_label_shadow_width = 2; }
if(!md_label_shadow_opacity) { var md_label_shadow_opacity = 50; }

var md_arVersion = navigator.appVersion.split("MSIE")
var md_ieversion = parseFloat(md_arVersion[1])
var IE = false;
if ((md_ieversion >= 5.5) && (md_ieversion < 7))
	IE = true;
var iesstimeout;

if(navigator.userAgent.toLowerCase().indexOf("safari") > -1 || IE == true)
	md_preload_images = false;

if(md_preload_images == "undefined")
	var md_preload_images = true;
else {
	var md_images_loaded = false;
	var md_icon_images = new Array();
	//var md_icon_sources = new Array();
	var md_icons_loaded = 0;
	//var md_loading_icon_preload = new Image();
	//md_loading_icon_preload.src = md_loading_icon;
}

if(!md_spacer_image) { var md_spacer_image=""; }

function md_preload(preloaded) {
	if(!preloaded || preloaded!=true) {
		md_loading_icon_preload = new Image();
		md_loading_icon_preload.onload = function() { md_preload(true); };
		md_loading_icon_preload.onerror = function() { md_preload(true); throw("mDock2 > Could not locate md_loading_icon! Src="+this.src); };
		md_loading_icon_preload.src = md_loading_icon;
		return false;
	}
	
	md_isPreloading = true;
	md_oldtitle = document.title;
	md_icons_loaded = 0;
	var i = 0;
	for(var img in md_icons) {
		md_icon_images[img] = new Image();
		md_icon_images[img].onload = function() { md_preload_check(this,true); };
		md_icon_images[img].onerror = function() { md_preload_check(this,false); };
		md_icon_images[img].src = md_icons[img];
			//md_icon_images[img].onerror = function() { this.src = "mDock/null.gif"; };
		//md_icon_sources[img.src] = i;
		i++;
	}
}

function md_preload_check(icon,loaded) {
	//if (img.complete || (typeof img.width != "undefined" && img.width > 0)) {
		md_icons_loaded += 1;
		var image;
		for(var c=0; c<md_icon_images.length; c++)
			if(md_icon_images[c].src == icon.src)
				image = c;
		
		if(loaded==false)
			throw("mDock > Could not load icon "+md_icon_images.indexOf(icon)+". src="+icon.src);
		
		if(document.getElementById('md_icon_img_'+image) && document.getElementById('md_icon_img_'+image).src) {
			if(loaded==true)
				document.getElementById('md_icon_img_'+image).src = icon.src;
			else
				document.getElementById('md_icon_img_'+image).src = md_default_icon;
		}
		//md_icons_loaded==md_icons.length?mDock_invoke():document.title="Loading mDock ["+(100*md_icons_loaded/md_icons.length)+"%]";
		//document.getElementById('md_icon_img_'+md_icon_images.indexOf(this)).src = this.src;
		if(window.md_delayedTitleWriter) {
			clearTimeout(window.md_delayedTitleWriter);
			window.md_delayedTitleWriter = null;
		}
		md_icons_loaded==md_icons.length?document.title=md_oldtitle:document.title="Loading mDock ["+Math.round(100*md_icons_loaded/md_icons.length)+"%]";
		window.md_delayedTitleWriter = setTimeout("window.title = \""+md_oldtitle+"\";", 2000);
	if(md_icons_loaded == md_icons.length)
		md_isPreloading = false;
	//}
	//else {
	//	md_icons_loaded += 1;
	//	document.getElementById('md_icon_img_'+md_icon_sources[this.src]).src = "mDock/null.gif";
	//	md_icons_loaded==md_icons.length?document.title=md_oldtitle:document.title="Loading mDock ["+Math.round(100*md_icons_loaded/md_icons.length)+"%]";
	//}
}

function mDock_invoke(writeto) {
	md_oldtitle = window.title;
	
	if(md_preload_images && md_icons_loaded == 0)
		md_preload();
	
	//window.title = md_oldtitle;
	
	md_dockwidth = parseInt(md_icons.length*(md_normsize+12) + 12);
	
	var md_base = "<div id=\"mDock\" style=\"width:"+md_dockwidth+"px; height:"+(md_normsize+12)+"px; text-align:center; overflow:visible; display:block; position:relative; margin-left:auto; margin-right:auto; margin-top:0; overflow:visible;\">";

	md_base += md_createBase();

	md_base += "</div>";
	if(writeto==null)
		document.write(md_base);
	else
		writeto.innerHTML += md_base;
	
	var mDock = document.getElementById('mDock');
	if(md_auto_zIndex!=false)
		mDock.style.zIndex = "998";
	var mdz = parseInt(mDock.style.zIndex);
	document.getElementById('mDock_background').style.zIndex = mdz+1;
	for(var x=0; x<md_icons.length; x++)
		document.getElementById('md_icon_img_'+x).style.zIndex = mdz+2;
	
	/*
	md_dockwidth = 12;
	for(var q=0; q<md_icons.length; q++)
		md_dockwidth += parseInt(document.getElementById('md_icon_img_'+q).width) + 12;
	document.getElementById('mDock').style.width = md_dockwidth+"px";
	*/

	document.getElementById('mDock').onmouseover = md_mousemove;
	document.getElementById('mDock').onmousemove = md_mousemove;
	document.getElementById('mDock').onmouseout = md_mouseout;
	document.getElementById('mDock').onmousedown = md_mousedown;
	document.getElementById('mDock').oncontextmenu = function(e) { if(!e) e=window.event; if(e.returnValue) e.returnValue = false; if(e.preventDefault) e.preventDefault(); return false; }
	document.getElementById('mDock').onselectstart = function(e) { if(!e) e=window.event; if(e.returnValue) e.returnValue = false; if(e.preventDefault) e.preventDefault(); return false; }
	
	md_icons_loaded = 0;
}

function mDock_unload() {
	for(var i=0; i<md_icons.length; i++)
		document.getElementById("md_icon_img_"+i).parentNode.removeChild(document.getElementById("md_icon_img_"+i));
	
	if(md_show_labels && document.getElementById('md_label'))
		document.getElementById('md_label').parentNode.removeChild(document.getElementById('md_label'));

	for(var p in md_icon_images)
		p.src = null;
	
	md_icons_loaded = 0;	//required.
}

function md_mousemove(e) {
	if(md_isLocked == true)
		return false;
	
	if(IE) {
		if(iesstimeout)
			clearTimeout(iesstimeout);
		var iess = document.getElementsByTagName('select');
		for(var ies=0; ies<iess.length; iess++)
			iess[ies].style.visibility = "hidden";
	}

	if(!e){ e=window.event; }
	var mouseX, mouseY;
	if(e.pageX || e.pageY) { mouseX = e.pageX; mouseY = e.pageY; }
	else if(e.clientX || e.clientY) { mouseX = e.clientX+document.body.scrollLeft; mouseY = e.clientY+document.body.scrollTop; }
	
	var md = document.getElementById('mDock');
	var mdnode = md;
	var md_top = md.offsetTop;
	var md_left = md.offsetLeft;
	while(mdnode.parentNode) {	md_top += mdnode.offsetTop; mdnode = mdnode.parentNode; }
	
	var totalsize = 12;
	var smallestdist = md_magsize;
	var labelicon;

	/*
	var max = 0;
	for(var t=0; t<md_icons.length; t++)
		if(document.getElementById('md_icon_img_'+t).offsetWidth > max)
			max = document.getElementById('md_icon_img_'+t).offsetWidth;
	if(max == md_normsize && md_normsize != md_magsize)
		for(var q=md_normsize; q<=md_magsize; q++)
			setTimeout("md_magsize = "+q+";",100*(q-md_normsize) );
	*/
	
	for(var t=0; t<md_icons.length; t++) {
		var iconmiddle = document.getElementById('md_icon_img_'+t).offsetLeft + document.getElementById('md_icon_img_'+t).offsetWidth/2;
		var newsize = md_magsize-Math.abs(mouseX-md_left-iconmiddle)/md_grow_width>md_normsize?md_magsize-Math.abs(mouseX-md_left-iconmiddle)/md_grow_width:md_normsize;
		md_iconsize(('md_icon_img_'+t),newsize);
		totalsize += newsize + 12;
		if(Math.abs(mouseX-md_left-iconmiddle) < smallestdist) {
			smallestdist = Math.abs(mouseX-md_left-iconmiddle);
			labelicon = t;
		}
	}
	if(md_show_labels && md_show_labels==true) { 
		var labeliconobj = document.getElementById('md_icon_img_'+labelicon);
		if(!document.getElementById('md_label')) {
			md_label = document.createElement('span');
			md_label.setAttribute("id","md_label");
			md_label.setAttribute("class","md_label");
			md_label.className = "md_label";
			md_label.style.position = "absolute";
			md_label.style.whiteSpace = "nowrap";
			md_label.style.zIndex = parseInt(md.style.zIndex) + 1;
			md_label.style.visibility = "hidden";
			document.body.appendChild(md_label);
			if(md_fade_labels && md_fade_labels==true) {
				md_label_opacity = md_label_opacity?md_label_opacity:100;
				if(md_label_opacity<2) { md_label_opacity*=100; }
				md_label.style.opacity = '0';
				md_label.style.filter = 'alpha(opacity=0)';
				for(m=0; m<md_labelopacitytimers.length; m++)
					clearTimeout(md_labelopacitytimers[m]);
				for(var m=0; m<=md_label_opacity; m++)
					md_labelopacitytimers[m] = setTimeout("if(document.getElementById('"+md_label.id+"')) { document.getElementById('"+md_label.id+"').style.opacity='"+m/100+"'; document.getElementById('"+md_label.id+"').style.filter='alpha(opacity="+m+")'; }",m*10/md_label_fade_speed);
			}
		}
		if(!md_names[labelicon] || md_names[labelicon].length < 1)
			md_label.parentNode.removeChild(md_label);		//md_label.style.visibility = "hidden";
		else {
			if(!md_label_shadows)
				md_label.innerHTML = md_names[labelicon];		//md_label.style.visibility = "visible";
			else {	//shadow effect:
				/*
				var y = md_label_shadow_offsetTop;
				var x = md_label_shadow_offsetLeft;
				var w = md_label_shadow_width;
				if(md_label_shadow_opacity<2) { md_label_shadow_opacity*=100; }
				var ocode = IE?"filter:alpha(opacity="+md_label_shadow_opacity+");":"opacity:"+(md_label_shadow_opacity/100)+";";
				var i = md_names[labelicon];
				var t = "<span style='visibility:hidden;'>"+i+"</span>";
				t += "<span class='md_label_foreground' style='position:absolute; top:0px; left:0px; color:#FFFFFF; z-index:1;'>"+i+"</span>";
				t += "<span class='md_label_background' style='position:absolute; top:"+(-w+y)+"px; left:"+(-w+x)+"px; color:#000000; "+ocode+"'>"+i+"</span>";
				t += "<span class='md_label_background' style='position:absolute; top:"+(-w+y)+"px; left:"+x+"px; color:#000000; "+ocode+"'>"+i+"</span>";
				t += "<span class='md_label_background' style='position:absolute; top:"+y+"px; left:"+(-w+x)+"px; color:#000000; "+ocode+"'>"+i+"</span>";
				t += "<span class='md_label_background' style='position:absolute; top:"+(w+y)+"px; left:"+(w+x)+"px; color:#000000; "+ocode+"'>"+i+"</span>";
				t += "<span class='md_label_background' style='position:absolute; top:"+(w+y)+"px; left:"+x+"px; color:#000000; "+ocode+"'>"+i+"</span>";
				t += "<span class='md_label_background' style='position:absolute; top:"+y+"px; left:"+(w+x)+"px; color:#000000; "+ocode+"'>"+i+"</span>";
				t += "<span class='md_label_background' style='position:absolute; top:"+(w+y)+"px; left:"+(-w+x)+"px; color:#000000; "+ocode+"'>"+i+"</span>";
				t += "<span class='md_label_background' style='position:absolute; top:"+(-w+y)+"px; left:"+(w+x)+"px; color:#000000; "+ocode+"'>"+i+"</span>";
				md_label.innerHTML = t;
				*/
				md_label.innerHTML = md_label_getShadowText(labelicon);
			}
		}
		if(labeliconobj)
			md_label.style.left = (md_left + labeliconobj.offsetLeft + labeliconobj.offsetWidth/2 - md_label.offsetWidth/2) + "px";
		md_label.style.top = (md_top - (md_magsize - md_normsize) - md_label.offsetHeight) + "px";
		md_label.style.visibility = "visible";
	}
	
	///////////////////////////
	for(var q in md_shrink1)
		clearTimeout(md_shrink1[q]);
	for(var a in md_shrink2)
		clearTimeout(md_shrink2[a]);
	md_shrink1 = new Array();
	md_shrink2 = new Array();
	////////////////////////////
	
	document.getElementById('mDock').style.width = totalsize+'px';
}

function md_mouseout(e) {
	if(md_isLocked == true)
		return false;

	if(!e) { e=window.event; }
	var mouseX, mouseY;
	if(e.pageX || e.pageY) { mouseX = e.pageX; mouseY = e.pageY; }
	else if(e.clientX || e.clientY) { mouseX = e.clientX+document.body.scrollLeft; mouseY = e.clientY+document.body.scrollTop; }
	
	var md = document.getElementById('mDock');
	var mdnode = md;
	var top = md.offsetTop;
	var left = md.offsetLeft;
	while(mdnode.parentNode) {	top += mdnode.offsetTop; mdnode = mdnode.parentNode; }
	
	if(mouseX < (left + 20) || mouseX > (left+md.offsetWidth - 20) || mouseY < (top+md.offsetHeight - md_magsize + 10) || mouseY > (top+md.offsetHeight - 5) ) {

		for(var q in md_shrink1)
			clearTimeout(md_shrink1[q]);
		for(var a in md_shrink2)
			clearTimeout(md_shrink2[a]);
		md_shrink1 = new Array();
		md_shrink2 = new Array();

		var tot = 0;
		for(var t=0; t<md_icons.length; t++) {
			var currenticonwidth = document.getElementById('md_icon_img_'+t).style.width.substring(0,document.getElementById('md_icon_img_'+t).style.width.length-2);
			var i;
			for(i=0; i<currenticonwidth-md_normsize; i++)
				md_shrink1[md_shrink1.length] = setTimeout("md_iconsize('md_icon_img_"+t+"',"+(currenticonwidth-i)+");",i*8);
			tot += i;
			//md_iconsize('md_icon_img_'+t,md_normsize);
		}

		var currentdockwidth = document.getElementById('mDock').style.width.substring(0,document.getElementById('mDock').style.width.length-2);
		for(var x=0; x<tot; x++)
			md_shrink2[md_shrink2.length] = setTimeout("document.getElementById('mDock').style.width = '"+(currentdockwidth-x)+"px';",x*2);

		//document.getElementById('mDock').style.width = md_dockwidth+"px";
		
		if(md_show_labels && document.getElementById('md_label')  &&  md_fade_labels && md_fade_labels==true) {
			var m, copac;
			if(document.all) { copac = parseInt(document.getElementById('md_label').style.filter.substring(14,document.getElementById('md_label').style.filter.length-2)); }
			else { copac = parseFloat(document.getElementById('md_label').style.opacity)*100; }
			for(m=0; m<md_labelopacitytimers.length; m++)
				clearTimeout(md_labelopacitytimers[m]);
			for(m=0; m<copac; m++)
				md_labelopacitytimers[m] = setTimeout("if(document.getElementById('"+md_label.id+"')) { document.getElementById('"+md_label.id+"').style.opacity='"+(copac-m)/100+"'; document.getElementById('"+md_label.id+"').style.filter='alpha(opacity="+(copac-m)+")'; }",m*10/md_label_fade_speed);
			setTimeout("if(document.getElementById('"+md_label.id+"')) { document.getElementById('md_label').parentNode.removeChild(document.getElementById('md_label')); }",(m+1)*5);
		}
		else if(md_show_labels && document.getElementById('md_label'))
			document.getElementById('md_label').parentNode.removeChild(document.getElementById('md_label'));
	}
	if(IE)
		iesstimeout = setTimeout("var iess = document.getElementsByTagName('select'); for(var ies=0; ies<iess.length; iess++) {iess[ies].style.visibility = 'visible'; }",500);
}

function md_iconsize(icon,size,override) {
	if(!override)
		override = false;
	if(document.getElementById(icon).offsetWidth >= md_normsize || override == true) {
		//var oldsize = document.getElementById(icon).offsetWidth;
		//if(document.getElementById(icon).className.indexOf('md_spacer')==-1)
		document.getElementById(icon).style.height = size+"px";
		document.getElementById(icon).style.width = size+"px";
		document.getElementById(icon).style.marginTop = (-(size-md_normsize)+6) +"px";
	}
}

function md_createBase() {
	var md_base = "<div id=\"mDock_background\" style=\"position:absolute; bottom:0px; left:-4px; width:100%; height:"+(md_normsize+12)+"px;\"><span class=\"bg_left\"></span><span class=\"bg_middle\"></span><span class=\"bg_right\"></span></div>";
	for(var t=0; t<md_icons.length; t++) {
		md_label_getShadowText(t);
		var edgeicon = "";
		if(document.all) {
			if(t==md_icons.length-1)	{ edgeicon = " margin-right:-10px;"; }
			else if(t==0)	{ edgeicon = " margin-left:-10px;"; }
		}
		else {
			if(t==md_icons.length-1)	{ edgeicon = " margin-right:-999px;"; }
			else if(t==0)	{ edgeicon = " margin-left:-999px;"; }
		}
		var g = md_targets[t];
		if(md_links[t] && md_links[t] != '' && md_links[t] != location.href || g=="spacer") {
			var onclick = "javascript: alert('The action you have provided for this icon ("+md_names[t]+") cannot be executed.\nIf you are certain that you have correctly configured the dock, please email the designer:\n\tadmin@jasonmillerdesign.com');";
			if(!g || g == "same window" || g=="this window" || g == "_self")
				onclick = "location.href = '"+md_links[t]+"';";
			else if(g == "new window" || g == "_blank")
				onclick = "window.open('"+md_links[t]+"','"+md_links[t]+"','"+md_newwin_attribs+"');";
			else if(g == "javascript")
				onclick = "eval(md_links["+t+"])";
			else if(g == "spacer")
				onclick = "eval(md_links["+t+"])";
			else	//iframe
				onclick = "document.getElementById('"+md_targets[t]+"')?document.getElementById('"+md_targets[t]+"').src = '"+md_links[t]+"':document.body."+md_targets[t]+".src = '"+md_links[t]+"';";
		}
		var iconsrc = md_preload_images?md_loading_icon:md_icons[t];
		//var spacer = g=="spacer"?" height:100%; margin-top:0px; position:relative; top:-6px; margin-bottom:-6px;":"";
		var spacerclass = g=="spacer"?" md_spacer":"";
		if(IE != true || spacerclass!="")
			md_base += "<img id=\"md_icon_img_"+t+"\" class=\"md_icon"+spacerclass+"\" src=\""+iconsrc+"\" style=\"position:relative; width:"+md_normsize+"px; height:"+md_normsize+"px; margin:6px; margin-left:-6px; padding-left:12px; margin-right:-6px; padding-right:12px; border:0px; "+edgeicon+"\" onclick=\""+onclick+"\" />";
		else
			md_base += "<img id=\"md_icon_img_"+t+"\" class=\"md_icon"+spacerclass+"\" src=\""+md_null_gif+"\" style=\"position:relative; width:"+md_normsize+"px; height:"+md_normsize+"px; margin:6px; margin-left:6px; margin-right:6px; border:0px; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+iconsrc+"', sizingMethod='scale'); "+edgeicon+"\" onclick=\""+onclick+"\" />";
	}
	return md_base;
}

function md_label_getShadowText(labelicon) {
	/*
	if(md_label_shadowText[labelicon])	// && md_label_shadowText_text[labelicon] == md_names[labelicon])
		return md_label_shadowText[labelicon];
	else {
		var i = md_names[labelicon];
		var y = md_label_shadow_offsetTop;
		var x = md_label_shadow_offsetLeft;
		var w = md_label_shadow_width;
		if(md_label_shadow_opacity<2) { md_label_shadow_opacity*=100; }
		var ocode = IE?"filter:alpha(opacity="+md_label_shadow_opacity+");":"opacity:"+(md_label_shadow_opacity/100)+";";
		var t = "<span style='visibility:visible;'>"+i+"</span>";
		t += "<span class='md_label_foreground' style='position:absolute; top:0px; left:0px; z-index:1;'>"+i+"</span>";
		t += "<span class='md_label_background' style='position:absolute; top:"+(-w+y)+"px; left:"+(-w+x)+"px; "+ocode+"'>"+i+"</span>";
		t += "<span class='md_label_background' style='position:absolute; top:"+(-w+y)+"px; left:"+x+"px; "+ocode+"'>"+i+"</span>";
		t += "<span class='md_label_background' style='position:absolute; top:"+y+"px; left:"+(-w+x)+"px; "+ocode+"'>"+i+"</span>";
		t += "<span class='md_label_background' style='position:absolute; top:"+(w+y)+"px; left:"+(w+x)+"px; "+ocode+"'>"+i+"</span>";
		t += "<span class='md_label_background' style='position:absolute; top:"+(w+y)+"px; left:"+x+"px; "+ocode+"'>"+i+"</span>";
		t += "<span class='md_label_background' style='position:absolute; top:"+y+"px; left:"+(w+x)+"px; "+ocode+"'>"+i+"</span>";
		t += "<span class='md_label_background' style='position:absolute; top:"+(w+y)+"px; left:"+(-w+x)+"px; "+ocode+"'>"+i+"</span>";
		t += "<span class='md_label_background' style='position:absolute; top:"+(-w+y)+"px; left:"+(w+x)+"px; "+ocode+"'>"+i+"</span>";
	}
	*/
	return "<span class='md_label_foreground'>"+md_names[labelicon]+"</span><span class='md_label_background'>"+md_names[labelicon]+"</span><span class='md_label_background bgalt2'>"+md_names[labelicon]+"</span><span class='md_label_background bgalt3'>"+md_names[labelicon]+"</span><span class='md_label_background bgalt4'>"+md_names[labelicon]+"</span>";
}

function md_bounceicon(icon, n, selectBy) {
	var affected;
	if(mDock_indexOf(md_links,icon) > -1)
		affected = mDock_indexOf(md_links,icon);
	else {
		for(var c=0; c<md_icons.length; c++) {
			if(selectBy == "link" && md_links[c] == icon)
				affected = c;
			else if(selectBy == "name" && md_names[c] == icon)
				affected = c;
			else if( (selectBy == "icon" || selectBy == "image") && (md_icons[c] == icon || document.getElementById('md_icon_img_'+c).src == icon) )
				affected = c;
			else
				affected = icon;
		}
	}

	if(affected && affected != "undefined" && document.getElementById('md_icon_img_'+affected) && md_bouncing[affected] != true) {
		md_bouncing[affected] = true;
		document.getElementById('md_icon_img_'+affected).style.position = "relative";
		var height = 30;
		var delay = 4;
		for(var t=0; t<n; t++) {
			for(var b=0; b<3; b++) {
				for(var i=0; i<height; i++)
					setTimeout("document.getElementById('md_icon_img_"+affected+"').style.top = '-"+i/(b+1)+"px';",(height*2*delay*4*t) + (height*2*delay*b)+(delay*i));
				for(var i=height; i<=(height*2); i++)
					setTimeout("document.getElementById('md_icon_img_"+affected+"').style.top = '-"+(height*2-i)/(b+1)+"px';",(height*2*delay*4*t) + (height*2*delay*b)+(delay*i));
			}
		}
		setTimeout("md_bouncing["+affected+"] = false;", n * 2 * ((height*2*delay*4) + (height*2*delay*3)+(delay*30)) );
	}
	else
		return false;
}

function md_mousedown(e) {
	if(!e){ e=window.event; }
	var mouseX, mouseY;
	if(e.pageX || e.pageY) { mouseX = e.pageX; mouseY = e.pageY; }
	else if(e.clientX || e.clientY) { mouseX = e.clientX+document.body.scrollLeft; mouseY = e.clientY+document.body.scrollTop; }
	
	var md = document.getElementById('mDock');
	var mdnode = md;
	var top = md.offsetTop;
	var left = md.offsetLeft;
	while(mdnode.parentNode) {	top += mdnode.offsetTop; mdnode = mdnode.parentNode; }

	var button = e.which ? e.which : e.button;
	if(button == 2 && md_enableContextMenus && md_enableContextMenus == true) {	//right click  or  ctrl+click
		if(!document.getElementById('md_cmenu')) {		//if no context menu is open/created
			md_cmenu = document.createElement("div");
			md_cmenu.setAttribute("id","md_cmenu");
			//md_cmenu.setAttribute("style","position:absolute; z-index:999;");
			md_cmenu.style.visibility = "hidden";
			md_cmenu.setAttribute("class","mDock_contextual_menu");
			md_cmenu.className = "mDock_contextual_menu";
			document.body.appendChild(md_cmenu);
			//md_cmenu.onclick = function() { if(document.getElementById('md_cmenu')) { setTimeout("document.body.removeChild(document.getElementById('md_cmenu')); md_refresh();",200); } };
				//FINALLY the code below works correctly in all browsers!
			md_cmenu_oldbodyclick = document.onmousedown?document.onmousedown:function() {};
			document.onmousedown = function(e) { md_unlock(e); if(document.getElementById("md_cmenu") && (e.button?e.button:e.which) != 2) { document.getElementById("md_cmenu").parentNode.removeChild(document.getElementById("md_cmenu")); document.onmousedown = md_cmenu_oldbodyclick; } }
		}
		md_cmenu.innerHTML = "<ul style='list-style-type:none; margin-left:-30px;'><li><a href=\"javascript: void(0);\" onclick=\"showpic_add2mDock();\">Add current image to dock</a></li><li><a href=\"javascript: void(0);\" onclick=\"slideshow_imageDL();\">Download the current image</a></li><li><a href=\"javascript: void(0);\" onclick=\"md_refresh();\">Refresh dock</a></li><li><a href=\"javascript: void(0);\" onclick=\"document.getElementById('md_cmenu').parentNode.removeChild(document.getElementById('md_cmenu'));\">Exit this menu</a></li><li><a href=\"javascript: void(0);\" onclick=\"showpic_stop();\">Return to website</a></li></ul>";
		md_cmenu.style.left = (mouseX - md_cmenu.offsetWidth/2) + "px";
		md_cmenu.style.top = (mouseY - md_cmenu.offsetHeight - 10) + "px";
		md_cmenu.style.visibility = "visible";
		md_lock();
	}
	//else if(document.getElementById('md_cmenu'))
	//	document.body.removeChild(document.getElementById('md_cmenu'));
}


function mDock_indexOf(arr,obj) {
	var index = -1;
	for(var c=0; c<arr.length; c++)
		if(arr[c] == obj)
			index = c;
	return index;
}


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////          public functions:           /////////////////////////////////////////////

function md_refresh(noresize) {
	if(!noresize || noresize==false) {		//call md_refresh(true) if you just want to update icon images.
		for(var t=0; t<md_icons.length; t++)
			md_iconsize('md_icon_img_'+t,md_normsize,true);
		//document.getElementById('mDock').innerHTML = md_createBase();
		md_dockwidth = parseInt(md_icons.length*(md_normsize+12) + 4);
		document.getElementById('mDock').style.width = md_dockwidth + "px";
		document.getElementById('mDock').style.height = (md_normsize+12) + "px";
		document.getElementById('mDock_background').style.height = (md_normsize+12) + "px";
		if(document.getElementById('md_label'))
			document.body.removeChild(document.getElementById('md_label'));
		if(document.getElementById('md_cmenu'))
			document.body.removeChild(document.getElementById('md_cmenu'));
	}
	if(IE) {
		for(var i in md_icons)
			if(document.getElementById('md_icon_img_'+i).className.indexOf('spacer') == -1)
				document.getElementById('md_icon_img_'+i).style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+md_icons[i]+"', sizingMethod='scale');"
	}
	else {
		for(var i in md_icons)
			document.getElementById('md_icon_img_'+i).src = md_icons[i];
	}
}

function md_addicon(url, icon, name, target) {
	//if(md_preload_images == true && md_isPreloading == true)
	//	return false;
	
	if(document.getElementById('mDock').offsetWidth > document.body.offsetWidth || md_dockwidth > document.body.offsetWidth) {
		alert("The dock is exceeding the size of this window. Please enlarge the window or remove unused icons before attempting to add an icon.");
		return false;
	}
	var index = -1;
	for(var c=0; c<md_links.length; c++)
		if(md_links[c] == url)
			index = c;
	if(index != -1) {
		md_bounceicon(index,3,"link");
		return false;
	}
	else {
		var arraymax = md_icons.length;
		md_links[arraymax] = url;
		md_icons[arraymax] = icon;
		md_names[arraymax] = name;
		md_targets[arraymax] = target;
		
		//md_preload();
		var waspreloading = md_preload_images;
		if(waspreloading == true)
			md_preload_images = false;
		
		document.getElementById('mDock').innerHTML = md_createBase();
		if(waspreloading == true)
			md_preload_images = true;

	md_refresh(true);
	md_dockwidth = parseInt(md_icons.length*(md_normsize+12) + 4);
	document.getElementById('mDock').style.width = md_dockwidth + "px";
	document.getElementById('mDock').style.height = md_normsize+12 + "px";
	
		for(var p=1; p<=md_normsize; p++)
			setTimeout("md_iconsize('md_icon_img_"+arraymax+"', "+p+", true);",p*10);
		//setTimeout("document.getElementById('md_icon_img_"+arraymax+"').style.height = '"+p+"px'; document.getElementById('md_icon_img_"+arraymax+"').style.width = '"+p+"px'; document.getElementById('md_icon_img_"+arraymax+"').style.position = 'relative'; document.getElementById('md_icon_img_"+arraymax+"').style.top = '"+(md_normsize-p)/4+"px'; document.getElementById('md_icon_img_"+arraymax+"').style.left = '"+(md_normsize-p)/4+"px';",p*10);

		
		//md_icons_loaded = 0;
		return arraymax;
	}
}

function md_removeicon(icon,num) {

	var i = parseInt(icon)?parseInt(icon):mDock_indexOf(md_names,icon);
	n = num?num:1;
	
	md_links.splice(i,n);
	md_icons.splice(i,n);
	md_names.splice(i,n);
	md_targets.splice(i,n);

	md_preload();
	document.getElementById('mDock').innerHTML = md_createBase();
	md_refresh(true);
	md_dockwidth = parseInt(md_icons.length*(md_normsize+12) + 4);
	document.getElementById('mDock').style.width = md_dockwidth + "px";
	md_icons_loaded = 0;
}

function md_attentionEffect(link) {
	if(mDock_indexOf(md_links,link) != -1)
		md_bounceicon(mDock_indexOf(md_links,link), 3, "icon");
	else
		return false;
}

function md_lock() {
	md_isLocked = true;
}

function md_unlock(e) {
	md_isLocked = false;
	if(e) { md_mousemove(e); }
}

