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

Dim strRootName
Dim imageCount
Dim imageWidth
Dim imagesWidth
Dim objPipeEvents
Dim dxEdit
Dim dxs
Dim objCallBack
Dim returnValue
Dim dragging
Dim dragX
Dim dragY
Dim drag_xDown
Dim drag_yDown
Dim drag_lastXOffset
Dim drag_lastYOffset

Function dxInit()
	On Error Resume Next
	Set dxs = DesktopX.ScriptObject("dxScriptor")
	Set dxEdit = DesktopX.ScriptObject("dxEdit_script")
	strRootName = Object.Name
End Function

Function Object_OnLButtonDownEx(obj,x,y)
	strRootName = Object.Name
	Object_OnLButtonDownEx = True
	Exit Function
End Function

Sub Object_OnLButtonUpEx(obj,x,y,dragged)
	strRootName = Object.Name
	Select Case obj.Group
		Case strRootName & "_icons"
			If dragged = "True" then Exit Sub
			Object.Visible = False
			returnValue = obj.Picture
			Object.Comments = obj.Picture
			
	End Select
End Sub

Sub Object_OnDragEx(obj,x,y,newX,newY)
	strRootName = Object.Name
	Select Case obj.Name
		Case strRootName & "_magicScroll"
			obj.Left = obj.Left
			obj.Top = obj.Top
			drag_xOffset = newX - obj.Left
			drag_yOffset = newY - obj.Top
			drag_deltaX = 2*(drag_lastXOffset - drag_xOffset)
			drag_deltaY = 2*(drag_lastYOffset - drag_yOffset)
			scrollAreaXPos = DesktopX.Object(strRootName & "_scrollBack").Left
			newScrollAreaXPos = scrollAreaXPos + drag_deltaX
			If newScrollAreaXPos > 0 then
				newScrollAreaXPos = 0
			End If
			
			If newScrollAreaXPos < -imagesWidth Then
				newScrollAreaXPos = -imagesWidth
			End If
			
			DesktopX.Object(strRootName & "_scrollBack").Left = newScrollAreaXPos
			drag_lastXOffset = drag_xOffset
			drag_lastYOffset = drag_yOffset
		REM Case strRootName & "_scrollBack"
			REM obj.Top = obj.Top
			REM If newX > 0 Then 
				REM newX = 0
				REM obj.Left = newX
				REM Exit Sub
			REM End If
			
			REM rowCount = Round(Object.Height/imageWidth)
			REM columnCount = Round(imageCount/rowCount)-1
			REM If newX <= -imageWidth * columnCount Then
				REM newX = -imageWidth * columnCount
				REM obj.Left = newX
			REM End If
			REM obj.Left = newX
			
		Case Else
			obj.Top = obj.Top
			obj.Left = obj.Left
			
	End Select
	
	Select Case obj.Group
		REM Case strRootName & "_icons"
			REM Set obj2 = DesktopX.Object(strRootName & "_scrollBack")
			REM newX = obj2.Left + newX - obj.Left
			REM Call Object_OnDragEx(obj2,0,0,newX,0)
			
	End Select
End Sub

Sub Object_OnDragFinishEx(obj)
	dragX = 0
	dragY = 0
	drag_xDown = 0
	drag_yDown = 0
	drag_lastXOffset = 0
	drag_lastYOffset = 0
End Sub