var ShowCheckBoxes = false;
var Front = false;
var CategorySearch = false;
var SelectedItemID = 1;
var PrevLocation = "";

function GetCookieKey( key )
{
	var s = document.cookie.indexOf( key + "=" );
	if( s > -1 )
	{
		s += key.length + 1;
		var e = document.cookie.indexOf( ";", s );
		if( e < 0 )
			e = document.cookie.length;
		return unescape( document.cookie.substring( s, e ) );
	}
	return "";
}

function SetCookieKey( key, value )
{
	document.cookie = key + "=" + escape( value ) + ";";
}

var itemlevel = new Array();
var itemname = new Array();
var itemhaschildren = new Array();
var ftfoldercount = 0;
function httpResponse()
{
	if( http.readyState == 4 )
	{
		if( http.responseText.search( "message" ) >= 0 )
		{
			var pos = http.responseText.search( "message" );
			alert( http.responseText.substr( pos + 8 ) );
		}
		else if( http.responseText.search( "FolderTypeGetChildren" ) >= 0 )
		{
			var pos = http.responseText.search( "FolderTypeGetChildrenWP" );
			if( pos >= 0 )
				var table = http.responseText.substr( pos + 24 ).split( String.fromCharCode( 9 ) );
			else
			{
				pos = http.responseText.search( "FolderTypeGetChildren" );
				var table = http.responseText.substr( pos + 22 ).split( String.fromCharCode( 9 ) );
			}
			var div = document.getElementById( "treediv" + table[0] );
			if( itemlevel[table[0]] == null )
				itemlevel[table[0]] = 0;
			var level = itemlevel[table[0]];
			var inner = "";
			var n = 1;
			var containsselected = false;

			if( n < table.length )
			{
				while( n < table.length )
				{
					inner += "<p style = 'text-align: left; padding: 0px 0px 0px 0px; " +
						"text-indent: -22px; " +
						"margin: 5px 0px 0px " + (10 + 22 + level * 18) + "px;'>";
 
					itemlevel[table[n]] = level + 1;
					itemhaschildren[table[n]] = table[n + 2];
					itemname[table[n]] = table[n + 1];

					if( ShowCheckBoxes )
					{
						inner += "<input type = checkbox id = catchk" + table[n];
						if( pubcat[table[n]] == 1 )
							inner += " checked";
						inner += ">";							
					}
	
					if( table[n + 2] > 0 )
						if( GetCookieKey( "tree" + table[n] ) != "" )
							RequestAddSilent2( "ajaxhandler-11.php?FolderTypeGetChildren=" + table[n], httpResponse );

					if( document.searchform != null )
						inner += "<img src=category-58.png>&nbsp;&nbsp;&nbsp;<a id = 'treea" + 
							table[n] + "' class = category href = 'index.php?c=" + table[n] + "'>" + 
							table[n + 1] + "</a></p><div id = 'treediv" + 
							table[n] + "'></div>";
					else
						inner += "<img src=category-58.png>&nbsp;&nbsp;&nbsp;<a id = 'treea" + 
							table[n] + "' class = category href = 'javascript:ElementClick( " + 
							table[n] + " );'>" + table[n + 1] + "</a></p><div id = 'treediv" + 
							table[n] + "'></div>";
	
					if( table[n] == SelectedItemID )
						containsselected = true;
	
					n += 3;
	
					inner += "\n";
				}
			}

			div.innerHTML = inner;
			if( containsselected )
				ElementFocus( SelectedItemID );
		}

		CanPerformOperation = true;
	}
}

function TypeChanged( aid )
{
	if( document.getElementById( "categoryname" ) != null )
		document.getElementById( "categoryname" ).innerHTML = itemname[aid];
	if( document.getElementById( "catsearchyes" ) != null )
		document.getElementById( "catsearchyes" ).checked = true;	
}

function ElementSelect( aid )
{
	document.getElementById( "i" + aid ).style.fontWeight = "bold";
	SelectedItemID = aid;
}

function ElementFocus( aid )
{
	if( document.getElementById( "i" + aid ) )
	{
		if( document.getElementById( "i" + SelectedItemID ) )
			document.getElementById( "i" + SelectedItemID ).style.fontWeight = "normal";
		ElementSelect( aid );
		TypeChanged( aid );
	}
}

function ElementClick( aid )
{
	ElementFocus( aid );

	if( GetCookieKey( "tree" + aid ) == "" )
	{
		ShowFolderTypeEntry( aid );
		SetCookieKey( "tree" + aid, "1" );
	}
}

function ShowFolderTypeEntry( ftid )
{
	RequestAddSilent2( "ajaxhandler-11.php?FolderTypeGetChildren=" + ftid, httpResponse );
}

var entries = new Array();
function CreateEntry( name, parent, html, title, address, level )
{
	this.Name = name;
	this.parent = parent;
	this.html = html;
	this.Title = title;
	this.Address = address;
	this.level = level;
	return this;
}

function Change( i )
{
	if( SelectedItemID != entries[i].Name )
	{
		SetCookieKey( "tree" + entries[i].Name, 1 );
		if( Front )
			location.href = entries[i].Address;
		else
		{
			ElementFocus( entries[i].Name );
			CategoryShowCore();
		}
	}
	else
	{
		if( GetCookieKey( "tree" + entries[i].Name ) != 1 )
			SetCookieKey( "tree" + entries[i].Name, 1 );
		else
			SetCookieKey( "tree" + entries[i].Name, 0 );
		CategoryShowCore();
	}
}

function HTMLForEntry( i )
{
	var html = "<p style = 'text-align: left; padding: 0px 0px 0px 0px; " +
		"text-indent: -22px; " +
		"margin: 5px 0px 0px " + (10 + 22 + entries[i].level * 18) + "px;'>";
	if( ShowCheckBoxes )
	{
		html += "<input type = checkbox id = catchk" + entries[i].Name;
		if( document.getElementById( "catid" + entries[i].Name ).value == "on" )
			html += " checked";
		html += " onclick = 'if( document.getElementById( \"catchk" + entries[i].Name + "\" ).checked ){" +
						"document.getElementById( \"catid" + entries[i].Name + "\" ).value = \"on\";}" +
					"else document.getElementById( \"catid" + entries[i].Name + "\" ).value = \"\";'>";
	}
	html += "<img src=category-58.png>&nbsp;&nbsp;&nbsp" +
		"<a class = category id = \"i" + entries[i].Name + "\" title = \"" + 
		entries[i].Title + "\" href = \"javascript: Change( " + i + " );\">" + 
		entries[i].html + "</a></p>";
	return html;
}

function CategoryShowCore()
{
	var prevlevel = -1;
	var showchildren = 0;

	var html = "";
	for (var i = 0; i < entries.length; i ++) 
	{
		if( entries[i].level == 0 || entries[i].level <= prevlevel ||
			(showchildren == 1 && entries[i].level - prevlevel == 1) )
		{
			prevlevel = entries[i].level;
			html += HTMLForEntry( i );
			showchildren = GetCookieKey( "tree" + entries[i].Name ) == 1;
		}
	}

	document.getElementById( "categories" ).innerHTML = html;
	ElementFocus( SelectedItemID );
}

function CategoryShow()
{
	document.write( "<div id = categories>" );
	CategoryShowCore();
	document.write( "</div>" );
}

function Colorize( elem, text )
{
	if( text == "" || navigator.appName.search( "Explorer" ) >= 0 )
		return;

	var insertb = "<font style = 'background-color: #aaaaaa'>";
	var inserta = "</font>";
	var words = text.split( " " );
	var content = elem.innerHTML;
	for( var n = 0; n < words.length; n ++ )
	{
		if( words[n] != "" )
		{
			var rpl = new RegExp( words[n], "i" );
			var prevp = 0;
			var p = content.search( rpl );
			while( p >= 0 )
			{
				var canrpl = true;
				var c = p - 1;
				while( c >= prevp && content[c] != "<" && content[c] != ">" )
					c--;
				if( c >= 0 && content[c] == "<" )
					canrpl = false;
				var c = p + 1;
				while( c < content.length && content[c] != "<" && content[c] != ">" )
					c++;
				if( c < content.length && content[c] == ">" )
					canrpl = false;

				if( canrpl )
				{
					content = content.substr( 0, p ) + insertb + 
							content.substr( p, words[n].length ) + inserta + content.substr( p + words[n].length )
					p += insertb.length + inserta.length + words[n].length;
					prevp = p;
				}
				else
					p++;

				var tmp = content.substr( p ).search( rpl );
				if( tmp >= 0 )
					p += tmp;
				else
					p = -1;
			}
		}
	}
	elem.innerHTML = content;
}

function FrameSize()
{
	if( !pubframe || !pubframe.frames[1] )
		return;

	var f = pubframe.frames[1];
	var elem = null, elemf = null, h = 0, w = 0;

	if( !f.frames[0] || !f.frames[0].document.body )
	{
		if( f.document && f.document.body )
		{
			h = f.document.body.scrollHeight;
			elemf = f;
		}
	}
	else
	{
		if( f.frames[0] && f.frames[0].document && f.frames[0].document.body)
		{
			h += f.frames[0].document.body.scrollHeight;
			elemf = f.frames[0];
		}
		if( f.frames[1] && f.frames[1].document && f.frames[1].document.body  )
		{
			h +=  f.frames[1].document.body.scrollHeight;
			elemf = f.frames[1];
		}
		if( f.frames[2] && f.frames[2].document && f.frames[2].document.body )
			h += f.frames[2].document.body.scrollHeight;
	}

	if( pubframe.frames[0].document && pubframe.frames[0].document.body && 
			pubframe.frames[0].document.body.scrollHeight > h )
		h = pubframe.frames[0].document.body.scrollHeight;

	document.getElementById( "pubframe" ).height = h;

	if( elemf != null && PutStatInfo( elemf.location.href ) )
		Colorize( elemf.document.body, document.getElementById( "text" ).value );
}

function Go( cs )
{
	document.searchform.c.value = SelectedItemID;
	document.searchform.cs.value = cs;
	document.searchform.submit();
}

function SearchEditKeyDown( e )
{
	var keynum;
	if( window.event )
		keynum = e.keyCode;
	else if( e.which )
		keynum = e.which;

	if( keynum == 13 )
	{
		if( document.searchform.cs.value == "" )
			document.searchform.cs.value = 3;
		Go(  document.searchform.cs.value );

		return true;
	}
	return true;
}