function loadingImage(divElement)
{
	var DescriptionDiv = getElement( divElement + "-Description");
		DescriptionDiv.innerHTML = '<img src="images/design/loading.gif" width="34" height="34" alt="Loading.. Please wait" />';
}

function getElement(elementId)
{
	return document.getElementById(elementId);
}

function displayElement(elementId)
{
	getElement(elementId).style.display = "block";
	return false;
}

function hideElement(elementId)
{
	getElement(elementId).style.display = "none";
	return false;
}

/***** Box Enlarge / Decrease ****** /
/*	All code has been written by   	*/
/*  Alexander Ratz	for			   	*/
/*	Eligon Systems LTD			   	*/
/*	http://www.eligon.ca			*/
/************************************/

var currentSize = 0;
var finished = true;
var shrinking = false;
var expanding = false;
var delay = 1; // milliseconds
var widthIncrease = 7; // increase by x pixels every delay milliseconds

// sets current sate of a box
var boxesCurrentState = new Array(0);

function enlargeBox(elementId, elementHeight, displayElementBeforeExpanding)
{
	var oBox = document.getElementById( elementId );

	// before starting
	if( displayElementBeforeExpanding )
	{
		oBox.style.display = 'block';
	}

	oBox.style.height = elementHeight + 'px';

	boxesCurrentState[ elementId ] = 'Expanded';
}

/*
	This will toggle the front page questions. If a question opens up, it will than close all unclosed questions. 
*/
function toggleAnswer(answerId)
{
	var elementId = 'answer-' + answerId;

	// whether the element is currently open or close
	var elementHidden = ( getElement(elementId).style.display != 'block' ) ? true : false;

	toggleExpendableBox( elementId );

	if( elementHidden )
	{
		for( var i=1; i < 6; i++ )
		{
			if( i == answerId)
				continue;
			else
			{
				hideElement('answer-' + i );
			}
		}
	}

	return false;
}

function toggleExpendableBox(elementId)
{
	var oElement = getElement( elementId );

	if( oElement.style.display != 'block' )
	{
		displayElement( elementId );
	}
	// by default we show box since it is hidden
	else
	{
		hideElement( elementId );
	}

	return false;
}

function shrinkBox(elementId, elementHeight, hideElementWhenDone)
{
	var oBox = document.getElementById( elementId );

	oBox.style.height = elementHeight + 'px';

	boxesCurrentState[ elementId ] = 'Shrinked';

	// if set to hide the box at the end of the "show"
	if( hideElementWhenDone )
	{
		oBox.style.display = 'none';
	}
}

/*
	Parameters
		elementId - Which elements to work on
		elementHeightExpeand - desired expended height
		elementHeightShrink  - desired shrinked height
		toggleDisplay - When finished shrinking set display:none or before start expanding set to dislay:block 

	Return
		Bool - false
*/
function toggleBox(elementId,elementHeightExpand,elementHeightShrink,toggleDisplay)
{
	if( boxesCurrentState[ elementId ] )
	{
		if( boxesCurrentState[ elementId ] == 'Shrinked' )
		{
			enlargeBox( elementId, elementHeightExpand, toggleDisplay );
		}
		else if( boxesCurrentState[ elementId ] == 'Expanded' )
		{
			shrinkBox(elementId, elementHeightShrink, toggleDisplay);
		}

	}
	// by default enlarge box
	else
	{
		enlargeBox( elementId, elementHeightExpand, toggleDisplay );
	}

	return false;
}

/*
	Clean input value upon focus
*/
function emptyValueOnFocus(elementId,initialValue)
{
	oElementValue = document.getElementById( elementId );

	if( oElementValue.value == initialValue )
	{
		oElementValue.value = '';
	}
}

/*
	Clean input value upon focus
*/
function resetValueOnBlur(elementId,initialValue)
{
	oElementValue = document.getElementById( elementId );

	if( oElementValue.value ==  '' )
	{
		oElementValue.value = initialValue;
	}
}

function markFileSelected( elementId )
{
	var oInputField = getElement( elementId );

	oInputField.style.backgroundColor = '#ffdf5f';
}

// Send invitation from Gold-Members Page
function sendInvitation()
{
	var friendsName = getElement("FriendsName").value;
	var friendsEmail = getElement("FriendsEmail").value;
	var personalMessage = getElement("PersonalMessage").value;

	var invitationStatus = getElement("invitation-status");

	if( friendsName == '' || friendsName == "Friend's Name" )
	{
		invitationStatus.className = 'error-message';
		invitationStatus.innerHTML = 'Please fill Your friends Name';
	}
	else if( friendsEmail == '' || friendsEmail == "Friend's Email" )
	{
		invitationStatus.innerHTML = 'Please fill A valid E-Mail Address';
	}
	else
	{
		// display loading bar image
		getElement("invitation-loading-bar").style.display = 'block';

		var request = 'ajax_requests.php?&AjaxRequest&InviteAFriend';
		var params = "FriendsName=" + encodeURIComponent(friendsName) + "&FriendsEmail=" + encodeURIComponent(friendsEmail) + "&PersonalMessage=" + encodeURIComponent(personalMessage) + '&InviteAFriend=true' ;

		try
		{
			if( xmlHttp.readyState == 0 || xmlHttp.readyState == 4 )
			{
				xmlHttp.open("POST",request,true);
				xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
				xmlHttp.onreadystatechange = sendInvitationStateChange;
				xmlHttp.send(params);
			}
		}
		catch(e)
		{
			handleError(e.toString());
		}
	}

	return false;
}

function sendInvitationStateChange()
{
	if( xmlHttp.readyState == 4 )
	{
		if( xmlHttp.status == 200 )
		{
			try
			{
				// Read the response
				var response = xmlHttp.responseText;

				// Server error ?
				if( response.indexOf("ERRNO") >= 0 || response.indexOf("error") >= 0 )
				{
					handleError("Error Receiving Response");
				}
				else
				{
					// Extract the contents of the cart_summary div element
					var goldMembersPageRegEx = /^<div id="gold-members-page">([\s\S]*)<\/div>$/m;
					matches = goldMembersPageRegEx.exec(response);
					response = matches[1];

					getElement("gold-members-page").innerHTML = response;

					// display loading bar image
					getElement("invitation-loading-bar").style.display = 'none';
				}
			}
			catch(e)
			{
				// Handle error
				handleError(e.toString());
			}
		}
		else
		{
			// Handle error
			handleError("404 Error" );
		}
	}

	return false;
}

function roundValue(value)
{
	// how many decimal places
	var dec = 2;
	var result = Math.round( value * Math.pow(10,dec) ) / Math.pow(10,dec);

	return result;
}


