
function addAnotherRequirement()
{
	requireIndex = parseInt(requireIndex) + 1;

	// Show the data location dropdown now

	url = ipb.vars['base_url'] + "app=core&amp;module=ajax&amp;section=hooks&amp;do=getApplications&amp;secure_key=" + ipb.vars['md5_hash'] + "&i=" + requireIndex + "&name=requireApp";
	url = url.replace( /&amp;/g, '&' );

	new Ajax.Request( url,
	{
		method: 'GET',
		onSuccess: function ( t )
			{
				var newApp = ipb.templates['new_app_require'].evaluate({ index: requireIndex, dropdown: t.responseText });
				
				if ( $('RequirementsContainer').down('tbody') )
				{
					$('RequirementsContainer').down('tbody').insert( newApp );
				}
				else
				{
					$('RequirementsContainer').insert( newApp );
				}
			},
		onException: function( f,e ){ alert( "Exception: " + e ); },
		onFailure: function( t ){ alert( "Failure: " + t.responseText ); }
	} );
}

function removeRequirement( idToRemove )
{
	idToRemove = parseInt(idToRemove);
	
	if( $('requirementTitleRow_' + idToRemove ) != null )
	{
		$('requirementTitleRow_' + idToRemove ).remove();
	}

	if( $('requirementRow_' + idToRemove ) != null )
	{
		$('requirementRow_' + idToRemove ).remove();
	}
}


function addAnotherFile()
{
	elementIndex = parseInt(elementIndex) + 1;

	var newFile = ipb.templates['new_hook_file'].evaluate({ index: elementIndex });
	
	if ( $('fileTableContainer').down('tbody') )
	{
		$('fileTableContainer').down('tbody').insert( newFile );
	}
	else
	{
		$('fileTableContainer').insert( newFile );
	}
}

function removeFile( elementIndex )
{
	elementIndex = parseInt(elementIndex);

	if( $('fileRow_' + elementIndex ) != null )
	{
		$('fileRow_' + elementIndex ).remove();
	}
}

function selectHookType( elementIndex )
{
	var type = $F('hook_type[' + elementIndex + ']');

	if( $('tr_classToOverload[' + elementIndex + ']') != null )
	{
		$('tr_classToOverload[' + elementIndex + ']').remove();
	}
	
	if( $('tr_skinGroup[' + elementIndex + ']') != null )
	{
		$('tr_skinGroup[' + elementIndex + ']').remove();
	}
	
	if( $('tr_skinFunction[' + elementIndex + ']') != null )
	{
		$('tr_skinFunction[' + elementIndex + ']').remove();
	}
	
	if( $('tr_type[' + elementIndex + ']') != null )
	{
		$('tr_type[' + elementIndex + ']').remove();
	}
	
	if( $('tr_id[' + elementIndex + ']') != null )
	{
		$('tr_id[' + elementIndex + ']').remove();
	}
	
	if( $('tr_position[' + elementIndex + ']') != null )
	{
		$('tr_position[' + elementIndex + ']').remove();
	}
	
	if( $('tr_dataLocation[' + elementIndex + ']') != null )
	{
		$('tr_dataLocation[' + elementIndex + ']').remove();
	}
	
	if( $('tr_libApplication[' + elementIndex + ']') != null )
	{
		$('tr_libApplication[' + elementIndex + ']').remove();
	}
		
	if( type == 'templateHooks' )
	{
		// Show the skin dropdown now

		url = ipb.vars['base_url'] + "app=core&amp;module=ajax&amp;section=hooks&amp;do=getGroupsForAdd&amp;secure_key=" + ipb.vars['md5_hash'] + "&i=" + elementIndex;
		url = url.replace( /&amp;/g, '&' );
	
		new Ajax.Request( url,
						  {
							method: 'GET',
							onSuccess: function (t )
							{
								var newRow = ipb.templates['hook_skinGroup'].evaluate({ index: elementIndex, dropdown: t.responseText });
								
								if ( $('fileTable_' + elementIndex).down('tbody') )
								{
									$('fileTable_' + elementIndex).down('tbody').insert( newRow );
								}
								else
								{
									$('fileTable_' + elementIndex).insert( newRow );
								}
							},
							onException: function( f,e ){ alert( "Exception: " + e ); },
							onFailure: function( t ){ alert( "Failure: " + t.responseText ); }
						  } );
	}
	else if( type == 'dataHooks' )
	{
		// Show the data location dropdown now

		url = ipb.vars['base_url'] + "app=core&amp;module=ajax&amp;section=hooks&amp;do=getDataLocationsForAdd&amp;secure_key=" + ipb.vars['md5_hash'] + "&i=" + elementIndex;
		url = url.replace( /&amp;/g, '&' );
	
		new Ajax.Request( url,
						  {
							method: 'GET',
							onSuccess: function (t )
							{
								var newRow = ipb.templates['hook_dataLocation'].evaluate({ index: elementIndex, dropdown: t.responseText });
								
								if ( $('fileTable_' + elementIndex).down('tbody') )
								{
									$('fileTable_' + elementIndex).down('tbody').insert( newRow );
								}
								else
								{
									$('fileTable_' + elementIndex).insert( newRow );
								}
							},
							onException: function( f,e ){ alert( "Exception: " + e ); },
							onFailure: function( t ){ alert( "Failure: " + t.responseText ); }
						  } );
	}
	else if( type == 'libraryHooks' )
	{
		// Show the data location dropdown now

		url = ipb.vars['base_url'] + "app=core&amp;module=ajax&amp;section=hooks&amp;do=getApplications&amp;secure_key=" + ipb.vars['md5_hash'] + "&i=" + elementIndex;
		url = url.replace( /&amp;/g, '&' );
	
		new Ajax.Request( url,
						  {
							method: 'GET',
							onSuccess: function (t )
							{
								var replace = { index: elementIndex, dropdown: t.responseText };
								var newRow  = ipb.templates['hook_classToOverload'].evaluate(replace) + ipb.templates['hook_libApplication'].evaluate(replace);
								
								if ( $('fileTable_' + elementIndex).down('tbody') )
								{
									$('fileTable_' + elementIndex).down('tbody').insert( newRow );
								}
								else
								{
									$('fileTable_' + elementIndex).insert( newRow );
								}
							},
							onException: function( f,e ){ alert( "Exception: " + e ); },
							onFailure: function( t ){ alert( "Failure: " + t.responseText ); }
						  } );
	}
	else if( type != '0' )
	{
		// Show the classToOverload field
		
		var newRow = ipb.templates['hook_classToOverload'].evaluate({ index: elementIndex });
		
		if ( $('fileTable_' + elementIndex).down('tbody') )
		{
			$('fileTable_' + elementIndex).down('tbody').insert( newRow );
		}
		else
		{
			$('fileTable_' + elementIndex).insert( newRow );
		}
	}
}

function getTemplatesForAdd( elementIndex )
{
	var type = $F('skinGroup[' + elementIndex + ']');
	
	if( $('tr_skinFunction[' + elementIndex + ']') != null )
	{
		$('tr_skinFunction[' + elementIndex + ']').remove();
	}
	
	if( $('tr_type[' + elementIndex + ']') != null )
	{
		$('tr_type[' + elementIndex + ']').remove();
	}
	
	if( $('tr_id[' + elementIndex + ']') != null )
	{
		$('tr_id[' + elementIndex + ']').remove();
	}
	
	if( $('tr_position[' + elementIndex + ']') != null )
	{
		$('tr_position[' + elementIndex + ']').remove();
	}
	
	/* Got a type? */
	if( type != '0' )
	{
		url = ipb.vars['base_url'] + "app=core&amp;module=ajax&amp;section=hooks&amp;do=getTemplatesForAdd&amp;secure_key=" + ipb.vars['md5_hash'] + "&i=" + elementIndex + "&group=" + type;
		url = url.replace( /&amp;/g, '&' );
	
		new Ajax.Request( url,
						  {
							method: 'GET',
							onSuccess: function (t )
							{
								var newRow = ipb.templates['hook_skinFunction'].evaluate({ index: elementIndex, dropdown: t.responseText });
								
								if ( $('fileTable_' + elementIndex).down('tbody') )
								{
									$('fileTable_' + elementIndex).down('tbody').insert( newRow );
								}
								else
								{
									$('fileTable_' + elementIndex).insert( newRow );
								}
							},
							onException: function( f,e ){ alert( "Exception: " + e ); },
							onFailure: function( t ){ alert( "Failure: " + t.responseText ); }
						  } );
	}
}

function getTypeOfHook( elementIndex )
{
	var template = $F('skinFunction[' + elementIndex + ']');
	
	if( $('tr_type[' + elementIndex + ']') != null )
	{
		$('tr_type[' + elementIndex + ']').remove();
	}
	
	if( $('tr_id[' + elementIndex + ']') != null )
	{
		$('tr_id[' + elementIndex + ']').remove();
	}
	
	if( $('tr_position[' + elementIndex + ']') != null )
	{
		$('tr_position[' + elementIndex + ']').remove();
	}
	
	/* Insert the new hook type row */
	if ( template != '0' )
	{
		var newRow = ipb.templates['hook_pointTypes'].evaluate({ index: elementIndex });
		
		if ( $('fileTable_' + elementIndex).down('tbody') )
		{
			$('fileTable_' + elementIndex).down('tbody').insert( newRow );
		}
		else
		{
			$('fileTable_' + elementIndex).insert( newRow );
		}
	}
}

function getHookIds( elementIndex )
{
	var template	= $F('skinFunction[' + elementIndex + ']');
	var type		= $F('type[' + elementIndex + ']');

	if( $('tr_id[' + elementIndex + ']') != null )
	{
		$('tr_id[' + elementIndex + ']').remove();
	}
	
	if( $('tr_position[' + elementIndex + ']') != null )
	{
		$('tr_position[' + elementIndex + ']').remove();
	}
	
	/* Got a type? */
	if( type != '0' )
	{
		url = ipb.vars['base_url'] + "app=core&amp;module=ajax&amp;section=hooks&amp;do=getHookIds&amp;secure_key=" + ipb.vars['md5_hash'] + "&i=" + elementIndex + "&type=" + type + "&template=" + template;
		url = url.replace( /&amp;/g, '&' );
	
		new Ajax.Request( url,
						  {
							method: 'GET',
							onSuccess: function (t )
							{
								var newRow = ipb.templates['hook_pointIds'].evaluate({ index: elementIndex, dropdown: t.responseText });
								
								if ( $('fileTable_' + elementIndex).down('tbody') )
								{
									$('fileTable_' + elementIndex).down('tbody').insert( newRow );
								}
								else
								{
									$('fileTable_' + elementIndex).insert( newRow );
								}
							},
							onException: function( f,e ){ alert( "Exception: " + e ); },
							onFailure: function( t ){ alert( "Failure: " + t.responseText ); }
						  } );
	}
}

function getHookEntryPoints( elementIndex )
{
	var type = $F('type[' + elementIndex + ']');
	
	Debug.write( type );
	
	if( $('tr_position[' + elementIndex + ']') != null )
	{
		$('tr_position[' + elementIndex + ']').remove();
	}
	
	var options = '';
	
	if( type == 'foreach' )
	{
		options += "<option value='outer.pre'>(outer.pre) " + ipb.lang['a_outerpre'] + "</option>";
		options += "<option value='inner.pre'>(inner.pre) " + ipb.lang['a_innerpre'] + "</option>";
		options += "<option value='inner.post'>(inner.post) " + ipb.lang['a_innerpost']+ "</option>";
		options += "<option value='outer.post'>(outer.post) " + ipb.lang['a_outerpost']+ "</option>";
	}
	else
	{
		options += "<option value='pre.startif'>(pre.startif) " + ipb.lang['a_prestartif'] + "</option>";
		options += "<option value='post.startif'>(post.startif) " + ipb.lang['a_poststartif'] + "</option>";
		options += "<option value='pre.else'>(pre.else) " + ipb.lang['a_preelse'] + "</option>";
		options += "<option value='post.else'>(post.else) " + ipb.lang['a_postelse'] + "</option>";
		options += "<option value='pre.endif'>(pre.endif) " + ipb.lang['a_preendif'] + "</option>";
		options += "<option value='post.endif'>(post.endif) " + ipb.lang['a_postendif'] + "</option>";
	}
	/* Insert the new hook type row */
	//if ( type != '0' )
	//{
		var newRow = ipb.templates['hook_pointLocation'].evaluate({ index: elementIndex, hookPoints: options });
		
		if ( $('fileTable_' + elementIndex).down('tbody') )
		{
			$('fileTable_' + elementIndex).down('tbody').insert( newRow );
		}
		else
		{
			$('fileTable_' + elementIndex).insert( newRow );
		}
	//}
}