function toggleBoxWithArrow(boxId, arrowId) {
	
	var ma = toggleVisibility(boxId);
	var arrow = document.getElementById(arrowId);
	if(ma.className == "Hidden") {
		arrow.src = "http://www.imeem.com/resources/graphics/d/arrow_right.gif";
	}
	else {
		arrow.src = "http://www.imeem.com/resources/graphics/d/arrow_down.gif";
	}
	return ma.className;
}

function toggleVisibility(id)
{
    var div = document.getElementById(id);
    if (div.className == "Hidden") {
        div.className = "Visible";
    }
    else {
        div.className = "Hidden";
    }
    return div;
}

function stopEvent(e)
{
	e.preventDefault();
	e.stopPropagation();
	return false;
}

/* Video Thumbnail Animation */
var timers = new Object();

function iterateThumbnail(identifier, duration, image, url)
{
	if (image.src.indexOf('video_chrome') != -1)
	{
		image = image.previousSibling;
	}
	var currentThumbnail = image.src.split('_')[1].split('.')[0] * 1;
	currentThumbnail++;
	if (currentThumbnail > duration)
	{
		currentThumbnail = 1;
	}
	image.src = url + identifier + "_" + createPaddedNumber(currentThumbnail) + ".jpg";
	timers[identifier] = window.setTimeout(function() { 
		iterateThumbnail(identifier, duration, image, url);
	}, 500);
}

function stopIteration(identifier)
{
	window.clearTimeout(timers[identifier]);
	delete timers[identifier];
}

function createPaddedNumber(num)
{
	var str = num + "";
	
	if (str.length == 5)
	{
		return str;
	}
	
	var numPadding = 5 - str.length;
	
	for (var i = 0; i < numPadding; i++)
	{
		str = "0" + str;
	}
	
	return str;
}

function openUploadDialog(url) {
	UFO.getFlashVersion();
	if (UFO.hasFlashVersion(9, 28)) {
		if(url.indexOf("t=v") != -1)
		{
			window.open(url, "IMEEM_VIDEO_UPLOAD", "toolbar=no,height=500,width=880");
		}
		else if(url.indexOf("t=p") != -1)
		{
			window.open(url, "IMEEM_PHOTO_UPLOAD", "toolbar=no,height=600,width=890");
		}
		else
		{
			window.open(url, "IMEEM_MUSIC_UPLOAD", "toolbar=no,height=600,width=880");
		}
		return false;
	}
	
	return true;
}

function isValidEmailAddress(eAddress)
{
	var re = new RegExp("^([a-zA-Z0-9_'+*$%\^&!\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9:]{2,4})+$", "i");
	return re.test(eAddress);
}

function isValidEmailAddressList(eAddressList)
{
	var re = new RegExp("^(([a-zA-Z0-9_'+*$%\^&!\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9:]{2,4})+\\s*[\\s;,\n]\\s*)*([a-zA-Z0-9_'+*$%\^&!\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9:]{2,4})+\\s*[\\s;,\n]?\\s*$", "i");
	return re.test(eAddressList);
}

function showRelatedQuickMixLink(elem, id) {
	try {
		elem.firstChild.rows[1].cells[1].firstChild.style.visibility = "visible";
	} catch(ex) {}
}

function hideRelatedQuickMixLink(elem, id) {
	try {
		elem.firstChild.rows[1].cells[1].firstChild.style.visibility = "hidden";
	} catch(ex) {}
}

// Used to fix ie flicker issues http://dynamic-tools.net/toolbox/isMouseLeaveOrEnter/
// use like: onmouseover="if(isMouseLeaveOrEnter(event, this)) blah;"
function isMouseLeaveOrEnter(e, handler) { 
	if (e.type != 'mouseout' && e.type != 'mouseover') 
		return false; 
	var reltg = e.relatedTarget ? e.relatedTarget : e.type == 'mouseout' ? e.toElement : e.fromElement; 
	while (reltg && reltg != handler) 
		reltg = reltg.parentNode; 
	return (reltg != handler); 
}

function changeIcon(privacy, image, hiddenId, setPrivacyImg)
{
	dojo.byId(hiddenId).value = privacy;
	dojo.byId(setPrivacyImg).src = image;
}

function showVideo() {
	var container = dojo.byId("FlashContainer");
	if (container) {
		dojo.html.setVisibility(dojo.dom.getFirstChildElement(dojo.dom.getFirstChildElement(dojo.dom.getFirstChildElement(container))), true);
	}
}

function hideVideo() {
	var container = dojo.byId("FlashContainer");
	if (container) {
		dojo.html.setVisibility(dojo.dom.getFirstChildElement(dojo.dom.getFirstChildElement(dojo.dom.getFirstChildElement(container))), false);
	}
}

function toggleWidgetVisibility(node)
{
	while(node != null)
	{
		node = node.parentNode;
		if (dojo.html.hasClass(node, "Widget"))
		{
			break;
		}
	}
	
	var closed = false;
	
	if (dojo.html.hasClass(node, "Closed"))
	{
		dojo.html.removeClass(node, "Closed");
	}
	else
	{
		closed = true;
		dojo.html.addClass(node, "Closed");
	}
	
	if (viewingContext.authToken)
	{
		dojo.io.bind({
			url: "/api/SaveWidgetState",
			method: "get",
			mimetype: "text/json",
			content: { w: node.id, a: viewingContext.authToken, c: closed }
		});
	}
}