var docwin = null;
var websolnwin = null;

function self_open (url, name, param) {
        document.forms[0].tab.value = param;
        document.forms[0].action=url;
        document.forms[0].submit();
}

function general_self_open (url, name, param) {
        parent.frames[0].document.forms[0].tab.value = param;
        parent.frames[0].document.forms[0].action=url;
        parent.frames[0].document.forms[0].submit();
}

function gen_new_win(url, name, param) 
{
	var nwin;

	nwin = self.open(url, name, param);
		
	nwin.focus();
}

function new_win( url, name, param )
{

	var new_param = "resizable=yes,menubar=yes,width=600,height=400,scrollbars=yes,status,left=0,toolbar=yes";

	var pattern = /http:\/\/hosting\.standardandpoors\.com/i;
	// This is because of a security problem JavaScript_extractBranch was erroring out
	// because I was not allow to get any info of the window
	if ( pattern.test( url ) ) 
	{
		websolnwin = self.open( url, 'midocviewer', new_param );
		websolnwin.focus();
	}
	else
	{
		websolnwin = null;
		// The help on the left side of screen will open in the docviewer if we don't trap it.
		if (name != 'help') name = 'midocviewer';
        	docwin = self.open( url, name, new_param );
        	docwin.focus();
	}
}

function parent_win( src, tab )
{
	if ( tab )
	{
		Session_remember( tab );
	}
	var url = "http://" + location.host + src
	if( opener == null )
	{
		location.href = url;
	}
	else
	{
        	opener.location.href = url;
	}
        focus();
}

function JavaScript_join( array, separator )
{
	return array.join( separator );
}

function JavaScript_split( string, separator )
{
	return string.split( separator );
}

function JavaScript_grep( array, string )
{
	for( var i = 0; i < array.length; i++ )
	{
		if( string == array[ i ] ) return true;
	}
	
	return false;
}

function JavaScript_replace( string, find, replace )
{
	var from = string.indexOf( find );

	if( from >= 0 )
	{
		var beg = string.substring( 0, from );
		var end = string.substring( from + find.length );

		return beg + replace + end;
	}
}

function JavaScript_chomp( string )
{
	var beg = 0;
	while( string.charAt( beg ) == " " ) beg++;

	var end = string.indexOf( " ", beg );
	if( end != -1 ) string = string.substring( 0, end );

	beg = string.lastIndexOf( " " );
	if( beg != -1 ) string = string.substring( beg + 1 );

	return string;
}

function JavaScript_toGMTString( date )
{
	// Solves problem with Netscape 4.04 & 4.05 (or any browser)
	// calculating GMT incorrectly with daylight savings time

	var gmt = new Date( date.toGMTString( ) ); 
	var safe = new Date( 2 * date.getTime( ) - gmt.getTime( ) ); 

	return safe.toGMTString( );
}

function JavaScript_nextYear( date )
{
	if( arguments.length < 1 ) date = new Date;
	var year = date.getYear( );

	// See "Date" in JavaScript manual for explanation...
	if( year < 1000 ) year += 1900;
	date.setYear( year + 1 );
	
	return JavaScript_toGMTString( date );
}

function JavaScript_getCookie( name )
{
	var value = "";
	var cookie = document.cookie;
	var pos = cookie.indexOf( name );
	
	if( pos != -1 )
	{
		var beg = pos + name.length + 1;
		var end = cookie.indexOf( ";", beg );
		if( end == -1 ) end = cookie.length;
	
		value = unescape( cookie.substring( beg, end ) );
	}
	
	return value;
}

function JavaScript_extractTree( )
{
	var tree = '';
	if ( document.forms[0] )
	{
		if ( document.forms[0].tree )
		{
			if ( document.forms[0].tree.type == 'select-one' )
			{
				var index = document.forms[0].tree.selectedIndex;
				tree = document.forms[0].tree.options[ index ].value;
			}
			else if ( document.forms[0].tree.type == 'text' )
			{
				tree = document.forms[0].tree.value;
			}
		}
	}

	return tree;
}

function JavaScript_extractRegnbr( regnbr )
{
	var regnbr = '';
	if ( document.forms[0] )
	{
		if ( document.forms[0].regnbr )
		{
			var index = document.forms[0].regnbr.selectedIndex;
			regnbr = document.forms[0].regnbr.options[ index ].value;
		}
	}
	return regnbr;
}

function oldJavaScript_extractRegnbr( regnbr )
{
	var memory;
	
	if( regnbr && regnbr.search )
	{
		var beg = regnbr.search.indexOf( "regnbr=" ) + 7;
		if( beg >= 7 )
		{
			var end = regnbr.search.indexOf( "&", beg );
			if( end < 0 )
				memory = regnbr.search.substring( beg );
			else
				memory = regnbr.search.substring( beg, end );
		}
		else
		{
			memory = '';
		}
	}
	else
	{
		memory = '';
	}
	return memory;
}

function JavaScript_extractBranch( thedocviewer )
{
	var memory;
	
	var branch = null;

	//if ( websolnwin )
	//{
	//	websolnwin.close();
	//	websolnwin = null;
	//}
	// else 
	if ( thedocviewer )
	{
		if ( !thedocviewer.closed )
		{
			branch = thedocviewer.location;
		}
	}

	if( branch && branch.search )
	{
		beg = branch.search.indexOf( "keyval=" ) + 7;
		if( beg >= 7 )
		{
			var end = branch.search.indexOf( "&", beg );
			if( end < 0 )
				memory = branch.search.substring( beg );
			else
				memory = branch.search.substring( beg, end );

			beg = branch.search.indexOf( "doctype=" ) + 8;
			if( beg >= 8 )
			{
				var end = branch.search.indexOf( "&", beg );
				if( end < 0 )
					memory += "." + branch.search.substring( beg );
				else
					memory += "." + branch.search.substring( beg, end );

				beg = branch.search.indexOf( "date=" ) + 5;
				if( beg >= 5 )
				{
					end = branch.search.indexOf( "&", beg );
					if( end < 0 )
						memory += "." + branch.search.substring( beg );
					else
						memory += "." + branch.search.substring( beg, end );
				}
				else memory += ".current";

				beg = branch.search.indexOf( "docformat=" ) + 10;
				if( beg >= 10 )
				{
					end = branch.search.indexOf( "&", beg );
					if( end < 0 )
						memory += "." + branch.search.substring( beg );
					else
						memory += "." + branch.search.substring( beg, end );
				}
			}
		}
	}
	else
	{
		memory = '';
	}
	
	return memory;
}


function JavaScript_validString( str )
{
        for( var i=0; i<str.length; i++ )
        {
                if( str.charAt( i ) >= '0' && str.charAt( i ) <= '9' ||
                    str.charAt( i ) >= 'A' && str.charAt( i ) <= 'Z' ||
                    str.charAt( i ) >= 'a' && str.charAt( i ) <= 'z' ||
                    str.charAt( i ) == '-' || str.charAt( i ) == '@' ||
                    str.charAt( i ) == '.' || str.charAt( i ) == '_' || str.charAt( i ) == '+' )
                {
                }
                else
                {
                        alert( 'String must contain characters -, _, @, ., +, 0-9, A-Z or a-z and may NOT contain a space' );
                        return false;
                }
        }
        return true;
}
