var _defaultFormValues = new Object();
var _skipFormChangedCheck = false;

if (!Array.indexOf)
{
	// Oudere javascript versie heeft deze functie niet...
	Array.prototype.indexOf = function (str) {
			var found = -1;

			for(var i=0; i<this.length; i++){
			    if(this[i]==str)
			    {
			        found = i;
			        break;
			    }
			}
			return found;
		}
}

function formEffect(fid)
{
	//new Effect.Highlight(fid, {startcolor:'#ff9999', endcolor:'#ffffff', duration: 2.0});
}

function checkFormChanged()
{
	//alert('check');

	if (_skipFormChangedCheck) return;
	
	var _changedMessage = 'Wijzigingen in formulier raken verloren! Wilt u doorgaan?';
	
	//alert(formulieren[0]);
	
	//if (arguments.length == 0) 
	//{
		// geen formulier gespecificeerd, alle formulieren opslaan
		formulieren = new Array();
		
		var _forms = document.getElementsByTagName('form');
		
		//alert(Object.inspect(_forms));
		
		for (var i=0; i<_forms.length ; i++)
		{
			if (_forms[i].id)
			{
				formulieren.push(_forms[i].id);
			}
		}
	//}
	
	//alert(Object.inspect(formulieren));
		
	for (var i=0; i<formulieren.length ; i++)
	{	
		var _inputs = document.getElementById(formulieren[i]).getElementsByTagName('input'); 
		var _textareas = document.getElementById(formulieren[i]).getElementsByTagName('textarea'); 
		var _selects = document.getElementById(formulieren[i]).getElementsByTagName('select'); 
		
		for (var j=0; j<_inputs.length ; j++)
		{
			if (_inputs[j].getAttribute('type') == 'radio') 
			{
				if (_inputs[j].checked)
				{
					//alert (_inputs[j].getAttribute('name') + ' - ' + _inputs[j].value);
					if (_defaultFormValues[formulieren[i]][_inputs[j].getAttribute('name')] != _inputs[j].value)
					{
						formEffect(formulieren[i]);
						return _changedMessage;
					}
				}
			}
			else if (_inputs[j].getAttribute('type') == 'checkbox') 
			{
				//alert('checkbox');
				
				if (_inputs[j].checked)
				{
					//alert('checked');
					// dan moet value in array zitten... (indexOf >= 0)
					if (_defaultFormValues[formulieren[i]][_inputs[j].getAttribute('name')])
					{
						if (_defaultFormValues[formulieren[i]][_inputs[j].getAttribute('name')].indexOf(_inputs[j].value) == -1)
						{
							formEffect(formulieren[i]);
							return _changedMessage;
						}
					}
					else
					{
						formEffect(formulieren[i]);
						return _changedMessage;
					}
				}
				else
				{
					// dan mag value NIET in array zitten (indexOf => -1)
					if (_defaultFormValues[formulieren[i]][_inputs[j].getAttribute('name')])
					{
						if (_defaultFormValues[formulieren[i]][_inputs[j].getAttribute('name')].indexOf(_inputs[j].value) >= 0)
						{
							formEffect(formulieren[i]);
							return _changedMessage;
						}
					}
				}
			}
			else 
			{
				if (_defaultFormValues[formulieren[i]][_inputs[j].getAttribute('name')] == undefined) 
				{
					formEffect(formulieren[i]);
					return _changedMessage;
				}
				if (_defaultFormValues[formulieren[i]][_inputs[j].getAttribute('name')] != _inputs[j].value) 
				{
					formEffect(formulieren[i]);
					return _changedMessage;
				}
			}
		}
		for (var j=0; j<_textareas.length ; j++)
		{
			if (_defaultFormValues[formulieren[i]][_textareas[j].getAttribute('name')] == undefined) 
			{
				formEffect(formulieren[i]);
				return confirm(_changedMessage);
			}
			if (_defaultFormValues[formulieren[i]][_textareas[j].getAttribute('name')] != _textareas[j].value) 
			{
				formEffect(formulieren[i]);
				return _changedMessage;
			}
		}
		for (var j=0; j<_selects.length ; j++)
		{
			if (_defaultFormValues[formulieren[i]][_selects[j].getAttribute('name')] == undefined) 
			{
				formEffect(formulieren[i]);
				return _changedMessage;
			}
				
			for(var k=0; k<_selects[j].options.length; k++)
			{
				//alert(_selects[j].options[k].value + ' selected ' + _selects[j].options[k].selected);
				if (_selects[j].options[k].selected)
				{
					if (_defaultFormValues[formulieren[i]][_selects[j].getAttribute('name')].indexOf(_selects[j].options[k].value) == -1) 
					{
						formEffect(formulieren[i]);
						return _changedMessage;
					}
				}
				else 
				{
					if (_defaultFormValues[formulieren[i]][_selects[j].getAttribute('name')].indexOf(_selects[j].options[k].value) != -1) 
					{
						formEffect(formulieren[i]);
						return _changedMessage;
					}
				}
			}
		}
	}
}

function disableCheck()
{
	//alert('skip');
	_skipFormChangedCheck = true;
}

function storeDefaults()
{	
	//alert('store');

	//if (arguments.length == 0) 
	//{
		// geen formulier gespecificeerd, alle formulieren opslaan
		formulieren = new Array();
		
		var _forms = document.getElementsByTagName('form');
		
		for (var i=0; i<_forms.length ; i++)
		{
			if (_forms[i].id)
			{
				formulieren.push(_forms[i].id);
				_forms[i].onsubmit = disableCheck;
			}
		}
	//}
		
	for (var i=0; i<formulieren.length ; i++)
	{
		
		var _inputs = document.getElementById(formulieren[i]).getElementsByTagName('input'); 
		var _textareas = document.getElementById(formulieren[i]).getElementsByTagName('textarea'); 
		var _selects = document.getElementById(formulieren[i]).getElementsByTagName('select'); 
		
		_defaultFormValues[formulieren[i]] = new Object();
		
		for (var j=0; j<_inputs.length ; j++)
		{
			if (_inputs[j].getAttribute('type') == 'radio') 
			{
				if (_inputs[j].checked)
					_defaultFormValues[formulieren[i]][_inputs[j].getAttribute('name')] = _inputs[j].value;	
			}
			else if (_inputs[j].getAttribute('type') == 'checkbox') 
			{
				if (_inputs[j].checked)
				{
					if (!_defaultFormValues[formulieren[i]][_inputs[j].getAttribute('name')])
						_defaultFormValues[formulieren[i]][_inputs[j].getAttribute('name')] = new Array();
					
					_defaultFormValues[formulieren[i]][_inputs[j].getAttribute('name')].push(_inputs[j].value);
					//alert(Object.inspect(_defaultFormValues[formulieren[i]][_inputs[j].getAttribute('name')]));
				}
			}
			else
				_defaultFormValues[formulieren[i]][_inputs[j].getAttribute('name')] = _inputs[j].value;			
		}
		for (var j=0; j<_textareas.length ; j++)
		{
			_defaultFormValues[formulieren[i]][_textareas[j].getAttribute('name')] = _textareas[j].value;
		}
		for (var j=0; j<_selects.length ; j++)
		{
			_defaultFormValues[formulieren[i]][_selects[j].getAttribute('name')] = new Array();
			for(var k=0; k<_selects[j].options.length; k++)
			{
				if (_selects[j].options[k].selected)
					_defaultFormValues[formulieren[i]][_selects[j].getAttribute('name')].push(_selects[j].options[k].value);
			}
		}
		//for (var l in _defaultFormValues[formulieren[i]])
		//	alert(l + ' = ' + Object.inspect(_defaultFormValues[formulieren[i]][l]));
	}
}
