function phoneKeyDown( e, id, len )
{
	var rval = true;
	var el = document.getElementById(id);
	if( e.keyCode == 9 && !e.shiftKey && el.value.length < len )
	{
		rval = false;
		if( e.preventDefault )
		{
			e.preventDefault();
		}
		else
		{
			e.returnValue = false;
		}
	}
	return rval;
}

function phoneKeyUp( e, id, n )
{
	var cur = document.getElementById( id );
	if( e.keyCode > 47 && e.keyCode < 58 )
	{
		if( cur.value.length == 3 )
		{
			var next = document.getElementById( n );
			next.focus();
			next.select();
		}
	}
}

function monthChange(id)
{
	var oldIndex;
	var days = 31;
	var m = document.getElementById(id+'Month').value;
	switch(m)
	{
		case '9':
		case '4':
		case '6':
		case '11':
			days = 30;
			break;
		case '2':
			days = 29;
	}
	
	if( days == 29 )
	{
		y = document.getElementById(id+'Year').value;
		if( ( y % 4 ) || ( !( y % 100 ) && ( y % 400 ) ) )
			days = 28;
	}

	d = document.getElementById(id+'Day');
	if( d.length != days + 1 )
	{
		if( d.selectedIndex > days )
		{
			oldIndex = days;
		}
		else
		{
			oldIndex = d.selectedIndex;
		}
		
		for( var i = 31; i > days; --i )
		{
			if( d.options[i] )
			{
				d.removeChild( d.options[i] );
			}
		}
		
		var newNode;
		for( var i = 29; i <= days; ++i )
		{
			if( !d.options[i] )
			{
				newNode = document.createElement('option');
				newNode.innerHTML = i;
				newNode.value = i;
				d.appendChild( newNode );
			}
		}
		
		d.selectedIndex = oldIndex;
	}
}

function yearChange(id)
{
	var oldIndex;
	var days = 29;
	var m = document.getElementById(id+'Month').value;
	if( m == 2 )
	{
		y = document.getElementById(id+'Year').value;
		if( ( y % 4 ) || ( !( y % 100 ) && ( y % 400 ) ) )
			days = 28;

		d = document.getElementById(id+'Day');
		if( d.length != days + 1 )
		{
			if( d.selectedIndex > days )
			{
				oldIndex = days;
			}
			else
			{
				oldIndex = d.selectedIndex;
			}
			
			for( var i = 31; i > days; --i )
			{
				if( d.options[i] )
				{
					d.removeChild( d.options[i] );
				}
			}
			
			var newNode;
			for( var i = 29; i <= days; ++i )
			{
				if( !d.options[i] )
				{
					newNode = document.createElement('option');
					newNode.innerHTML = i;
					newNode.value = i;
					d.appendChild( newNode );
				}
			}
			
			d.selectedIndex = oldIndex;
		}
	}
}

function forceDigit( e )
{
	rval = true;
	if( e.keyCode == 32 ||
		( e.keyCode > 57 && e.keyCode < 91 ) ||
		( e.keyCode > 105 && e.keyCode < 112 ) ||
		( e.keyCode > 185 && e.keyCode < 193 ) ||
		( e.keyCode > 218 && e.keyCode < 223 ) ||
		( e.shiftKey && e.keyCode > 47 && e.keyCode < 58 ) )
	{
		rval = false;
		if( e.preventDefault )
		{
			e.preventDefault();
		}
		else
		{
			e.returnValue = false;
		}
	}
	return rval;
}

function reg( func, ev, el )
{
	if( el.addEventListener )
		el.addEventListener( ev, func, false );
	else
		el.attachEvent( 'on' + ev, func );
}