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 replaceTextPasswordInput(elementId)
{
	var oInputField = document.getElementById(elementId);

	oInputField.value = '';
}

function changeElementClass(elementId,newClassName)
{
	var oElement = document.getElementById( elementId );

	oElement.className = newClassName;
}

function markFileSelected( elementId )
{

	var oInputField = getElement( elementId );

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

/*

*/
function displayMyProfileOptions()
{
	return false;
}

function verifySuggestion()
{

}

// 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)
		{
			alert('error');
			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 displayTooltip(element)
{
	// get the tooltip element button 
	oElement = element;

	// get his parent 
	oParentElement = oElement.parentNode;

	oToolTIpText = oParentElement.firstChild;
	oToolTIpText.style.display = 'block';

	//oElement.onmouseout = hideToolTip(oToolTIpText);
	oElement.onmouseout = function() { oToolTIpText.style.display = 'none'; }

	return false;
}

function hideToolTip(element)
{
	element.style.display = 'none';
}

/*
	Will display the payment summary table at Membership-Types
*/
function displayPaymentSummary(monthDuration)
{
	// receive initiation-fee from hidden element
	// in case it will change in the future all changes will be reflected accordingly
	var initiationFee = parseFloat( getElement("InitiationFee").value );

	var monthlyTotal = new Array(6);
	var taxAmount;
	var totalAmount;

	monthlyTotal[1] = parseFloat(getElement("One_Month").value);
	monthlyTotal[3] = parseFloat(getElement("Three_Month").value);
	monthlyTotal[6] = parseFloat(getElement("Six_Month").value);

	monthlyCost = parseFloat(monthlyTotal[ monthDuration ]);

	if( monthDuration == 1 )
		getElement("payment-duration").innerHTML = monthDuration + " Month Membership ";
	else
		getElement("payment-duration").innerHTML = monthDuration + " Months Membership ";

	var subTotal = monthlyCost + initiationFee;

	taxAmount = subTotal * 0.05;
	totalAmount = subTotal * 1.05;

	getElement("payment-subtotal").innerHTML = "$" + subTotal.toFixed(2);

	getElement("payment-tax").innerHTML = "$" + taxAmount.toFixed(2);
	getElement("payment-total").innerHTML = "$" + totalAmount.toFixed(2);
	
	monthlyCost = monthlyCost.toFixed(2);
	
	getElement("payment-monthly-total").innerHTML = "$" + monthlyCost;
}

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;
}
/*
	Used in settings page; This mechanism switches between radio buttons, hiding all div elements, which are "informative boxes" except the div box of the element that was clicked
*/
function toggleFormElements(formId,elementToShow)
{
	var oForm = getElement(formId);

	var oFormDivs = oForm.getElementsByTagName('div');
	var oFormLis = oForm.getElementsByTagName('li');

	for( var i=0; i < oFormDivs.length; i++ )
	{
		if( i == (elementToShow-1) )
			oFormDivs[i].style.display = 'block';
		else
			oFormDivs[i].style.display = 'none';
	}

	getElement("settings-disconnect-submit-buttons").style.display = 'block';
}