var myColors = null;

function Valid_Dates( From_Year, From_Month, From_Day, To_Year, To_Month, To_Day )
{
	var Days = new Array( 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );

	var From_German = From_Day + '.' + From_Month + '.' + From_Year;
	var To_German	 = To_Day + '.' + To_Month + '.' + To_Year

	if( From_Day > Days[ parseInt( From_Month == '08' || From_Month == '09' ? From_Month.substr( 1 ) : From_Month ) ]
		&& !( From_Month == '02' && Is_Leap( From_Year ) && From_Day == 29 ) )
	{
		alert( 'Невірна дата: ' + From_German );
		return false;
	}

	if( To_Day > Days[ parseInt( To_Month  == '08' || To_Month == '09' ? To_Month.substr( 1 ) : To_Month ) ]
		&& !( To_Month == '02' && Is_Leap( To_Year ) && To_Day == 29 ) )
	{
		alert( 'Невірна дата: ' +  To_German );
		return false;
	}

	if( To_Year < From_Year
	|| ( To_Year == From_Year && ( To_Month < From_Month
											|| ( To_Month == From_Month && To_Day < From_Day ) ) ) )
	{
		alert( 'Початкова дата ' + From_German + ' пізніша за кінцеву ' + To_German );
		return false;
	}

	return true;
}

function Is_Leap( Year )
{
	return  Year%4 == 0 && ( Year%100 > 0 || Year%400 == 0 );
}

function Enable_If_Set( Trigger, Target )
{
	var Trigger_On = ( Trigger.options[ Trigger.selectedIndex].value > 0 || Trigger.options[ Trigger.selectedIndex].value == '' && Trigger.options[ Trigger.selectedIndex ].text > 0 );

	if( Trigger_On )
	{
		Target.disabled = false;
	}
	else
	{
		Target.disabled = true;
		Target.value = '';
	}

	return true;
}

function Make_Option_Selected( Select_Control, Selected_Value )
{
	for( var i=0; i<Select_Control.options.length; i++ )
	{
		if( Select_Control.options[ i ].value == Selected_Value )
		{
			Select_Control.options[ i ].selected = true;

			return;
		}
	}
}

function Simple_Options( Start, Stop, Step, Selected )
{
	for( var i=Start; ( Stop < Start && Step < 0 && i >= Stop ) || ( Stop >= Start && Step > 0 && i <= Stop ); i = Math.round( 100*( i + Step ) )/100 )
	{
		document.write( '<option' );

		if( Selected && Selected == i )
		{
			document.write( ' selected' );
		}

		document.writeln( '>' + i);
	}
}

function Fill_Select_From_Array( selectCtrl, itemArray, goodPrompt, badPrompt, defaultItem)
{
	var i, j;
	var prompt;
	// empty existing items

	for (i = selectCtrl.options.length; i >= 0; i--) 
	{
		selectCtrl.options[i] = null; 
	}
	
	prompt = (itemArray != null) ? goodPrompt : badPrompt;
	
/*	if (prompt == null) 
	{
		j = 0;
	}
	else 
	{*/
		selectCtrl.options[0] = new Option(prompt);
		j = 1;
//	}
	
	if (itemArray != null) 
	{
		// add new items
		
		for (i = 0; i < itemArray.length; i++)
		{
			selectCtrl.options[j] = new Option(itemArray[i][0]);
		
			if (itemArray[i][1] != null)
			{
				selectCtrl.options[j].value = itemArray[i][1];
			}
		
			j++;
		}
		// select first item (prompt) for sub list
		selectCtrl.options[0].selected = true;
   }
}

function Just_Options( Options, Selected )
{
	var sel_value = new String( Selected );

	for( var i=0; i< Options.length; i++ )
	{
		document.write( '<option' );

		if( Options[ i ] == sel_value )
		{
			document.write( ' selected' );
		}

		document.writeln( '>'+Options[ i ] );
	}

}

function Valued_Options( Options, Selected )
{
	var sel_value = new String( Selected );

	for( var i=0; i< Options.length; i++ )
	{
		document.write( '<option value="' + i + '"' );

		if( i == sel_value )
		{
			document.write( ' selected' );
		}

		document.writeln( '>'+Options[ i ] );
	}

}

function Select_Options( Values, Texts, selected )
{
	for( var i=0; i<Values.length; i++ )
	{
		document.write( '<option value="'+Values[i]+'"');

		if( Values[i] ==  selected )
		{
		   document.write( ' selected' );
		}

		document.writeln('>'+Texts[i]+'</option>');
	}

}

        
function CompareAndSubmit ( first, second, ErrMessage )
{
  //alert ( "first=" + first + "second=" + second );
 if ( first < second  ) { return true }
  else if ( second == 0 ) return true
  else if ( first == second ) return true
  else { alert ( ErrMessage );return false }
} 

function Field_Not_Less( field, min_value, field_name )
{
	if( field.value < min_value )
	{
		window.alert( field_name + "shouldn't be less then " + min_value );
		field.focus();

		return false;
	}

	return true;
}

function CheckRequired( myform, rqfields, rqmessages )
{
	var i, j;

	// rqfields - list of mandatory fields
	// rqmessages - list of names of fields how they should appear in error message

	for( i=0; i<rqfields.length; i++)
	{
		var field = eval( 'myform.'+rqfields[i] );

		if( field != null )
		{
			if( IsRadio( field ) )
			{
				var IsEmpty = true;

				for( j=0; j<field.length; j++ )
				{
					if( field[ j ].checked && field[ j ].value != "" && field[ j ].value!=0 )
					{
						IsEmpty = false;
						break;
					}
				}

				if( IsEmpty)
				{
					return Empty_Required( field[ 0 ], rqmessages[i] );
				}
			}
			else
			{
				//select
				if( IsSelect( field ) )
				{
					if( NotSelected( field ) )
					{
						return Empty_Required( field, rqmessages[i] );
					}
				}
				else
				{
					if( IsCheckbox( field ) && ! field.checked )
					{
						return Empty_Required( field, rqmessages[i] );
					}

					if( field.value == "" || field.value == 0 )
					{
						// error message - field is empty
						return Empty_Required( field, rqmessages[i] );
					}
				}
			}
		}
	}

	return true;
}

function IsRadio( field )
{
	return field[0] != null && field[0].type == 'radio'
}

function IsSelect( field )
{
	return field.type.substring( 0, 6 ) == 'select';
}

function IsCheckbox( field )
{
	return field.type == "checkbox";
}

function NotSelected( select )
{
	var Ind = select.selectedIndex;

	return !( ( Ind > 0 ) && select.options[ Ind ].value!='0' );
}

function Empty_Required( field, Name )
{
	alert ( Name +' is a required field!' );

	field.focus();

	return false;
}

function ValidEmail( email )
{
	var At_Pos   = email.value.indexOf( '@' );
	var Dot_Pos  = email.value.indexOf( '.' );
	var Last_Dot_Pos = email.value.lastIndexOf( '.' );

	var Length  = email.value.length;

	if( Length == 0 || Length > 5 && At_Pos > 0 && Dot_Pos- At_Pos > 1 && Length - Last_Dot_Pos > 2 && email.value.indexOf( '@', At_Pos + 1 ) < 0 )
	{
		return true;
	}

	window.alert( 'You have entered invalid email!' );

	email.focus();

	return false;
}

function Synchronize_Selects( Target_Select, Source_Select )
{
//   window.alert( Source_Select.value );
//   Target_Select.selectedIndex = Source_Select.selectedIndex;

	for(var i=0; i<Target_Select.options.length; i++)
	{
		if( Target_Select.options[i].value == Source_Select.options[Source_Select.selectedIndex].value )
		{
			Target_Select.options[i].selected = true;
		}
	}
			
	return true;
}

function Compare_Passwd_Pair( Input1, Input2 )
{
   if( Input1.value.length > 0 && Input2.value != Input1.value )
	{
		window.alert( Passwd_Pair_Doesnt_Match );
		Input1.value = '';
		Input2.value = '';

		Input1.focus();
		
	}
		return true;
}
