<#
.SYNOPSIS
	Writes text as marquee
.DESCRIPTION
	This PowerShell script writes text as marquee.
.PARAMETER text
	Specifies the text to write
.PARAMETER speed
	Specifies the marquee speed (60 ms per default)
.EXAMPLE
	PS> ./write-marquee "Hello World"
.LINK
	https://github.com/fleschutz/PowerShell
.NOTES
	Author: Markus Fleschutz | License: CC0
#>

param([string]$text = "PowerShell is powerful! PowerShell is cross-platform! PowerShell is open-source! PowerShell is easy to learn! Powershell is fully documented", [int]$speed = 60) # 60 ms pause

function StartMarquee { param([string]$text)
	$Length = $text.Length
	$Start = 1
	$End = ($Length - 80)

	clear-host
	write-output ""
	write-output "------------------------------------------------------------------------------------"
	$StartPosition = $HOST.UI.RawUI.CursorPosition
	$StartPosition.X = 2
	write-output "|                                                                                  |"
	write-output "------------------------------------------------------------------------------------"

	foreach ($Pos in $Start .. $End) {
		$HOST.UI.RawUI.CursorPosition = $StartPosition
		$TextToDisplay = $text.Substring($Pos, 80)
		write-host -nonewline $TextToDisplay
		start-sleep -milliseconds $speed
	}
	write-output ""
	write-output ""
	write-output ""
}

StartMarquee "                                                                                    +++ $text +++ $text +++ $text +++ $text +++ $text +++ $text +++ $text +++ $text +++ $text +++ $text +++ $text +++ $text +++                                                                                         "
exit 0 # success