dojo.require("dojo.event.*");
dojo.require("dojo.io.*");

var calendarDialog;
var folderDialog;
var calendarForm;
var folderForm;
var datePicker;
var folderContainer;

dojo.addOnLoad(function() {
	calendarDialog = dojo.widget.byId("calendarDialog");
	folderDialog = dojo.widget.byId("folderDialog");
	folderContainer = dojo.byId("folderContainer");	
	datePicker = dojo.widget.byId("datePicker");	
	dojo.event.connect(datePicker, 'onValueChanged', calendarSetDate);
	calendarForm = dojo.byId("calendarform");
	folderForm = dojo.byId("folderform");			
});

function showCalendar(resourceId, notLogged) {
	if (notLogged) {
		gotoLogin(resourceId,'C');
	} else{
		calendarForm.resourceId.value = resourceId;
		calendarSetDate(new Date());
		calendarDialog.show();
	}
}

function calendarSetDate(/*Date*/ d) {
	calendarForm.year.value = d.getFullYear();
	calendarForm.month.value = d.getMonth();
	calendarForm.day.value = d.getDate();	
}

function schedule() {
	dojo.io.bind({
    	url: "/AjaxScheduleResource.do",
    	sync: true,
    	load: function(type, reply, evt) {
			calendarDialog.hide();
			if (reply.response) {
				showStatusMsg(reply.response, 'green');
			}
			if (reply.error) {
				showStatusMsg(reply.error, 'red');
			}
    	},
    	error: function(type, errObj) {
			calendarDialog.hide();    		
    	},
    	mimetype: "text/json",
    	formNode: calendarForm
	});	
}

function showFolders(resourceId) {
	folderForm = dojo.byId("folderform");
	folderContainer = dojo.byId("folderContainer");
	folderDialog = dojo.widget.byId("folderDialog");
	folderForm.folderId.value = 0;
	folderForm.resourceId.value = resourceId;
	
	dojo.io.bind({
		url: "/getFolders.do",
		sync: true,  
		preventCache: true,          
		load: function(type, reply, evt) {
			if (Boolean(reply.noViewer)) {
				gotoLogin(resourceId,'F');
			} else{
				var folders = reply.folders;
				if (folders.length != 0) {
					var html = "<div class='popupTitle'>please select a folder</div>";
					for (var i = 0; i < folders.length; i++) {
						var id = folders[i].id;
						var title = folders[i].title;
						var count = folders[i].count;	
						html += "<div style='width:300px;' onmouseover='highlight(this)' onmouseout='unhighlight(this)' onclick='saveToFolder(" + id + ")' class='folderRow'><img src='graphics/groups/resource-icons_02.jpg'/>" + title + "(" + count + ")</div>";
					}
					folderContainer.innerHTML = html;
				} else {
					var html = "<div class='popupTitle'>Please a create folder"+
							"<br /><br /><br />"+
							"<form name='FavoriteForm'>"+
							"<table>"+
							"<tr>"+
							"<td><strong>Resource Folder Title</strong></td>"+
							"</tr>"+
							"<tr>"+
							"<td><input type='text' name='title' id='titleId'></td>"+
							"</tr>"+
							"<tr>"+
							"<td>"+
							"<input type='button' value='publish' style='text-transform:none' onclick='createFolder()' /></td>"+
							"</tr>"+
							"</table>"+
							"</form>'";
					folderContainer.innerHTML = html;
				}
				folderDialog.show();
			}
		},
		
		error: function(type, errObj) {
			alert("error");    	
		},
		
		mimetype: "text/json",
		content: {
		}
	});
}

function showGroupFolders(resourceId) {
	folderForm.folderId.value = 0;
	folderForm.resourceId.value = resourceId;
	
	dojo.io.bind({
		url: "/getWritableGroupFolders.do",
        sync: true,  
        preventCache: true,          
    	load: function(type, reply, evt) {
 			if (Boolean(reply.noViewer)) {
				gotoLogin(resourceId,'G');
			} else {   		
	    		var groups = reply.groups;
	    		var html = "<div class='popupTitle'>please select a folder</div>";
	    		
		    	if (groups.length != 0) {
	    			for(var i = 0; i < groups.length; i++) {
		    			var group = groups[i];
		    			var groupName = group.name;
						var folders = group.folders;
						html += "<p><strong>" + groupName + "</strong></p>";
						for(var j = 0; j < folders.length; j++) {
							var id = folders[j].id;
							var title = folders[j].title;
							var count = folders[j].count;	
							html += "<div style='width:300px;' onmouseover='highlight(this)' onmouseout='unhighlight(this)' onclick='saveToGroupFolder(" + id + ", " + group.id +")' class='folderRow'><img src='graphics/groups/resource-icons_02.jpg'/>" + title + "(" + count + ")</div>";
						}
		    		}
					folderContainer.innerHTML = html;
					folderDialog.show();
		    	} else {
		    		alert("You are not a member of any groups right now. \nPlease create or join a group.")
		    	}
			}
      	},
    	error: function(type, errObj) {
    		alert("error");    	
    	},
    	mimetype: "text/json",
    	content: {
    	}
	});
}

function sendToFolder() {
	dojo.io.bind({
    	url: "/AjaxAddToFolder.do",
    	sync: true,
    	load: function(type, reply, evt) {
			folderDialog.hide();
			if (reply.response) {
				showStatusMsg(reply.response, 'green');
			}
			if (reply.error) {
				showStatusMsg(reply.error, 'red');
			}
    	},
    	error: function(type, errObj) {
			folderDialog.hide();
    	},
    	mimetype: "text/json",
    	formNode: folderForm
	});	
}

function saveToFolder(folderId) {
	folderForm.folderId.value = folderId;
	folderForm.groupId.value = 0;
	sendToFolder();
}

function saveToGroupFolder(folderId, groupId) {
	folderForm.folderId.value = folderId;
	folderForm.groupId.value = groupId;	
	sendToFolder();
}

function highlight(oDiv) {
	oDiv.style.cursor = "pointer";
	oDiv.style.opacity=".40";
	oDiv.style.filter="alpha(opacity=40)"; // for IE only
}

function unhighlight(oDiv) {
	oDiv.style.opacity="1";	
	oDiv.style.filter="alpha(opacity=100)";	// for IE only
}

function publishComment(form) {
	var comments = strTrim(form.comments.value);
	if (comments.length<=0) {
		alert('Enter some comments to publish.');
		return false;
	}
	return true;
}

function createFolder() {
	dojo.io.bind({
		url: "/ajaxCreateFolder.do",
        sync: true,  
        preventCache: true,          
    	load: function(type, reply, evt) {
			var folders = reply.folders;
			if (folders.length != 0) {
				var html = "<div class='popupTitle'>please select a folder</div>";
				for (var i = 0; i < folders.length; i++) {
					var id = folders[i].id;
					var title = folders[i].title;
					var count = folders[i].count;	
					html += "<div style='width:300px;' onmouseover='highlight(this)' onmouseout='unhighlight(this)' onclick='saveToFolder(" + id + ")' class='folderRow'><img src='graphics/groups/resource-icons_02.jpg'/>" + title + "(" + count + ")</div>";
				}
				folderContainer.innerHTML = html;
			}
			folderDialog.show();
      	},
    	error: function(type, errObj) {
    		alert("error");    	
    	},
    	mimetype: "text/json",
    	content: {
    		title:document.getElementById("titleId").value
    	}
	});
}

function gotoLogin(resourceId,addResourceTo) {
	if (confirm("This requires you sign in.\n\nPlease click 'Ok' to sign in now.")) {
		var form = document.getElementById('viewlogin');
		form.requestedUrl.value += "&resourceId="+resourceId;
		form.requestedUrl.value += "&addResourceTo="+addResourceTo
		form.submit();
	}	
}

function displayLayer(addResourceTo,resourceId) {
	if (folderDialog)
		switch (addResourceTo) {
		case 'F' :
			showFolders(resourceId);
			break;
		case 'C' :
			showCalendar(resourceId);
			break;
		case 'G' :
			showGroupFolders(resourceId);
			break;
		}
	else
		setTimeout('displayLayer()', 300);
}

