/*
	graphical user interface scripts

*/

$j(document).ready(function(){
		/*IE6 warning */
		$j(window).politeWarning(6,'<p>Geachte bezoeker,</p><p>U gebruikt een verouderde versie van Internet Explorer.<br /> Voor een goede werking van de website kunt u gratis upgraden naar de meest recente versie van Internet Explorer.<br /><a href="http://www.microsoft.nl/ie" title="Internet Explorer upgraden">Internet Explorer nu upgraden</a>.</p>');
		
		/*smooth scroll */
		$j('a[href=#top]').click(function(){
			$j('html, body').animate({scrollTop:0}, 'slow');
			return false;
		});
		
	});


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;

	//S.IJPMA onderstaande omgedraaid ivm met bug in help
	add_events_links();
	prepare_menu();

	add_onclick_meeting();
	add_onclick_notities();
	hide_reactform();
    if (typeof hide_explanation == 'function')
    {
        hide_explanation();
    }
	hilite_table();
	focus_login();
	add_click_searchbox();
	BrowserDetect.init();
	//correctPNG();
	//supersleight();
	
	if( (document.getElementById) && ( document.getElementById("sprekers_fragmenten") ) ){
		addSprekersFragmentenUitklap();
	}
	
	if(typeof(initEditor) == 'function')
	{
		initEditor();
	}

    if(document.getElementById('alledocumenten'))
    {
        $j('#alledocumenten > ul > li:first').before('<li id="documentlistheader"><span><input type="checkbox" name="selector" value="" onclick="checkAll(\'alldocuments\', \'documents[]\')"></span> <span>Selecteer/deselecteer alle</span></li>');
        $j('form[name=alldocuments]').submit(function(){return anySelected('alldocuments','documents[]','Er zijn geen bestanden geselecteerd');});
    }
    
    if($j.datepicker)
    {
        /* maak van datum inputvelden een kalender */
        $j('input.datepicker').datepicker(
        { 
            showOn: "button",
            buttonImage: "/site/default/images/icons/office-calendar.png",
            buttonImageOnly: true,
            buttonText: "Datum selecteren",
            dateFormat: 'dd-mm-yy' 
        });
        $j('input.datepicker').next().after('<img class="remove-date" src="/site/default/images/icons/emblem-unreadable.png" alt="Datum legen" title="Datum legen"/>');
        
        $j('img.remove-date').click(function()
        {
            $j(this).prev().prev().attr('value','DD-MM-JJJJ');
        });	
    }
}


function addSprekersFragmentenUitklap()
{
    $j("#sprekers_fragmenten .sprekers_fragmenten_verg h3")
    .parent()
        .addClass("closed")
    .end()
    .click(function () 
           {
               $j(this).parent().toggleClass( "closed" );
           });
}

function add_events_links()
{
	var links = document.getElementsByTagName('a');
	var img = '&nbsp;<img src="/site/default/images/icons/newwindow.png" alt="(Deze link opent in een nieuw venster)" />';
	for (var i = 0; i < links.length; i++)
	{
		var classes = links[i].className.split(' ');
		for(var j = 0; j < classes.length; j++)
		{
			switch (classes[j])
			{
				case 'newwindow':
					if(links[i].innerHTML!='')
					{
						links[i].setAttribute('title', links[i].getAttribute('title') + ', opent in een nieuw venster.');  
						links[i].onclick = newwin;
						if(!match_value(links[i].parentNode.className, 'newwindow_no_image'))
							links[i].innerHTML = links[i].innerHTML + img;
					}					
					break;
			}
		}
	}
}

function match_value(value, value2)
{
	var pattern = new RegExp(value2);
	if (value.match(pattern))
		return true;
		
	return false;
}

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

function add_click_searchbox()
{
	set_click('sq');
	set_click('search_text');
	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 set(id,display)
{
	var obj	=	document.getElementById(id);
	if(obj)
	{
		obj.style.display	=	display;
	}
}

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

function prepare_menu()
{
	var menu = document.getElementById('subnavlist')
	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)
		{
		
			href.className = 'selected';
			p = lis[n].parentNode;

			// open all parents
			while(p.getAttribute('id') != 'subnavlist')
			{
				if (p.className == 'closed')
				{
					p.className = 'opened';
				}
				if (p.className ==  'folder index')
				{
					p.className = p.className + ' opened';
				}
				p.style.display='block';
				p = p.parentNode;
			}
			
			// 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)');
			}
			if (lis[n].className.indexOf('opened') == -1)
			{
				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 add_onclick_notities()
{
	//vergadering omzetten naar Ajax
	if(document.getElementById('title_note_icon'))
	{
		var vergaderinglink = $('title_note_icon').down('a');
		if(vergaderinglink != null)
		{
			vergaderinglink.onclick=function()
				{
					var id	=	this.getAttribute('id').replace(/notelink/g,'');
					if(id != "")
					{
						var idx	=	id.split('_');
						get_note(idx[0],idx[1],idx[2]);
					}
				}
			vergaderinglink.setAttribute('href','javascript:void(0)');
		}
	}
	//voor documenten
	if(document.getElementById('notitie') != null)
	{
		var docelement = $('notitie').down('div');
		if(docelement !=null)
		{
			var id = docelement.getAttribute('id').replace(/note/g,'');
			if(id != "")
			{
				var idx	=	id.split('_');
				update_note_links(idx);
			}
		}
	}
}

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

function add_onclick_meeting()
{
  if(document.getElementById('agendapunten')){
	$$('ul.hilite li.agendaRow').each(function(li, index) 
	{
		var did		=	li.getAttribute('id');
				
		$$('#'+did+' a').each(function(a, index) 
		{
			var asid = a.getAttribute('id');
			if(null != asid && asid.indexOf('notelink') != -1)
			{
				a.onclick=function()
				{
					var note_id	=	this.getAttribute('id').replace(/notelink/g,'');
					var idx	=	note_id.split('_');
					get_note(idx[0],idx[1],idx[2]);
					//return false;
				}
				a.setAttribute('href','javascript:void(0)');
			}
			else
			{
				a.onclick=function()
				{
					var agendapunt_id	=	did.replace(/agendapunt/g,'');
					var idx	=	agendapunt_id.split('_');
					set_active(idx[0],idx[1],true);
					return false;
				}
			}			
		});
	});
  }
}


function move_sidebar_verg(clicked)
{
	var sbar = $('sidebar_verg');
	var xy = Position.cumulativeOffset(clicked);
	
	var newy = xy[1] - 9;
	//verschillende browsers zijn het niet eens over
	//de positie...
	if (BrowserDetect.browser == 'Explorer')
	{
		// NOTE: gebruik dit soort code alleen als je
		// weet wat je doet. Over het algemeen wil
		// je namelijk testen op functionaliteit, niet
		// op versie. 
		if (BrowserDetect.version == 6)
		{
			newy -= 7; 
		}
		else if (BrowserDetect.version == 7)
		{
			newy -= 20;
		}
	}
	
	// afhankelijk van de vormgeving hier
	// 'paddingTop', 'marginTop' of, bij absolute 
	// positionering, 'top' gebruiken
	sbar.style.marginTop = newy - 203 + 'px';	
}

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

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();
	}
}


var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};

function checkAll(formulier, field) // Alle aanwezige checkboxes aan of uitvinken.
{
    selector = eval("document."+formulier+".selector");
    field = eval("document."+formulier+"['"+field+"']");
    if (selector.checked == true)  // De bovenste checkbox
    {
        check = true;
    } 
    else 
    {
        check = false;
    }
    if (field) // Alleen doorlopen als er uberhaupt records zijn
    {
        for (i = 0; i < field.length; i++) 
        {
            if (!field[i].disabled)
            {
                field[i].checked = check ;
            }
        }
        if (i == 0) 
        {
            if (!field.disabled)
            {
                field.checked = check ;
            }
        }
    }
} 

function anySelected(formulier, field, msg)
{
    a = $j('form[name="'+formulier+'"] input[name="'+field+'"]:checked');
    if (a.length == 0)
    {
        alert(msg);
        return false;
    }
    else
    {
        return true;
    }
}

function submitForm(id, form) 
{
	var searchField = document.getElementById(id);
	var zoekwoorden = searchField.value;
	document.forms[form].action = '/zoeken/'+escape(zoekwoorden);
	document.forms[form].submit();
}    

function showprintalldocumentloader()
{
    if ($j('#alledocumenten input:checked').length > 0)
    {
        if ($j('#alledocumenten .printalldocumentloader').length == 0)
        {
            $j('#alledocumenten').append('<br/><div class="printalldocumentloader"><img src="/site/default/images/loading.gif" alt="bezig met laden" /> Bezig documenten samen te voegen, dit kan enige tijd duren als het veel of grote documenten betreft.</div>');
        }
        else
        {
            $j('#alledocumenten .printalldocumentloader').show();
        }
    }
}

