var busy = false;

function startLoading()
{
	busy = true;
	document.getElementById('loading').style.display = 'block';
}

function endLoading()
{	
	busy = false;
	document.getElementById('loading').style.display = 'none';
}

/**
 * Display mouseover message
 *
 * @param string		title
 * @param string		message
 * @param element	posEl
 */
function getMouseoverMessage(title, message, posEl)
{
	el				 = document.getElementById('mouseoverMessage');
	elInner			 = document.getElementById('mouseoverMessageContent');
	var elContent	 = '';
	if (title.length > 0)
	{
		elContent    += '<b>' + title + '</b><br/>';
	}
	elContent		 += message;
	
	var x 			  = findPosX(posEl);
	var y 			  = findPosY(posEl) + 30;
	elInner.innerHTML = elContent;
	el.style.left	  = x + 'px';
	el.style.top	  = y + 'px';
	el.style.display  = 'block';
} // end func getMousoverMessage()

/**
 * Hide the mouseover message
 */
function hideMouseoverMessage()
{
	document.getElementById('mouseoverMessage').style.display = 'none';
} // end func hideMousoverMessage()

/** 
 * Setup AJAX and return xmlHTTP
 */
function initAJAX()
{
	// setup ajax
	var xmlHttp;
	
	try
	{  
		// Firefox, Opera 8.0+, Safari  
		xmlHttp = new XMLHttpRequest();  
	}
	catch (e)
	{  
		// Internet Explorer  
		try
		{    
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");    
		}
		catch (e)
		{    
			try
			{      
				xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");      
			}
			catch (e)
			{      
				alert("Your browser doesnt support AJAX.");      
				return false;      
			}    
		}  
	}  
	
	return xmlHttp;
}

/**
 * Function w3InnerText
 * 
 * Changes the text of an element in any browser
 * Base : http://www.mozilla.org/docs/web-developer/upgrade_2.html
 *
 * @param obj The element
 * @param newText The new text
 *
 * @author Maghiel Dijksman
 * @version 0.9.0
 */
function w3InnerText(obj, newText)
{
	var objElemRef = document.getElementById(obj);
	var new_txt = document.createTextNode(newText);
	objElemRef.replaceChild(new_txt, objElemRef.childNodes[0]);
} 

/**
 * Insert content into given element
 *
 * @param obj 	contentEl	Containing element
 * @param string	content
 */
function insertIntoElement(contEl, content)
{
	var newDiv 			= document.createElement('div');
	newDiv.innerHTML 	= content;	
	contEl.appendChild(newDiv);				
}

/**
 * Add row to table
 *
 * @param string			el
 * @param string/array	content
 * @param int			colspan
 * @param int			preCells
 * @return bool
 */
function addRowInnerHTML(el, content, colspan, preCells)
{
	preCells 				= preCells || 0;
	
	var tblBody 			= document.getElementById(el).tBodies[0];
	var newRow 				= tblBody.insertRow(-1);
	
	for (i = 0; i < preCells; i++)
	{
		newRow.insertCell(i);
	}
	
	if ((content instanceof Array) === false)
	{
		var newCell0 			= newRow.insertCell(preCells);
		newCell0.innerHTML 		= content;
		newCell0.colSpan 		= colspan;
		
		return true;
	}
	
	for (i = 0; i < content.length; i++)
	{
		var newCell 		= newRow.insertCell(preCells + i);
		newCell.innerHTML	= content[i];
		newCell.colspan		= colspan;
	}
	
	return true;
} // end func addRowInnerHTML()

/**
 * Delete the last cell from given table
 *
 * @param string el
 */
function deleteLastCell(el)
{
	var tblBody 			= document.getElementById(el).tBodies[0];
	var lastRow 			= tblBody.rows.length;
	var lastCell			= tblBody.rows[lastRow -1].cells.length;
	tblBody.rows[lastRow -1].deleteCell(lastCell - 1);
}

/**
 * Hover over function for IE
 */
function ieHoverOver()
{		
	e 	= window.event;	
	el	= e.srcElement.parentNode;
	
	if (el.className == 'active')
	{
		return;
	}
	
	el.className = 'Hover';
}

/**
 * Hover out function for IE
 */
function ieHoverOut()
{	
	e 	= window.event;	
	el	= e.srcElement.parentNode;
	
	if (el.className == 'active')
	{
		return;
	}
	
	el.className = '';
}

/**
 * Attach events for given objects
 *
 * @param object	object
 */
function attachEvents(elId)
{
	var parentElement = document.getElementById(elId);
	
	if (parentElement == null)
	{
		return false;
	}
	
	var items = parentElement.getElementsByTagName('li');	
	
	for (i = 0; i < items.length; i++)
	{
		items[i].attachEvent('onmouseover', ieHoverOver);
		items[i].attachEvent('onmouseout', ieHoverOut);
	}	
	
	return true;
} // end func attachEvents()

/**
 * Add events to elements
 *
 * @return bool
 */
function addElementEvents() 
{
	if (navigator.userAgent.indexOf("MSIE") == -1 || navigator.userAgent.indexOf("MSIE 7.0") > -1)
	{
		return false;
	}
	
	// Main menu
	attachEvents('menuDiv');
	
	// ArtistShop menu
	attachEvents('artistShopMenu');
		
	// Profile menu
	attachEvents('profileMenuBlock');

	return true;
} // end func addElementEvents()

/**
 * Hide/show faq element FAQ
 * 
 * @param string el
 */
function toggleFaq(el)
{
	var elDisplay = document.getElementById(el).style.display;
	var allFaqDivs = document.getElementsByTagName('div');
	for (var i = 0; i < allFaqDivs.length; i ++)
	{
		if (allFaqDivs[i].className == 'faqdiv')
		{
			document.getElementById(allFaqDivs[i].id).style.display = 'none';
		}
	}			
	document.getElementById(el).style.display = 'block';
	return true;
}

/**
 * Find horizontal position of element
 */
function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent) 
	{
		while (1) 
		{
			curleft += obj.offsetLeft;
			if (!obj.offsetParent) 
			{
				break;
			}
			obj = obj.offsetParent;
		}
	} 
	else if (obj.x) 
	{
		curleft += obj.x;
	}
	
	return curleft;
}

/**
 * Find vertical position of element
 */
function findPosY(obj) 
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (1)
		{
			curtop += obj.offsetTop;
			if (!obj.offsetParent) 
			{
				break;
			}
			obj = obj.offsetParent;
		}
	}
	else if (obj.y) 
	{
		curtop += obj.y;
	}
	
	return curtop;
}	