	function fn_popup_and_redirect_GET( x_target_link ) {
		
		/* Calculate popup dimensions and location */
		x_height = ( self.screen.height * 0.618 );
		x_width = ( self.screen.width * 0.618 );
		x_top = ( self.screen.height - x_height ) / 3;
		x_top = ( x_top < 0 ) ? 0 : x_top;
		x_left = ( self.screen.width - x_width ) / 2;
		x_left = ( x_left < 0 ) ? 0 : x_left;
		
		/* Open popup */
		var x_window = window.open( x_target_link, '_blank', 'top=' + x_top + ', left=' + x_left + ', height=' + x_height + ', width=' + x_width + ', resizable=yes, scrollbars=yes' );
		
	}
	
	/* Hide element */
	function fn_hide( x_element_id ) {
		if( document.getElementById ) {
			var x = document.getElementById( x_element_id );
			if( x && x.style ) {
				x.style.visibility = 'hidden';
			}
		}
	}

	/* Remove element from layout */
	function fn_remove( x_element_id ) {
		if( document.getElementById ) {
			var x = document.getElementById( x_element_id );
			if( x && x.style ) {
				x.style.display = 'none';
			}
		}
	}

	/* Return random number from min (inclusive) to max (inclusive) */
	function fn_random( x_min, x_max ) {
		return ( Math.floor( Math.random() * ( x_max - x_min ) ) + x_min );
	}


/********** Flash **********/

	/* Check for required version of Flash plugin */
	function fn_has_flash( x_required_version ) {

		/* Check for mime types array... look for Flash mime type... identify associated plugin... check for required version */
		if( navigator.mimeTypes && navigator.mimeTypes.length && navigator.mimeTypes['application/x-shockwave-flash'] && navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin && navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin.description ) {
			return ( parseInt( navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin.description.split(' ')[2].split('.')[0] ) >= x_required_version );
		}

		/* Check for required version of Flash plugin on Internet Explorer */
		if( typeof fn_internet_explorer_has_flash == 'function' ) {
			return fn_internet_explorer_has_flash( x_required_version );
		}

		/* Required version of Flash plugin not found... */
		return false;

	}

	/* Embed Flash content */
	function fn_flash( x_required_version, x_upgrade, x_spec, x_alternate_content_id ) {

		/* Check for required version of Flash plugin */
		x_has_flash = fn_has_flash( x_required_version );

		/* If required version of Flash plugin is found or upgrade is requested... */
		if( x_has_flash || x_upgrade ) {

			/* Build a string containing the necessary html for embedding the Flash content...

				<div style="width: 330px; height: 220px;">
					<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" id="movie" width="330" height="220">
						<param name="movie" value="movie.swf">
						<embed type="application/x-shockwave-flash" src="movie.swf" name="movie" width="330" height="220"></embed>
					</object>
				</div>

			*/

			var x_div_str = '';
			var x_object_str = '';
			var x_param_str = '';
			var x_embed_str = '';

			x_div_str += '<div style="';
			x_object_str += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" ';
			x_param_str += '';
			x_embed_str += '<embed type="application/x-shockwave-flash" ';

			if( x_upgrade ) {
				x_div_str += '';
				x_object_str += 'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=' + x_required_version + ',0,0,0" ';
				x_param_str += '';
				x_embed_str += 'pluginspage="http://www.macromedia.com/go/getflashplayer" ';
			}

			var x_spec_array = x_spec.split(',');
			for ( var i=0; i<x_spec_array.length; i++ ) {
				var x_spec_item = x_spec_array[i].split('=');
				switch ( x_spec_item[0] ) {
					case 'src':
						x_div_str += '';
						x_object_str += '';
						x_param_str += '<param name="movie" value="' + x_spec_item[1] + '" />';
						x_embed_str += 'src="' + x_spec_item[1] + '" ';
						break;
					case 'id':
						x_div_str += '';
						x_object_str += 'id="' + x_spec_item[1] + '" name="' + x_spec_item[1] + '" ';
						x_param_str += '';
						x_embed_str += 'id="' + x_spec_item[1] + '" name="' + x_spec_item[1] + '" ';
						break;
					case 'width':
					case 'height':
						x_div_str += x_spec_item[0] + ': ' + x_spec_item[1] + 'px; ';
						x_object_str += x_spec_item[0] + '="' + x_spec_item[1] + '" ';
						x_param_str += '';
						x_embed_str += x_spec_item[0] + '="' + x_spec_item[1] + '" ';
						break;
					default:
						x_div_str += '';
						x_object_str += '';
						x_param_str += '<param name="' + x_spec_item[0] + '" value="' + x_spec_item[1] + '" />';
						x_embed_str += x_spec_item[0] + '="' + x_spec_item[1] + '" ';
						break;
				}
			}

			x_div_str += '">';
			x_object_str += '>';
			x_param_str += '';
			x_embed_str += '>';

			/* Embed Flash content */
			/* alert( x_div_str + x_object_str + x_param_str + x_embed_str + '</embed></object></div>' ); */
			document.write( x_div_str + x_object_str + x_param_str + x_embed_str + '</embed></object></div>' );

			/* Hide alternate content */
			if( x_has_flash ) {
				fn_remove( x_alternate_content_id );
			}

		}
	}

	function fn_play( x_id ) {
		( window[x_id] || window.document[x_id] ).Play();
	}

	function fn_stop( x_id ) {
		( window[x_id] || window.document[x_id] ).StopPlay();
	}

	function fn_rewind( x_id ) {
		( window[x_id] || window.document[x_id] ).Rewind();
	}

/********** Banner Image **********/

	function rotate_banner() {
		var x_next_array_index;

		/* Select random banner */
		do {
			x_next_array_index = fn_random( 0, x_banner.array.length );
		} while( x_next_array_index == x_banner.current_array_index );

		/* Set current array index */
		x_banner.current_array_index = x_next_array_index;

		/* If filters are available... and Fade is active... freeze filter */
		if( x_banner.img.filters && x_banner.img.filters['DXImageTransform.Microsoft.Fade'] ) {
			x_banner.img.filters['DXImageTransform.Microsoft.Fade'].Apply();
		}

		/* Display selected banner */
		x_banner.img.src = x_banner.array[x_banner.current_array_index].src;

		/* If filters are available... play filters */
		if( x_banner.img.filters && x_banner.img.filters['DXImageTransform.Microsoft.Fade'] ) {
			x_banner.img.filters['DXImageTransform.Microsoft.Fade'].Play();
		}

	}


/********** Init **********/

	var x_banner = new Object();

	function fn_init() {
		if( document.getElementById && window.setInterval ) {

			/* Get image placeholder */
			x_banner.img = document.getElementById('banner');

			/* Set default current array index */
			x_banner.current_array_index = 0;

			/* Create array to hold banner images */
			x_banner.array = new Array();

			/* Pre-load banner images */
			for( var i=0; i<4; i++ ) {
				x_banner.array[i] = new Image();
				x_banner.array[i].src = 'style/banner_' + i + '.jpg';

				/* Set current array index */
				if( x_banner.array[i].src == x_banner.img.src ) {
					x_banner.current_array_index = i;
				}
			}

			/* If filters are available... enable filters */
			if( x_banner.img.filters ) {
				x_banner.img.runtimeStyle.filter = 'progid:DXImageTransform.Microsoft.Fade(duration=1.400)';
			}

			/* Rotate banner every 3.200 seconds */
			window.setInterval('rotate_banner()', 3200);

		}
	}
