function StopPropagation( e )
{
	if( e && e.stopPropagation )
	{
		e.stopPropagation();
	}
	else if ( window.event )
	{
		window.event.cancelBubble = true;
	}
}

function RemoveElement( element )
{
	if( typeof element == "string" ) element = $( element );
	
	element.parentNode.removeChild( element );
}

function OpenWindow( url, title, width, height, features )
{
	var left = ( screen.width - width ) / 2;
	var top  = ( screen.height - height ) / 2 - ( 50 );
	
	features += ( features != '' ) ? ',':'' ;
	features += ',left=' + left + ',top=' + top + ',status=1' ;
	
	return window.open( url, title, features + ( ( features != '' ) ? ',':'' ) + 'width=' + width + ',height=' + height ) ;	
}

// ASP.NET Client Validation
function ValidateEmail( source, args )
{
	args.IsValid = validEmailAddress( args.Value );
}

function validEmailAddress( emailStr )
{
	var emailPat = /^(.+)@(.+)$/;
	var specialChars = "\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
	var validChars = "\[^\\s"+specialChars+"\]";
	var quotedUser = "(\"[^\"]*\")";
	var ipDomainPat = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars+'+';
	var word="("+atom+"|"+quotedUser+")";
	var userPat = new RegExp( "^"+word+"(\\."+word+")*$");
	var domainPat=new RegExp("^"+atom+"(\\."+atom+")*$");
	var matchArray = emailStr.match( emailPat );
	
	if( matchArray == null )
	{
		return false
	}
	
	var user = matchArray[1];
	var domain = matchArray[2];
	if( user.match( userPat ) == null )
	{
		return false
	}
	
	var IPArray = domain.match( ipDomainPat );
	if( IPArray != null )
	{
		for( var i=1; i <= 4; i++ )
		{
			if( IPArray[i] > 255 )
			{
				return false
			}
		}
		return true
	}
	
	var domainArray = domain.match( domainPat );
	if( domainArray == null )
	{
		return false
	}
	
	var atomPat = new RegExp( atom, "g" );
	var domArr = domain.match( atomPat );
	var len = domArr.length;
	if( domArr[domArr.length-1].length < 2 || domArr[domArr.length-1].length > 3 )
	{
		return false
	}
	
	if( len < 2 )
	{
		var errStr = "This address is missing a hostname!";
		return false
	}
	return true;
}

function resetFormFields( container )
{
	var inputs = container.getElementsByTagName( "input" );
	var textareas = container.getElementsByTagName( "textarea" );
	var selects = container.getElementsByTagName( "select" );
	
	for( var i = 0; i < inputs.length; i++ )
	{
		if( inputs[i].getAttribute( "type" ) != "button" && inputs[i].getAttribute( "type" ) != "submit" ) 
			inputs[i].value = "";
	}
	
	for( var i = 0; i < textareas.length; i++ )
		textareas[i].value = "";
	
	for( var i = 0; i < selects.length; i++ )
		selects[i].selectedIndex = -1;
}