<!--
function myDisableControl ( control )
{
	myDisableEnableControl( control, true );
}

function myEnableControl ( control )
{
	myDisableEnableControl( control, false );
}

function myDisableEnableControl ( control, disable )
{
	control.disabled = disable;
}

function myIsEnabled ( control )
{
    return !control.disabled;
}

// ********** <select> ***********
// example: myInsertOptionInSelectAt( myGetObj( selectId ), new Option( 'text', 'value' ), 3 );
function myInsertOptionInSelectAt ( select, option, index )
{
    for ( var i = select.options.length; i > index; i-- )
	{
        select.options[i] = new Option( select.options[i - 1].text, select.options[i - 1].value );
		select.options[i].disabled = select.options[i - 1].disabled;
		select.options[i].className = select.options[i - 1].className;
		// select.options[i].style = select.options[i - 1].style; has only getter no setter
		select.options[i].selected = select.options[i - 1].selected;
		select.options[i].id = select.options[i - 1].id;
		select.options[i].name = select.options[i - 1].name;
	}
    select.options[index] = option;
}

function myDeleteOptionInSelectAt ( select, index )
{
	var oldLength = select.options.length;
    for ( var i = index; i < select.options.length - 1; i++ )
	{
        select.options[i] = new Option( select.options[i + 1].text, select.options[i + 1].value );
		select.options[i].disabled = select.options[i + 1].disabled;
		select.options[i].className = select.options[i + 1].className;
		// select.options[i].style = select.options[i + 1].style; has only getter no setter
		select.options[i].selected = select.options[i + 1].selected;
		select.options[i].id = select.options[i + 1].id;
		select.options[i].name = select.options[i + 1].name;
		// add more if needed
	}
    select.options.length = oldLength - 1;
}

function myDeleteOptionInSelect( select )
{
    if ( myIsOneSelected( select ) )
    {
        returnValue = select.options[select.options.selectedIndex] = null;
    }
}

function myAddOptionInSelect ( select, option, disableOption )
{
	if ( arguments && arguments.length < 3 )
	{
		disableOption = false;
	}
	if ( disableOption )
	{
		option.disabled = true;
		option.className = 'myAdminDisabled';
	}
    select.options[select.options.length] = option;
}

function myAddOptionInSelectIfNotExistInOtherSelects ( select, otherSelects, option, disableOption )
{
	if ( arguments && arguments.length < 4 )
	{
		disableOption = false;
	}
	if ( disableOption )
	{
		option.disabled = true;
	}
    
    var notExist = true;
    for ( var i = 0; i < otherSelects.length; i++ )
    {
        var otherSelect = otherSelects[i];
        for ( var i = 0; i < otherSelect.options.length; i++ )
        {
            if ( otherSelect.options[i].value == option.value )
            {
                notExist = false;
                break;
            }
        }
        
        if ( !notExist )
        {
            break;
        }
    }
    
    if ( notExist )
    {
        select.options[select.options.length] = option;
    }
}

function myIsOneSelected ( select )
{
    return ( myGetSelectedIndex( select ) >= 0)
}

function myGetSelectedIndex ( select )
{
    return select.options.selectedIndex;
}

function mySelectValueIfInSelect ( select, value )
{
    var returnValue = false;

    for ( var i = 0; i < select.options.length; i++ )
    {
        if ( select.options[i].value == value )
        {
            select.options[i].selected = true;
            returnValue = true;
            break;
        }
    }

    return returnValue;
}


function myGetSelectTextIfValueInSelect ( select, value, defaultValue )
{
    var returnValue = defaultValue != null ? defaultValue : null;

    for ( var i = 0; i < select.options.length; i++ )
    {
        if ( select.options[i].value == value )
        {
            select.options.selectedIndex = i;
            returnValue = select.options[i].text;
            break;
        }
    }

    return returnValue;
}

function myGetOptionIndex ( select, value )
{
    var returnValue = -1;

    for ( var i = 0; i < select.options.length; i++ )
    {
        if ( select.options[i].value == value )
        {
            returnValue = i;
            break;
        }
    }

    return returnValue;
}

function myDisableAllOptionsInSelect ( select )
{
    for ( var i = 0; i < select.options.length; i++ )
    {
        select.options[i].disabled = true;
    }
}

function myEnableAllOptionsInSelect ( select )
{
    for ( var i = 0; i < select.options.length; i++ )
    {
        select.options[i].disabled = false;
    }
}

// normal select, returns the selected value, or the defaultValue if no option is selected
function myGetSelectValue ( select, defaultValue )
{
    var returnValue = defaultValue != null ? defaultValue : null;

    if ( myIsOneSelected( select ) )
    {
        returnValue = select.options[select.options.selectedIndex].value;
    }

    return returnValue;
}

// multiple select, returns an array with all selected values
function myGetSelectValues ( select )
{
    var returnValue = new Array()

	if ( myIsOneSelected( select ) )
	{
	    for ( var i = 0; i < select.options.length; i++ )
	    {
	        if ( select.options[i].selected )
	        {
	            returnValue[returnValue.length] = select.options[i].value;
	        }
	    }
	}

    return returnValue;
}

function myGetValueForIndex ( select, index )
{
	var returnValue = "";
	if ( select.options.length > index )
	{
		returnValue = select.options[index].value;
	}
	
	return returnValue;
}

function myGetTextForIndex ( select, index )
{
	var returnValue = "";
	if ( select.options.length > index )
	{
		returnValue = select.options[index].text;
	}
	
	return returnValue;
}

// for multiple select only
function mySelectAllValues ( select )
{
    for ( var i = 0; i < select.options.length; i++ )
    {
        select.options[i].selected = true;
    }
}

function mySelectValues ( select, values )
{
    for ( var i = 0; i < values.length; i++ )
    {
        mySelectValueIfInSelect( select, values[i] );
    }
}

function myDeselectAllValues ( select )
{
    for ( var i = 0; i < select.options.length; i++ )
    {
        select.options[i].selected = false;
    }
}

function mySwitchSelectedOptions ( selectSrc, selectDest, switchAll )
{
	mySwitchSelectedOptionsAndSort ( selectSrc, selectDest, switchAll, null );
}

function mySwitchSelectedOptionsAndSort ( selectSrc, selectDest, switchAll, orderAsc )
{
    var indexesToDelete = new Array();

    for ( var i = 0; i < selectSrc.options.length; i++ )
    {
        if ( switchAll || selectSrc.options[i].selected )
        {
			if ( switchAll )
			{
            	myAddOptionInSelect( selectDest, new Option( selectSrc.options[i].text, selectSrc.options[i].value ) );
			}
			else
			{
            	myAddOptionInSelect( selectDest, new Option( selectSrc.options[i].text, selectSrc.options[i].value ) );
				indexesToDelete[indexesToDelete.length] = i - indexesToDelete.length;
			}
        }
    }
	if ( switchAll )
	{
		selectSrc.options.length = 0;
	}
	else
	{
		for ( var i = 0; i < indexesToDelete.length; i++ )
		{
			myDeleteOptionInSelectAt( selectSrc, indexesToDelete[i] );
		}
	}
    
    if ( orderAsc != null && typeof( orderAsc ) != 'undefined' )
    {
        mySortSelectBoxByName ( selectSrc, orderAsc );
        mySortSelectBoxByName ( selectDest, orderAsc );
    }
}

function mySwitchSelectOption ( selectSrc, selectDest, optionValue )
{
	var indexesToDelete = new Array();
	var index = myGetOptionIndex( selectSrc, optionValue );
	var returnValue = false;
	
    if ( index >= 0 )
    {
		myAddOptionInSelect( selectDest, new Option( selectSrc.options[index].text, selectSrc.options[index].value ) );
		myDeleteOptionInSelectAt( selectSrc, index );
		returnValue = true;
    }
	
	return returnValue;
}

function myGetSelectText ( select, defaultValue )
{
    var returnValue = defaultValue != null ? defaultValue : null;

    if ( myIsOneSelected( select ) )
    {
        returnValue = select.options[select.options.selectedIndex].text;
    }

    return returnValue;
}

function myGetSelectOption ( select )
{
    var returnValue = null;
    if ( myIsOneSelected( select ) )
    {
        returnValue = select.options[select.options.selectedIndex];
    }

    return returnValue;
}

function myClearSelectionsInSelect ( select )
{
    if ( select && select.options && select.options.length )
    {
        for ( var i = select.options.length-1; i >= 0; i-- )
            select.options[i].selected = false;
    }
}

function myClearOptionsInSelect ( select )
{
    if ( select.options.length )
    {
        for ( var i = select.options.length-1; i >= 0; i-- )
            select.options[i] = null;
    }
}

function myClearSelectedOptionsInSelect ( select )
{
    if ( select.options.length )
    {
        for ( var i = select.options.length-1; i >= 0; i-- )
        {
            if ( select.options[i].selected )
            {
                select.options[i] = null;
            }
        }
    }
}

function myMoveSelectedOptionsUp ( select )
{
    var selectedIndex = new Array();
    var dontMove = false
    for ( var i = 0; i < select.options.length; i++ )
    {
        if ( select.options[i].selected )
        {
            if ( i == 0 && i -1 < 0 )
            {
                dontMove = true;
                break;
            }
            selectedIndex[ selectedIndex.length ] = i;
        }
    }
    if ( dontMove == false )
    {
        myClearSelectionsInSelect( select );
        for ( var i = 0; i < selectedIndex.length; i++ )
        {
            myMoveOption( select, selectedIndex[i], -1 );
            select.options[selectedIndex[i]-1].selected = true;
        }
    }
}

function myMoveSelectedOptionsDown ( select )
{
    var selectedIndex = new Array();
    var dontMove = false;
    for ( var i = select.options.length -1; i >= 0; i-- )
    {
        if ( select.options[i].selected )
        {
            if ( i == select.length - 1 && i + 1 > select.length - 1 )
            {
                dontMove = true;
                break;
            }
            selectedIndex[ selectedIndex.length ] = i;
        }
    }
    if ( dontMove == false )
    {
        myClearSelectionsInSelect( select );
        for ( var i = 0; i < selectedIndex.length; i++ )
        {
            myMoveOption( select, selectedIndex[i], +1 );
            select.options[selectedIndex[i]+1].selected = true;
        }
    }
}

function myMoveOptionUp ( select, index )
{
    myClearSelectionsInSelect( select );
    myMoveOption( select, index, -1 );
}

function myMoveOptionDown ( select, index )
{
    myClearSelectionsInSelect( select );
    myMoveOption( select, index, +1 );
}

function myMoveOption ( select, index, moveIndex )
{
    if ( ( moveIndex > 0 && select.options.length > 1 && index + moveIndex < select.options.length ) || ( moveIndex < 0 && select.options.length > 1 && index > 0 && index + moveIndex >= 0 ) )
    {
        var moveText = select.options[index + moveIndex].text;
        var moveValue = select.options[index + moveIndex].value;
        select.options[index + moveIndex].text = select.options[index].text;
        select.options[index + moveIndex].value = select.options[index].value;
        select.options[index].text = moveText;
        select.options[index].value = moveValue;
    }
}

function mySortAsc ( select1, select2 )
{
    var returnValue = 0;
    var text1 = select1.text.toLowerCase();
    var text2 = select2.text.toLowerCase();
    if ( text1 > text2 )
    {
        returnValue = 1;
    }
    else if ( text1 < text2 )
    {
        returnValue = -1;
    }
    
    return returnValue;
}

function mySortDesc ( select1, select2 )
{
    var text1 = select1.text.toLowerCase();
    var text2 = select2.text.toLowerCase();
    if ( text1 > text2 )
    {
        returnValue = -1;
    }
    else if ( text1 < text2 )
    {
        returnValue = 1;
    }
    return returnValue;
}

function mySortSelectBoxByName ( select, orderAsc )
{
    if ( typeof( orderAsc ) == 'undefined' || orderAsc == null )
    {
        orderAsc = true;
    }

    var options = new Array;
    for ( var i = 0; i < select.options.length; i++ )
    {
        options[i] = new Object();
        options[i].text = select.options[i].text;
        options[i].value = select.options[i].value;
    }

    if ( orderAsc )
    {
        options.sort( mySortAsc );
    }
    else
    {
        options.sort( mySortDesc );
    }

    select.options.length = 0;
    
    for ( var i = 0; i < options.length; i++ )
    {
        myAddOptionInSelect( select, new Option( options[i].text, options[i].value ) );
    }
}

// ****************** <input type="checkbox"> ************

function myIsChecked ( checkbox )
{
    return checkbox.checked;
}

// ****************** <input type="radio"> ************

function myGetRadioValue ( radio )
{
    var returnValue = null;
    // if there's only one radio button
	if ( radio.checked )
	{
		returnValue = radio.value;
	}
	else
	{
		if ( radio.length != null )
		{
		    for ( var i = 0; i < radio.length; i++ )
		    {
		        if ( radio[i].checked )
		        {
		            returnValue = radio[i].value;
		            break;
		        }
		    }
		}
	}

    return returnValue;
}

function mySelectRadioValue ( radio, value )
{
    var returnValue = null;

	if ( radio.value != null )
	{
		if ( radio.value == value )
		{
			radio.checked = true;
		}
	}
	else
	{
		if ( radio.length != null )
		{
		    for ( var i = 0; i < radio.length; i++ )
		    {
		        if ( radio[i].value == value )
		        {
		            radio[i].checked = true;
		            break;
		        }
		    }
		}
	}

    return returnValue;
}

// ******************* other functions *******************

//Rounds a number to the given numberOfDecimalPlaces
function myFormatNumber ( number, numberOfDecimalPlaces, minNumberOfIntegerDigits, withGroupingSep )
{
    var returnValue = Number(number);
    if ( typeof( numberOfDecimalPlaces ) == 'undefined' || Number(numberOfDecimalPlaces) < 0 )
    {
        numberOfDeciamlPlaces = 0;
    }
    if ( typeof( minNumberOfIntegerDigits ) == 'undefined' || Number(minNumberOfIntegerDigits) <= 0  )
    {
        minNumberOfIntegerDigits = 1;
    }
    if ( typeof( withGroupingSep ) == 'undefined' || typeof( withGroupingSep ) != 'boolean' )
    {
        withGroupingSep = false;
    }
    
    var roundFactor = 1;
    for ( var i = 0; i < Number(numberOfDecimalPlaces); i++ )
    {
        roundFactor = roundFactor * 10;
    }
    
    returnValue = String( ( Math.round( returnValue * roundFactor ) / roundFactor ) );
    
    if ( numberOfDecimalPlaces > 0 && returnValue.indexOf('.') == -1 )
    {
        returnValue += ".";
    }
    
    if ( ( returnValue.length - ( returnValue.indexOf('.') + 1 ) ) < numberOfDecimalPlaces )
    {
        var numberOfDecimalDigitsToAdd = numberOfDecimalPlaces - ( returnValue.length - ( returnValue.indexOf('.') + 1 ) );
        for ( var i = 0; i < numberOfDecimalDigitsToAdd; i++ )
        {
            returnValue += 0;
        }
    }

    if ( numberOfDecimalPlaces > 0 && returnValue.indexOf('.') < minNumberOfIntegerDigits )
    {
        var addDigits = "";
        for ( var i = 0; i < ( minNumberOfIntegerDigits - returnValue.indexOf('.') ); i++ )
        {
            addDigits += "0";
        }
        returnValue = addDigits + returnValue;
    }
    
    var counter = 1;
	var startIndex = returnValue.length - 1;
	if ( returnValue.indexOf('.') >= 0 )
		startIndex = returnValue.indexOf('.') - 1;
    for ( var i = startIndex; i >= 0; i-- )
    {
        if ( withGroupingSep && ( i > 0 ) && ( counter % 3 == 0 ) )
        {
            var first = returnValue.substring( 0, i );
            var last = returnValue.substring( i, returnValue.length );
            returnValue = first + "'" + last;
        }
        counter++;
    }
    
    return returnValue;
}

function myGetQueryStringForFormData ( formId )
{
    var returnValue = "";
    var formObj = myGetObj( formId );
    var useEncode = false;

    if ( formObj.elements )
    {
        if ( window.encodeURI )
        {
            useEncode = true;
        }
        for ( var i = 0; i < formObj.elements.length; i++ )
        {
            if ( i > 0 )
            {
                returnValue += "&";
            }
            if ( useEncode )
            {
				if ( formObj.elements[i].id )
				{
                	returnValue += formObj.elements[i].id + "=" + encodeURI( formObj.elements[i].value );
				}
				else
				{
					returnValue += formObj.elements[i].name + "=" + encodeURI( formObj.elements[i].value );
				}
            }
            else
            {
				if ( formObj.elements[i].id )
				{
                	returnValue += formObj.elements[i].id + "=" + formObj.elements[i].value;
				}
				else
				{
					returnValue += formObj.elements[i].name + "=" + formObj.elements[i].value;
				}
            }
        }
    }

    return returnValue;
}

function myInsertHiddenFieldsForFormData ( formObj )
{
    for ( var i = 0; i < formObj.elements.length; i++ )
    {
		if ( formObj.elements[i].id )
		{
        	document.write( '<input type="hidden" id="' + formObj.elements[i].id + '" value="' + formObj.elements[i].value + '" />' );
		}
		else
		{
			document.write( '<input type="hidden" id="' + formObj.elements[i].name + '" value="' + formObj.elements[i].value + '" />' );
		}
    }
}

// optionArray is an array with array elements [0]=text [1]=value, validValues is optional
function myInsertOptionsFromArrayInSelect ( select, optionArray, selectedValue, validValues )
{
    for ( var i = 0; i < optionArray.length; i++ )
    {
        if ( optionArray[i] != null )
        {
			var isValid = true;
			if ( validValues != null )
			{
				isValid = myContainsValue( validValues, optionArray[i][1] )
			}
			if ( isValid )
			{
	            select.options[select.options.length] = new Option( optionArray[i][0], optionArray[i][1] );
	            if ( optionArray[i][1] == selectedValue )
	            {
	                select.options.selectedIndex = select.options.length-1;
	            }
			}
        }
    }
}

// optionArray is an array with array elements [0]=text [1]=value
function myGetSelectedOptionTextFromArray ( optionArray, selectedValue )
{
    var returnValue = '';
    for ( var i = 0; i < optionArray.length; i++ )
    {
        if ( optionArray[i][1] == selectedValue )
        {
            returnValue = optionArray[i][0];
            break;
        }
    }
    return returnValue;
}

// ***************** array operations **********************

function myGetIntersection ( array1, array2, array3, array4, array5, array6 )
{
	var returnValue = new Array();

	for ( var i = 0; i < array1.length; i++ )
	{
		value = array1[i];
		if ( ( array2 == null || myContainsValue( array2, value ) ) &&
		     ( array3 == null || myContainsValue( array3, value ) ) &&
			 ( array4 == null || myContainsValue( array4, value ) ) &&
			 ( array5 == null || myContainsValue( array5, value ) ) &&
			 ( array6 == null || myContainsValue( array6, value ) ) )
		{
			returnValue[returnValue.length] = value;
		}
	}

	return returnValue;
}

function myGetUnion ( array1, array2 )
{
	var returnValue = new Array();

	for ( var i = 0; i < array1.length; i++ )
	{
		returnValue[returnValue.length] = array1[i];
	}

	for ( var i = 0; i < array2.length; i++ )
	{
		if ( !myContainsValue( returnValue, array2[i] ) )
		{
			returnValue[returnValue.length] = array2[i];
		}
	}

	return returnValue;
}

// subArrIndex is optional
function myContainsValue ( array, value, subArrIndex )
{
	return ( myGetIndexOfValue( array, value, subArrIndex ) >= 0 );
}

// subArrIndex is optional
function myRemoveValue ( array, value, subArrIndex )
{
	var index = myGetIndexOfValue( array, value, subArrIndex );

	return myRemoveIndex( array, index );
}

function myRemoveIndex ( array, index )
{
	var returnValue = new Array();

	for ( var i = 0; i < array.length; i++ )
	{
		if ( i != index )
		{
			returnValue[returnValue.length] = array[i];
		}
	}

	return returnValue;
}


// subArrIndex is optional
function myGetIndexOfValue ( array, value, subArrIndex )
{
	var returnValue = -1;

	for ( var i = 0; i < array.length; i++ )
	{
		if ( subArrIndex != null )
		{
			if ( array[i][subArrIndex] == value )
			{
				returnValue = i;
				break;
			}
		}
		else
		{
			if ( array[i] == value )
			{
				returnValue = i;
				break;
			}
		}
	}

	return returnValue;
}

// handles depencies on values of multiple select boxes
// selectIdArray is an array of the ids of the select boxes (only the id without 'document...'
// valueArrays is an array with an array for each select box with text[0] value[1] tuples
// depencyArrays is a two-dimensional array containing the arrays describing the depencies:
//      1   2   3
//  1   -   a   a
//  2   a   -   a
//  3   a   a   -
// on the position of eg. [0][1] is an array containing at [0] the value of box 2 on [1] is an
// array of the possible values for box 1
// nonSelValueArray contains the values which represents no selection in the box (for each box a value)
// excludeBlockers determines if entries which doesn't allow any entries in one or more other box shall be hidden or not
function myCheckSelectionDepencies( selectIdArray, valueArrays, depencyArrays, nonSelValueArray, excludeBlockers )
{
	var selValues = new Array( selectIdArray.length );
	var selectObjs = new Array( selectIdArray.length );

	for ( var i = 0; i < selectIdArray.length; i++ )
	{
		selectObjs[i] = myGetObj( selectIdArray[i] );
		selValues[i] = myGetSelectValue( selectObjs[i], nonSelValueArray[i] );
	}

	for ( var i = 0; i < selectIdArray.length; i++ )
	{
		var validValues = null;
		var validValuesExcludingBlockers = null;
		for ( var h = 0; h < selectIdArray.length; h++ )
		{
			if ( h == i )
			{
				continue;
			}
			var selValue = myGetSelectValue( selectObjs[h], nonSelValueArray[h] );
			if ( selValue != nonSelValueArray[h] )
			{
				var index = myGetIndexOfValue( depencyArrays[i][h], selValue, 0 );
				if ( index >= 0 )
				{
					tmpValidValues = depencyArrays[i][h][index][1];
					if ( validValues == null )
					{
						validValues = tmpValidValues;
					}
					else
					{
						validValues = myGetIntersection( validValues, tmpValidValues );
					}
				}
				else
				{
					validValues = new Array();
				}
			}
			else
			{
				if ( excludeBlockers )
				{
					var valuesInOtherBox = null;
					for ( j = 0; j < valueArrays[i].length; j++ )
					{
						if ( valueArrays[i][j][1] != nonSelValueArray[i] )
						{
							var valuesInOtherBox = null;
							var index = myGetIndexOfValue( depencyArrays[h][i], valueArrays[i][j][1], 0 );
							if ( index >= 0 )
							{
								valuesInOtherBox = depencyArrays[h][i][index][1];
							}
							if ( valuesInOtherBox == null || valuesInOtherBox.length == 0 )
							{
								if ( validValuesExcludingBlockers == null )
								{
									validValuesExcludingBlockers = new Array();
									for ( var k = 0; k < valueArrays[i].length; k++ )
									{
										validValuesExcludingBlockers[validValuesExcludingBlockers.length] = valueArrays[i][k][1];
									}
								}
								validValuesExcludingBlockers = myRemoveValue( validValuesExcludingBlockers, valueArrays[i][j][1] );
							}
						}
					}
				}
			}
		}
		if ( validValues != null )
		{
			validValues[validValues.length] = nonSelValueArray[i];
			if ( excludeBlockers )
			{
				validValues = myGetIntersection( validValues, validValuesExcludingBlockers );
			}
		}
		else
		{
			if ( excludeBlockers )
			{
				validValues = validValuesExcludingBlockers;
			}
		}
		myClearOptionsInSelect( selectObjs[i] );
		myInsertOptionsFromArrayInSelect ( selectObjs[i], valueArrays[i], selValues[i], validValues );
	}

}

// corrects the format if possible
function myGetHoursForHourMinuteField ( formattedTimeField, msgOnFormatError )
{
	var returnValue = myGetMinutesForHourMinuteFormat( formattedTimeField.value, msgOnFormatError );
	
	if ( returnValue > 0 )
	{
		formattedTimeField.value = myGetHourMinuteFormatForMinutes( returnValue );
	}
	returnValue = returnValue / 60.0;
	
	return returnValue;
}

// format input values
function myGetMinutesForHourMinuteFormat ( formattedTime, msgOnFormatError )
{
    var returnValue = 0;
    if ( formattedTime != '' )
    {
		if ( formattedTime.indexOf( '.' ) > 0 )
		{
			formattedTime = formattedTime.replace( ".", ":" );
		}
		if ( formattedTime.indexOf( ':' ) == -1 )
		{
			formattedTime = formattedTime + ":00";
		}
        if ( formattedTime.indexOf( ':' ) > 0 )
        {
            if ( formattedTime.indexOf( ':' ) < (formattedTime.length - 1) )
            {
                returnValue = parseFloat ( formattedTime.substring( 0, formattedTime.indexOf( ':' ) ) ) * 60 +
                ( parseFloat( formattedTime.substring( formattedTime.indexOf( ':' ) + 1, formattedTime.length ) ) );
                if ( isNaN(returnValue) )
                {
                    if ( msgOnFormatError != null && msgOnFormatError.length > 0 )
                    {
                        alert( msgOnFormatError );
                    }
                    returnValue = 0;
                }
            }
            else
            {
                if ( msgOnFormatError != null && msgOnFormatError.length > 0 )
                {
                    alert( msgOnFormatError );
                }
            }
        }
        else
        {
            if ( msgOnFormatError != null && msgOnFormatError.length > 0 )
            {
                alert( msgOnFormatError );
            }
        }
    }
    return returnValue;
}

function myGetSecondsForHourMinuteSecondFormat ( formattedTime, msgOnFormatError )
{
    var returnValue = 0;
    if ( formattedTime != '' )
    {
        while ( formattedTime.indexOf( '.' ) > 0 )
		{
			formattedTime = formattedTime.replace( ".", ":" );
		}

        if ( formattedTime.indexOf( ':' ) == -1 )
        {
            formattedTime = formattedTime + ":00";
        }
        
        if ( formattedTime.substr( formattedTime.indexOf( ':' ) + 1, formattedTime.length ).indexOf( ':' ) == -1 )
        {
            formattedTime = formattedTime + ":00";
        }

        if ( formattedTime.indexOf( ':' ) > 0 )
        {
            if ( formattedTime.indexOf( ':' ) < (formattedTime.length - 1) )
            {
                returnValue = ( parseFloat ( formattedTime.substring( 0, formattedTime.indexOf( ':' ) ) ) * 3600 ) +
                ( parseFloat ( formattedTime.substring( formattedTime.indexOf( ':' ) + 1, formattedTime.lastIndexOf( ':' ) ) ) * 60 ) +
                ( parseFloat( formattedTime.substring( formattedTime.lastIndexOf( ':' ) + 1, formattedTime.length ) ) );
                if ( isNaN(returnValue) )
                {
                    if ( msgOnFormatError != null && msgOnFormatError.length > 0 )
                    {
                        alert( msgOnFormatError );
                    }
                    returnValue = 0;
                }
            }
            else
            {
                if ( msgOnFormatError != null && msgOnFormatError.length > 0 )
                {
                    alert( msgOnFormatError );
                }
            }
        }
        else
        {
            if ( msgOnFormatError != null && msgOnFormatError.length > 0 )
            {
                alert( msgOnFormatError );
            }
        }
    }
    return returnValue;
}

function myGetHoursForHourMinuteFormat ( formattedTime, msgOnFormatError )
{
    return ( 1.0 * myGetMinutesForHourMinuteFormat( formattedTime, msgOnFormatError ) / 60 );
}

function myAddIntegerDigits ( number, minNrOfDigits )
{
    var returnValue = number;
    var compareValue = 10;
    var addPart = "";
    
    for ( var i = 2; i <= minNrOfDigits; i++ )
    {
        if ( number < compareValue )
        {
            addPart += "0";
        }
        compareValue = compareValue * 10;
    }
    
    returnValue = "" + addPart + number;
    
    return returnValue;
}

function myGetHourMinuteFormatForHours ( hours )
{
	return myGetHourMinuteFormatForMinutes( hours * 60 );
}

function myGetHourMinuteFormatForMinutes ( minutes )
{
    var returnValue;
    var absMinutes = Math.abs( Math.round ( minutes ) );
    var hours = Math.floor( absMinutes / 60 );
    var mins = Math.floor( absMinutes - ( hours * 60 ) );
	
	if ( mins >= 60 )
	{
		mins -= 60;
		hours += 1;
	}
    
    returnValue = "" + hours + ":" + myAddIntegerDigits( mins, 2 );
    
    if ( minutes < 0 )
    {
        returnValue = "-" + returnValue;
    }
    
    return returnValue;
}

function myGetHourMinuteSecondFormatForSeconds ( seconds )
{
    var returnValue;
    var absSeconds = Math.abs( Math.round ( seconds ) );
    var hours = Math.floor( absSeconds / 3600 );
    var mins = Math.floor( ( ( absSeconds - ( hours * 3600 ) ) / 60 ) );
    var secs = Math.floor( ( absSeconds - ( hours * 3600 ) ) - ( mins * 60 ) );
	
    if ( secs >= 60 )
    {
        secs -= 60;
        mins += 1
    }
	if ( mins >= 60 )
	{
		mins -= 60;
		hours += 1;
	}
    
    returnValue = "" + hours + ":" + myAddIntegerDigits( mins, 2 ) + ":" + myAddIntegerDigits( secs, 2 );
    
    if ( seconds < 0 )
    {
        returnValue = "-" + returnValue;
    }
    
    return returnValue;
}

function myAddDayToDate ( actDate )
{
    var time = actDate.getTime();
    actDate.setTime( time + 60000 * 60 * 24 );

    return actDate;
}

function myCreateDateObj( dateAsString )
{
    var day = 0;
    var month = 0;
    var year = 0;
    var returnValue = null;

    if ( dateAsString.indexOf('.') > 0 )
    {
        day = parseFloat( dateAsString.substring( 0, dateAsString.indexOf('.') ) );
        var tmpStr = dateAsString.substring( dateAsString.indexOf('.') + 1, dateAsString.length );
        if ( tmpStr.indexOf('.') > 0 )
        {
            month = parseFloat( tmpStr.substring( 0, tmpStr.indexOf('.') ) );
            tmpStr = tmpStr.substring( tmpStr.indexOf('.') + 1, tmpStr.length );
            if ( tmpStr.indexOf(' ') > 0 )
            {
                year = parseInt( tmpStr.substring( 0, tmpStr.indexOf(' ') ) );
            }
            else
            {
                if ( tmpStr.length <= 4 )
                {
                    year = parseInt( tmpStr );
                }
            }
        }
        if ( year > 0 )
        {
            if( day < 1 )
            {
            	day = 1;
            }
            else if( day > 31 )
            {
            	day = 31;
            }
            
            returnValue = new Date();
            returnValue.setYear( year );
            returnValue.setMonth( month - 1 ); 
            returnValue.setDate( day );
            while( ( returnValue.getMonth() + 1 ) != month )
            {
            	returnValue.setDate( day-- );
            	returnValue.setMonth( month - 1 );
            }
        }
    }
    return returnValue;
}

function myJumpToSelectValueURL ( select, noJumpValue, target )
{
	var url = myGetSelectValue( select, null );
	if ( url != null && url != noJumpValue )
	{
		myJumpToURL( url, target );
	}
}

function myEnableDisableUsedOptions ( selects, ignoredValue )
{
	var selectedValues = new Array();
	var i;
	
	for ( i = 0; i < selects.length; i++ )
	{
		var value = myGetSelectValue( selects[i], ignoredValue );
		if ( value != ignoredValue )
		{
			selectedValues[selectedValues.length] = value;
		}
	}

	for ( i = 0; i < selects.length; i++ )
	{
		for ( var h = 0; h < selects[i].options.length; h++ )
		{
			var usedInOtherBox = false;
			if ( h != myGetSelectedIndex( selects[i] ) )
			{
				for ( var j = 0; j < selectedValues.length; j++ )
				{
					if ( selects[i].options[h].value == selectedValues[j] )
					{
						usedInOtherBox = true;
						break;
					}
				}
			}
			selects[i].options[h].disabled = usedInOtherBox;
		}
	}
}

function myCheckMaxChars ( field, maxChars )
{
	var returnValue = maxChars - field.value.length;

	if ( returnValue < 0 )
	{
		field.value = field.value.substring( 0, maxChars );
		returnValue = 0;
	}
	
	return returnValue;
}

function myIsEmail ( email )
{
	var reg = new RegExp( '^([a-zA-Z0-9\\-\\.\\_]+)[@][\\S\\-]{1,}([.]([\\S\\-]{1,})){1,3}$' );
		
	return reg.test( email );
}
//-->