function isEmail( email )
	{
	re = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
	return( re.test( email ) );
	}

initTags = function( tag_name, rel_match, f )
	{
	if( !document.getElementsByTagName ) { return; }
	var _tags = document.getElementsByTagName( tag_name );
	for( var i=0; i < _tags.length; i++ )
		{
		var tag = _tags[i];
		var relAttribute = String( tag.getAttribute( 'rel' ) );
		if( relAttribute.toLowerCase().match( rel_match ) )
			{
			f(tag);
			}
		}
	}

eventTags = function( tag_name, rel_match, myevent, f )
	{
	if( !document.getElementsByTagName ) { return; }
	var _tags = document.getElementsByTagName( tag_name );
	for( var i=0; i < _tags.length; i++ )
		{
		var tag = _tags[i];
		var relAttribute = String( tag.getAttribute( 'rel' ) );
		if( relAttribute.toLowerCase().match( rel_match ) )
			{
			Event.observe( tag, myevent, function(e) {Event.stop(e);f(tag);eval('this.on' + myevent + '=function(e){return false;}');return false;}, true );
			}
		}
	}

hideTags = function( tag_name, rel_match )
	{
	if( !document.getElementsByTagName ) { return; }
	var _tags = document.getElementsByTagName( tag_name );
	for( var i=0; i < _tags.length; i++ )
		{
		var tag = _tags[i];
		var relAttribute = String( tag.getAttribute( 'rel' ) );
		if( relAttribute.toLowerCase().match( rel_match ) )
			{
			tag.style.display = "none";
			}
		}
	}

getId = function( tag )
	{
	var rel = tag.getAttribute( 'rel' );
	var idx = rel.split( '-' );
	var id = idx[1];	
	return( id );
	}

removeFieldErrors = function()
	{
	if( !document.getElementsByTagName ) { return; }
	var _tags = document.getElementsByTagName( 'span' );
	for( var i=0; i < _tags.length; i++ )
		{
		var tag = _tags[i];
		var relAttribute = String( tag.getAttribute( 'rel' ) );
		if( relAttribute.toLowerCase().match( 'fielderror' ) )
			{
			new Effect.Fade( tag );
			}
		}
	}

displaySuccess = function( text )
	{
	$('siteMessageContainer').innerHTML = '<p class="success" id="siteMessage">'+text+'</p>';
	$('siteMessage').style.display = "none";
	new Effect.Appear( 'siteMessage' );
	setTimeout( "hideMessage()", 2000 );
	}

hideMessage = function()
	{
	new Effect.Fade( 'siteMessage' );
	}

hideFormMessage = function()
	{
	new Effect.Fade( 'formMessage' );
	}

displayError = function( text )
	{
	$('siteMessageContainer').innerHTML = '<p class="error" id="siteMessage">'+text+'</p>';
	$('siteMessage').style.display = "none";
	new Effect.Appear( 'siteMessage' );
	setTimeout( "hideMessage()", 4000 );
	}

displayLoader = function()
	{
	$('overlay').style.display = "block";
	$('loader').style.display = "block";
	}

hideLoader = function()
	{
	new Effect.Fade( 'loaderWrapper' );
	new Effect.Fade( 'overlay' );
	}

removeTableRow = function( id, message )
	{
    	var line = $( id );
    	var sibling = line.nextSibling;
    	line.parentNode.removeChild( line );
    	while( sibling != null )
    		{
    		if( sibling.getAttribute( 'class' ) == "pair" )
    			Element.removeClassName( sibling, "pair" );
    		else
    			Element.addClassName( sibling, "pair" );
    		sibling = sibling.nextSibling;
    		}
    	if( message != "" )
    			displaySuccess( message );
	}

