'Script Copyright  2012 Ryan Marshall (Skarn)
'All Rights Reserved

'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 Object_OnScriptEnter()
	On Error Resume Next
	Call dxInit()
End Sub

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_OnStateChange(state)
	Object.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
	If blnIn = False then Object.Visible = False
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)
		objTray.Visible = True
		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