//TOOLS



function popup( url, code, width, height )

{

	if( code == null )

	{

		code = "newPopup";

	}

	

	if( width == null )

	{

		width = 800;

	}

	

	if( height == null )

	{

		height = 650;

	}

		

	var popup = window.open( url, code, "width=" + width + ", height=" + height + ",left=50,top=50,toolbar=0,menubar=0,scrollbars=1,location=0,status=0" );

	popup.focus();

}



function getLeft( element, relativeElement /*optional*/ )

{

	return accumulateProperty( element, "offsetLeft", relativeElement );

}



function getTop( element, relativeElement /*optional*/ )

{

	return accumulateProperty( element, "offsetTop", relativeElement );

}



function getScrollTop() {

	if( window.pageYOffset )

	{

		return window.pageYOffset;

	}

	if( document.documentElement )

	{

		return document.documentElement.scrollTop;

	}

	if( document.body ) 

	{

		return document.body.scrollTop;

	}

}



function getScrollLeft() {

	if( window.pageXOffset )

	{

		return window.pageXOffset;

	}

	if( document.documentElement )

	{

		return document.documentElement.scrollLeft;

	}

	if( document.body ) 

	{

		return document.body.scrollLeft;

	}

}



function getClientHeight() {

	if( window.innerHeight  )

	{

		return window.innerHeight ;

	}

	if( document.documentElement )

	{

		return document.documentElement.clientHeight;

	}

	if( document.body ) 

	{

		return document.body.clientHeight;

	}

}



function getClientWidth() {

	if( window.innerWidth  )

	{

		return window.innerWidth ;

	}

	if( document.documentElement )

	{

		return document.documentElement.clientWidth;

	}

	if( document.body ) 

	{

		return document.body.clientWidth;

	}

}



function accumulateProperty( element, attribute, relativeElement /*optional*/ )

{

	var result = 0;

	while( element )

	{

		if( element == relativeElement )

		{

			break;

		}

		result += element[ attribute ];

		element = element.offsetParent;

	}

	return result;

}



function makeVisible( idOrElement, displayMethod /*optional*/, fadeTime /*optional*/, fadeMethod /*optional*/  ) 

{

	var element = getElement( idOrElement );

	if( element != null )

	{	

		if( fadeTime == null )

		{

			fadeTime = 200;

		}

		if( fadeTime != 0 )

		{

			if( fadeMethod == "slideDown" )

			{

				$(element).slideDown(fadeTime);

			}

			else

			{

				$(element).fadeIn(fadeTime);

			}

		}

		else

		{

			if( displayMethod == null )

			{

				element.style.display = "block";

			}

			else if( typeof(displayMethod) == "string" )

			{

				if( displayMethod == "visibility" )

				{

					element.style.visibility = "visible";

				}

				{

					element.style.display = displayMethod;

				}

			}

		}

	}

}



function makeInvisible( idOrElement, fadeTime /*optional*/, onlyVisiblility ) 

{

	var element = getElement( idOrElement );

	if( element != null )

	{	

		if( fadeTime == null )

		{

			fadeTime = 100;

		}

		if( fadeTime != 0 )

		{

			$(element).fadeOut(fadeTime);

//			$(element).slideUp(fadeTime);

		}

		else

		{

			if( onlyVisiblility )

			{

				element.style.visibility = "hidden";

			}	

			else

			{

				element.style.display = "none";

			}

		}

	}

}



function getElement( idOrElement )

{

	if( typeof(idOrElement) == "string" )

	{

		return document.getElementById( idOrElement );

	}

	else if( typeof(idOrElement) == "object" )

	{

		return idOrElement;

	}

	else

	{

		return null;

	}

}



function getClassParent( element, styleClass )

{

	var myElement = element;

	do {

		if( $(myElement).hasClass( styleClass ) )

		{

			return myElement;

		}

		myElement = myElement.parentNode;

	} while( myElement != null );

	return null;

}



function testIsValidObject(objToTest) 

{

	if(null==objToTest) 

	{

		return false;

	}

	if("undefined"==typeof(objToTest)) 

	{

		return false;

	}

	return true;

}



function snapRightToInside( element, clipElement, snapToElement )

{	

	var elementObj = getTopLevelElement( element );

	var clipElementObj = getElement( clipElement );

	var snapToElementObj = getTopLevelElement( snapToElement );

	

	if( elementObj != null

			&& clipElementObj != null )

	{

		var width = elementObj.offsetWidth; 

		var newLeft = getLeft( elementObj );

		

		var clipLeft = getLeft( clipElementObj ) + clipElementObj.offsetWidth - width;

		if( newLeft >= clipLeft )

		{

			newLeft = getLeft( snapToElementObj ) + snapToElementObj.offsetWidth - width;

		}

	

		elementObj.style.left = newLeft + "px";		

	}

}



/* TOP LEVEL ELEMENTS */



window.onresize = _resizeTLC;

function _resizeTLC()

{

	var topLevelContainer = document.getElementById( "__topLevelContainer" );

	if( topLevelContainer != null )

	{

		var pageElement = document.getElementById( "header" );

		topLevelContainer.style.width = (getLeft(pageElement) * 2 + 974) + "px" ;

	}

}



var _isDomManipulationEnabled = false;

function enableDomManipulation() 

{

	_isDomManipulationEnabled = true;

}



function isDomManipulationEnabled()

{

	return _isDomManipulationEnabled;

}



function addToTopLevelContainer( element )

{

	if( element != null

			&& isDomManipulationEnabled() )

	{

		var body = document.getElementsByTagName( "body" )[0];

		var topLevelContainer = document.getElementById( "__topLevelContainer" );

		

		if( topLevelContainer == null )

		{

			//create on demand

			topLevelContainer = document.createElement( "div" );

			topLevelContainer.id = "__topLevelContainer";

			if( body != null )

			{

				body.appendChild( topLevelContainer );

			}

		}	

		if( element.parentNode != topLevelContainer )

		{

			_resizeTLC();

			topLevelContainer.appendChild( element );

			element.style.display = "none";

		}

	}

}



function getTopLevelElement( id )

{

	if( isDomManipulationEnabled() )

	{

		var element = document.getElementById( id );

		var tlcElement = document.getElementById( id + "_tlc" );

		if( element != null )

		{

			if( tlcElement != null )

			{

				//remove existing tlc element

				var topLevelContainer = document.getElementById( "__topLevelContainer" );

				if( topLevelContainer != null 

						&& topLevelContainer == tlcElement.parentNode )

				{

					topLevelContainer.removeChild( tlcElement );

				}

			}

			element.id = id + "_tlc";

			addToTopLevelContainer( element );		

			return element;

		}

		else if( tlcElement != null )

		{

			_resizeTLC();

			return tlcElement;

		}

	}

	// .. else

	return null;

}





//overlays



function showOverlay( overlayId, relativeElement, left, top )

{	

	var overlayObj = getTopLevelElement( overlayId );

	var relativeElementObj = getElement( relativeElement );

	if( overlayObj != null

			&& relativeElementObj != null )

	{

		if( top == null )

		{

			top = 0;

		}

		if( left == null )

		{

			left = 0;

		}

		

		addToTopLevelContainer(overlayObj);

		overlayObj.style.top = getTop( relativeElementObj ) + top + "px";

		overlayObj.style.left = getLeft( relativeElementObj ) + left + "px";

		overlayObj.style.position = "absolute";

		makeVisible( overlayObj );

	}

}



function showSnapRightOverlay( overlayId, relativeElement, clipElement, snapToElement, left, top )

{	

	var overlayObj = getTopLevelElement( overlayId );

	var relativeElementObj = getElement( relativeElement );

	var clipElementObj = getElement( clipElement );

	var snapToElementObj = getTopLevelElement( snapToElement );

	

	if( overlayObj != null

			&& relativeElementObj != null

			&& clipElementObj != null

			&& snapToElementObj != null )

	{

		// pre display to get correct width

		overlayObj.style.top = "0px";

		overlayObj.style.left = "0px";

		overlayObj.style.position = "absolute";

		addToTopLevelContainer(overlayObj);

		makeVisible( overlayObj, null, 300, "slideDown" );

		var width = overlayObj.offsetWidth; 

		

		// position

		if( top == null )

		{

			top = 0;

		}

		if( left == null )

		{

			left = 0;

		}

		

		var newLeft = getLeft( relativeElementObj ) + left;

		var clipLeft = getLeft( clipElementObj ) + clipElementObj.offsetWidth - width;

		if( newLeft >= clipLeft )

		{

			newLeft = getLeft( snapToElementObj ) + snapToElementObj.offsetWidth - width;

		}

		overlayObj.style.left = newLeft + "px";

		overlayObj.style.top = getTop( relativeElementObj ) + top + "px";

	}

}



function hideOverlay( overlayId )

{

	var element = getTopLevelElement( overlayId );

	makeInvisible( element )

}



//main menu overlays



var SLOW_SHOW_TIME = 100;

var SLOW_HIDE_TIME = 200;

var overlayHideTimeoutEvents = new Array();

var overlayShowTimeoutEvents = new Array();



function showSlowOverlay( overlayId, relativeElement, left, top )

{

	keepSlowOverlayOpen( overlayId );

	if( overlayShowTimeoutEvents[ overlayId ] == null )

	{

		overlayShowTimeoutEvents[ overlayId ] = new Array();

	}

	overlayShowTimeoutEvents[ overlayId ][ 'relativeElement' ] = relativeElement;

	overlayShowTimeoutEvents[ overlayId ][ 'left' ] = left;

	overlayShowTimeoutEvents[ overlayId ][ 'top' ] = top;

	if( overlayShowTimeoutEvents[ overlayId ][ 'timeouts' ] == null )

	{

		overlayShowTimeoutEvents[ overlayId ][ 'timeouts' ] = new Array();

	}

	var method = "showSlowOverlayInternal( '" + overlayId + "' )";

	overlayShowTimeoutEvents[ overlayId ][ 'method' ] = method;

	overlayShowTimeoutEvents[ overlayId ][ 'timeouts'].push( window.setTimeout( method, SLOW_SHOW_TIME ) );	

}



function showSlowOverlayInternal( overlayId, relativeElement, left, top )

{

	var relativeElement = overlayShowTimeoutEvents[ overlayId ][ 'relativeElement' ];

	var left = overlayShowTimeoutEvents[ overlayId ][ 'left' ];

	var top = overlayShowTimeoutEvents[ overlayId ][ 'top' ];

	clearOverlayTimeouts(overlayId, overlayShowTimeoutEvents, true);

	showOverlay( overlayId, relativeElement, left, top );

}



function showSlowSnapRightOverlay( overlayId, relativeElement, clipElement, snapToElement, left, top )

{

	keepSlowOverlayOpen( overlayId );

	if( overlayShowTimeoutEvents[ overlayId ] == null )

	{

		overlayShowTimeoutEvents[ overlayId ] = new Array();

	}

	overlayShowTimeoutEvents[ overlayId ][ 'relativeElement' ] = relativeElement;

	overlayShowTimeoutEvents[ overlayId ][ 'clipElement' ] = clipElement;

	overlayShowTimeoutEvents[ overlayId ][ 'snapToElement' ] = snapToElement;

	overlayShowTimeoutEvents[ overlayId ][ 'left' ] = left;

	overlayShowTimeoutEvents[ overlayId ][ 'top' ] = top;

	if( overlayShowTimeoutEvents[ overlayId ][ 'timeouts' ] == null )

	{

		overlayShowTimeoutEvents[ overlayId ][ 'timeouts' ] = new Array();

	}

	var method = "showSlowSnapRightOverlayInternal( '" + overlayId + "' )";

	overlayShowTimeoutEvents[ overlayId ][ 'method' ] = method;

	overlayShowTimeoutEvents[ overlayId ][ 'timeouts'].push( window.setTimeout( method, SLOW_SHOW_TIME ) );	

}



function showSlowSnapRightOverlayInternal( overlayId )

{

	var relativeElement = overlayShowTimeoutEvents[ overlayId ][ 'relativeElement' ];

	var clipElement = overlayShowTimeoutEvents[ overlayId ][ 'clipElement' ];

	var snapToElement = overlayShowTimeoutEvents[ overlayId ][ 'snapToElement' ];

	var left = overlayShowTimeoutEvents[ overlayId ][ 'left' ];

	var top = overlayShowTimeoutEvents[ overlayId ][ 'top' ];

	clearOverlayTimeouts(overlayId, overlayShowTimeoutEvents, true);

	showSnapRightOverlay( overlayId, relativeElement, clipElement, snapToElement, left, top );

}



function hideSlowOverlay( overlayId )

{

	clearOverlayTimeouts( overlayId, overlayShowTimeoutEvents );

	if( overlayHideTimeoutEvents[ overlayId ] == null )

	{

		overlayHideTimeoutEvents[ overlayId ] = new Array();

	}

	if( overlayHideTimeoutEvents[ overlayId ][ 'timeouts' ] == null )

	{

		overlayHideTimeoutEvents[ overlayId ][ 'timeouts' ] = new Array();

	}

	overlayHideTimeoutEvents[ overlayId ][ 'timeouts' ].push( window.setTimeout( "hideSlowOverlayInternal( '" + overlayId + "' )", SLOW_HIDE_TIME ) );			

}



function hideSlowOverlayInternal( overlayId )

{

	overlayHideTimeoutEvents[ overlayId ][ 'halted' ] = null;

	hideOverlay( overlayId );

}



function keepSlowOverlayOpen( overlayId )

{

	clearOverlayTimeouts( overlayId, overlayHideTimeoutEvents );

	if( overlayShowTimeoutEvents[ overlayId ] != null

			&& overlayShowTimeoutEvents[ overlayId ][ 'halted' ] == true )

	{

		overlayShowTimeoutEvents[ overlayId ][ 'timeouts'].push( window.setTimeout( overlayShowTimeoutEvents[ overlayId ][ 'method' ], SLOW_SHOW_TIME ) );

		overlayShowTimeoutEvents[ overlayId ][ 'halted' ] = false;

	}

}



function clearOverlayTimeouts( overlayId, timeoutQueue, dontHalt )

{

	if( timeoutQueue[ overlayId ] != null &&

			timeoutQueue[ overlayId ][ 'timeouts' ] != null &&

			timeoutQueue[ overlayId ][ 'timeouts' ].length > 0 )

	{

		for( var timeOutIndex in timeoutQueue[ overlayId ][ 'timeouts' ] )

		{

			window.clearTimeout( timeoutQueue[ overlayId ][ 'timeouts' ][ timeOutIndex ] );

		} 

		timeoutQueue[ overlayId ][ 'timeouts' ] = new Array();

		if( dontHalt != true )

		{

			timeoutQueue[ overlayId ][ 'halted' ] = true;

		} 

		else

		{

			timeoutQueue[ overlayId ][ 'halted' ] = null;

		}

	}	

}



// tabs



function initTabs( headElementId, aniMarker, maxTabHeight )

{

	if( maxTabHeight == null )

	{

		maxTabHeight = 100000;

	}

	

	var contentContainerObject = getClassParent( getElement( headElementId + "Content" ), "TabContentContainer" );

	contentContainerObject.style.height = "0px";

	contentContainerObject.style.overflow = "hidden";

	

	focusTab( headElementId, aniMarker, maxTabHeight );

}



function focusTab( idOrHeadElement, aniMarker, maxTabHeight )

{

	if( maxTabHeight == null )

	{

		maxTabHeight = 100000;

	}

	

	var MAX_ANIMATION_TIME = 300; 

	

	var refElementObject = getElement( idOrHeadElement );

	var headElementObject = getClassParent( refElementObject, "Tab" );

	if( headElementObject != null )

	{

		var headElementId = headElementObject.id;

		var contentContainerObject = getClassParent( getElement( headElementId + "Content" ), "TabContentContainer" );

		contentContainerObject.style.overflow = "hidden";

		contentContainerObject.style.overflowY = "hidden";

		contentContainerObject.scrollTop = 0;

		var aniMarkerObject = getElement(aniMarker);

		if( aniMarkerObject != null ) 

		{

			makeVisible( aniMarkerObject, null, 0 );

			var visibleMarkerObject = $( ".On", headElementObject.parentNode ).get(0);

			var markerSourceLeft = 0;

			var markerOffsetParent = aniMarkerObject.offsetParent;

			if( visibleMarkerObject != null )

			{

				markerSourceLeft = Math.floor( getLeft( visibleMarkerObject, markerOffsetParent ) + visibleMarkerObject.offsetWidth / 2 - aniMarkerObject.offsetWidth / 2);

			}

			var markerSourceTop = getTop( headElementObject, markerOffsetParent ) + 49;

			var markerTargetLeft = Math.floor( getLeft( headElementObject, markerOffsetParent ) + headElementObject.offsetWidth / 2 - aniMarkerObject.offsetWidth / 2 );

			

			aniMarkerObject.style.zIndex = 100;

			aniMarkerObject.style.top = markerSourceTop + "px";

			aniMarkerObject.style.left = markerSourceLeft + "px";

			

			//hide all content

			var hasSwitched = false;

			for( var headSiblingIndex in headElementObject.parentNode.childNodes )

			{

				var headSibling = headElementObject.parentNode.childNodes[headSiblingIndex];

				if( headSibling != null

						&& headSibling.nodeType == 1 )

				{

					var headSiblingId = headSibling.id;

					

					var contentElementId = headSiblingId + "Content";

					var contentElementObject = getElement( contentElementId );

					if( headSibling != headElementObject 

							&& $( headSibling ).hasClass( "On" ) ) 

					{

						hasSwitched = true;

						$( headSibling ).removeClass( "On" );

						contentElementObject.style.position = "relative";

						

						// slide old tab out

						$( contentElementObject ).animate( 

							{top:"-" + (contentElementObject.clientHeight + 50) + "px" },

							Math.min( MAX_ANIMATION_TIME, contentElementObject.clientHeight / 3 ), 

							function() { 

								

								makeInvisible( this, 0 );

								//animate arrow

								$(aniMarkerObject).animate( {left:markerTargetLeft}, 200, function() {

									for( var headSiblingIndex in headElementObject.parentNode.childNodes )

									{

										var headSibling = headElementObject.parentNode.childNodes[headSiblingIndex];

										if( headSibling != null

												&& headSibling.nodeType == 1 )

										{

											var headSiblingId = headSibling.id;

											if( headSibling == headElementObject ) 

											{

												$( headSibling ).addClass( "On" );				

											}						

										}

									}

									//makeInvisible( aniMarkerObject, 0 );	

								} );

								// slide new tab in

								for( var headSiblingIndex in headElementObject.parentNode.childNodes )

								{

									var headSibling = headElementObject.parentNode.childNodes[headSiblingIndex];

									if( headSibling != null

											&& headSibling.nodeType == 1 )

									{

										var headSiblingId = headSibling.id;

										var contentElementId = headSiblingId + "Content";

										var contentElementObject = getElement( contentElementId );

										if( headSibling == headElementObject ) 

										{

											makeVisible( contentElementObject, null, 1 );

											contentElementObject.style.position = "relative";

											contentElementObject.style.top = "-" + (contentElementObject.clientHeight + 50) + "px";

											$( contentElementObject ).animate( {top:"0px"}, Math.min( MAX_ANIMATION_TIME, contentElementObject.clientHeight / 3 ) );

											

											var contentHeight = getElement( contentElementId ).clientHeight;

											var containerTargetHeight = Math.min( maxTabHeight, contentHeight );

											if( contentContainerObject.clientHeight < containerTargetHeight )

											{

												contentContainerObject.style.height = containerTargetHeight + "px";

											}

											if( contentContainerObject.clientHeight < contentHeight )

											{

												contentContainerObject.style.overflowY = "scroll";

											}

										}						

									}

								}

							} );

					}

				}

			}

			if( !hasSwitched )

			{

				for( var headSiblingIndex in headElementObject.parentNode.childNodes )

				{

					var headSibling = headElementObject.parentNode.childNodes[headSiblingIndex];

					if( headSibling != null

							&& headSibling.nodeType == 1 )

					{

						var headSiblingId = headSibling.id;

						var contentElementObject = getElement( headSiblingId + "Content" );

						if( headSibling == headElementObject ) 

						{

							makeVisible( contentElementObject, null, 1 );

							var contentHeight = contentElementObject.clientHeight;

							var containerTargetHeight = Math.min( maxTabHeight, contentHeight );

							if( contentContainerObject.clientHeight < containerTargetHeight )

							{

								contentContainerObject.style.height = containerTargetHeight + "px";

							}

							if( contentContainerObject.clientHeight < contentHeight )

							{

								contentContainerObject.style.overflowY = "scroll";

							}

						}						

					}

				}

			}

		} 

	}	

}





//utilities for forms

/**

 * @param element to get an enclosing form node for

 * @return form node or null

 */

function getEnclosingForm( element )

{

	var myElement = element;

	do {

		if( myElement.submit != null )

		{

			return myElement;

		}

		myElement = myElement.parentNode;

	} while( myElement != null );

	return null;

}



/**

 * resets a select box to its initial value(s) to undo user changes

 * 

 * @param field the select box dom node

 * @param fallbackOptionValue optional value to select if no default option is available

 * 

 */



function resetDropdown( field, fallbackOptionValue /*optional*/)

{

	if( field != null )

	{

		field.selectedIndex = -1;

		for( index in field.childNodes ) 

		{

			var option = field.childNodes[index];

			if( option != null )

			{

				if( option.defaultSelected == true )

				{

					option.selected = true;

				}

				else

				{

					try {

						option.selected = false;

					} catch ( except ) { /*ie problem catched */ }

				}

			}

		}

		if( field.selectedIndex == -1 

				&& fallbackOptionValue != null )

		{

			for( index in field.childNodes ) 

			{

				var option = field.childNodes[index];

				if( option != null )

				{

					if( option.value == fallbackOptionValue )

					{

						option.selected = true;

					}

				}

			}

		}

	}

}



/**

 * 

 * @param event

 * @return true, if the current event is the enter key pressedd

 */



function isEnterKeyEvent( event )

{

	if( !event )

	{

		event = window.event;

	}

	if ( event.which ) 

	{

		keyCode = event.which;

	} else if ( event.keyCode ) 

	{

		keyCode = event.keyCode;

	}

	if( keyCode == 13 )

	{

		return true;

	}

	return false

}



/**

 * usage: <input name="bla" onkeyup=" onEnterSubmit( event, this ) ">..</input>

 * submits the surrounding form if enter button pushed

 *  

 * @param event

 * @param inputField 

 */

function onEnterSubmit( event, inputField )

{

	if( isEnterKeyEvent( event ) )

	{

		inputField.form.submit();

	}

}



/**

 * usage: 

 * 		<input name="bla" onkeyup=" onEnterAjaxSubmit( event, this ) ">..</input>

 * or 	<input name="bla" onkeyup=" onEnterAjaxSubmit( event, this, 'myContainerId' ) ">..</input>

 * 

 * submits the surrounding form if enter button pushed using ajax

 *  

 * @param event

 * @param inputField 

 */

function onEnterAjaxSubmit( event, inputField, singleContainerId )

{

	if( isEnterKeyEvent( event ) )

	{

		ajaxSubmitForm( inputField.form, singleContainerId );		

	}

}



/**

 * usage: <input name="bla" onkeyup=" onEnterTabNext( event, this ) ">..</input>

 * puts the cursor to the next input element

 *  

 * @param event

 * @param inputField 

 */

function onEnterTabNext( event, inputField )

{

	if( isEnterKeyEvent( event ) )

	{

		var takeThis = false;

		for( var index in inputField.form.elements )

		{

			var element = inputField.form.elements[ index ];

			if( takeThis )

			{

				element.focus();

				element.select();

				return;

			}			

			if( element == inputField )

			{

				takeThis = true;

			}

		}

	}

}



/**

 * 

 * usage: <input name="bla" onkeyup=" onEnterTabNext( event, this, myNextField ) ">..</input>

 * 

 * puts the cursor to the specified input element

 * 

 * @param event

 * @param inputField

 * @param nextField

 */

function onEnterTabNextField( event, inputField, nextField )

{

	if( isEnterKeyEvent( event ) )

	{

		nextField.focus();

		nextField.select();

	}

}



/**

 * 

 * usage: <input name="bla" onkeyup=" onInputTabNextField( event, 'x', this, myNextField ) ">..</input>

 * 

 * puts the cursor to the specified input element

 * 

 * @param event

 * @param inputField

 * @param nextField

 */

function onInputTabNext( event, inputString, inputField )

{

	var value = inputField.value;

	if( value.length > 0 )

	{

		var char = value.substr( value.length - inputString.length );

		if( char == inputString )

		{

			var trunkValue = value.substr( 0, value.length - inputString.length );

			inputField.value = trunkValue;

			

			var takeThis = false;

			for( var index in inputField.form.elements )

			{

				var element = inputField.form.elements[ index ];

				if( takeThis )

				{

					element.focus();

					element.select();

					return;

				}			

				if( element == inputField )

				{

					takeThis = true;

				}

			}

		}

	}

}



/**

 * 

 * usage: <input name="bla" onkeyup=" onInputTabNextField( event, 'x', this, myNextField ) ">..</input>

 * 

 * puts the cursor to the specified input element

 * 

 * @param event

 * @param inputField

 * @param nextField

 */

function onInputTabNextField( event, inputString, inputField, nextField )

{

	var value = inputField.value;

	if( value.length > 0 )

	{

		var char = value.substr( value.length - inputString.length );

		if( char == inputString )

		{

			var trunkValue = value.substr( 0, value.length - inputString.length - 1 );

			inputField.value = trunkValue;

			nextField.focus();

			nextField.select();

		}

	}

}





/** Message bars

 */



function hideMessageBar( backgroundId, messagesId )

{

	makeInvisible( backgroundId );

	makeInvisible( messagesId );

}	



function initMessageBars() 

{

	var backgroundElement = getElement( 'globalMessagesBackground' );

	var containerElement = getElement( 'messagesContainer' );

	if( backgroundElement != null

			&& containerElement != null )

	{

		backgroundElement.style.height = containerElement.offsetHeight + "px";

	}



	var backgroundElement = getElement( 'globalErrorsBackground' );

	var containerElement = getElement( 'errorsContainer' );

	if( backgroundElement != null

			&& containerElement != null )

	{

		backgroundElement.style.height = containerElement.offsetHeight + "px";

	}

}




