// Create client variables.
var mls_button_url = "http://www.mylinkshares.com/button/";

// Debug ---------------------------------------------------
//mls_button_url = "http://www.pykyl.com/tmp/";
// Debug ---------------------------------------------------

// Button images.
var mls_linkbutton = new Image();
var mls_linkbutton_sel = new Image();
var mls_linkbutton_16x16 = new Image();
var mls_linkbutton_16x16_sel = new Image();
var mls_linkbutton_18x18 = new Image();
var mls_linkbutton_18x18_sel = new Image();
var mls_linkbutton_20x20 = new Image();
var mls_linkbutton_20x20_sel = new Image();

mls_linkbutton.src = mls_button_url + "linkbutton.png";
mls_linkbutton_sel.src = mls_button_url + "linkbutton_sel.png";
mls_linkbutton_16x16.src = mls_button_url + "linkbutton_16x16.png";
mls_linkbutton_16x16_sel.src = mls_button_url + "linkbutton_16x16_sel.png";
mls_linkbutton_18x18.src = mls_button_url + "linkbutton_18x18.png";
mls_linkbutton_18x18_sel.src = mls_button_url + "linkbutton_18x18_sel.png";
mls_linkbutton_20x20.src = mls_button_url + "linkbutton_20x20.png";
mls_linkbutton_20x20_sel.src = mls_button_url + "linkbutton_20x20_sel.png";

// Menu images.
var mls_header = new Image();
var mls_share_this_link = new Image();
var mls_share_this_link_sel = new Image();
var mls_about_mylinkshares = new Image();
var mls_about_mylinkshares_sel = new Image();
var mls_get_button_code = new Image();
var mls_get_button_code_sel = new Image();
var mls_see_also = new Image();
var mls_see_also_sel = new Image();
var mls_my_pic_shares = new Image();
var mls_my_pic_shares_sel = new Image();
var mls_my_music_shares = new Image();
var mls_my_music_shares_sel = new Image();
var mls_my_shares_gadget_blog = new Image();
var mls_my_shares_gadget_blog_sel = new Image();

mls_header.src = mls_button_url + "header.png";
mls_share_this_link.src = mls_button_url + "share_this_link.png";
mls_share_this_link_sel.src = mls_button_url + "share_this_link_sel.png";
mls_about_mylinkshares.src = mls_button_url + "about_mylinkshares.png";
mls_about_mylinkshares_sel.src = mls_button_url + "about_mylinkshares_sel.png";
mls_get_button_code.src = mls_button_url + "get_button_code.png";
mls_get_button_code_sel.src = mls_button_url + "get_button_code_sel.png";
mls_see_also.src = mls_button_url + "see_also.png";
mls_see_also_sel.src = mls_button_url + "see_also_sel.png";
mls_my_pic_shares.src = mls_button_url + "my_pic_shares.png";
mls_my_pic_shares_sel.src = mls_button_url + "my_pic_shares_sel.png";
mls_my_music_shares.src = mls_button_url + "my_music_shares.png";
mls_my_music_shares_sel.src = mls_button_url + "my_music_shares_sel.png";
mls_my_shares_gadget_blog.src = mls_button_url + "my_shares_gadget_blog.png";
mls_my_shares_gadget_blog_sel.src = mls_button_url + "my_shares_gadget_blog_sel.png";

// Global variables.
var mylinkshares_url;
var mylinkshares_subj;
var btn_style;
var mls_button_coords = {x: 0, y: 0};
var btnDim = {w: 125, h: 16};
var mnuDim = {w: 200, h: 156};
var mnuItemDim = {w: 200, h: 20};
var mnuPos = {x: 0, y: 0};
var TimerID = 0;
var timeOutMS = 1000;
var menuvis = false;

// Support functions.
function mlsGetPageCoords(element) {
	mls_button_coords.x = 0;
	mls_button_coords.y = 0;
	while (element) {
		mls_button_coords.x += element.offsetLeft;
		mls_button_coords.y += element.offsetTop;
		element = element.offsetParent;
	}
	return true;
}

function mlsCreateLinkSharesURL() {
	var shares_url = "http://www.mylinkshares.com/index.php";
	shares_url = shares_url + "?hotlink=" + encodeURIComponent(mylinkshares_url);
	shares_url = shares_url + "&subj=" + encodeURIComponent(mylinkshares_subj);
	return shares_url;
}

function mlsStopTimer() {
   if (TimerID) {
      clearTimeout(TimerID);
      TimerID = 0;
   }
}

function mlsStartMenuCloseCountdown() {
	TimerID = setTimeout("mlsRemoveMenu()", timeOutMS);
}

function mlsShowMenuItem(id, img, stoptimer) {
	var mnuItem = document.getElementById(id);
	mnuItem.src = img;
	if (stoptimer) {
		mlsStopTimer();
	} else {
		mlsStartMenuCloseCountdown();
	}
}

function mlsRemoveMenu() {
	var btnDiv = document.getElementById("mls_btn_container");
	var mnuDiv = document.getElementById("mls_mnu_container");
	btnDiv.removeChild(mnuDiv);
	menuvis = false;
}

function mlsAddMenuItem(id, img, hoverimg, alt, url, pwidth, pheight, ptop, pleft) {
	var stmp = "<div style=\"width: " + pwidth.toString() + "px; ";
	stmp = stmp + "height: " + pheight.toString() + "px; ";
	stmp = stmp + "top: " + ptop.toString() + "px; ";
	stmp = stmp + "left: " + pleft.toString() + "px;\">";
	stmp = stmp + "<a href=\"" + url + "\" target=\"browser\">";
	stmp = stmp + "<img id=\"" + id + "\" ";
	stmp = stmp + "name=\"" + id + "\" ";
	stmp = stmp + "src=\"" + img + "\" border=\"0\" ";
	stmp = stmp + "onmouseover=\"mlsShowMenuItem('" + id + "', '" + hoverimg + "', true); return true;\" ";
	stmp = stmp + "onmouseout=\"mlsShowMenuItem('" + id + "', '" + img + "', false); return true;\" ";
	stmp = stmp + "onclick=\"mlsStartMenuCloseCountdown();\" ";
	stmp = stmp + "alt=\"" + alt + "\"/>";
	stmp = stmp + "</a></div>";
	return stmp;
}

function mlsShowMenu() {
	var btnDiv = document.getElementById("mls_btn_container");

	mlsGetPageCoords(btnDiv);

	var winW = window.innerWidth;
	var winH = window.innerHeight;

	if ((mls_button_coords.x + mnuDim.w + 5) > winW) {
		mnuPos.x = mls_button_coords.x - (mnuDim.w - btnDim.w);
	} else {
		mnuPos.x = mls_button_coords.x;
	}

	if ((mls_button_coords.y + btnDim.h + mnuDim.h + 5) > winH) {
		mnuPos.y = mls_button_coords.y - (mnuDim.h + 2);
	} else {
		mnuPos.y = mls_button_coords.y + btnDim.h;
	}

	var mnuDiv = document.createElement("div");
	mnuDiv.setAttribute("id", "mls_mnu_container");
	mnuDiv.setAttribute("name", "mls_mnu_container");
	mnuDiv.style.position = "absolute";
	mnuDiv.style.top = mnuPos.y.toString() + "px";
	mnuDiv.style.left = mnuPos.x.toString() + "px";
	mnuDiv.style.width = mnuDim.w.toString() + "px";
	mnuDiv.style.height = mnuDim.h.toString() + "px";
	mnuDiv.style.zIndex = 200;
	mnuDiv.style.borderStyle = "solid";
	mnuDiv.style.borderWidth = "1px";
	mnuDiv.style.borderColor = "#E3DFDF";
	mnuDiv.style.backgroundColor = "#FFFFFF";

	var mnuHTML = "";

	mnuHTML = mnuHTML + mlsAddMenuItem("mls_header", mls_header.src, mls_header.src, "Pykyl", "http://www.pykyl.com/", mnuItemDim.w, mnuItemDim.h - 4, mnuPos.y, mnuPos.x);	
	mnuPos.y = mnuPos.y + (mnuItemDim.h - 4);
	
	mnuHTML = mnuHTML + mlsAddMenuItem("mls_share_this_link", mls_share_this_link.src, mls_share_this_link_sel.src, "Share This Link", mlsCreateLinkSharesURL(), mnuItemDim.w, mnuItemDim.h, mnuPos.y, mnuPos.x);
	mnuPos.y = mnuPos.y + mnuItemDim.h;

	mnuHTML = mnuHTML + mlsAddMenuItem("mls_about_mylinkshares", mls_about_mylinkshares.src, mls_about_mylinkshares_sel.src, "About MyLinkShares", "http://www.mylinkshares.com/help.php", mnuItemDim.w, mnuItemDim.h, mnuPos.y, mnuPos.x);
	mnuPos.y = mnuPos.y + mnuItemDim.h;

	mnuHTML = mnuHTML + mlsAddMenuItem("mls_get_button_code", mls_get_button_code.src, mls_get_button_code_sel.src, "Get Button Script", "http://mysharesgadgets.blogspot.com/2008/02/mylinkshares-button-code.html", mnuItemDim.w, mnuItemDim.h, mnuPos.y, mnuPos.x);
	mnuPos.y = mnuPos.y + mnuItemDim.h;

	mnuHTML = mnuHTML + mlsAddMenuItem("mls_see_also", mls_see_also.src, mls_see_also.src, "See Also", "http://www.pykyl.com", mnuItemDim.w, mnuItemDim.h - 4, mnuPos.y, mnuPos.x);
	mnuPos.y = mnuPos.y + (mnuItemDim.h - 4);

	mnuHTML = mnuHTML + mlsAddMenuItem("mls_my_pic_shares", mls_my_pic_shares.src, mls_my_pic_shares_sel.src, "MyPicShares", "http://www.mypicshares.com/", mnuItemDim.w, mnuItemDim.h, mnuPos.y, mnuPos.x);
	mnuPos.y = mnuPos.y + mnuItemDim.h;

	mnuHTML = mnuHTML + mlsAddMenuItem("mls_my_music_shares", mls_my_music_shares.src, mls_my_music_shares_sel.src, "MyMusicShares", "http://www.mymusicshares.com/", mnuItemDim.w, mnuItemDim.h, mnuPos.y, mnuPos.x);
	mnuPos.y = mnuPos.y + mnuItemDim.h;

	mnuHTML = mnuHTML + mlsAddMenuItem("mls_my_shares_gadget_blog", mls_my_shares_gadget_blog.src, mls_my_shares_gadget_blog_sel.src, "Gadget Blog", "http://mysharesgadgets.blogspot.com/", mnuItemDim.w, mnuItemDim.h, mnuPos.y, mnuPos.x);
	mnuPos.y = mnuPos.y + mnuItemDim.h;

	mnuDiv.innerHTML = mnuHTML;

	btnDiv.appendChild(mnuDiv);

	// The menu is visible.
	menuvis = true;
}

function mlsDoButtonHover() {
	document.mls_link_button.src = mls_linkbutton_sel.src;
	if (!menuvis) {
		mlsShowMenu();
	}
}

function mlsDoMouseAway() {
	document.mls_link_button.src = mls_linkbutton.src;
	mlsStartMenuCloseCountdown();
}

if (mylinkshares_url == "") {
	mylinkshares_url = "http://www.mylinkshares.com";
}

if (mylinkshares_subj == "") {
	mylinkshares_subj = "MyLinkShares";
}

if (btn_style == "") {
	btn_style = "";
}

if (btn_style == "16") {
	btnDim.w = 16;
	btnDim.h = 16;
	mls_linkbutton.src = mls_linkbutton_16x16.src;
	mls_linkbutton_sel.src = mls_linkbutton_16x16_sel.src;	
} else if (btn_style == "18") {
	btnDim.w = 18;
	btnDim.h = 18;
	mls_linkbutton.src = mls_linkbutton_18x18.src;
	mls_linkbutton_sel.src = mls_linkbutton_18x18_sel.src;	
} else if (btn_style == "20") {
	btnDim.w = 20;
	btnDim.h = 20;
	mls_linkbutton.src = mls_linkbutton_20x20.src;
	mls_linkbutton_sel.src = mls_linkbutton_20x20_sel.src;	
}

// Prep button to show.
var mls_link_button_str = "<div id=\"mls_btn_container\" name=\"mls_btn_container\" ";
mls_link_button_str = mls_link_button_str + "style=\"width: " + btnDim.w.toString() + "px; ";
mls_link_button_str = mls_link_button_str + "height: " + btnDim.h.toString() + "px;\">";
mls_link_button_str = mls_link_button_str + "<a href=\"" + mlsCreateLinkSharesURL() + "\" ";
mls_link_button_str = mls_link_button_str + "target=\"browser\" ";
mls_link_button_str = mls_link_button_str + "onmouseover=\"mlsDoButtonHover(); return true;\" ";
mls_link_button_str = mls_link_button_str + "onmouseout=\"mlsDoMouseAway();  return true;\">";
mls_link_button_str = mls_link_button_str + "<img id=\"mls_link_button\" name=\"mls_link_button\" src=\"" + mls_linkbutton.src + "\" ";
mls_link_button_str = mls_link_button_str + "border=\"0\" alt=\"MyLinkShares\"/>";
mls_link_button_str = mls_link_button_str + "</a></div>";

//var mls_link_button_str = "<div id=\"mls_btn_container\" name=\"mls_btn_container\" ";
//mls_link_button_str = mls_link_button_str + "style=\"width: " + btnDim.w.toString() + "px; ";
//mls_link_button_str = mls_link_button_str + "height: " + btnDim.h.toString() + "px;\" ";
//mls_link_button_str = mls_link_button_str + "onmouseover=\"mlsDoButtonHover(); return true;\" ";
//mls_link_button_str = mls_link_button_str + "onmouseout=\"mlsDoMouseAway();  return true;\">";
//mls_link_button_str = mls_link_button_str + "<a href=\"" + mlsCreateLinkSharesURL() + "\" ";
//mls_link_button_str = mls_link_button_str + "target=\"browser\">";
//mls_link_button_str = mls_link_button_str + "<img id=\"mls_link_button\" name=\"mls_link_button\" src=\"" + mls_linkbutton.src + "\" ";
//mls_link_button_str = mls_link_button_str + "border=\"0\" alt=\"MyLinkShares\"/>";
//mls_link_button_str = mls_link_button_str + "</a></div>";

// Output the button.
document.write(mls_link_button_str);
