/*
	graphical user interface scripts

*/

if (document.addEventListener) 
{
    document.addEventListener("DOMContentLoaded", init, null);
}

// fallback
window.onload = init;

function init()
{
	//make sure we only get here once
	if (arguments.callee.done)
	{
		return;
	}
	arguments.callee.done = true;
	
	prepare_menu();
	styleOndernemersLoket();
	add_events_links();
	add_click_searchbox();
}

function add_events_links()
{
	var links = document.getElementsByTagName('a');
	var img = '&nbsp;<img src="/site/gemeente_oude_ijsselstreek_website/layout/images/newwindow.png" alt="(Deze link opent in een nieuw venster)" />';
	for (var i = 0; i < links.length; i++)
	{
		switch (links[i].className)
		{
			case 'newwindow':
				links[i].setAttribute('title', links[i].getAttribute('title') + ', opent in een nieuw venster.');  
				links[i].onclick = newwin;
				
				var ch = links[i].getElementsByTagName('img');			

				if(!ch.length)
				{
					links[i].innerHTML = links[i].innerHTML + img;
				
				}
				break;
		}
	}
}

function add_click_searchbox()
{
	set_click('sq');
	set_click('q');
}

function set_click(id)
{
	var s_box = document.getElementById(id);
	if (s_box)
	{
		s_box.onclick = function(){clear_sbox(this)};
	}
}

function clear_sbox(a_box)
{
	if (a_box.value == 'uw zoekopdracht')
	{
		a_box.value = '';
	}
}

function newwin()
{
	window.open(this.href,'_blank');
	return false;
}

function sitemap(new_line)
{
	if(document.getElementById('sitemap'))
	{
		var _ul = get_children('sitemap','ul');
		var _lis = get_children(_ul[0],'li');
	
		var _counter = 1;
		
		for (var i = 0; i < _lis.length; i++) 
		{
			if(_counter == new_line)
			{
				_lis[i].className = 'right';
				_counter = 1;
			}
			else
			{
				_lis[i].className = 'left';
				_counter++;
			}
		}   	
	}
}

function get_children(_container,_child)
{
	var _containing_element = document.getElementById(_container);
	
	if(_containing_element == null)
	{
		_containing_element = _container;
	}

	if (_containing_element.hasChildNodes())
	{
		var children = _containing_element.childNodes;
	   	var match = 0;
	   	var matched_children = new Array();
	   	
	   	for (var i = 0; i < children.length; i++) 
	   	{
			if(children[i].tagName == _child.toUpperCase())
			{
				matched_children[match] = children[i];
				match++;
			}
	   	}
	   	if(matched_children.length > 0)
		{
			return matched_children;
		}
	}
}

/* ----- ---- - --- -- -- - ----- -- --- - ---- - -*/

function set(id,display)
{
	var obj	=	document.getElementById(id);
	if(obj)
	{
		obj.style.display	=	display;
	}
}

/* ----- ---- - --- -- -- - ----- -- --- - ---- - -*/

function prepare_menu()
{
	var menu = document.getElementById('mainmenu')
	if (menu)
	{
		collapse_all(menu);
		open_selected(menu);
		apply_events(menu);
	}
}

function toggle(a_item, docollapse)
{
	
	
	var uls = a_item.getElementsByTagName('ul')[0];
	var a = a_item.getElementsByTagName('a')[0];

	if (a.href == 'javascript:void(0)')
	{
		if (uls.style.display == 'none' || uls.style.display == '')
		{
			uls.style.display = 'block';
			a_item.className = 'opened';
		}
		else if (docollapse)
		{
			uls.style.display = 'none';
			a_item.className = 'closed';
		}
	}
}



function collapse_all(menu)
{
	var uls = menu.getElementsByTagName('ul');
	for (var n = 0; n < uls.length; n++)
	{
		uls[n].style.display = 'none';
	}
}

function open_selected(menu)
{
	var lis = menu.getElementsByTagName('li');
	var loc = String(document.location);
	
	for (var n = 0; n < lis.length; n++)
	{
		var href = lis[n].getElementsByTagName('a')[0];
		
		if ((href == loc) || (loc.match(href)))
		{
		
			href.className = 'selected';
			p = lis[n].parentNode;

			// open all parents
			while(p.getAttribute('id') != 'mainmenu')
			{
				
				if (p.className == 'closed')
				{
					p.className = 'opened';
				}
				p.style.display='block';
				p = p.parentNode;
			}
			var sublis = p.getElementsByTagName('li');
			
			for (var u = 0; u < sublis.length; u++)
			{
				var href = sublis[u].getElementsByTagName('a')[0];
				if ((href == loc) || (loc.match(href)))
				{
					href.className = 'selected';
					p = lis[u].parentNode;
					
					// open all parents
					while(p.getAttribute('id') != 'mainmenu')
					{
						
						if (p.className == 'closed')
						{
							p.className = 'opened';
						}
						p.style.display='block';
						p = p.parentNode;
					}
					
					ul = sublis[u].getElementsByTagName('ul')[0];
					if (ul)
					{
						ul.style.display = 'block';
					}
				}
			}
			
			
			// open children
			ul = lis[n].getElementsByTagName('ul')[0];
			if (ul)
			{
				ul.style.display = 'block';
			}
			break;
		}
	}
}


function apply_events(menu)
{
	var lis = menu.getElementsByTagName('li');
	for (var n = 0; n < lis.length; n++)
	{
		if (lis[n].getElementsByTagName('ul').length > 0)
		{
			a = lis[n].getElementsByTagName('a')[0];
			if (lis[n].className.indexOf('index') == -1)
			{
				a.setAttribute('href','javascript:void(0)');
			}
			
			lis[n].className = 'closed';
			// nasty, but neccesary for IE...
			a.onclick = function()
						{
							toggle(this.parentNode.parentNode,true)
						};
			
			// make sure people using a keyboard can access the links
			a.onkeyup = function()
						{
							toggle(this.parentNode.parentNode,false)
						};
		}
	}
}

function setfocus(id)
{
	var field = document.getElementById(id);
	if (field)
	{
		field.focus();
		flash(id, 1);
	}
}

function flash (id, pass)
{
	var field = document.getElementById(id);
	border = '2px solid red';
	if (pass % 2 == 0)
	{
		border = '2px dashed white';
	}
	field.style.border = border;
	if (pass < 15)
	{
		pass ++
		setTimeout("flash('" + id+ "','" + pass + "')",50);
	}
}

function hide_reactform()
{
	if(String(document.location).indexOf('eageer/') == -1)
	{
		var obj	=	document.getElementById('reactform');
		if(obj)
		{
			obj.style.display	=	'none';
		}
	}
}

function show_reactform()
{
	var obj	=	document.getElementById('reactform');
	if(obj)
	{
		if(obj.style.display == 'block')
		{
			hide_reactform();
		}
		else
		{
			obj.style.display	=	'block';
		}
	}
}

function hilite_table()
{
	if(document.getElementById && document.createTextNode)
 	{
   		var tables	=	document.getElementsByTagName('table');
   		for (var i=0;i<tables.length;i++)
   		{
    		if(tables[i].className=='hilite')
    		{
     			var trs=tables[i].getElementsByTagName('tr');
     			for(var j=0;j<trs.length;j++)
     			{
					if(trs[j].parentNode.nodeName=='TBODY' && trs[j].parentNode.nodeName!='TFOOT')
					{
						trs[j].onmouseover=function()
						{
							this.className += ' active';
							return false;
						}
       					trs[j].onmouseout=function()
       					{
       						this.className = this.className.replace(/active/g,'');
       						return false;
       					}
     				}
    			}
   			}
  		}
 	}
}

/* ----- ---- - --- -- -- - ----- -- --- - ---- - -*/

function focus_login()
{
	var obj	=	document.getElementById('name');
	if (obj)
	{
		setfocus_only('name');
	}
}

function setfocus_only(id)
{
	var field = document.getElementById(id);
	if (field)
	{
		field.focus();
	}
}

function styleOndernemersLoket()
{
	var content = document.getElementById("content");
	if (content)
	{
		var rows = content.getElementsByTagName("li");
		for (var i = 0; i < rows.length; i++)
		{
			if (rows[i].className == "row")
			{
				rows[i].style.height = "26em";
				var lis = rows[i].getElementsByTagName("li");
				var title = rows[i].getElementsByTagName("h2");
				if (lis.length > 4)
				{
					var newPage = "";
					if (title[0])
					{
						newPage = "<h2>"+title[0].innerHTML+"</h2>";
					}
					newPage += "<ul>";
					for (var j = 0; j < 5; j++)
					{
						if (j == lis.length)
						{
							break;
						}
						newPage += "<li>"+lis[j].innerHTML+"</li>";
					}
					var link = title[0].innerHTML.toLowerCase();
					link  = link.replace(" ", "_");
					link  = link.replace(",", "");
					newPage += '<li class="rubriekmore"><a href="/rubrieken/'+link+'">Meer in \''+title[0].innerHTML+'\'</a></li>';
					newPage += "</ul>";
					rows[i].innerHTML = newPage;
				}
			}
		}
	}
}
