//	--------------------------------------	\\
//	Implementatie Dynamics 2007				\\
//	(c) 2007	Alexander Kamp				\\
//				AgriTrader B.V.				\\
//				http://www.agritrader.nl	\\
//	--------------------------------------	\\

//	Opbouwen van Nav(igatie)
//	zodat je altijd uit de voeten kunt!
var Nav = {
	create:		function()
	{	Nav._setTarget(window.location);		},
	
	//	Function _run()
	//	Het formulier versturen
	_run:		function()
	{
		var p1	=	Nav._getParam1();
		if ((p1)&&(p1.name==''))
			p1.parentNode.removeChild(p1);
		var p2	=	Nav._getParam2();
		if ((p2)&&(p2.name==''))
			p2.parentNode.removeChild(p2);
		var p3	=	Nav._getParam3();
		if ((p3)&&(p3.name==''))
			p3.parentNode.removeChild(p3);

		Nav._getForm().submit();
	},
	_setGet:	function()
	{
		frm	=	Nav._getForm();
		frm.method='get';
	},
	_getForm:	function()
	{	return Nav.getObj("dynamicsform");	},
	_getParam1:	function()
	{	return Nav.getObj("dynamics1");		},
	_getParam2:	function()
	{	return Nav.getObj("dynamics2");		},
	_getParam3:	function()
	{	return Nav.getObj("dynamics3");		},
	_setParam1:	function(p_sName,p_sValue)
	{
		var o	=	Nav._getParam1();
		o.name	=	p_sName;
		o.value	=	p_sValue;
	},
	_setParam2:	function(p_sName,p_sValue)
	{
		var o	=	Nav._getParam2();
		o.name	=	p_sName;
		o.value	=	p_sValue;
	},
	_setParam3:	function(p_sName,p_sValue)
	{
		var o	=	Nav._getParam3();
		o.name	=	p_sName;
		o.value	=	p_sValue;
	},
	_setTarget: function(p_sTarget)
	{	Nav._getForm().action	=	p_sTarget;	},
	_setMethod: function(p_sMethod)
	{	Nav._getForm().method	=	p_sMethod;	},
	getObj: function(p_sID)
	{
		try			{	return document.getElementById(p_sID);	}
		catch (ex)	{	return document.p_sID;					}
	},
	setObjValue: function(p_sID,p_sValue)
	{
		//	Object ophalen en de waarde hiervan setten
		Nav.getObj(p_sID).value = p_sValue;
	},
	//	Function getObjValue()
	//	Ophalen van de waarde van een object
	getObjValue: function(p_sID)
	{	return Nav.getObj(p_sID).value;	},
	
	//	Function openDlg()
	//	Genereren van een dialoog-venster
	openDlg: function(p_sDest,p_iWidth,p_iHeight)
	{
		window.open(p_sDest);
	},
	//	Function newWindow()
	//	Een nieuw venster openen naar een locatie
	newWindow: function(p_sDest)
	{	window.open(p_sDest);	},
	//	Function setLanguage()
	//	Een taal instellen (post!)
	setLanguage: function(p_sIsoNaam)
	{
		
	},
	//	Function getMail()
	//	Een e-mailadres omzetten en openen
	getMail: function(p_sEmail)
	{
		
	},
	//	Function convert()
	//	Alias voor de rot13-functie
	convert: function(p_sText)
	{	return Nav.rot13(p_sText);	},
	//	Function rot13()
	//	Ga de tekens verwisselen volgens het rot13-algoritme
	rot13: function(p_sInput)
	{
		//	Aanmaken van lege strings
		var chr		=	encrypted	=	"";
		var alfabet	=	"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
		
		//	Elke teken in de input langsgaan
		for(j=0;j<p_sInput.length;j++)
		{
			//	Indien het op te geven teken niet alfabetisch is, toevoegen aan encrypted string
			chr	=	p_sInput.substr(j,1).match(/[^a-zA-Z]/)	?	p_sInput.substr(j,1)	:	'';
			
			//	Toevoegen van de leesteken / nummerieke teken
			if (chr)
				encrypted +=chr;
			else
			{
				//	Nogmaals langsgaan en het teken 'vervangen'
				for(i=0; i<alfabet.length; i++)
				{
					chr = p_sInput.substr(j,1) != alfabet.substr(i,1) ? '' : i<13 ? alfabet.substr((i+13)%alfabet.length, 1) : i>12&&i<26 ? alfabet.substr((i+39)%alfabet.length, 1) : i>25&&i<39 ? alfabet.substr((i+65)%alfabet.length,1) : alfabet.substr((i+91)%alfabet.length, 1);
					
					//	Indien het teken is vervangen, toevoegen aan encrypted
					if (chr)
						encrypted += chr;
				}
			}
		}
		//	Return de encrypted string
		return encrypted;
	},
	
	//	----------------------------------------------------
	//	Verwijzingen naar andere pagina's / doelen
	
	//	Function main()
	//	Versturen van e-mailberichten
	mail: function(p_sEmail)
	{	window.open("mailto:"+Nav.rot13(p_sEmail));	},
	
	//	Function to()
	//	Naar een bepaalde locatie gaan
	to: function(p_sDest)
	{
		//	Het formulier callen en deze instellen
		Nav._setTarget(p_sDest);
		Nav._setMethod("get");
		Nav._run();
	},
	
	//	Function out()
	//	Wegnavigeren vanaf deze website in nieuw venster
	out: function(p_sDest)
	{	Nav.newWindow("/out/"+p_sDest);	},
	
	//	Function jump()
	//	Wegnavigeren vanuit de website zonder logging
	jump: function(p_sDest)
	{	Nav.newWindow(p_sDest);	},
	
	//	----------------------------------------------------
	//	Speciale functionaliteiten
	
	//	Function setStartpage()
	//	Instellen van deze pagina als startpagina
	setStartpage: function(p_sUrl)
	{
		document.body.style.behavior='url(#default#homepage)';
		document.body.setHomePage('http://'+p_sUrl);
	},
	
	//	Function addFavorite()
	//	Toevoegen van deze website aan de favorieten
	addFavorite: function(p_sUrl,p_sTitle)
	{	window.external.AddFavorite(p_sUrl,p_sTitle);	},
	
	//	----------------------------------------------------
	//	Weergeven en verbergen van objecten
	
	//	Defineren van alle objecten die zijn verborgen
	_shown: new Array(),
	_shownPos: 0,
	
	//	Function hide()
	//	Een object verbergen
	hide: function(p_sID)
	{
		//	Dit object verbergen
		Nav.getObj(p_sID).style.display		=	'none';
		Nav.getObj(p_sID).style.visibility	=	'hidden';
	},
	
	//	Function hideAll()
	//	Alle objecten verbergen die worden weergegeven
	hideAll: function()
	{
		//	Alle objecten die binnen het shown-array zijn weergegeven gaan verbergen
		for(i=0;i<Nav._shown.length;i++)
			Nav.hide(Nav._shown[i]);
		
		//	Overschrijf het '_shown'-array met een leeg array
		Nav._shown		=	new Array();
		Nav._shownPos	=	0;
	},
	
	//	Function show()
	//	Een object zichtbaar maken
	show: function(p_sID)
	{
		//	Het object weergeven
		Nav.showObj(p_sID);
		
		//	Alleen unieke vermeldingen opnemen
		for(i=0;i<Nav._shown.length;i++)
			if (Nav._shown[i]==p_sID)
				return false;
		
		//	In Nav.shown dit object toevoegen als zijnde weergegeven
		Nav._shown[Nav._shownPos++]	=	p_sID;
	},
	
	//	Function hideObj()
	//	Een object verbergen
	hideObj:	function(p_sObj)
	{	return Nav.hide(p_sObj);	},
	
	//	Function showObj()
	//	Een object weergeven
	showObj:	function(p_sObj)
	{
		Nav.getObj(p_sObj).style.visibility='visible';
		return Nav.getObj(p_sObj).style.display='block';
	},
	
	//	Function hideObjBackground()
	//	Verbergen van de achtergrond in een object
	hideObjBackground:	function(p_sObj)
	{
		Nav.getObj(p_sObj).style.backgroundImage='url()';
	},
	
	//	Function showObjBackgroundIfEmpty()
	//	Toon achtergrond indien waarde leeg
	showObjBackgroundIfEmpty: function(p_sObj,p_sUrl)
	{
		obj = Nav.getObj(p_sObj);
		if (obj.value=="")
			obj.style.backgroundImage='url('+p_sUrl+')';
	},
	//	Function setFocus()
	//	De focus op een object plaatsen
	setFocus: function(p_sObj)
	{	Nav.getObj(p_sObj).focus();	},
	
	//	Function hideAbsObj()
	//	Een absoluut object hidden (niet met display none)
	hideAbsObj: function(p_sObj)
	{	Nav.getObj(p_sObj).style.visibility='hidden';	},
	
	//	Function showAbsObj()
	//	Een absoluut object zichtbaar maken
	showAbsObj: function(p_sObj)
	{	Nav.getObj(p_sObj).style.visibility='visible';	},
	
	//	Function showDisplayObj()
	//	Een object weer zichtbaar maken via display-optie
	showDisplayObj:	function(p_sObj)
	{	Nav.getObj(p_sObj).style.display='block';		},
	
	//	Function hideDisplayObj()
	//	Een object weer zichtbaar maken via display-optie
	hideDisplayObj:	function(p_sObj)
	{	Nav.getObj(p_sObj).style.display='none';		},
	
	//	Function invertCheck()
	//	Inverteren van een checkbox
	invertCheck: function(p_sObj)
	{	Nav.getObj(p_sObj).checked = (!Nav.getObj(p_sObj).checked);	},
	
	//	Function checkCheck()
	//	Aanvinkel van een checkbox
	checkCheck:	function(p_sObj)
	{	Nav.getObj(p_sObj).checked	=	true;			}
}