var ie = navigator.userAgent.toLowerCase().indexOf("msie")>-1 && navigator.userAgent.toLowerCase().indexOf("opera")< 0;

<!-- ************************************************** -->

function FIND(item) 
{
	if (window.mmIsOpera) return(document.getElementById(item));
	if (document.all) return(document.all[item]);
	if (document.getElementById) return(document.getElementById(item));
	return(false);
}

<!-- ************************************************** -->

function FIND_SUB (item, subitemname)
{
	var result = null;
	if (item)
	{
		var count_sub = item.childNodes.length;
		var i;
		for (i = 0; !result && i != count_sub; i++)
		{
			if (item.childNodes[i].nodeName == subitemname)
			{
				result = item.childNodes[i];
			}
		}
	}
	return result;
}

var MS = (document.all) ? true: false;

<!-- ************************************************** -->

function ToggleItemByName (item_name)
{
	ToggleItem (FIND (item_name));
}

<!-- ************************************************** -->

function ToggleItem (item)
{
	if (item)
	{
		(item.style.display == "none") ? ShowItem (item) : HideItem (item);
	}
}

<!-- ************************************************** -->

function ShowItemByName (item_name)
{
	ShowItem (FIND (item_name));
}

<!-- ************************************************** -->

function ShowItem (item)
{
	if (item)
	{
		item.style.visibility = "visible";
		item.style.display = "block";
	}
}

<!-- ************************************************** -->

function HideItemByName (item_name)
{
	HideItem (FIND (item_name));
}

<!-- ************************************************** -->

function HideItem (item)
{
	if (item)
	{
		item.style.visibility = "hidden";
		item.style.display = "none";
	}
}

<!-- ************************************************** -->

function InitTable (tablename)
{
	var count_cols = arguments.length;
	var i;
	for (i = 1; i != count_cols; i++)
	{
		ToggleCol (tablename, arguments [i], "hide");
	}
}

<!-- ************************************************** -->

function ToggleCol (tablename, colnr, toggle_state)
{
	var table = FIND (tablename);
	if (table)
	{
		var tbody = FIND_SUB(table, "TBODY");
		var i;
		var count_sub = tbody.childNodes.length;
		for (i = 0; i != count_sub; i++)
		{
			if (tbody.childNodes[i].nodeName == "TR")
			{
				var row = tbody.childNodes[i];
				var curr_col = 0;
				var done = false;
				var j;
				var count_cell = row.childNodes.length;
				for (j = 0; j != count_cell && !done; j++)
				{
					if (row.childNodes[j].nodeName == "TD")
					{
						if (curr_col == colnr - 1)
						{
							done = true;
							if (toggle_state == "show")
							{
								ShowItem (row.childNodes[j]);
							}
							else if (toggle_state == "hide")
							{
								HideItem (row.childNodes[j]);
							}
							else
							{
								if (row.childNodes[j].style.display == "none")
									row.childNodes[j].style.display = "";
								else
								{
									row.childNodes[j].style.display = "none";
								}
							}									
						}
						curr_col++;
					}
				}
				
			}
		}
	}
}

<!-- ************************************************** -->

function Mark (row, mode)
{
	row.bgColor= (mode) ? '#F5F6F6' : '#ffffff';
}

<!-- ************************************************** -->

function ShowDefaultPage (default_page_id)
{
	PageNavInit();
	var open_page_nr = -1;
	var query_page_id;
	var urlstr = document.URL + "";
	var query_page_pos = urlstr.indexOf ("#");
	if (query_page_pos != -1)
	{
		query_page_id = urlstr.substr (query_page_pos + 12);
		open_page_nr = GetPageNr (query_page_id);
	}

	if (open_page_nr == -1)
	{
		open_page_nr = GetPageNr (default_page_id);
	}
	
	PageNewPage (open_page_nr, true);
}


<!-- ************************************************** -->

function GetPageNr (page_id)
{
	var i; 
	var result = -1;

	for (i = 0; i != page_count; i++)
	{
		if (String (page_ids[i]) == String (page_id))
		{
			result = i;
		}
	}
	
	return result;	
}

<!-- ************************************************** -->

function PageNewPage (new_page_nr, firsttime)
{
	if (!firsttime)
	{
		HideItemByName ('para' + page_ids[page_nr]);
	}
	
	page_nr = new_page_nr;
	ShowItemByName ('para' + page_ids[page_nr]);
	
	var selectfield = FIND ("input_page_select");
	if (selectfield) 
		selectfield.value = (page_nr + 1) + "";
	PageNavInit();
}

<!-- ************************************************** -->

function PageNav (buttonname)
{
	var new_page_nr = page_nr;
	switch (buttonname)
	{
		case "img_page_prev":
			new_page_nr = Math.max (--new_page_nr, 0);
			break;
		case "img_page_next":
			new_page_nr = Math.min (++new_page_nr, page_count - 1);
			break;
	}
	if (new_page_nr != page_nr)
	{
		PageNewPage (new_page_nr);
	}
}

<!-- ************************************************** -->

function PageNavInput (sel_obj)
{
	PageNewPage (sel_obj.value - 1);
	return false;
}

<!-- ************************************************** -->

function PageNavInit()
{
	PageNavSetStatus ('img_page_prev');
	PageNavSetStatus ('img_page_next');
	var inputfield = FIND ("input_page_nr");
	if (inputfield) 
		inputfield.value = (page_nr + 1) + "";
}

<!-- ************************************************** -->

function PageNavSetStatus (buttonname)
{
	var button_obj = FIND (buttonname);
	if (button_obj)
		PageNavOk (buttonname) ? ShowItemByName (buttonname) : HideItemByName (buttonname);
}

<!-- ************************************************** -->

function PageNavOk (buttonname)
{
	var enabled = true;
	if (!page_nr && (buttonname == 'img_page_prev'))
		enabled = false;
	else if (page_nr == page_count - 1 && (buttonname == 'img_page_next'))
		enabled = false;
		
	return enabled;
}


<!-- ************************************************** -->

var scaling = 0;
var scaling_factor = 2;

function ScaleFontSize (object_name, scale_factor)
{
	var obj = FIND (object_name);
	if (obj)
	{
		scaling += scale_factor;
		scaling = Math.min (Math.max (scaling, 0), 2);
		SkaleFontSizeObjects (obj, scaling);
		var fontsize = FIND ('font_size');
		if (fontsize) 
			fontsize.style.fontSize = 10 + scaling;
	}
}

<!-- ************************************************** -->

function SkaleFontSizeObjects (obj, scaling)
{
	SkaleFontSizeObjectsTyped (obj, "h1", 24, scaling);
	SkaleFontSizeObjectsTyped (obj, "h2", 18, scaling);
	SkaleFontSizeObjectsTyped (obj, "h3", 12, scaling);
	SkaleFontSizeObjectsTyped (obj, "h4", 14, scaling);
	SkaleFontSizeObjectsTyped (obj, "h5", 10, scaling);
	SkaleFontSizeObjectsTyped (obj, "p", 12, scaling);
	SkaleFontSizeObjectsTyped (obj, "td", 12, scaling);
	SkaleFontSizeObjectsTyped (obj, "a", 12, scaling);
	SkaleFontSizeObjectsTyped (obj, "span", 12, scaling);
	SkaleFontSizeObjectsTyped (obj, "small", 10, scaling);
}

<!-- ************************************************** -->

function SkaleFontSizeObjectsTyped (root_object, object_name, default_size, scaling)
{
	var objects = root_object.getElementsByTagName (object_name);
	if (objects)
	{
		var count_objects = objects.length;
		var i;
		for (i = 0; i != count_objects; i++)
		{
			objects[i].style.fontSize = default_size + scaling_factor * scaling;
			SkaleFontSizeObjects (objects[i], scaling);
		}
	}
}

<!-- ************************************************** -->

function SetText (node_id, text)
{
	var elem = FIND (node_id);
	if (elem)
		elem.firstChild.nodeValue = text;
}

<!-- ************************************************** -->

document.onmousemove = GetPos;
var mouse_posx = 0;
var mouse_posy = 0;
var menu_preview = "";

function GetPos (event)
{
	if (ie)
	{
		mouse_posx = window.event.clientX + document.body.scrollLeft;
		mouse_posy = window.event.clientY + document.body.scrollTop;
	}
	else
	{
		mouse_posx = event.pageX;
		mouse_posy = event.pageY;
	}
}

<!-- ************************************************** -->

function BubbleInfo (bubble_text)
{
	var bubble_obj = FIND ("glossary_bubble");
	if (bubble_obj)
	{
		SetText ("text_glossary_bubble", bubble_text);
		bubble_obj.style.top = mouse_posy + 12;
		bubble_obj.style.left = mouse_posx + 12;
		ShowItem (bubble_obj);
	}
}

<!-- ************************************************** -->

function BubbleInfoOff()
{
		HideItemByName ("glossary_bubble");
}

<!-- ************************************************** -->
function MarkGlossaryWords (root_obj_name)
{
	if (glossary)
	{
		var root_obj = FIND (root_obj_name);
		if (root_obj)
		{
			var marked_content = root_obj.innerHTML;
			var counter = 0;
			var marked_word;
			var word_pos;
			var last_word_pos;
	
			for (var glossary_word in glossary) 
			{
				word_pos = marked_content.indexOf (glossary_word);
				while (word_pos != -1)
				{
					if (marked_content.substr (word_pos - 13, 10) != "BubbleInfo")
					{
						marked_word = "<a class='glossary_word' href='#' onmousemove='BubbleInfo (\"" + glossary [glossary_word] + "\")' onmouseout='BubbleInfoOff()'>" + glossary_word + "</a>";
						marked_content = marked_content.replace (glossary_word, marked_word);
//						root_obj.innerHTML = marked_content;
//						alert (glossary_word + ": " + marked_content.substr (word_pos - 13, 10));
					}
					last_word_pos = word_pos;
					word_pos = (marked_content.substr (word_pos + marked_word.length)).indexOf (glossary_word);
					if (word_pos != -1) word_pos += last_word_pos + marked_word.length;
				}
			}
			root_obj.innerHTML = marked_content;
		}
	}
}

<!-- ************************************************** -->

function toggleSel (chkBox) 
{
	checkSubTasks(chkBox, chkBox.checked);
}

<!-- ************************************************** -->

function checkSubTasks(chkBox, value) 
{
	var elems = document.getElementsByTagName("input");
	var i = 0;
	for (i = 0; i <= elems.length-1; i++) 
	{
		if ((elems[i].type == "checkbox") && (elems[i].id.substr(0, chkBox.id.length) == chkBox.id) && (elems[i].id.length > chkBox.id.length)) 
		{
			elems[i].checked = value;
			checkSubTasks(elems[i], value);
		}
	}
}

<!-- ************************************************** -->

function OpenWindow (win_href, win_title, win_width, win_height, win_center, with_scrollbars, win_resizable, with_bar)
{

	if (win_height > screen.availHeight - 50)
		win_height = screen.availHeight - 50;

	win_width = win_width - 0;
	if (with_scrollbars == 'true')
	{
		win_width += 20;
	}
	
	var win_flags = "width=" + win_width + ",height=" + win_height;
	win_flags += ",resizable=yes,dependent=yes";
	
	if (with_scrollbars == 'true')
	{
		win_flags += ",scrollbars=yes";
	}
	
	if (win_center)
	{
		var win_left = Math.ceil ((screen.availWidth - win_width) / 2);
		var win_top  = Math.ceil ((screen.availHeight - win_height) / 3);
		win_flags	+= ",left=" + win_left + ",top=" + win_top;
	}
	
	win_flags += ",resizable=" + ((win_resizable == "true") ? "yes" : "no");
	win_flags += ",location=" + ((with_bar == "true") ? "yes" : "no");
	win_flags += ",menubar=" + ((with_bar == "true") ? "yes" : "no");
	win_flags += ",toolbar=" + ((with_bar == "true") ? "yes" : "no");

	window.open (win_href, win_title, win_flags);
}

