'need to trigger slide function with an object message.
Dim blnIn		'toggles true or false if tray is in or out
Dim dxEditXML
Dim sliderXML

Sub dxInit()
	strRootName = Object.Name
	Set dxEditXML = DesktopX.ScriptObject("dxEdit_script").dxEditXML
	Set sliderXML = dxEditXML.selectSingleNode("//controls/control[@name = '" & strRootName & "']")
	intState = sliderXML.selectSingleNode("state").text
	If intState = "0" then
		blnIn = False
		Call slideOut("instant")
	Else
		blnIn = True
		Call slideIn("instant")
	End If
	
	Object.Visible = True
	DesktopX.Object(Object.ParentName).Visible = True
End Sub

Function Object_OnStateChangeEx(obj,state)
	'obj.StatePreempt = "default"
	Select Case state
		Case "slideOut_left"
			If blnIn = True Then
				Call slideOut("left")
			End If
		Case "slideOut_right"
			If blnIn = True Then
				Call slideOut("right")
			End If
		Case "slideOut_up"
			If blnIn = True Then
				Call slideOut("up")
			End If
		Case "slideOut_down"
			If blnIn = True Then
				Call slideOut("down")
			End If
		Case "slideIn_left"
			If blnIn = False Then
				Call slideIn("left")
			End If
		Case "slideIn_right"
			If blnIn = False Then
				Call slideIn("right")
			End If
		Case "slideIn_up"
			If blnIn = False Then
				Call slideIn("up")
			End If
		Case "slideIn_down"
			If blnIn = False Then
				Call slideIn("down")
			End If
		Case "slideToggle_left"
			If blnIn = True Then
				Call slideOut("left")
			Else
				Call slideIn("left")
			End If
			
		Case "slideToggle_right"
			If blnIn = True Then
				Call slideOut("right")
			Else
				Call slideIn("right")
			End If
			
		Case "slideToggle_up"
			If blnIn = True Then
				Call slideOut("up")
			Else
				Call slideIn("down")
			End If
			
		Case "slideToggle_down"
			If blnIn = True Then
				Call slideOut("down")
			Else
				Call slideIn("up")
			End If
			
	End Select
End Function

Sub slideOut(strDirection)
	strRootName = Object.Name
	strTrayName = Object.Name 'Object.ParentName 'strRootName & "_tray"
	If DesktopX.IsObject(strTrayName) Then
		Set objTray = DesktopX.Object(strTrayName)
		Select Case strDirection
			Case "left"
				startX = 0
				startY = 0
				For xPos = startX To -objTray.Width Step -1
					objTray.Move xPos,startY
				Next
				
			Case "right"
				startX = 0
				startY = 0
				For xPos = startX To Object.Width Step 1
					objTray.Move xPos,startY
				Next
				
			Case "up"
				startX = 0
				startY = 0
				For yPos = startY To -objTray.Height Step -1
					objTray.Move startX,yPos
				Next
				
			Case "down"
				startX = 0
				startY = 0
				For yPos = startY To Object.Height Step 1
					objTray.Move startX,yPos
				Next
			
			Case "instant"
				objTray.Move -objTray.Width,0
				
		End Select
		sliderXML.selectSingleNode("state").text = "0"
		Call dxEditXML.Save(Object.Directory & "dxEdit.xml")
		
	End If
	blnIn = False
End Sub

Sub slideIn(strDirection)
	strRootName = Object.Name
	strTrayName = Object.Name 'Object.ParentName 'strRootName & "_tray"
	If DesktopX.IsObject(strTrayName) Then
		Set objTray = DesktopX.Object(strTrayName)
		Select Case strDirection
			Case "left"
				For xPos = -objTray.Width To 0 Step 1
					objTray.Move xPos,0
				Next
				
			Case "right"
				For xPos = Object.Width To 0 Step -1
					objTray.Move xPos,0
				Next
				
			Case "down"
				For yPos = -objTray.Height To 0 Step 1
					objTray.Move startX,yPos
				Next
				
			Case "up"
				For yPos = Object.Height To 0 Step -1
					objTray.Move startX,yPos
				Next
			
			Case "instant"
				objTray.Move 0,0
				
		End Select
		sliderXML.selectSingleNode("state").text = "1"
		Call dxEditXML.Save(Object.Directory & "dxEdit.xml")
		
	End If
	blnIn = True
End Sub

Function Object_OnLButtonDownEx(obj,x,y)
	Object_OnLButtonDownEx = True
End Function