	/*//---------------------------------------------*/
	/*// Name: Site - Global Scripts				 */
	/*// Language: JavaScript						 */
	/*//---------------------------------------------*/


	/*//---------------------------------------------*/
	/*// Name: InitializeGlobal()					 */
	/*// Desc: Entry Point for Onload Event			 */
	/*//---------------------------------------------*/
	function InitializeGlobal()
	{
		if ( ( InitializeGlobal.arguments ) && ( InitializeGlobal.arguments.length == 2 ) )
		{
			secureSiteRoot = InitializeGlobal.arguments[0]+"/";
			resourceRoot += InitializeGlobal.arguments[1]+"/";
		}

		if ( typeof( InitializeSite ) == "function" )
			InitializeSite();

		SetExternalLinkTargets();
		PreloadRollOverImages();

		if ( typeof( InitializeLocal ) == "function" )
			InitializeLocal();
	}


	/*//---------------------------------------------*/
	/*//////////////////////////////////////////////////////////////*/
	/*//---------------------------------------------*/


	/*//---------------------------------------------*/
	/*// Name: PreloadRollOverImages()				 */
	/*// Desc: Image Preload Function				 */
	/*//---------------------------------------------*/
	function PreloadRollOverImages()
	{
		if ( !document.getElementsByTagName )
			return;

		var pRegexClassName = new RegExp( ".*imgRollOver-([^\\s]*).*", "i" );
		var pRegexSelector = new RegExp( "a\.imgRollOver-(.*):hover", "i" );
		var pRegexBackground = new RegExp( "url\\((.*)\\)", "i" );

		var theRules = new Array();
		if (document.styleSheets[1].cssRules)
			theRules = document.styleSheets[1].cssRules;
		else if (document.styleSheets[1].rules)
			theRules = document.styleSheets[1].rules;

		var pDocument = document;
		if( pDocument.images )
		{
			if( !pDocument.MM_p )
				pDocument.MM_p = new Array();

			var j = pDocument.MM_p.length;
			var anchors = pDocument.getElementsByTagName( "a" );
			for ( var i=0; i<anchors.length; i++ )
			{
				var anchor = anchors[i];
				if ( ( anchor.getAttribute( "href" ) ) && ( anchor.className ) )
				{
					var pResultClassName = pRegexClassName.exec( anchor.className );
					if ( pResultClassName != null )
					{
						var imageHoverHref = "";
						for ( var x=0; x<theRules.length; x++ )
						{
							var pResultSelector = pRegexSelector.exec( theRules[x].selectorText );
							if ( pResultSelector != null )
							{
								if ( pResultSelector[1] == pResultClassName[1] )
								{
									var pResultUrl = pRegexBackground.exec( theRules[x].style.background );
									if ( pResultUrl != null )
									{
										imageHoverHref = pResultUrl[1];
										break;
									}
								}
							}
						}
						if ( imageHoverHref == "" )
							continue;

						pDocument.MM_p[j] = new Image;
						pDocument.MM_p[j++].src = siteRoot+resourceRoot+imageHoverHref;
						//alert( pDocument.MM_p[j-1].src );
					}
				}
			}
		}
	}

	/*//---------------------------------------------*/
	/*// Name: SetExternalLinkTargets()				 */
	/*// Desc: Modify External Links for Standards	 */
	/*//---------------------------------------------*/
	function SetExternalLinkTargets()
	{
		if ( !document.getElementsByTagName )
			return;

		var anchors = document.getElementsByTagName( "a" );
		for ( var i=0;i<anchors.length;i++ )
		{
			var anchor = anchors[i];
			if ( ( anchor.getAttribute( "href" ) ) && ( anchor.getAttribute( "rel" ) == "newWindow" ) )
				anchor.target = "_blank";
		}
	}

	/*//---------------------------------------------*/
	/*// Name: OpenWindow()							 */
	/*// Desc: Display Sized Popup					 */
	/*//---------------------------------------------*/
	function OpenWindow ( cAddress, pTargetWnd, cTargetId, iWinWidth, iWinHeight, bBuffered, bDisplayScrollBars )
	{
		var iBufferSize = ( bBuffered ) ? 15 : 0;
			pTargetWnd = window.open( cAddress,cTargetId,'toolbar=0,location=0,directories=0,scrollbars=' + ( ( bDisplayScrollBars ) ? '1' : '0' ) + ',status=0,resizable=0,width=' + ( iWinWidth + iBufferSize ) + ',height=' + ( iWinHeight + iBufferSize ) );
			pTargetWnd.focus();
			return;
	}

	/*//---------------------------------------------*/
	/*// Name: GetDataValue()						 */
	/*// Desc: Retrieves Form Data					 */
	/*//---------------------------------------------*/
	function GetDataValue( objectName )
	{
		var dataObject = document.getElementById( objectName );
		if ( dataObject == null )
			return null;

		var dataValue = '';
		switch ( dataObject.nodeName.toLowerCase() )
		{
			case "select":
				if ( dataObject.selectedIndex == -1 )
				{
					dataValue = '';
					break;
				}

				dataValue = dataObject.options[ dataObject.selectedIndex ].value;
				break;
			case "div":
				var checkInput = dataObject.firstChild;
				while ( checkInput != null )
				{
					if ( checkInput.nodeName.toLowerCase() == "input" )
					{
						if ( checkInput.checked )
						{
							dataValue = checkInput.value;
							break;
						}
					}
					checkInput = checkInput.nextSibling;
				}
				break;
			default:
				dataValue = ( dataObject.type == "checkbox" ) ? dataObject.checked : dataObject.value;
				break;
		}

		return dataValue;
	}

	/*//---------------------------------------------*/
	/*// Name: ValidateFormData()					 */
	/*// Desc: Validates Form Data					 */
	/*//---------------------------------------------*/
	function ValidateFormData()
	{
		if ( ( ValidateFormData.arguments == null ) || ( ValidateFormData.arguments.length % 2 ) )
			return false;

		var checkScan = new RegExp( "([^(]*)(\\(([^,]+),([^)]+)\\))?", "i" );
		var checkLabelScan = new RegExp( "(.*)-([^\\d]+)(\\d+)?", "i" );
		var checkSucceeded = true;
		var errorString = "the following errors have occurred:\r\n";
		var additionalConjunction = ", ";
		var finalConjunction = ", and ";

		for ( var i = 0;i < ValidateFormData.arguments.length - 1;i += 2 )
		{
			var dataObject = document.getElementById( ValidateFormData.arguments[i] );
			if ( dataObject == null )
				continue;

			var dataObjectLabel = ValidateFormData.arguments[i];
			if ( document.getElementById( ValidateFormData.arguments[i]+"-label" ) != null )
			{
				dataObjectLabel = document.getElementById( ValidateFormData.arguments[i]+"-label" ).innerHTML;
			}
			else
			{
				var labelResult = checkLabelScan.exec( dataObjectLabel );
				if ( labelResult != null )
				{
					if ( document.getElementById( labelResult[1]+"-label" ) != null )
					{
						labelResult[3] += '';
						if ( ( labelResult[3] == null ) || ( labelResult[3] == '' ) || ( labelResult[3] == 'undefined' ) )
							dataObjectLabel = document.getElementById( labelResult[1]+"-label" ).innerHTML + " (" + labelResult[2] + ")";
						else
							dataObjectLabel = document.getElementById( labelResult[1]+"-label" ).innerHTML + " (" + labelResult[2] + " " + labelResult[3] + ")";
					}
				}
			}

			var dataValue = GetDataValue( ValidateFormData.arguments[i] );
			if ( ( ValidateFormData.arguments[i+1].search( /optional/i ) != -1 ) && ( dataValue == '' ) )
				continue;

			var checkList = ValidateFormData.arguments[i+1].split( ";" );
			var errorSet = "";
			var currentError = "";
			var conjunction = "";
			var currentSucceeded = true;
			for ( var j = 0;j < checkList.length;j++ )
			{
				var checkResult = checkScan.exec( checkList[j] );
				if ( checkResult != null )
				{
					var errorMessage = "";
					switch( checkResult[1] )
					{
						case "required":
						{
							if ( !dataValue )
								errorMessage = "is a required field";
							break;
						}

						case "length":
						{
							var min = checkResult[3]*1;
							var max = checkResult[4]*1;

							if ( ( min == max ) && ( dataValue.length != max ) )
								errorMessage = "must be "+max+" characters";
							else if ( ( dataValue.length < min ) || ( dataValue.length > max ) )
								errorMessage = "must be between "+min+" and "+max+" characters";
							break;
						}

						case "value":
						{
							var min = checkResult[3]*1;
							var max = checkResult[4]*1;
							var check = dataValue*1;

							if ( ( min == max ) && ( check != max ) )
								errorMessage = "must be "+max;
							else if ( ( check < min ) || ( check > max ) )
								errorMessage = "must be between "+min+" and "+max;
							break;
						}

						case "pattern":
						{
							var patternScan = new RegExp( document.getElementById( ValidateFormData.arguments[i]+"-dataPattern" ).innerHTML, "i" );
							var patternResult = patternScan.exec( dataValue );
							if ( patternResult == null )
								errorMessage = "is not in a valid format";
							break;
						}

					}

					if ( errorMessage != "" )
					{
						if ( currentError != "" )
						{
							errorSet += conjunction + currentError;
							conjunction = additionalConjunction;
						}
						currentError = errorMessage;
						checkSucceeded = currentSucceeded = false;
					}

					if ( ( checkResult[1] == "required" ) && ( !currentSucceeded ) )
						break;
				}
			}

			if ( errorSet != "" )
				conjunction = finalConjunction;

			if ( currentError != "" )
				errorSet += conjunction + currentError;

			if ( !currentSucceeded )
				errorString += "- "+dataObjectLabel+" " + errorSet + ".\r\n";

		}

		if ( !checkSucceeded )
			alert( errorString );

		return checkSucceeded;
	}

	/*//---------------------------------------------*/
	/*//////////////////////////////////////////////////////////////*/
	/*//---------------------------------------------*/


	/*//---------------------------------------------*/
	/*// Name: MM_findObj()							 */
	/*// Desc: Macromedia Object Locator Function	 */
	/*//---------------------------------------------*/
	function MM_findObj(n, d) { //v4.01
		var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
		d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
		if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
		for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
		if(!x && d.getElementById) x=d.getElementById(n); return x;
	}

	/*//---------------------------------------------*/
	/*// Name: MM_validateForm()					 */
	/*// Desc: Macromedia Form Validation Function	 */
	/*//---------------------------------------------*/
	function MM_validateForm() { //v4.0
		var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
		for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
		if (val) { nm=val.name; if ((val=val.value)!="") {
			if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
			if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
			} else if (test!='R') { num = parseFloat(val);
			if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
			if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
				min=test.substring(8,p); max=test.substring(p+1);
				if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
		} } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
		} if (errors) alert('The following error(s) occurred:\n'+errors);
		document.MM_returnValue = (errors == '');
	}

function returnObjById( id )
{
	if (document.getElementById)
		var returnVar = document.getElementById(id);
	else if (document.all)
		var returnVar = document.all[id];
	else if (document.layers)
		var returnVar = document.layers[id];
	return returnVar;
}
