$(function() {
	// hide all the sub-menus
	$("span.folder").next().hide();
	
	// set the cursor of the toggling span elements
	$("span.folder").css("cursor", "pointer");
	
	closeFolders = function(){
		$("li.open").each(function(){
			$(this).removeClass('open');
			$(this).addClass('closed');
			$("ul.docs").each(function(){
				if($(this).is(':visible')){
					$(this).hide(1000);
				}
			});
		});
		$("li.open_folders").each(function(){
			$(this).removeClass('open_folders');
			$(this).addClass('closed_folders');
			if ($(this).children('.sub').is(':visible')){
				$(this).children('.sub').hide(1000);
			}
			$("ul.docs").each(function(){
				if($(this).is(':visible')){
					$(this).hide(1000);
				}
			});
		});
		$("li.open_sub").each(function(){
			$(this).removeClass('open_sub');
			$(this).addClass('closed_sub');
			$("ul.docs").each(function(){
				if($(this).is(':visible')){
					$(this).hide(1000);
				}
			});
		});
		$("li.open_sub_child").each(function(){
			$(this).removeClass('open_sub_child');
			$(this).addClass('closed_sub_child');
			if ($(this).children('.sub_folders').is(':visible')){
				$(this).children('.sub_folders').hide(1000);
			}
			$("ul.docs").each(function(){
				if($(this).is(':visible')){
					$(this).hide(1000);
				}
			});
		});
		$("li.open_sub_folder").each(function(){
			$(this).removeClass('open_sub_folder');
			$(this).addClass('closed_sub_folder');
		});
	}

	closeChild = function(){
		$("li.open_sub").each(function(){
			$(this).removeClass('open_sub');
			$(this).addClass('closed_sub');
			$("ul.docs").each(function(){
				if($(this).is(':visible')){
					$(this).hide(1000);
				}
			});
		});
		$("li.open_sub_child").each(function(){
			$(this).removeClass('open_sub_child');
			$(this).addClass('closed_sub_child');
			if ($(this).children('.sub_folders').is(':visible')){
				$(this).children('.sub_folders').hide(1000);
			}
			$("ul.docs").each(function(){
				if($(this).is(':visible')){
					$(this).hide(1000);
				}
			});
		});
		$("li.open_sub_folder").each(function(){
			$(this).removeClass('open_sub_folder');
			$(this).addClass('closed_sub_folder');
		});
	}

	closeFolders2 = function(){
		$("li.open2").each(function(){
			$(this).removeClass('open2');
			$(this).addClass('closed2');
			$("ul.docs").each(function(){
				if($(this).is(':visible')){
					$(this).hide(1000);
				}
			});
		});
		$("li.open_folders2").each(function(){
			$(this).removeClass('open_folders2');
			$(this).addClass('closed_folders2');
			if ($(this).children('.sub2').is(':visible')){
				$(this).children('.sub2').hide(1000);
			}
			$("ul.docs").each(function(){
				if($(this).is(':visible')){
					$(this).hide(1000);
				}
			});
		});
		$("li.open_sub2").each(function(){
			$(this).removeClass('open_sub2');
			$(this).addClass('closed_sub2');
			$("ul.docs").each(function(){
				if($(this).is(':visible')){
					$(this).hide(1000);
				}
			});
		});
		$("li.open_sub_child2").each(function(){
			$(this).removeClass('open_sub_child2');
			$(this).addClass('closed_sub_child2');
			if ($(this).children('.sub_folders2').is(':visible')){
				$(this).children('.sub_folders2').hide(1000);
			}
			$("ul.docs").each(function(){
				if($(this).is(':visible')){
					$(this).hide(1000);
				}
			});
		});
		$("li.open_sub_folder2").each(function(){
			$(this).removeClass('open_sub_folder2');
			$(this).addClass('closed_sub_folder2');
		});
	}

	closeChild2 = function(){
		$("li.open_sub2").each(function(){
			$(this).removeClass('open_sub2');
			$(this).addClass('closed_sub2');
			$("ul.docs").each(function(){
				if($(this).is(':visible')){
					$(this).hide(1000);
				}
			});
		});
		$("li.open_sub_child2").each(function(){
			$(this).removeClass('open_sub_child2');
			$(this).addClass('closed_sub_child2');
			if ($(this).children('.sub_folders2').is(':visible')){
				$(this).children('.sub_folders2').hide(1000);
			}
			$("ul.docs").each(function(){
				if($(this).is(':visible')){
					$(this).hide(1000);
				}
			});
		});
		$("li.open_sub_folder2").each(function(){
			$(this).removeClass('open_sub_folder2');
			$(this).addClass('closed_sub_folder2');
			$("ul.docs").each(function(){
				if($(this).is(':visible')){
					$(this).hide(1000);
				}
			});
		});
	}
	
	// add a click function that toggles the sub-menu when the corresponding
	// span element is clicked
	$("span.folder").click(function() {
		Shadowbox.clearCache();
		Shadowbox.setup();
		if ($(this).parent().hasClass('closed')){
			closeFolders();
			closeFolders2();
			$(this).parent().removeClass('closed');
			$(this).parent().addClass('open');
			var files = $(this).next("ul.files").html();
			var docs = $(this).next("ul.docs").html();
			if(files != null){
				if($('#filelist').is(':hidden')){
					$('#filelist').html(files);
					$('#filelist').show(1000);
				}else{
					$('#filelist').html('');
					$('#filelist').html(files);
				}
			}else{
				if(docs == null){
					if($('#filelist').is(':hidden')){
						$('#filelist').html('<li>This folder is empty');
						$('#filelist').show(1000);
					}else{
						$('#filelist').html('');
						$('#filelist').html('<li>This folder is empty');
					}
				}
			}
		
			if (docs != null){
				$(this).next("ul.docs").show(1000);
			}
			
			if(docs != null && files == null){
				if($('#filelist').is(':visible')){
					$('#filelist').html('');
					$('#filelist').hide(1000);
				}
			}
		}else if ($(this).parent().hasClass('open')){
			$(this).parent().removeClass('open');
			$(this).parent().addClass('closed');
			$('#filelist').hide(1000);
			$('#filelist').html('');
			$("ul.docs").each(function(){
				if($(this).is(':visible')){
					$(this).hide(1000);
				}
			});
		}else if ($(this).parent().hasClass('closed_folders')){
			closeFolders();
			closeFolders2();
			$(this).next().show(1000);
			$(this).parent().removeClass('closed_folders');
			$(this).parent().addClass('open_folders');
			var files = $(this).next('ul.sub').children("ul.files").html();
			var docs = $(this).next("ul.docs").html();
			if (files != null){
				if($('#filelist').is(':visible')){
					$('#filelist').html('');
					$('#filelist').html(files);
				}else{
					$('#filelist').html(files);
					$('#filelist').show(1000);
				}
			 }else{
				if($('#filelist').is(':visible')){
					$('#filelist').hide(1000);
					$('#filelist').html('');
				}
			}
			
			if (docs != null){
				$(this).next("ul.docs").show(1000);
			}
			
			if(docs != null && files == null){
				if($('#filelist').is(':visible')){
					$('#filelist').html('');
					$('#filelist').hide(1000);
				}
			}
		}else if ($(this).parent().hasClass('open_folders')){
			$(this).next().toggle(1000);
			$(this).parent().removeClass('open_folders');
			$(this).parent().addClass('closed_folders');
			if($('#filelist').is(':visible')){
				$('#filelist').hide(1000);
				$('#filelist').html('');
			}
			$("ul.docs").each(function(){
				if($(this).is(':visible')){
					$(this).hide(1000);
				}
			});
		}else if ($(this).parent().hasClass('closed_sub')){
			closeChild();
			closeChild2();
			$(this).parent().removeClass('closed_sub');
			$(this).parent().addClass('open_sub');
			var files = $(this).next("ul.files").html();
			var docs = $(this).next("ul.docs").html();
			if (files != null){
				if($('#filelist').is(':visible')){
					$('#filelist').html('');
					$('#filelist').html(files);
				}else{
					$('#filelist').html(files);
					$('#filelist').show(1000);
				}
			}
			
			if (docs != null){
				$(this).next("ul.docs").show(1000);
			}
			
			if(docs != null && files == null){
				if($('#filelist').is(':visible')){
					$('#filelist').html('');
					$('#filelist').hide(1000);
				}
			}
		}else if ($(this).parent().hasClass('open_sub')){
			$(this).parent().removeClass('open_sub');
			$(this).parent().addClass('closed_sub');
			$("ul.docs").each(function(){
				if($(this).is(':visible')){
					$(this).hide(1000);
				}
			});
			$('#filelist').hide(1000);
			$('#filelist').html('');
		}else if ($(this).parent().hasClass('closed_sub_child')){
			closeChild();
			closeChild2();
			$(this).next().show(1000);
			$(this).parent().removeClass('closed_sub_child');
			$(this).parent().addClass('open_sub_child');
			var files = $(this).next('ul.sub_folders').children("ul.files").html();
			var docs = $(this).next("ul.docs").html();
			if (files != null){
				if($('#filelist').is(':visible')){
					$('#filelist').html('');
					$('#filelist').html(files);
				}else{
					$('#filelist').html(files);
					$('#filelist').show(1000);
				}
			}
		}else if ($(this).parent().hasClass('open_sub_child')){
			$(this).parent().removeClass('open_sub_child');
			$(this).parent().addClass('closed_sub_child');
			$('#filelist').hide(1000);
			$('#filelist').html('');
			$("ul.docs").each(function(){
				if($(this).is(':visible')){
					$(this).hide(1000);
				}
			});
		}else if ($(this).parent().hasClass('closed_sub_folder')){
			$(this).parent().removeClass('closed_sub_folder');
			$(this).parent().addClass('open_sub_folder');
			var files = $(this).next("ul.files").html();
			if (files != null){
				if($('#filelist').is(':visible')){
					$('#filelist').html('');
					$('#filelist').html(files);
				}else{
					$('#filelist').html(files);
					$('#filelist').show(1000);
				}
			 }
		}else if ($(this).parent().hasClass('open_sub_folder')){
			$(this).parent().removeClass('open_sub_folder');
			$(this).parent().addClass('closed_sub_folder');
			$('#filelist').hide(1000);
			$('#filelist').html('');
			$("ul.docs").each(function(){
				if($(this).is(':visible')){
					$(this).hide(1000);
				}
			});
		}

		Shadowbox.clearCache();
		$('#filelist > li').each(function(){
			$(this).children("a.image").attr('rel', 'shadowbox[mixed]');
			Shadowbox.setup();
		});
	});
});