
window.onload = function()
{
	testAjax();
	preloadImages();
	viewLoading(true);
		hookFlash();
		hookMenuEvents();
		hookButtonEvents();
	viewLoading(false); // todo: flash uit laten zetten aan het eind van movieclip
}

function hookFlash()
{
	var flashvars = false;
	var params = {
	menu: "false",
		flashvars: "clip=/include/flash/" + flashstart,
		allowscriptAccess: "always",
		swliveconnect: "true"
	};

	var attributes = {
		id: "flashmovie",
		name: "flashmovie"
	};

	swfobject.embedSWF("/include/flash/parvus.swf", "flashcontent", "790", "265", "8", "/include/flash/expressinstall.swf", flashvars, params, attributes);
	//swfobject.useExpressInstall("/include/flash/expressinstall.swf");
}

function hookMenuEvents()
{
	menunodes.forEach(
		function(node) {

			var link = document.getElementById('link'+node);

			if (TypeOfNode[node] == 'menuheader')
			{
				window['menu'+node] = new Fx.Slide('menu'+node, {duration: 500});
				if (!window.openmenu)
				{
					window['menu'+node].show();
					window['openmenu'] = node;
				}
				else window['menu'+node].hide();
				link.onclick = function () { return toggleMenu(node); }

			} else {
				link.onclick = function () { return togglePage(node); }
			}

			link.onmouseover = function () { previewItem(true, node); }
			link.onmouseout = function () { previewItem(false); }
		}
	);
}


function hookButtonEvents()
{
	buttons.forEach(
		function(button) {

			$(button).addEvent('mouseover', function() {
				$(button).setProperty('src', '/include/images/'+button+'1.gif');
				$('breadcrumb').setHTML(BreadcrumbOfButton[button]);
			});
			$(button).addEvent('mouseout', function() {
				$(button).setProperty('src', '/include/images/'+button+'0.gif');
				$('breadcrumb').setHTML(breadcrumb);
			});
			$(button).addEvent('click', function() {
				buttonaction(button);
			});
		}
	);
}


function preloadImages()
{
	new Asset.images('/include/images/iconloading1.gif');
	buttons.forEach(

		function(button) { new Asset.images('/include/images/'+button+'1.gif'); }
	);

}


function getContent(node)
{
	if (node == "currentnode") node = window.currentnode;
	try {
		// ---- Quick Fix 2010: Oude Mootools Ajax lib werkt niet goed meer met Firefox 3. ----
		setData('http://www.parvus.nl/?action=getcontent&page='+nodeToPage(node), 'content');

		//var test = new Ajax('/?action=getcontent&page='+nodeToPage(node), {method: 'get', update: $(content)}).request();
		return false; // content is al geladen met XMLHttpRequest
	}
	catch(err)
	{
		return true; // gewone links gebruiken

	}
}


function sendMail(feedback, successNode, errorMessage)
{
	try {
		var test = new Ajax('/?action=sendmail', {method: 'post', postBody: 'feedback='+escape(feedback), onComplete: function(response)
		{
			switch (response)
			{
				case "success":
					togglePage(successNode);
					break;

				case "error-input-empty":
					break;

				case "error-input-toolong":
				case "error-save-toomany":
				case "error-save":
				case "error-send":
				default:
					alert(errorMessage + "\n\n" + response);
					break;
			}
		}, onFailure: function() { alert(errorMessage); }}).request();

	}
	catch(err)
	{
		alert(errorMessage);
	}
}

function updateTagWithValue(node, field, tag)
{
	if (node == "currentnode") node = window.currentnode;
	try {
		new Ajax('/?action=getvalue&page='+nodeToPage(node)+'&field='+field, {method: 'get', update: $(sidecontent)}).request();
	}
	catch(err)
	{

	}
}


function editContent(node)
{
	if (node == "currentnode") node = window.currentnode;
	try {
		return false; // content laden met XMLHttpRequest
	}
	catch(err)
	{
		return true; // gewone links gebruiken

	}
}


function nodeToPage(node)
{
	// node = "parvus123" -> page = "123"
	return node.substring(6);
}

function testAjax() // is XMLHttpRequest beschikbaar?
{
	try {
		var test = new Ajax('http://www.parvus.nl/?action=getcontent&page=0', {method: 'get'}).request();
		window['ajaxerror'] = false; // XMLHttpRequest beschikbaar
	}
	catch(err)
	{
		window['ajaxerror'] = true; // XMLHttpRequest niet gebruiken

	}
}


function toggleMenu(nodename)
{
	window.openmenu = nodename;
	menunodes.forEach(

		function(node) {

			if (TypeOfNode[node] == 'menuheader')
			{
				if (openmenu == node) window['menu'+node].slideIn();
				else window['menu'+node].slideOut();
			}
		}
	);
	return false;
}


function togglePage(node)
{
	viewLoading(true);
	window['currentnode'] = node;
	newClip('/include/flash/' + node + '.swf');

	breadcrumb = BreadcrumbOfNode[node];
	$('breadcrumb').setHTML(breadcrumb);

	if (!window.contenttransition)
	{
		window['contenttransition'] = new Fx.Style('content', 'opacity', 
		{
			onComplete: function()
			{
				if (!ajaxerror)
				{
					getContent("currentnode");
					$('content').effect('opacity').start(0, 1);
				}
				viewLoading(false);

			}
		});
	}
	contenttransition.start(1, 0);


	updateTagWithValue(node, 'sidecontent', 'tag')
	return ajaxerror; // links op normale wijze uitvoeren als XMLHttpRequest niet beschikbaar is
}


function previewItem(active, node)
{
	if (active)
	{
		$('breadcrumb').setHTML(BreadcrumbOfNode[node]);
		// Misschien wat Flash-acties?
	}
	else
	{
		$('breadcrumb').setHTML(breadcrumb);
	}
}


function viewLoading(loading)
{
	if (loading)
	{
		$('iconloading').setProperty('src', '/include/images/iconloading1.gif');
	}
	else
	{
		setTimeout(function() {
			$('iconloading').setProperty('src', '/include/images/iconloading0.gif');
		}, 1000);
	}
}



function newClip(filename)
{
	var obj = swfobject.getObjectById("flashmovie");
	if (obj)
	{
		obj.newClip(filename);
	}
}



// --- deze vervangen voor mootools? ---


// Javascript-includes

var included_files = new Array();

function include_once(script_filename)
{
    if (!in_array(script_filename, included_files)) {
        included_files[included_files.length] = script_filename;
        include_dom(script_filename);
    }
}

function in_array(needle, haystack)
{
    for (var i = 0; i < haystack.length; i++) {
        if (haystack[i] == needle) {
            return true;
        }
    }
    return false;

}

function include_dom(script_filename)
{
    var html_doc = document.getElementsByTagName('head').item(0);
    var js = document.createElement('script');
    js.setAttribute('language', 'javascript');
    js.setAttribute('type', 'text/javascript');
    js.setAttribute('src', script_filename);
    html_doc.appendChild(js);
    return false;
}



// ---- Quick Fix 2010: Oude Mootools Ajax lib werkt niet goed meer met Firefox 3. ----

function getHTTPObject()
{
        var xmlhttp;

        /** Special IE only code ... */
        /*@cc_on
          @if (@_jscript_version >= 5)
              try
              {
                  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
              }
              catch (e)
              {
                  try
                  {
                      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                  }
                  catch (E)
                  {
                      xmlhttp = false;
                  }
             }
          @else
             xmlhttp = false;
        @end @*/

        /** Every other browser on the planet */
        if (!xmlhttp && typeof XMLHttpRequest != 'undefined')
        {
            try
            {
                xmlhttp = new XMLHttpRequest();
            }
            catch (e)
            {
                xmlhttp = false;
            }
        }

        return xmlhttp;
}



var xmlHttp = getHTTPObject();

function setData(url, elementid)
{
	xmlHttp.open('GET', url, true);
	xmlHttp.onreadystatechange = function()
	{
		if (xmlHttp.readyState != 4) return;
		var result = xmlHttp.responseText;
		document.getElementById(elementid).innerHTML = result;
	};
	xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	xmlHttp.send(null);
}




