function jumpMenu(list, uri)
{
	if (typeof list == "string")
	{
		var list = document.getElementById(list);
	}
	else if (window.event)
	{
		var list = window.event.srcElement;
	}

	if (list)
	{
		//search for form-tag
		for (form = list.parentNode; form != null && form.tagName != "FORM"; form = form.parentNode){;}

		//if form tag was found
		if (form != null)
			location.replace(addUriParam(uri, list.name, list.options[list.selectedIndex].value));
	}
}

function activateFormDiv(formElement, divID)
{
	if (document.getElementById)
	{
	    activateIfChecked = arguments.length < 3 ? true : arguments[2];

		var div = document.getElementById(divID);

		if (formElement.tagName == 'SELECT')
		{
			var checked = (formElement.options[formElement.selectedIndex].value == "0");
		}
		else
		{
			var checked = formElement.checked;
		}

		if (div)
		{
			if ((checked && activateIfChecked) || (!checked && !activateIfChecked))
				div.style.display = 'block';
			else
				div.style.display = 'none';
		}
	}
}

function activateAllCheckboxes(checkbox, divID)
{
	if (document.getElementById && (!window.event || window.event.type != 'load'))
	{
		var fields = document.getElementById(divID).getElementsByTagName('INPUT');
		for (i=0; i<fields.length; i++)
		{
			if(fields[i].type.toUpperCase() == 'CHECKBOX')
			{
				fields[i].checked = checkbox.checked;
			}
		}
	}
}

function deactivateButtons(form)
{
	fields = form.elements;

	for(i=0; i<fields.length; i++)
	{
		if (formElementType(fields[i]) == 'submit')
		{
			fields[i].disabled = true;
		}
	}
}

function maskAnything(format, fillChar, separatorChar, allowedChars)
{
	if (window.event.srcElement.readOnly || !document.selection)
		return;

	var template = '';
	var pattern_string = '/^';

	for (i=0; i<format.length; i++)
	{
		for(c=0; c<format[i]; c++)
		{
			template += fillChar;
		}

		pattern_string += '[\\' + fillChar + allowedChars + ']{' + format[i] + '}';

		if ((i+1) < format.length)
		{
			template += separatorChar;
			pattern_string += '\\' + separatorChar;
		}
	}

	pattern_string += '$/';
	pattern = eval(pattern_string);

	pattern_bs_string = '([' + fillChar + '\\' + separatorChar + ']*)';
	pattern_bs_string = '/' + pattern_bs_string + '[' + allowedChars + ']' + pattern_bs_string + '$/';
	pattern_bs = eval(pattern_bs_string);


	var key_code = window.event.keyCode;
	var element = window.event.srcElement;

    if (!window.event.shiftKey && !window.event.ctrlKey && !window.event.altKey && key_code != 9) //Tabulator
	{
    	var selectedText = document.selection;

		if (key_code >= 37 && key_code <= 40)
		{
			selectedText.empty();
		}
		else if (selectedText.type != 'None' || element.value == '')
		{
			element.value = template;
			selectedText.empty();
		}

		if (key_code > 95 && key_code < 106)
           key_code -= (95-47);

		key_char = String.fromCharCode(key_code);
		if (key_char.match(eval('/[' + allowedChars + ']/')))
		{
			element.value = element.value.replace(eval('/[' + fillChar + ']/'), key_char);
        }

        if (key_code == 8)
		{
            if (!element.value.match(pattern))
               element.value = template;

           element.value = element.value.replace(pattern_bs, '$1' + fillChar + '$2');

           window.event.returnValue = 0;
        }
    }

    event.returnValue = true;
    if (key_code != 9)
	{
       event.returnValue = false;
    }
}

function maskTime()
{
		maskAnything(new Array(2, 2), '_', ':', '0-9');
}

function maskDate()
{
		maskAnything(new Array(2, 2, 4), '_', '.', '0-9');
}

