﻿// obj tulajdonsaga kell legyen:
// - GetDiv () 


// az arrayben minden dragolhato


function CDragAndDrop ()
{
	this.objArray = null;
	this.parentDiv = null;

	var me = this;

	this.OnError = function(exp, strSource) {};


	dragsort = ToolMan.dragsort()
	junkdrawer = ToolMan.junkdrawer()



	this.SetArray = function (objArray)
	{
		me.objArray = objArray;

		if (objArray.length > 0)
		{
			var i = 0;

			// parentDiv beállitasa
			while ((objArray[i]==null) && (i < objArray.length))
			{
				i++;
			}

			if (i < objArray.length)
			{
				me.parentDiv = objArray[i].GetDiv().parentNode;
				var inputArray = new Array();

				var j;

				for (j = i; j < objArray.length; j++)
				{
					if (objArray[j] != null)
					{
						var actDiv = objArray[j].GetDiv();
						inputArray.push(actDiv);
					}
				}
				dragsort.makeListSortable(inputArray, verticalOnly, saveOrder, myOnDragEnd, myOnDragStart);
			}
		}
	}

	this.OnDragStart = function()
	{
	}

	this.OnArrayChanged = function ()
	{
		//alert ('Vegeee');
		//alert (me.objArray[0].GetAddress().strAddress);
	}

	this.GetArray = function ()
	{
		var array = junkdrawer.inspectListOrder2(me.parentDiv, me.objArray);
		return array;
	}

	// ============================================================

	function verticalOnly(item) {
		item.toolManDragGroup.verticalOnly()
	}

	function saveOrder(item) {
		var group = item.toolManDragGroup
		var list = group.element.parentNode
		var id = list.getAttribute("id")
		if (id == null) return
		group.register('dragend', function() {
			ToolMan.cookies().set("list-" + id, 
					junkdrawer.serializeList(list), 365)
		})
	}

	function myOnDragStart (item) {
		var group = item.toolManDragGroup;
		group.register('dragstart', function() {
			if(me.OnDragStart)
			{
				try {
					me.OnDragStart();
				}
				catch (exp) {
					if(me.OnError)
						me.OnError(exp, 'CDragAndDrop.OnDragStart');
				}
			}
		});
	}

	function myOnDragEnd (item) {
		var group = item.toolManDragGroup
		group.register('dragend', function() {

			var i;
			var newArray = me.GetArray ();
			for (i = 0; i < newArray.length; i++)
					me.objArray [i] = newArray [i];

			me.OnArrayChanged();
		})
	}
}

