/*****************************************************************************
*
* DirectoryStructure module
* Copyrights (c)2006 navyism all rights reserved.
*
*****************************************************************************/
var currBlock	= '0';
var tree		= new Array();
tree['k0']		= '.';

function getFiles(dir)
{
	parent.parent.fList.fList.loadXMLDoc('loader.php?t=<?=time()?>&m=f&dir=' + dir + '&gid=' + gid + "&" + Date(), setFiles);
}

function setFiles(file)
{
	parent.parent.fList.fList.scroll(0,0);

	file = trim(file).split("\n");

	if(file[1])
	{
		var data = new Array();
		var fcase = '';
		var fword	= '';
		var filename;

		for(var i=1, j=0; i<file.length; i++, j++)
		{
			fword = file[i].substring(0, 1);

			if(fcase != fword)
			{
				fcase = fword;
				data[j] = "<div style='width:100%; display:block; float:right'><br><br><font style='font-size:34px; font-weight:bold; color:#ffffff'><u>" + fword + "</u></font><br><br></div>";
				j++;
			}

			filename = file[i].split('?');
			filename = filename[0];

			data[j] = "<div style='display:inline; float:left'><div style=''><a name=image" + j + "><img src=\"" + file[0] + "/" + filename + "\" border=0 align=absmiddle style=\"border-width:" + listFrameImageBorderSize + "px; border-style:solid; border-color:" + listFrameImageBorderColor + "; cursor:pointer\" ondragstart=\"copy_clip(this.src)\" alt=\"drag to copy\" onclick=\"showDetail(this, " + j + ", '" + ereg_replace("'", "\\'", file[i]) + "')\"></a>&nbsp;&nbsp;&nbsp;&nbsp;<br><font color=" + listFrameImageNameFontColor + " id=font" + j + "><b>" + filename + "</b></font>&nbsp;&nbsp;&nbsp;&nbsp;<br><br></div></div>";
		}

		data = data.join("");

		parent.parent.fList.fList.document.getElementById('list').innerHTML = "<font style='font-size:22px; font-weight:bold; color:" + listFrameInfoFontColor + "'>" + number_format(file.length - 1) + " images</font><br><br><br>" + data;
	}
	else
	{
		var data = document.getElementById('noImage').innerHTML;

		parent.parent.fList.fList.document.getElementById('list').innerHTML = data;
	}
}

function getDirs(obj, id, dir)
{
	if(ereg("^(folder|block)", obj.id))
	{
		if(currBlock != '')
		{
			document.getElementById('block' + currBlock).style.background	= directoryFrameUnselectedBackground;
			document.getElementById('block' + currBlock).style.color		= directoryFrameUnselectedFontColor;
			document.getElementById('folder' + currBlock).src				= "./img/folder_close.gif";
		}

		currBlock = ereg_replace("^(folder|block)", "", obj.id);
		document.getElementById('block' + currBlock).style.background	= directoryFrameSelectedBackground;
		document.getElementById('block' + currBlock).style.color		= directoryFrameSelectedFontColor;
		document.getElementById('folder' + currBlock).src				= "./img/folder_open.gif";

		getFiles(tree['k'+id]);

		if(document.getElementById('tree' + id).style.display != 'none')
		{
			return;
		}
	}

	if(document.getElementById('tree' + id).style.display == 'none')
	{
		document.getElementById('tree' + id).style.display = "inline";

		if(id != 0)
		{
			document.getElementById('folder' + id).src = "./img/folder_open.gif";
		}

		if(tree['k'+id])
		{
			var subname	= '';
			var cached	= new Array(id);
			var i		= 0;

			while(1)
			{
				if(tree['k' + id + '_' + i] != undefined)
				{
					subname		= tree['k' + id + '_' + i].split("/");
					subname		= subname[subname.length-1];
					cached[i+1]	= subname;

					i++;
				}
				else
				{
					break;
				}
			}

			cached = trim(cached.join("\n"));

			if(cached != id)
			{
				setDirs(cached);
				return;
			}
		}

		loadXMLDoc('loader.php?t=<?=time()?>&m=d&id=' + id + '&dir=' + dir + '&gid=' + gid, setDirs);
	}
	else
	{
		document.getElementById('tree' + id).style.display = "none";

		if(!ereg("blank\.gif", document.getElementById('parent' + id).src))
		{
			document.getElementById('parent' + id).src = "./img/button+.gif";
			document.getElementById('folder' + id).src = "./img/folder_close.gif";
		}
	}
}

function setDirs(res)
{
	res	= res.split("\n");

	var mother	= trim(res[0]);
	var subdir	= '';
	var	key		= '';
	var depth, block, isParent;

	if(res.length > 1)
	{
		var j = 0;

		if(mother != 0)
		{
			document.getElementById('parent' + mother).src = "./img/button-.gif";
		}

		for(var i=1; i<res.length; i++)
		{
			key = mother + '_' + j;

			depth	= key.split("_").length - 2;
			block	= "<img src='./img/blank.gif' border=0 align=absmiddle width=1 height=17>";
			folder	= '';

			for(var k=0; k<depth; k++)
			{
				block += "<img src='./img/blank.gif' border=0 align=absmiddle width=15 height=17>";
			}

			if(tree['s' + key] == 'N')
			{
				isParent = 'blank';
			}
			else
			{
				isParent = 'button+';
			}

			var resOrg	= res[i];
			var resEsc	= ereg_replace("'", "\\'", res[i]);
			var	motEsc	= ereg_replace("'", "\\'", tree['k' + mother]);

			folder += "<img onmousedown=\"getDirs(this, '" + mother + "_" + j + "', '" + motEsc + "/" + trim(resEsc) + "')\" id='parent" + mother + "_" + j + "' src='./img/" + isParent + ".gif' border=0 align=absmiddle width=15 height=13> \
			<img onmousedown=\"getDirs(this, '" + mother + "_" + j + "', '" + motEsc + "/" + trim(resEsc) + "')\" id='folder" + mother + "_" + j + "' src='./img/folder_close.gif' border=0 align=absmiddle width=15 height=13>&nbsp;"

			subdir += block + "<div id='control" + mother + "_" + j + "' style='cursor:default;'>" + folder + "<div onmousedown=\"getDirs(this, '" + mother + "_" + j + "', '" + motEsc + "/" + trim(resEsc) + "')\" id='block" + mother + "_" + j + "' style='background:" + directoryFrameUnselectedBackground + "; color:" + directoryFrameUnselectedFontColor + "'>&nbsp;" + trim(res[i]) + "&nbsp;</div></div><br><div id=\"tree" + key + "\" style='display:none;'></div>";

			tree['k'+key]	= tree['k'+mother] + "/" + trim(resOrg);

			j++;
		}
	}
	else
	{
		if(mother != 0)
		{
			document.getElementById('parent' + mother).src = "./img/blank.gif";
			tree['s' + mother] = 'N';
		}
		else
		{
			tree['s' + mother] = undefined;
		}
	}

	document.getElementById('tree' + mother).innerHTML = subdir;
}

function trim(str)
{
	exp		= new RegExp("^( )+");
	str		= str.replace(exp,"");
	exp		= new RegExp("( )+$");
	str		= str.replace(exp,"");

	return str;
}

function ereg(exp,str)
{
	exp = new RegExp(exp);
	exp = str.match(exp);

	return exp;
}

function ereg_replace(ereg, dest, str)
{
	ereg = eval("/"+ereg+"/gm");
	return str.replace(ereg, dest);
}

function number_format(str)
{
	str+="";

	var objRegExp = new RegExp('(-?[0-9]+)([0-9]{3})');

    while(objRegExp.test(str))
    {
		str = str.replace(objRegExp, '$1,$2');
    }

	return str;
}
