//Copyright (C) Prodiea Software

var ShowCheckBoxes = false;
var Front = false;
var CategorySearch = false;
var SelectedItemID = 1;
var PrevLocation = "";
var SearchHint = "fraza, słowa, fragmenty słów";

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: -14px; " +
						"margin: 5px 0px 0px " + (level * 10 + 14) + "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;<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;<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.textDecoration = "underline";
	SelectedItemID = aid;
}

function ElementFocus( aid )
{
	if( document.getElementById( "i" + aid ) )
	{
		if( document.getElementById( "i" + SelectedItemID ) )
			document.getElementById( "i" + SelectedItemID ).style.textDecoration = "none";
		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 Go( c, cs )
{
	document.searchform.c.value = c
	document.searchform.cs.value = cs;
	if( document.searchform.q.value == SearchHint )
		document.searchform.q.value = "";
	document.searchform.submit();
}

function SearchEditKeyDown( e )
{
	var keynum;
	if( window.event )
		keynum = e.keyCode;
	else if( e.which )
		keynum = e.which;

	if( keynum == 13 )
		Go( document.searchform.c.value, document.searchform.cs.value );
}

function SearchEditFocus( focused )
{
	if( focused )
	{
		if( document.searchform.q.value == SearchHint )
			document.searchform.q.value = "";
	}
	else
	{
		if( document.searchform.q.value == "" )
			document.searchform.q.value = SearchHint;
	}
}

function HTMLForEntry( i )
{
	var html = "";
	if( entries[i].Title != "-" || !Front )
		html = "<p style = 'text-align: left; padding: 0px 0px 0px 0px; " +
			"text-indent: -30px; " +
			"margin: 5px 0px 0px " + (15 + 30 + entries[i].level * 10) + "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 = \"\";'>";
	}

	if( entries[i].Title == "-" && Front )
		html = "<br>";
	else
		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 Change( i )
{
	if( SelectedItemID != entries[i].Name )
	{
		SetCookieKey( "tree" + entries[i].Name, 1 );
		if( Front )
			Go( entries[i].Name, document.searchform.cs.value );
		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 Colorize( elem, text1, text2 )
{
/*	if( text1 == "" || navigator.appName.search( "Explorer" ) >= 0 )
		return;*/

	var insertb = "<font style = 'background-color: #6d5c46'>";
	var inserta = "</font>";
	var words = text1.split( " " );
	var words2 = text2.split( " " );
	var content = elem.innerHTML;
	var rpl = new RegExp( "<form", "i" );
	if( content.search( rpl ) >= 0 )
		return;
	for( var n = 0; n < words.length; n ++ )
	{
		if( words[n] != "" )
		{
			rpl = new RegExp( "&shy;", "i" );
			var p = words[n].search( rpl );
			while( p >= 0 )
			{
				words[n] = words[n].substr( 0, p ) + '\u00ad' + words[n].substr( p + 5 );
				p = words[n].search( rpl );
			}
			p = words2[n].search( rpl );
			while( p >= 0 )
			{
				words2[n] = words2[n].substr( 0, p ) + '\u00ad' + words2[n].substr( p + 5 );
				p = words2[n].search( rpl );
			}

			rpl = new RegExp( words[n], "i" );
			p = content.search( rpl );
			var prevp = 0;
			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;
				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, words2[n].length ) + inserta + content.substr( p + words2[n].length )
					p += insertb.length + inserta.length + words2[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( text1, text2 )
{
	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, text1, text2 );
}

//code of fade effect becomes from: http://brainerror.net/scripts/javascript/blendtrans/
function opacity(id, opacStart, opacEnd, millisec) {
	var speed = Math.round(millisec / 100);
	var timer = 0;

	if(opacStart > opacEnd) {
		for(i = opacStart; i >= opacEnd; i--) {
			setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
			timer++;
		}
	} else if(opacStart < opacEnd) {
		for(i = opacStart; i <= opacEnd; i++)
			{
			setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
			timer++;
		}
	}
}

function changeOpac(opacity, id) {
	var object = document.getElementById(id).style; 
	object.opacity = (opacity / 100);
	object.MozOpacity = (opacity / 100);
	object.KhtmlOpacity = (opacity / 100);
	object.filter = "alpha(opacity=" + opacity + ")";
}
