

function submit_file_form( action )
{
	var form = document.forms[ 'form1' ];
	
	var ok = true;
	
	var reg = /[a-zA-Z0-9]/;
	
	if ( action == 'delete' )
	{
		ok = confirm( 'Are you sure you want to delete this file?' );
	}
	else if ( form.file_id.value != '' )
	{
		//  editing a file
		
		if ( ok && ! reg.test( form.file_internal_description_0.value ) )
		{
			ok = false;
			alert( 'Please fill in the admin description of this file.' );
		}
		
		if ( ok && ! reg.test( form.file_title_0.value ) )
		{
			ok = false;
			alert( 'Please fill in the public description (caption) of this file.' );
		}
	}
	else
	{
		var at_least_one = false;
		var i = 0;
		
		while ( ( i < form.elements.length ) && ok )
		{
			var form_el = form.elements[ i ];
			
			if ( form_el.type == 'file' || form_el.type == 'FILE' )
			{
				if ( form_el.value != '' )
				{
					at_least_one = true;
					
					if ( ok && ! reg.test( form.elements[ i + 1 ].value ) )
					{
						ok = false;
						form.elements[ i + 1 ].style.backgroundColor = '#ffb0b0';
						alert( 'Error: admin description missing.' );						
					}
					
					if ( ok && ! reg.test( form.elements[ i + 2 ].value ) )
					{
						ok = false;
						form.elements[ i + 2 ].style.backgroundColor = '#ffb0b0';
						alert( 'Error: public description (caption) missing.' );
					}
				}
			}
			
			i++;
		}
		
		if ( ok && ! at_least_one )
		{
			ok = false;
			alert( 'Please choose at least one file to upload.' );
		}
		
	}
	
	if ( ok )
	{
		form.user_action.value = action;
		form.submit();
	}
	
	
}



function submit_page_form( action )
{
	var form = document.forms[ 'form2' ];
	
	var ok = true;
	
	var reg = /[a-zA-Z0-9]/;
	
		
	if ( action == 'delete' )
	{
		ok = confirm( 'Are you sure you want to delete this project?' );
	}
	else
	{
		if ( ! reg.test( form.page_name.value ) )
		{
			ok = false;
			alert( 'Please fill in the page title.' );
		}
		
		if ( ok && ! reg.test( form.page_content.value ) )
		{
			ok = false;
			alert( 'Please fill in the project description.' );
		}
			
		if ( ok && ! ( form.page_featured[ 0 ].checked || form.page_featured[ 1 ].checked ) )
		{
			ok = false;
			alert( 'Please indicate if this project is to be featured.' );
		}
			
		if ( ok && ! ( form.page_display[ 0 ].checked || form.page_display[ 1 ].checked ) )
		{
			ok = false;
			alert( 'Please indicate if this project is to be displayed.' );
		}
		
	}
	
	if ( ok )
	{
		form.user_action.value = action;
		form.submit();
	}
	
	
}



function do_file_search()
{
	var searchtext = document.forms[ 'form1' ].searchtext.value;
	var template = $( 'file_search_template' ).innerHTML;
	
	document.forms[ 'form1' ].file_submit_button.value = 'Searching...';
	
	new Ajax.Request('fileSearch.php', {
  		method: 'post',
  		parameters: { searchtext: searchtext, template: template },
    	onSuccess: function( transport ){
      		var response = transport.responseText;
      		$( 'file_result_template' ).innerHTML = response;
      		document.forms[ 'form1' ].file_submit_button.value = 'Search';
   		}
  	} );

}




function move_file_up( idx )
{
	//  get positions of idx <tr> and next <tr>.
	
	var html = $( 'associated_files_div' ).innerHTML;
	var el_mid_pos = html.indexOf( 'associated_file_' + idx );
	var tr_str = '<tr';
	var el_start_pos = html.lastIndexOf( '<tr', el_mid_pos );
//  IE bug fix:  tags as capitals; indexOf == -1
	if ( el_start_pos == -1 )
	{
		el_start_pos = html.lastIndexOf( '<TR', el_mid_pos );
		tr_str = '<TR';
	}
	var el_end_pos = html.indexOf( tr_str, el_mid_pos );
	if ( el_end_pos == - 1 )       //  moving up the last element
	{
        el_end_pos = html.indexOf( '</tr>', el_mid_pos );
        if ( el_end_pos == -1 )
        {
        	el_end_pos = html.indexOf( '</TR>', el_mid_pos );
        }
        el_end_pos += 5;
    }
	var prev_start_pos = html.lastIndexOf( tr_str, el_start_pos - 4 );
	
	var el_length = el_end_pos - el_start_pos;
	
	//  cut out idx <tr>
	var el_str = html.slice( el_start_pos, el_end_pos );
	html = html.slice( 0, el_start_pos ) + html.slice( el_end_pos );
	
	html = html.slice( 0, prev_start_pos ) + el_str + html.slice( prev_start_pos );
	
	html = update_file_first_last( html );

	$( 'associated_files_div' ).innerHTML = html;
	
	
	var file_list = document.forms[ 'form2' ].file_list.value;
	var file_list_array = file_list.split( ':' );
	
	var el_index = -1;
	
	for ( var i = 0; i < file_list_array.length; i ++ )
	{
		if ( file_list_array[ i ] == idx )
		{
			el_index = i;
		}
	}
	
	file_list_array[ el_index ] = file_list_array[ el_index - 1 ];
	file_list_array[ el_index - 1 ] = idx;
	
	file_list = file_list_array.join( ':' );
	
	if ( file_list.slice( 0, 1 ) != ':' )
	{
		file_list = ':' + file_list;
	}
	
	if ( file_list.slice( -1 ) != ':' )
	{
		file_list += ':';
	}
	
	document.forms[ 'form2' ].file_list.value = file_list;
	
	
	
}



function move_file_down( idx )
{
	//  get positions of idx <tr> and next <tr>.
	
	var html = $( 'associated_files_div' ).innerHTML;
	var el_mid_pos = html.indexOf( 'associated_file_' + idx );
	var tr_str = '<tr';
	var el_start_pos = html.lastIndexOf( '<tr', el_mid_pos );
//  IE bug fix:  tags as capitals; indexOf == -1
	if ( el_start_pos == -1 )
	{
		el_start_pos = html.lastIndexOf( '<TR', el_mid_pos );
		tr_str = '<TR';
	}
	var el_end_pos = html.indexOf( tr_str, el_mid_pos );
	var next_end_pos = html.indexOf( tr_str, el_end_pos + 4 );
	
	var el_length = el_end_pos - el_start_pos;
	
	//  cut out idx <tr>
	var el_str = html.slice( el_start_pos, el_end_pos );
	var before_html = html.slice( 0, el_start_pos );
	var after_html = html.slice( el_end_pos );
	
	html = before_html + after_html;
	
	var new_pos = 0;
	
	if ( next_end_pos == -1 )      //  move down to last position
	{
        next_end_pos = after_html.indexOf( '</tr>' );
        if ( next_end_pos == -1 )
        {
        	next_end_pos = after_html.indexOf( '</TR>' );
        }
        new_pos = el_start_pos + next_end_pos;
    }
    else
    {
	   new_pos = next_end_pos - el_length;
	}
	
	html = html.slice( 0, new_pos ) + el_str + html.slice( new_pos );
    html = update_file_first_last( html );

	$( 'associated_files_div' ).innerHTML = html;
	
	
	var file_list = document.forms[ 'form2' ].file_list.value;
	var file_list_array = file_list.split( ':' );
	
	var el_index = -1;
	
	for ( var i = 0; i < file_list_array.length; i ++ )
	{
		if ( file_list_array[ i ] == idx )
		{
			el_index = i;
		}
	}
	
	file_list_array[ el_index ] = file_list_array[ el_index + 1 ];
	file_list_array[ el_index + 1 ] = idx;
	
	file_list = file_list_array.join( ':' );
	
	if ( file_list.slice( 0, 1 ) != ':' )
	{
		file_list = ':' + file_list;
	}
	
	if ( file_list.slice( -1 ) != ':' )
	{
		file_list += ':';
	}
	
	document.forms[ 'form2' ].file_list.value = file_list;
	
	
	
}



function remove_file( idx )
{
//    var tr_regexp = new RegExp( '<tr[^>]+associated_file_' + idx + '([^<]|<[^t]|<t[^r])+<tr' );
//	var html = $( 'associated_files_table' ).innerHTML.replace( tr_regexp, '<tr' );
	
	var html = $( 'associated_files_div' ).innerHTML;
	var el_mid_pos = html.indexOf( 'associated_file_' + idx );
	
	var end_tr_str = '<tr';
	
	var el_start_pos = html.lastIndexOf( '<tr', el_mid_pos );
	
//  IE bug fix:  tags as capitals; indexOf == -1
	if ( el_start_pos == -1 )
	{
		el_start_pos = html.lastIndexOf( '<TR', el_mid_pos );
		end_tr_str = '<TR';
	}
	
	
	var el_end_pos = html.indexOf( end_tr_str, el_mid_pos );
	
	if ( el_end_pos == -1 )    //  if you remove the last tr
	{
	   //  need to find the last </tr> instead
	   //  which I think could be </TR> in IE if we've moved things around
	   //  (The last one added gets a </tr>, but it could then be moved...)
	   
	   el_end_pos = html.indexOf( '</tr>', el_mid_pos );
	   
	   if ( el_end_pos == -1 )
	   {
	   		el_end_pos = html.indexOf( '</TR>', el_mid_pos );
	   }
	   
	   el_end_pos += 5;
	   
	}
	
	html = html.slice( 0, el_start_pos ) + html.slice( el_end_pos );
    
	var one_tr_regexp = /associated_file_[^0]/;
	
	if ( one_tr_regexp.test( html ) )
	{
	   html = update_file_first_last( html );
    }
	$( 'associated_files_div' ).innerHTML = html;
	
	document.forms[ 'form2' ].file_list.value = document.forms[ 'form2' ].file_list.value.replace( ':' + idx + ':', ':' );
}



function add_file( idx )
{
	var file_list_html = $( 'associated_files_div' ).innerHTML;
	if ( file_list_html.indexOf( 'associated_file_' + idx ) != -1 )
	{
		return false;
	}
	
	var arrow_td_end_pos = file_list_html.indexOf( '</td>' ) + 5;
	var tr_str = '<tr';
	var end_tr_str = '</tr>';
//  IE bug fix:  tags as capitals; indexOf == -1
	if ( arrow_td_end_pos == 4 )
	{
		arrow_td_end_pos = file_list_html.indexOf( '</TD>' ) + 5;
		tr_str = '<TR';
	}
	
	var tr_pos = file_list_html.indexOf( tr_str );
	var starting_html = file_list_html.slice( tr_pos, arrow_td_end_pos );
	starting_html = starting_html.replace( /0/g, '' + idx );
	starting_html = starting_html.replace( /style="[^"]*"/i, '' );
//alert( starting_html );
	
	var add_html = $( 'result_file_' + idx ).innerHTML;
	add_html = add_html.replace( /search_template_button/, 'associated_file_button' );
	add_html = add_html.replace( /value="?Add"?/, 'value="Remove"' );
	add_html = add_html.replace( /onclick="add/, 'onclick="remove' );
//alert( add_html );
	
	var html = $( 'associated_files_div' ).innerHTML;
	var end_tr_pos = html.lastIndexOf( '</tr>' ) + 5;
	
//  IE bug fix:  tags as capitals; indexOf == -1
	if ( end_tr_pos == 4 )
	{
		end_tr_pos = file_list_html.lastIndexOf( '</TR>' ) + 5;
	}
	
	html = html.slice( 0, end_tr_pos ) + starting_html + add_html + '</tr>';
	
	if ( html.indexOf( 'tbody' ) != -1 || html.indexOf( 'TBODY' ) != -1 )
	{
		html += '</tbody>';
	}
	html += '</table>';
//alert( html );
	
	html = update_file_first_last( html );
//alert( html );

	$( 'associated_files_div' ).innerHTML = html;
	
	document.forms[ 'form2' ].file_list.value += '' + idx + ':';
	
	
}







function update_file_first_last( html )
{
	html = html.replace( /class="?first"?/i, 'class=""' );
	html = html.replace( /class="?last"?/i, 'class=""' );
	
	var tr_str = '<tr';
	var td_str = '<td';
	
	var first_tr_pos = html.indexOf( tr_str );
//  IE bug fix:  tags as capitals; indexOf == -1
	if ( first_tr_pos == -1 )
	{
		tr_str = '<TR';
		td_str = '<TD';
		first_tr_pos = html.indexOf( tr_str );
	}
	
	
	var second_tr_pos = html.indexOf( tr_str, first_tr_pos + 10 );
	
	html = html.slice( 0, second_tr_pos ) + html.slice( second_tr_pos ).replace( /class=""/, 'class="first"' );
	
	var last_tr_pos = html.lastIndexOf( tr_str );
	var last_td_pos = html.indexOf( td_str, last_tr_pos );
	
	html = html.slice( 0, last_td_pos ) + html.slice( last_td_pos ).replace( /class=""/, 'class="last"' );
	
    return html;	
}















function show_image( el_idx )
{
	var current_image = $( 'image_container_' + current_image_idx );
	var current_height = Math.ceil( current_image.getDimensions().height );
	
	$( 'images_container' ).style.height = current_height + 'px';  // so it doesn't "flash" on the first image when we change its position to absolute
	
	var new_image = $( 'image_container_' + el_idx );
	
	
	current_image.style.visibility = 'hidden';
	current_image.style.position = 'absolute';
	
	new_image.style.visibility = 'visible';
	
	current_image_idx = el_idx;
	
}















function show_image2( el_idx )
{
	var current_image = $( 'image_container_' + current_image_idx );
	
	var current_height = Math.ceil( current_image.getDimensions().height );
	
	var new_image = $( 'image_container_' + el_idx );
	
	var new_height = Math.ceil( new_image.getDimensions().height );
	
	
	var contentInner = $( 'contentInner' );
	var contentInner_height = contentInner.getStyle( 'height' );  // not getDimensions bcs of padding
	
	if ( contentInner_height.slice( -2 ) == 'px' )
	{
		contentInner_height = contentInner_height.slice( 0, -2 );
	}
	
	contentInner_height = Math.ceil( contentInner_height );
	
	
	
	
	
	if ( image_height_max == -1 )		//  first time we swap an image
	{
		$( 'images_container' ).style.height = current_height + 'px';  // so it doesn't "flash" on the first image when we change its position to absolute
	
		contentInner.setStyle( { height: contentInner_height + 'px' } );  //  to keep it at the initial height if the first image is portrait and a later one landscape
		
		image_height_max = current_height;
	}
	
	
	
	if ( new_height > image_height_max )
	{
		contentInner.setStyle( { height: ( contentInner_height + new_height - image_height_max ) + 'px' } );
		image_height_max = new_height;
	}

	
	if ( new_height != current_height )
	{
		
		new Effect.Morph('images_container', {
			style: 'height:' + new_height + 'px',
			duration: 0.7
		});
	}
	
	current_image.style.visibility = 'hidden';
	current_image.style.position = 'absolute';
	
	new_image.style.visibility = 'visible';
	
	current_image_idx = el_idx;
	
}





function set_images_container_height( el_idx )
{
	var current_image = $( 'image_container_' + current_image_idx );
	
	var current_height = Math.ceil( current_image.getDimensions().height );
	
	$( 'images_container' ).style.height = current_height + 'px';	
	
}









