﻿/*** WmxTextBox ***/
function SetHelpValue( controlId, value )
{
    textBox = findObj( controlId );
    
    if( textBox == null ) return;
    
    if( textBox.value == "" || textBox.value == null ) textBox.value = value;
}

function RemoveHelpValue( controlId, value )
{
    textBox = findObj( controlId );
    
    if( textBox == null  ) return;
    
    if( textBox.value == value ) textBox.value = "";
}

function TextBoxSetNumberOnly( controlId, numberOnly )
{
    textBox = findObj( controlId );
    
    if( textBox == null ) return;
    
    textBox.NumberOnly = numberOnly;
}

function TextBoxKeyDown( Event, buttonID, controlId, actionUrl, numberOnly, isSafari )
{
	var keyCode = GetKeyCode( Event );
	
	var textBox = findObj( controlId );
	
	var isNumberOnly = IsTextBoxNumberOnly( textBox, numberOnly );
	
	if( ( keyCode == 13 ) && ( buttonID != '' ) )
	{
		if( actionUrl != "" ) 
		{
		    getForm().action = actionUrl;
		    
		    //-function from WmxLinkButton
		    SetUserAttributes();
		}
		
		__doPostBack( buttonID, '' );
		
		Event.returnValue = false;
		
	} 
	else if( isNumberOnly && !IsNumber( keyCode ) && !IsFunctionalKey( Event, isSafari ) ) 
	{
		return false;
	}
}

function TextBoxKeyDownCausesValidation( Event, buttonID, controlId, parentID, actionUrl, numberOnly, isSafari )
{
	var keyCode = GetKeyCode( Event );
	
	var textBox = findObj( controlId );
	
	var isNumberOnly = IsTextBoxNumberOnly( textBox, numberOnly );
	
	if( ( keyCode == 13 ) && ( buttonID != '' ) )
	{
		if ( typeof( Control_ClientValidate ) != 'function' || Control_ClientValidate( parentID ) ) 
		{
            if( actionUrl != "" ) 
            {
                getForm().action = actionUrl;
                
                //-function from WmxLinkButton
                SetUserAttributes();
            }
		    
		    __doPostBack( buttonID ,parentID );
		}
		
		Event.returnValue = false;
		
	} 
	else if( isNumberOnly && !IsNumber( keyCode ) && !IsFunctionalKey( Event, isSafari ) )
	{
		return false;
	}
}

function IsTextBoxNumberOnly( textBox, numberOnly )
{
    if( textBox.NumberOnly != undefined ) return textBox.NumberOnly;
    
    return numberOnly;
}

function IsFunctionalKey( e, isSafari )
{
    var c = e.keyCode;
    
    //If Safari identified as Mozilla or other browser
    if( ( c >= 63272 && c <= 63274 ) || ( c >= 63232 && c <= 63235 ) ) return true;
    
    if( c == 13 || c == 8 || c == 9 || ( c >= 33 && c <= 40 ) || c == 46 || ( c >= 96 && c <= 105 && isSafari ) ) return true;
    
    return false;
}

function IsNumber( unicodeKey )
{
    return unicodeKey >= 48 && unicodeKey <= 57
}

function GetKeyCode( e )
{
    //- e.which for Netscape and Firefox browsers
    
    return e.which == undefined ? e.keyCode : e.which;
}

/*** WmxRepeater ***/
function Repeater_RadioCheckBoxOnClick( id, checked, parentId, maxCount, calculateArrayName )
{
	if( !checked ) return;
	
	var count = 0;
	var lastCtrl = null;
	var arr = null;
	
	if( calculateArrayName )
	{
		arr = eval( parentId + '_checkBoxIds' );
	}
	else
	{
		arr = eval( parentId );
	}

	for( i = 0; i < arr.length; i++ )
	{
		if( arr[ i ] != id )
		{
			ctrl = findObj( arr[ i ] );
			
			if( ctrl.checked )
			{
				count++;
			
				if( count >= maxCount ) ctrl.checked = false;
			}
		}
	}
}

/*** WmxFormatTextBox ***/
function FormatTextBoxFocus( srcName, dstName )
{
	var obj = findObj( srcName );
	if( obj.value.length == obj.maxLength )
	{
		findObj( dstName ).focus();
	}
}

function getTextBoxArray( textbox )
{
	return ( typeof( textbox ) != 'undefined' ) ? eval( 'arr' + textbox.id ) : null;
}

function SetFormatTextBoxValue( value, textbox )
{
    var ctrlArray = getTextBoxArray(textbox);

	if( ctrlArray == null ) return;
	
	var count = ctrlArray.length;
	var tmpVal = value;
	
	for( var i = 0; i < count; i += 2 )
	{
	    txtCtrl = findObj(ctrlArray[i]);

		mlength = Number( ctrlArray[ i + 1 ] );
				
		if( tmpVal.length > mlength )
		{
			txtCtrl.value = tmpVal.substr( 0, mlength );
			tmpVal = tmpVal.substr( mlength );
		}
		else
		{
			txtCtrl.value = tmpVal;
		}
	}
}

function GetFormatTextBoxValue( textbox )
{
    var ctrlArray = getTextBoxArray(textbox);
	
	if( ctrlArray == null ) return "";
	
	var count = ctrlArray.length;
	var tmpVal = "";
	
	for( var i = 0; i < count; i += 2 )
	{
		txtCtrl = findObj( ctrlArray[ i ] );
		tmpVal += txtCtrl.value;
	}
	return tmpVal;
}

function SetFormatTextBoxDisabled( disable, textbox )
{
	var ctrlArray = getTextBoxArray( textbox );
	
	if( ctrlArray == null ) return;
	
	var count = ctrlArray.length;
	
	for( var i = 0; i < count; i += 2 )
	{
		txtCtrl = findObj( ctrlArray[ i ] );
		txtCtrl.disabled = disable;
	}
	textbox.enabled = !disable;
}

function FormatTextBoxIsValid( allowEmpty, textbox )
{
	var ctrlArray = getTextBoxArray( textbox );
	
	if( ctrlArray == null ) return false;
	
	var count = ctrlArray.length;
	var result = true;
	
	var val = GetFormatTextBoxValue( textbox );
	
	if( allowEmpty && ( val.length == 0 ) )
	{
		return true;
	}
	
	for( var i = 0; i < count; i += 2 )
	{
		txtCtrl = findObj( ctrlArray[ i ] );
		mlength = Number( ctrlArray[ i + 1 ] );
		if( txtCtrl.value.length != mlength )
		{
			result = false;
		}
	}
	
	return result;	
}

/*** WmxDependTextBox ***/
function ChangeDependValue( amount, currentValue, isPercent, dependControlId, decimalSeparator )
{
	var tbDepend = findObj( dependControlId );
	var dAmount = parseFloat( amount );
	
	if( !IsNumericRegExp( currentValue, decimalSeparator ) || currentValue.length == 0 )
	{
		tbDepend.value = "";
		
		return;	
	}
	
	currentValue = currentValue.replace( ",", "." );
	amount = amount.replace( ",", "." );
	
	var inputValue = parseFloat( currentValue );
	var outValue = "empty";
	
	if( isPercent )
	{
		if( inputValue > 100 )
		{ 
			tbDepend.value = "";
			return;
		}
		
		tbDepend.value = Round( ( amount * inputValue ) / 100, 0 );
		tbDepend.value = tbDepend.value.replace( ".", decimalSeparator );
	}
	else
	{
		if( inputValue > dAmount )
		{
			tbDepend.value = "";
			return;
		}
			
		tbDepend.value = Round( ( 100 * inputValue ) / dAmount, 0 );
		tbDepend.value = tbDepend.value.replace( ".", decimalSeparator );
	}
}

function Round( number, X )
{
	if( X == 0 ) return Math.round( number );

    return Math.round( number * Math.pow( 10 , X ) ) / Math.pow( 10, X );
}


function IsNumericRegExp( x, decimalSeparator ) 
{
	var RegExp = "^\\d+(\\" + decimalSeparator + "\\d+)?$";
	
	return x.match( RegExp );
}

function IsNumeric( sText, decimalSeparator )
{
	var ValidChars = "0123456789" + decimalSeparator;
	var IsNumber=true;
	var Char;
 
	for ( i = 0; i < sText.length && IsNumber == true; i++ ) 
	{ 
		Char = sText.charAt(i); 
		
		if ( ValidChars.indexOf( Char ) == -1 ) IsNumber = false;
	}
	
	return IsNumber;
}

/*** WmxCheckBox ***/
function c( name, text, checked )
{ 
    id = name.replace( /:/gi, "_" ); 
    
    document.write( '<input id="'+ id + '" type="checkbox" name="' + name + '"' + ( checked != null ? ' checked' : '' ) + '/>' );
    
    if( text != "" )
    {
        document.write( '<label for="' + id + '">' + text + '</label>' );
    }
}

/*** WmxTreeView ***/
function drawFolder( key, text, open, level, templates, tempales_array_name )
{
	var img_id = templates[ 6 ] + "_i" + key;
	var div_id = templates[ 6 ] + "_d" + key;

	document.write( "<tr valign=top><td width=1%><img src=" + templates[ 0 ] + " width=" + ( 11 * level ) + " height=1></td>" );
	document.write( "<td width=1%><a onmouseover=\"window.status=''; return true;\" href='javascript:invNode(" + key + "," + tempales_array_name + ")' ><img id='" + img_id + "' src=" + templates[ 1 ] + " width=11 height=13 border=0></a></td>" );
	document.write( "<td width=99% valign=bottom class=categ><a class=categlink onmouseover=\"window.status=''; return true;\" href=\"javascript:invNode(" + key + "," + tempales_array_name + ");\">" + text + "</a></td></tr><tr><td colspan='2'><img src=" + templates[ 0 ] + " width=1 height=5></td></tr>" );
	
	if( ( open ) && ( browserType() == "nn4" ) )
	{
		document.write( "<tr valign=top><td colspan=3><div id='" + div_id + "'><table width=100% cellpadding=0 cellspacing=0 border=0>" );
	}
	else
	{
		document.write( "<tr valign=top><td colspan=3><div id='" + div_id + "' class='subHidden'><table width=100% cellpadding=0 cellspacing=0 border=0>" );
	}
};

function drawBottom( templates )
{
	document.write( "</table><img src=" + templates[ 0 ] + " width=1 height=5><br></div></td></tr>" );
};

function drawSelectedLeaf( text, level, templates )
{
	document.write( "<tr valign=top><td width=1%><img src=" + templates[ 0 ] + " width=" + ( 11 * level ) + " height=1></td>" );
	document.write( "<td width=1%><img src=" + templates[ 3 ] + " width=11 height=13></td><td width=98% class=categ>" + text + "</td>" );
	document.write( "</tr><tr><td colspan=3><img src=" + templates[ 0 ] + " width=1 height=5></td></tr>" );
};

function drawLeaf( key, text, level, templates )
{
	document.write( "<tr valign=top><td width=1%><img src=" + templates[ 0 ] + " width=" + ( 11 * level ) + " height=1></td>");
	document.write( "<td width=1% nowrap><img src=" + templates[ 4 ] + " width=11 height=13></td><td width=98% class=categ><a class=categlink2 href='" + templates[ 5 ].replace( "{0}", key ) + "'>" + text + "</a></td>" );
	document.write( "</tr><tr><td colspan=3><img src=" + templates[ 0 ] + " width=1 height=5></td></tr>" );
};

function invNode( key, templates )
{
	img = findObj( templates[ 6 ] + "_i" + key, null );
	div = findObj( templates[ 6 ] + "_d" + key, null );
	
	div.className = ( div.className == "subVisible" ) ? "subHidden" : "subVisible";
	img.src = ( div.className == "subVisible" ) ? templates[ 2 ] : templates[ 1 ];
};

/*** WmxTimeBox ***/
function TimeBoxGetValue(control){
	var id = control.id;
	var controls = eval( id + "Controls" );
	
	var tbHours = controls[ 0 ];
	var tbMinutes = controls[ 1 ];
	var tbSeconds = controls.length > 2 ? controls[ 2 ] : null;
	
	if( tbHours.value == "" && tbMinutes.value == "" ){
		if( tbSeconds == null || tbSeconds.value == "" ) return ""; 
	}
	
	var hour = tbHours.value == "" ? "00" : tbHours.value;
	var minute = tbMinutes.value == "" ? "00" : tbMinutes.value;
	
	var result = hour + ":" + minute;
	
	if( tbSeconds != null ) {
		var sec = tbSeconds.value == "" ? "00" : tbSeconds.value;
		
		result = result + ":" + sec;
	}

	return result;
}

function TimeBoxChangeTextBoxEnabled( ctrl, enable ){
	if(enable)	{
		ctrl.disabled=null;
	}else{
		ctrl.disabled="disabled";
	}
}

function TimeBoxChangeEnabled(control,enabled)
{
	var id = control.id;
	var controls = eval( id + "Controls" );
	
	for(i=0;i<controls.length;i++) {
		TimeBoxChangeTextBoxEnabled(controls[i],enabled);
	}
}

/*** SwitchCheckBox ***/
function SwitchCheckBoxOnCheckedItem( id, checked, arrname ){
	var arr = eval( arrname );
	
	if( checked ){
	    for(i=0;i<arr.length;i++){
	        if( arr[i] != id )
	        {
		    ctrl = findObj( arr[i] );
		    ctrl.checked = false;
		    }
	    }
	}
}

/*** RichPlaceHolder ***/

function getPlaceHolderVisible( ctrlId )
{
	return ( findPlaceHolder( ctrlId ).style.display != "none" );
}

function setPlaceHolderVisible( ctrlId, value )
{
	findPlaceHolder( ctrlId ).style.display = ( value ? "block" : "none" );
}

function findPlaceHolder( ctrlId )
{
	var ctrl = findObj( ctrlId );
	
	if( ctrl == null ) alert( "control '" + ctrlId + "' not found" );
	
	return ctrl;
}

/*** ParentCheckBox ***/
function ParentCheckBoxOnCheckedItem( id, checked, ctrlid, arrname )
{
	var arr = eval( ctrlid + '_' + arrname );
	var cbAll = findObj( arr[ 0 ] );
	
	if( cbAll == null ) return; 
	
	if( checked )
	{
		cbAll.checked = !ParentCheckBoxHasUnChecked( arr, id );
	}else
	{
		cbAll.checked = false;
	}
}

function ParentCheckBoxOnCheckedItemReverse( id, checked, ctrlid, arrname )
{
	var arr = eval( ctrlid + '_' + arrname );
	var cbAll = findObj( arr[ 0 ] );
	
	if( cbAll == null ) return;
	
	if( checked )
	{
		cbAll.checked = true;
	}else
	{
		cbAll.checked = ParentCheckBoxHasChecked( arr, id );
	}
}

function ParentCheckBoxOnCheckedAllItem( id, checked, ctrlid, arrname )
{
	var arr = eval( ctrlid + '_' + arrname );
	var cbAll = findObj( id );
	
	if( cbAll == null ) return;
	
	for( i = 1; i < arr.length; i++ )
	{
		ctrl = findObj( arr[ i ] );
		
		if( ctrl == null ) continue;
		
		ctrl.checked=checked;
	}
}

function ParentCheckBoxOnChildRequireChecked( id, checked, ctrlid, arrname )
{
	if( checked ) return;
	
	ParentCheckBoxOnCheckedItem( id, checked, ctrlid, arrname );
}

function ParentCheckBoxOnParentRequireChecked( id, checked, ctrlid, arrname )
{
	if( !checked ) return;
	
	ParentCheckBoxOnCheckedAllItem( id, checked, ctrlid, arrname );
}

function ParentCheckBoxOnUnchecked( id, checked, ctrlid, arrname )
{
	if( checked ) return;
	
	var arr = eval( ctrlid + '_' + arrname );
	
	for( i = 0; i < arr.length; i++ )
	{
		ctrl = findObj( arr[i] );
		
		if( ctrl == null ) continue;
		
		ctrl.checked=checked;
	}
}

function ParentCheckBoxOnLoad( ctrlid, arrname )
{
	var arr = eval( ctrlid + '_' + arrname );
	var cbAll = findObj( arr[ 0 ] );
	
	if( cbAll == null ) return;

	cbAll.checked = !ParentCheckBoxHasUnChecked( arr, null );
}

function ParentCheckBoxOnLoadReverse( ctrlid, arrname )
{
	var arr = eval( ctrlid + '_' + arrname );
	var cbAll = findObj( arr[ 0 ] );
	
	if( cbAll == null ) return;

	cbAll.checked = ParentCheckBoxHasChecked( arr, null );
}

function ParentCheckBoxHasUnChecked( arr, excludeid )
{
	for( i = 1; i < arr.length; i++ )
	{
		if( excludeid == null || arr[ i ] != excludeid )
		{
			ctrl = findObj( arr[ i ] );
			
			if( ctrl == null ) continue;
			
			if( !ctrl.checked ) return true;
		}
	}
	return false;
}

function ParentCheckBoxHasCheckedValidation( ctrlid, arrname )
{
	var arr = eval( ctrlid + '_' + arrname );
	
	return ParentCheckBoxHasChecked( arr, '' );
}

function ParentCheckBoxHasChecked( arr, excludeid )
{
	for( i = 1; i < arr.length; i++ )
	{
		if( excludeid == null || arr[ i ] != excludeid )
		{
			ctrl = findObj( arr[i] );
			
			if( ctrl == null ) continue;
			
			if( ctrl.checked ) return true;
		}
	}
	
	return false;
}

/*** MultiLineTabStrip ***/
function SetTab( tabStripId, multiLayerId, tabIndex )
{
    var activeTabIds = eval( tabStripId + "_activeTabIds" );
    var passiveTabIds = eval( tabStripId + "_passiveTabIds" );
    var selectedTabIndexContainer = findObj( tabStripId + "_selectedTabIndex" );
    
    selectedTabIndexContainer.value = tabIndex;
    
    for( i = 0; i < activeTabIds.length; i++ )
    {
        var activeTab = findObj( activeTabIds[ i ] );
        var passiveTab = findObj( passiveTabIds[ i ] );
        
        if( i == tabIndex )
        {
            activeTab.style.display = "block";
            passiveTab.style.display = "none";
            
            continue;
        }
        
        activeTab.style.display = "none";
        passiveTab.style.display = "block";
    }
    
    changeLayer( multiLayerId, tabIndex );
}

/*** MultiLayer ***/
function hideAllLayers( multiLayerID ){
	var layerIDs = eval( multiLayerID + "_ml" );
	
	for(i=1;i<layerIDs.length;i++){
 		layer = findObj( layerIDs[i] );
		if( layer != null ) layer.style.display = "none";
	}
}

function changeLayer( multiLayerID, index )
{
	var form = getForm();
	
	var layerIDs = eval( multiLayerID + "_ml" );
	var h = form[ layerIDs[ 0 ] ];

	hideAllLayers(multiLayerID);
	
	var showLayerID = layerIDs[ index + 1 ]; 
	var showLayer = findObj( showLayerID );
	
	if( showLayer != null ) showLayer.style.display = "block";
	h.value = showLayerID;
}

function getLayer( multiLayerID, index )
{
	var layerIDs = eval( multiLayerID + "_ml" );

	var showLayerID = layerIDs[ index + 1 ]; 
	
	return findObj( showLayerID );
}

function getLayerCtrl( multiLayerID, ctrlID )
{
	var form = getForm();
	
	var layerIDs = eval( multiLayerID + "_ml" );
	var h = form[ layerIDs[ 0 ] ];
	
	return findObj( h.value + "_" + ctrlID );
}

function MultiLayerGetSelectedLayerIndex( multiLayerID )
{
    var form = getForm();

    var layerIDs = eval( multiLayerID + "_ml" );
    var h = form[ layerIDs[ 0 ] ];

    for( m = 1; m < layerIDs.length; m++ )
    {
        if ( layerIDs[ m ] == h.value ) return m - 1;
    }

    return -1;
}

/*** MoneyFormatter ***/
var ZeroCentFormatEnum = {
	Undefined: 0,
	Zero: 1,
	NotShow: 2,
	Dash: 3
}

//String formatter for money amounts.
function MoneyFormatter()
{
	var DEFAULT_FLOAT_SEPARATOR = '.';
	var FLOAT_SEPARATOR_2 = ',';
	
	this.DecimalSeparator=',';
	this.ThousandsSeparator='';
	this.AmountDecimal = 2;
	this.EvenNumberPostfix = '-';
	this.CurrencySymbol;
	this.EmptyValue = 'N/A';
	this.ZeroCentFormatMode = ZeroCentFormatEnum.Zero;
	this.PositivePattern = 2;//0=$n, 1=n$, 2=$ n, 3=n $


	this.toString = function( value )
	{
		try
		{
			if ( typeof value == 'string' )
			{
				if ( !_isNullOrEmpty( value ) )
				{
					var fixedValueStr = _checkAndReplace( value, DEFAULT_FLOAT_SEPARATOR, FLOAT_SEPARATOR_2 );

					value = parseFloat( fixedValueStr );
				}
				else
				{
					return this.EmptyValue;
				}
			}

			if ( typeof value == 'undefined' )
			{
				return this.EmptyValue;
			}

			var currencyStr = this.convertToCurrencyString( value );

			return _isNullOrEmpty( this.CurrencySymbol ) ? currencyStr : _currencyFormat( this.PositivePattern, this.CurrencySymbol, currencyStr );
		}
		catch ( e )
		{
			return null;
		}
	}

	this.convertToCurrencyString = function( value )
	{
		if ( _isEven( value ) )
		{
			var fixedValue = value.toFixed( 0 );

			var breakedString = _breakOnThousands( fixedValue.toString(), this.ThousandsSeparator );

			if ( this.ZeroCentFormatMode == ZeroCentFormatEnum.Dash )
			{
				return breakedString + this.DecimalSeparator + this.EvenNumberPostfix;
			}

			if ( this.ZeroCentFormatMode == ZeroCentFormatEnum.Zero )
			{
				return breakedString + this.DecimalSeparator + _generateNulls( this.AmountDecimal );
			}

			return breakedString; //ZeroCentFormatEnum.NotShow || ZeroCentFormatEnum.None
		}
		else
		{
			var strValue = value.toString();

			var valueParts = strValue.split( DEFAULT_FLOAT_SEPARATOR );

			if ( valueParts.length == 1 )
			{
				var fractionPart = _generateNulls( this.AmountDecimal );
				valueParts.push( fractionPart );
			}

			var intPart = valueParts[0];
			var fractionPart = valueParts[1];

			if ( fractionPart.length < this.AmountDecimal )
			{
				fractionPart += _generateNulls( this.AmountDecimal - fractionPart.length )
			}

			var decimalPostfix = _isNullOrEmpty( fractionPart ) ? '' : this.DecimalSeparator + fractionPart;

			return _breakOnThousands( intPart, this.ThousandsSeparator ) + decimalPostfix;
		}
	}

	_checkAndReplace = function( sourceStr, legalChar, illegalChar )
	{
		var index = sourceStr.indexOf( illegalChar );

		if ( index != -1 )
		{
			sourceStr = sourceStr.replace( illegalChar, legalChar );			
		}
			
		return sourceStr;
	}

	_currencyFormat = function( positiveFormat, currencySymbol, value )
	{
		switch ( positiveFormat )
		{
			case 0: return currencySymbol+value; break;
			case 1: return value+currencySymbol; break;
			case 2: return currencySymbol+' ' +value; break;
			case 3: return value + ' ' + currencySymbol; break;
		}
	}

	_generateNulls = function( count )
	{
		var result = '';

		for ( i = 0; i < count; i++ )
		{
			result += '0';
		}

		return result;
	}

	_isEven = function( value )
	{
		return value == Math.round( value );
	}

	_isNullOrEmpty = function( str )
	{
		return str == null || str === '';
	}

	_breakOnThousands = function( decimalPartString, separator )
	{
		var result = '';
		var charIndex = 0;
		var isNegative = decimalPartString.charAt( 0 ) == '-';
		var firstNumIndex = isNegative ? 1 : 0;


		for ( i = decimalPartString.length - 1; i >= firstNumIndex; i-- )
		{
			result = decimalPartString.charAt( i ) + result;

			if ( ++charIndex % 3 == 0 && i != firstNumIndex )
			{
				result = separator + result;
			}
		}
		
		if ( isNegative ) result = '-' + result;

		return result;
	}
}

/*** HideShowButton ***/

function hideShowButtonClick( button )
{
	var placeHoldersArray = eval( button.PlaceHoldersArray );
	var hideContentHolderId = button.HideContentHolderID;
	var showContentHolderId = button.ShowContentHolderID;
	
	if( !placeHoldersArray )
	{
	    alert( "Could not find " + button.PlaceHoldersArray );
	    
	    return;
	}

	if( placeHoldersArray.length == 0 ) return;
	
	var visible = ( !getPlaceHolderVisible( placeHoldersArray[ 0 ] ) );
		
	for( var i = 0; i < placeHoldersArray.length; i++ )
	{
	    setPlaceHolderVisible( placeHoldersArray[ i ], visible );
	}
	
	var hideHolder = null;
	var showHolder = null;
	

	for( var i = 0; i < button.childNodes.length; i++ )
	{
		var block = button.childNodes[ i ];
		
		if( block == null || block.id == null ) continue;
		
		if( block.id == hideContentHolderId ) hideHolder = block;
		
		if( block.id == showContentHolderId ) showHolder = block;
	}

	if( visible == true )
	{
		showHolder.style.display = "none";
		hideHolder.style.display = "inline";
	}
	else
	{
		hideHolder.style.display = "none";
		showHolder.style.display = "inline";
	}
}

/*** ChooseTab ***/
function chooseCurrent( container )
{
	var tabs = eval( container + "_tabs" );
	var currentHidden = findObj( tabs[ 0 ] );

	chooseTab( container, currentHidden.value, 0 );
}

function chooseTab( container, index, oldIndex )
{
	var tabs = eval( container + "_tabs" );
	var currentHidden = findObj( tabs[ 0 ] );
	
    if( oldIndex == null ) oldIndex = currentHidden.value;
    
	var oldTab = tabs[ Number( oldIndex ) + 1 ].split( "|" );
	var newTab = tabs[ Number( index ) + 1 ].split( "|" );

	var makeActive = ( arguments.length > 1 );
	
	if( makeActive )
	{
		var a = findObj( newTab[ 0 ] + "_a_v" );
		var p = findObj( newTab[ 0 ] + "_p_v" );
		var ls_pp = findObj( newTab[ 1 ] + "_pp_v" );
		var ls_ap = findObj( newTab[ 1 ] + "_ap_v" );
		var ls_pa = findObj( newTab[ 1 ] + "_pa_v" );
		var rs_pp = findObj( newTab[ 2 ] + "_pp_v" );
		var rs_ap = findObj( newTab[ 2 ] + "_ap_v" );
		var rs_pa = findObj( newTab[ 2 ] + "_pa_v" );
		var h_a = findObj( newTab[ 4 ] + "_a_v" );
		var h_p = findObj( newTab[ 4 ] + "_p_v" );
		var f_a = findObj( newTab[ 5 ] + "_a_v" );
		var f_p = findObj( newTab[ 5 ] + "_p_v" );
		
		if( a != null ) a.style.display = "block";
		if( p != null ) p.style.display = "none";
		
		if( ls_pp != null )	ls_pp.style.display = "none";
		if( ls_ap != null )	ls_ap.style.display = "none";
		if( ls_pa != null )	ls_pa.style.display = "block";
		if( rs_pp != null )	rs_pp.style.display = "none";
		if( rs_ap != null )	rs_ap.style.display = "block";
		if( rs_pa != null )	rs_pa.style.display = "none";
		if( h_a != null ) h_a.style.display = "block";
		if( h_p != null ) h_p.style.display = "none";
		if( f_a != null ) f_a.style.display = "block";
		if( f_p != null ) f_p.style.display = "none";
	}
		
	if( oldTab[ 0 ] != newTab[ 0 ] )
	{
		a = findObj( oldTab[ 0 ] + "_a_v" );
		p = findObj( oldTab[ 0 ] + "_p_v" );
		ls_pp = findObj( oldTab[ 1 ] + "_pp_v" );
		ls_ap = findObj( oldTab[ 1 ] + "_ap_v" );
		ls_pa = findObj( oldTab[ 1 ] + "_pa_v" );
		rs_pp = findObj( oldTab[ 2 ] + "_pp_v" );
		rs_ap = findObj( oldTab[ 2 ] + "_ap_v" );
		rs_pa = findObj( oldTab[ 2 ] + "_pa_v" );
		h_a = findObj( oldTab[ 4 ] + "_a_v" );
		h_p = findObj( oldTab[ 4 ] + "_p_v" );
		f_a = findObj( oldTab[ 5 ] + "_a_v" );
		f_p = findObj( oldTab[ 5 ] + "_p_v" );
		
		if( a != null ) a.style.display = "none";
		if( p != null ) p.style.display = "block";

		if( oldTab[ 1 ] != newTab[ 1 ] )
		{
			if( ls_pp != null )	ls_pp.style.display = "block";
			if( ls_ap != null )	ls_ap.style.display = "none";
			if( ls_pa != null )	ls_pa.style.display = "none";
		}
		
		if( oldTab[ 2 ] != newTab[ 2 ] )
		{
			if( rs_pp != null )	rs_pp.style.display = "block";
			if( rs_ap != null )	rs_ap.style.display = "none";
			if( rs_pa != null )	rs_pa.style.display = "none";
		}
		
		if( h_a != null ) h_a.style.display = "none";
		if( h_p != null ) h_p.style.display = "block";
		if( f_a != null ) f_a.style.display = "none";
		if( f_p != null ) f_p.style.display = "block";
	}
	
	if( newTab[ 6 ] != null && newTab[ 6 ] != "" )
	{
		changeLayer( newTab[ 6 ], parseInt( newTab[ 3 ] ) );
	}
	
/*	if( newTab[ 3 ] != "" )
	{
		var obj = findObj( newTab[ 3 ] );
		if( obj != null ) obj.style.display = "block";
	}

	if( oldTab[ 3 ] != null && oldTab[ 3 ] != "" && oldTab[ 3 ] != newTab[ 3 ] )
	{
		var obj = findObj( oldTab[ 3 ] );
		if( obj != null ) obj.style.display = "none";
	}*/

	if( makeActive )
	{
		currentHidden.value = index;
		
		var tabsGrp = eval( container + "_grp" );

		for ( i = 0; i < tabsGrp.length ; i++ )
		{
			chooseTab( tabsGrp[ i ] );
		}
	}
	else
	{
		currentHidden.value = -1;
	}
}

/*** Strings ***/
String.prototype.isEmpty = function()
{
  return this.replace( /\s/g, '' ) == '';
}

/*** FindObj ***/
function findObj( id )
{
	if( id == null || id == "" ) return null;
	
	var x;
	if( !( x = document[ id ] ) && document.all ) x = document.all[ id ];
	if( !x && document.getElementById ) x = document.getElementById( id );
	if( !x && !document.all && document.getElementsByName )
	{
		x = document.getElementsByName( id );
		if( x.length == 0 ) return null;
		if( x.length == 1 ) return x[ 0 ];
	}
    
    return x;
}

function findObjByDocument( customDocument, id )
{
	if( customDocument == null || id == null || id == "" ) return null;
	
	var x;
	if( !( x = customDocument[ id ] ) && customDocument.all ) x = customDocument.all[ id ];
	if( !x && customDocument.getElementById ) x = customDocument.getElementById( id );
	if( !x && !customDocument.all && customDocument.getElementsByName )
	{
		x = customDocument.getElementsByName( id );
		if( x.length == 0 ) return null;
		if( x.length == 1 ) return x[ 0 ];
	}
    
    return x;
}

/*** BrowserType ***/
function browserType()
{
	if( document.all ) return "ie4";
	if( document.layers ) return "nn4";
	if( document.getElementById ) return "nn6";
}
