dojo.require("dojo.debug.console");
dojo.require("dojo.dnd.*");
dojo.require("dojo.dnd.HtmlDragCopy");
dojo.require("dojo.event.*");
dojo.require("dojo.lfx.*");
dojo.require("dojo.string.common");

function setupDNDReceiverToSelectedFolder(oReceiver) {
	var dt = new dojo.dnd.HtmlDropTarget(oReceiver, ["resource"]);
	var oDragFuncs = { 
		node: oReceiver, 
		onDrop: function(evt) {
			dojo.event.disconnect(this.node, "onmouseout", selectedFolderUnfocus);
			highlightSelectedFolder(this.node);

			var proxy =	evt.dragObject.domNode;
			var groupId = this.node.getAttribute("groupName");
			dojo.debug("saveToSelectedFolder:", proxy["id"], this.node["id"],groupId);
			saveToSelectedFolder(this.node["id"],proxy["id"],groupId);
			var source = evt.dragSource.dragObject;
			var anim = dojo.lfx.fadeHide(proxy, 500, dojo.lfx.easeIn, function(nodes) {
				dojo.lang.forEach(nodes, dojo.dom.removeNode);
			});
			
			dojo.event.connect(anim, "onEnd", this, "onEnd");
			anim.play();
		},
		onDragOver: function(evt) {
				highlightSelectedFolder(this.node);
		},
		onDragOut: function() {
				unhighlightSelectedFolder(this.node);
		},
		onDragMove: function() {
		},		
		onEnd: function() {
			dojo.event.connect(this.node, "onmouseout", selectedFolderUnfocus);
			var folderName = this.node.getAttribute("folderName");
			var folderCount = parseInt(dojo.string.trim(this.node.getAttribute("folderCount"))) + 1;
			this.node.setAttribute("folderCount", folderCount.toString());
			this.node.title = folderName + " (" + folderCount + ")"
			var spans = this.node.getElementsByTagName("span");
			spans[0].innerHTML = this.node.title;
			unhighlightSelectedFolder(this.node);	
		}
	};
	dojo.event.connect(dt, "onDragOver",oDragFuncs, "onDragOver");
	dojo.event.connect(dt, "onDragOut",oDragFuncs, "onDragOut");
	dojo.event.connect(dt, "onDrop",oDragFuncs, "onDrop");
}

function setupDnDToSelectedFolder() {
	var folders = dojo.byId("folders");
	if (folders) {
		var divList = folders.getElementsByTagName("div");
		for (var i = 0; i < divList.length; i++) {
			if (divList[i].className == "folder") {
				setupDNDReceiverToSelectedFolder(divList[i]);
			}
		}
	}
	var resourceBars = dojo.byId("groupwhatsnewarea");
	if (resourceBars) {
		var imgs = resourceBars.getElementsByTagName("img");
		for (var i = 0; i < imgs.length; i++) {
			if( imgs[i].className == "resourceIcon" ) {
				new dojo.dnd.HtmlDragCopySource(imgs[i], "resource", false);
			}
		}
	}
}

function saveToSelectedFolder(folderId,resourceId,groupId) {
	var params = new Array();
 	params["folderId"] = folderId;
 	params["resourceId"] = resourceId;
 	params["groupId"]=groupId;
 	var bindArgs = {
  		url: "AjaxAddToGroupFolder.do",
  		sync:true,
  		error: function(type, data, evt){
			alert("error");
		},
		mimetype: "text/json",
		content: params
 	};
 
 	var req = dojo.io.bind(bindArgs);
 	dojo.event.connect(req, "load", function(type, data, evt) {
		if (data.error) {
			alert(data.error);
		} 	
	});
}

function selectedFolderFocus(evt) {
	var oDiv = dojo.html.getEventTarget(evt);
	highlightSelectedFolder(oDiv);
}

function selectedFolderUnfocus(evt) {
	var oDiv = dojo.html.getEventTarget(evt);
	unhighlightSelectedFolder(oDiv);
}

function highlightSelectedFolder(oDiv) {
	oDiv.style.border = "1px solid #0081CA";
	oDiv.style.opacity=".70";
	oDiv.style.cursor="pointer";
	oDiv.style.filter="alpha(opacity=70)"; // for IE only
}

function unhighlightSelectedFolder(oDiv) {
	oDiv.style.border = "1px solid #E8FAFF";
	oDiv.style.opacity="1";	
	oDiv.style.filter="alpha(opacity=100)";	// for IE only
}

dojo.addOnLoad(function() {
	setupDnDToSelectedFolder();
});