// ---------
// GENERAL FUNCTIONS
// ---------

// Method for an array of checkboxes to check all,
// based on a given source input element and the id of the checbox array.
function checkAll( source, id )
{
	var element = document.getElementsByName( id );
	
	for( var i = 0; i < element.length; i++ )
	{
		element[i].checked = source.checked;
	}
}

// Method to generate a password for a given form.
// Based on the given form the function knows which fields to change.
function generatePassword( form )
{
	var generatedPassword = document.getElementById( 'generated_password' );
	var generatedPassword = generatedPassword.value;

	switch( form )
	{
		case "register":
		{
			var password_first = document.getElementById( 'password_first' );
			var password_repeat = document.getElementById( 'password_repeat' );

			password_first.value = generatedPassword;
			password_repeat.value = generatedPassword;
		}
	}
}

function showHelpWindow( id, list )
{
	var iebody=(document.compatMode && document.compatMode != "BackCompat")? document.documentElement : document.body;
	var dsoctop=document.all? iebody.scrollTop : pageYOffset;
	
	hideWindows(list);
	document.getElementById( id ).style.top = event.clientY + dsoctop+ "px";
	document.getElementById( id ).style.visibility = "visible";
}

function hideWindows( list )
{
	for (var i = 0; i < list.length; i++)
	{
		document.getElementById( list[i] ).style.visibility = "hidden";
	}
}

// -------------
// EVENT PRICING
// -------------

// Method to add a row to a event pricing table.
function addEventPricingRow( pricegroup, price )
{
	var row = document.createElement('tr');
	var colFirst = document.createElement('td');
	var colGroup = document.createElement('td');
	var colPrice = document.createElement('td');
	
	var inputGroup = document.createElement('input');
	var inputPrice = document.createElement('input');
	var aPrice = document.createElement( 'a' );
	
	colGroup.style.align = "left";
	
	inputGroup.name = "event_price_group[]";
	inputGroup.value = pricegroup;
	inputGroup.className = "large";
	inputGroup.style.width = "150px";
	inputPrice.name = "event_price_price[]";
	inputPrice.value = price;
	inputPrice.className = "medium";
	aPrice.innerHTML = "Verwijderen";
	
	colGroup.appendChild( inputGroup );
	colPrice.appendChild( document.createTextNode( "€ " ) );
	colPrice.appendChild( inputPrice );
	colPrice.appendChild( document.createTextNode( " ( " ) );
	colPrice.appendChild( aPrice );
	colPrice.appendChild( document.createTextNode( " ) " ) );

	row.appendChild( colFirst );
	row.appendChild( colGroup );
	row.appendChild( colPrice );
	
	document.getElementById( "event_pricing" ).getElementsByTagName('tbody')[0].appendChild( row );
	
	// Onclick delete button.
	Event.observe( aPrice, "click", removeEventPricingRow.bindAsEventListener() );
}

// Method to remove a row from a table.
this.removeEventPricingRow = removeEventPricingRow;
function removeEventPricingRow( row )
{
	if( row.parentNode == undefined )
	{
		row = Event.element(row);
	}
	
	// Remove row.
	document.getElementById("event_pricing").getElementsByTagName('tbody')[0].removeChild(row.parentNode.parentNode);
}

// Method to disable all input fields for event pricing.
function disableEventPricing( source )
{
	var priceGroups = document.getElementsByName( 'event_price_group[]' );
	var prices = document.getElementsByName( 'event_price_price[]' );
	
	// Disable/Enable price group fields.
	for( var i = 0; i < priceGroups.length; i++ ) { priceGroups[i].disabled = source.checked; }
	
	// Disable/Enable price fields.
	for( var i = 0; i < prices.length; i++ ) { prices[i].disabled = source.checked; }
	
	// Show/Hide table and disable/enable link.
	if( source.checked )
	{
		document.getElementById('event_price_add_link').disabled = true;
		document.getElementById('event_pricing').style.display = 'none';
	}
	else
	{
		document.getElementById('event_price_add_link').disabled = false;
		document.getElementById('event_pricing').style.display = 'block';
	}
}

// -------------
// EVENT TIMING
// -------------

// Method to disable all input fields for event pricing.
function disableEventTiming( source )
{
	var openingTimes = document.getElementsByName( 'event_timing_opening[]' );
	var closingTimes = document.getElementsByName( 'event_timing_closing[]' );
	var closedBoxes	= document.getElementsByName( 'event_timing_closed[]' );
	
	// Disable/Enable opening time fields.
	for( var i = 0; i < openingTimes.length; i++ ) { openingTimes[i].disabled = source.checked; }
	
	// Disable/Enable closing time fields.
	for( var i = 0; i < closingTimes.length; i++ ) { closingTimes[i].disabled = source.checked; }
		
	// Disable/Enable closed checkboxes
	for( var i = 0; i < closedBoxes.length; i++ ) { closedBoxes[i].disabled = source.checked; }
	
	// Show/Hide table and disable/enable link.
	if( source.checked ) { document.getElementById('event_timing').style.display = 'none'; }
	else				 { document.getElementById('event_timing').style.display = 'block'; }
}

// Method to add a row to a event pricing table.
function addEventTimingRow( day, title, openingtime, closingtime, closed )
{
	var row = document.createElement('tr');
	var colDay = document.createElement('td');
	var colOpeningtime = document.createElement('td');
	var colClosingtime = document.createElement('td');
	var colClosed = document.createElement('td');
	var inputDay = document.createElement('input');
	var inputOpeningtime = document.createElement('input');
	var inputClosingtime = document.createElement('input');
	var inputClosed = document.createElement('input');

	colDay.style.textAlign = "right";
	colDay.style.paddingRight = "10px";
	
	inputDay.setAttribute('type', 'hidden');
	inputDay.name = "event_timing_day[]";
	inputOpeningtime.name = "event_timing_opening[]";
	inputOpeningtime.id = "event_timing_opening_" + day;
	inputClosingtime.name = "event_timing_closing[]";
	inputClosingtime.id = "event_timing_closing_" + day;
	inputClosed.setAttribute('type', 'checkbox');
	inputClosed.name = "event_timing_closed_" + day;
	inputClosed.id = "event_timing_closed_" + day;
	inputClosed.style.border = "0px";
	inputClosed.style.backgroundColor = "transparent";
	inputClosed.onchange = function()
	{
		if( this.checked == true )
		{
			document.getElementById( "event_timing_opening_" + day ).value = "";
			document.getElementById( "event_timing_closing_" + day ).value = "";
		}
	}
	
	inputDay.value = day;
	inputOpeningtime.value = openingtime;
	inputClosingtime.value = closingtime;
	
	inputOpeningtime.className = "medium";
	inputClosingtime.className = "medium";
	
	colDay.appendChild( document.createTextNode( title ) );
	colDay.appendChild( inputDay );
	colOpeningtime.appendChild( inputOpeningtime );
	colClosingtime.appendChild( inputClosingtime );
	
	colClosed.appendChild( inputClosed );
	if( closed == "true" ) { inputClosed.checked = true; }
	colClosed.appendChild( document.createTextNode( " Gesloten" ) );

	row.appendChild( colDay );
	row.appendChild( colOpeningtime );
	row.appendChild( colClosingtime );
	row.appendChild( colClosed );
	
	document.getElementById( "event_timing" ).getElementsByTagName('tbody')[0].appendChild( row );
}

function fillAllTimings( days )
{
	var openingTime = document.getElementById( "event_timing_opening_all" ).value;
	var closingTime = document.getElementById( "event_timing_closing_all" ).value;
	
	document.getElementById( "event_timing_opening_monday" ).value = openingTime;
	document.getElementById( "event_timing_opening_tuesday" ).value = openingTime;
	document.getElementById( "event_timing_opening_wednesday" ).value = openingTime;
	document.getElementById( "event_timing_opening_thursday" ).value = openingTime;
	document.getElementById( "event_timing_opening_friday" ).value = openingTime;
	
	if( days != "workingdays")
	{
		document.getElementById( "event_timing_opening_saturday" ).value = openingTime;
		document.getElementById( "event_timing_opening_sunday" ).value = openingTime;		
	}
	
	document.getElementById( "event_timing_closing_monday" ).value = closingTime;
	document.getElementById( "event_timing_closing_tuesday" ).value = closingTime;
	document.getElementById( "event_timing_closing_wednesday" ).value = closingTime;
	document.getElementById( "event_timing_closing_thursday" ).value = closingTime;
	document.getElementById( "event_timing_closing_friday" ).value = closingTime;
	
	if( days != "workingdays")
	{
		document.getElementById( "event_timing_closing_saturday" ).value = closingTime;
		document.getElementById( "event_timing_closing_sunday" ).value = closingTime;
	}
}

// -------------
// AJAX
// -------------

// Function to return certain ajax information.
function getAjaxInformation( module, information, outputElement, parameters )
{
	this.xmlHttp = getXmlHttpObject();
	if( xmlHttp == null )
	{
		alert( "Browser does not support HTTP Request!" );
		return;
	}
	
	var url = "http://www.uitidee.nl/" + module + "/ajax/" + information;
	
	for ( i = 0; i < parameters.length; i++ )
	{
		url += "/" + parameters[ i ];
	}
	
	xmlHttp.open( "GET", url, false );
	xmlHttp.send( null );
	
	if( outputElement != "" )
	{
		document.getElementById( outputElement ).innerHTML = xmlHttp.responseText;	
	}
	else
	{
		return xmlHttp.responseText;
	}
}

// Function to create the XMLHttp Object.
function getXmlHttpObject()
{
	var xmlHttp = null;
	
	try
	{
		// Firefox, Opera, Safari
		xmlHttp = new XMLHttpRequest();
	}
	catch( e )
	{
		try
		{
			xmlHttp = new ActiveXObject( "Msxml2.XMLHTTP" );
		}
		catch( e )
		{
			xmlHttp = new ActiveXObject( "Microsoft.XMLHTTP" );
		}
	}
	
	return xmlHttp;
}
