dojo.require("dojo.io.*");
dojo.require("dojo.event.*");
dojo.require("dojo.html.iframe");

function setTopicSubscribe(topicId, subscribe, node) {
	node.innerHTML = "Please wait...";
	dojo.io.bind({
		url: "topic_subscription.do",
		content: { topicId: topicId, subscribe: subscribe },
		load: function(type, data, evt) {
			if (data.type == "invalid") {
				var messages = data.messages.join("\n");
				alert(messages);
			} else if (data.type == "success") {
				if (subscribe) {
					node.innerHTML = "Unsubscribe from this topic";
				} else {
					node.innerHTML = "Subscribe to this topic";
				}
			} else {
				alert("Unknown result: " + data.type);
			}
		},
		error: function(type, error) {
			alert("Error: " + error.message);
		},
		mimetype: "text/json"
	});
}

function setTopicSticky(topicId, sticky, node) {
	node.innerHTML = "Please wait...";
	dojo.io.bind({
		url: "topic_sticky.do",
		content: { topicId: topicId, sticky: sticky },
		load: function(type, data, evt) {
			if (data.type == "invalid") {
				var messages = data.messages.join("\n");
				alert(messages);
			} else if (data.type == "success") {
				if (sticky) {
					node.innerHTML = "This topic is sticky";
				} else {
					node.innerHTML = "This topic is not sticky";
				}
			} else {
				alert("Unknown result: " + data.type);
			}
		},
		error: function(type, error) {
			alert("Error: " + error.message);
		},
		mimetype: "text/json"
	});
}

function setTopicClose(topicId, close, node) {
	node.innerHTML = "Please wait...";
	dojo.io.bind({
		url: "topic_close.do",
		content: { topicId: topicId, close: close },
		load: function(type, data, evt) {
			if (data.type == "invalid") {
				var messages = data.messages.join("\n");
				alert(messages);
			} else if (data.type == "success") {
				if (close) {
					node.innerHTML = "This topic is closed for discussion";
				} else {
					node.innerHTML = "This topic is open for discussion";
				}
			} else {
				alert("Unknown result: " + data.type);
			}
		},
		error: function(type, error) {
			alert("Error: " + error.message);
		},
		mimetype: "text/json"
	});
}

function previewPost(body, node, resultNode) {
	node.value = "Please wait...";
	node.disabled = true;
	resultNode.innerHTML = "";
	
	dojo.io.bind({
		url: "postpreview.sm",
		method: "post",
		content: { body: body },
		load: function(type, data, evt) {
			resultNode.innerHTML = data;
			node.value = "Preview";
			node.disabled = false;
		},
		error: function(type, error) {
			alert("Error: " + error.message);
			node.value = "Preview";
			node.disabled = false;
		},
		mimetype: "text/plain",
		encoding: "UTF8"
	});
}

function initTopic() {
	var topicSubscribeNode = dojo.byId("topic-subscribe");
	if (topicSubscribeNode != null) {
		dojo.event.connectAround(topicSubscribeNode, "onclick", function(invocation) {
			topicSubscribed = !topicSubscribed;
			setTopicSubscribe(topicId, topicSubscribed, topicSubscribeNode);
			invocation.proceed();
			return false;
		});
	}
	
	var topicStickyNode = dojo.byId("topic-sticky");
	if (topicStickyNode != null) {
		dojo.event.connectAround(topicStickyNode, "onclick", function(invocation) {
			topicSticky = !topicSticky;
			setTopicSticky(topicId, topicSticky, topicStickyNode);
			invocation.proceed();
			return false;
		});
	}
	
	var topicCloseNode = dojo.byId("topic-close");
	if (topicCloseNode != null) {
		dojo.event.connectAround(topicCloseNode, "onclick", function(invocation) {
			topicClosed = !topicClosed;
			setTopicClose(topicId, topicClosed, topicCloseNode);
			invocation.proceed();
			return false;
		});
	}
	
	var deletePostNodes = dojo.html.getElementsByClass("btn-delete-post");
	if (deletePostNodes != null) {
		for (var i = 0; i < deletePostNodes.length; i++) {
			dojo.event.connectAround(deletePostNodes[i], "onclick", function(invocation) {
				invocation.proceed();
				
				if (window.confirm("Are you sure you want to delete this post?")) {
					return true;
				} else {
					return false;
				}
			});
		}
	}
	
	initNewTopic();
}

function initNewTopic() {
	var postPreviewNode = dojo.byId("btn-preview-post");
	if (postPreviewNode != null) {
		dojo.event.connectAround(postPreviewNode, "onclick", function(invocation) {
			previewPost(postPreviewNode.form.body.value, postPreviewNode, dojo.byId("post-preview"));
			invocation.proceed();
			return false;
		});
	}
}

function initRegister() {
	var updateUsername = function() {
		var givenName = dojo.byId("form-givenName").value;
		var familyName = dojo.byId("form-familyName").value;
		dojo.byId("form-username").value = dojo.string.trim("" + givenName + " " + familyName);
	};
	
	dojo.event.connect(dojo.byId("form-givenName"), "onchange", updateUsername);
	dojo.event.connect(dojo.byId("form-familyName"), "onchange", updateUsername);
}

function insertYouTube(videoId) {
	if (FlashVersion >= 7) {
		document.write('<iframe allowtransparency="true" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="365" height="300" id="youtube' + videoId + '"></iframe>');
		document.write('<a href="http://www.youtube.com/watch?v=' + videoId + '" target="_blank">From YouTube</a>');
		dojo.addOnLoad(function() {
			var iframe = dojo.byId("youtube" + videoId);
			if (iframe != null) {
				var doc = dojo.html.iframeContentDocument(iframe);
				doc.write('<html><head><style type="text/css">body { background: transparent; }</style></head><body>' +
					'<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="365" height="300"><param name="movie" value="http://www.youtube.com/v/' + videoId + '?fs=1"></param><param name="wmode" value="transparent"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/' + videoId + '?fs=1" type="application/x-shockwave-flash" wmode="transparent" width="365" height="300" allowFullScreen="true"></embed></object></body></html>');
			}
		});
	} else {
		document.write('<p><a href="http://www.adobe.com/go/getflashplayer/" target="_blank">Get Flash Player to watch videos</a></p>');
	}
}

function insertGoogleVideo(videoId) {
	if (FlashVersion >= 7) {
		document.write('<iframe allowtransparency="true" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="365" height="300" id="googlevideo' + videoId + '"></iframe>');
		document.write('<a href="http://video.google.com/videoplay?docid=' + videoId + '" target="_blank">From Google Video</a>');
		dojo.addOnLoad(function() {
			var iframe = dojo.byId("googlevideo" + videoId);
			if (iframe != null) {
				var doc = dojo.html.iframeContentDocument(iframe);
				doc.write('<html><head><script type="text/javascript" src="../js/swfobject.js"></script><style type="text/css">body { background: transparent; }</style></head><body>' +
					'<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="365" height="300"><param name="movie" value="http://video.google.com/googleplayer.swf?docId=' + videoId + '&hl=en"></param><param name="wmode" value="transparent"></param><param name="allowFullScreen" value="true"></param><embed src="http://video.google.com/googleplayer.swf?docId=' + videoId + '&hl=en" type="application/x-shockwave-flash" wmode="transparent" width="365" height="300" allowFullScreen="true"></embed></object></body></html>');
			}
		});
		//'<embed style="width:400px; height:326px;" id="VideoPlayback" type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docId=4479110676384452384&hl=en" flashvars=""> </embed>';
	} else {
		document.write('<p><a href="http://www.adobe.com/go/getflashplayer/" target="_blank">Get Flash Player to watch videos</a></p>');
	}
}

var flvCounter = 0;

function insertFLV(url) {
	if (FlashVersion >= 8) {
		flvCounter++;
		document.write('<iframe allowtransparency="true" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="365" height="300" id="flv' + flvCounter + '"></iframe>');
		dojo.addOnLoad(function() {
			var iframe = dojo.byId("flv" + flvCounter);
			if (iframe != null) {
				var doc = dojo.html.iframeContentDocument(iframe);
				doc.write('<html><head><style type="text/css">body { background: transparent; }</style></head><body>' +
					'<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="365" height="300"><param name="movie" value="flver.swf"></param><param name="flashvars" value="url=' + escape(url) + '"></param><param name="wmode" value="transparent"></param><param name="allowFullScreen" value="true"></param><embed src="flver.swf" flashvars="url=' + escape(url) + '" type="application/x-shockwave-flash" wmode="transparent" width="365" height="300" allowFullScreen="true"></embed></object></body></html>');
			}
		});
	} else {
		document.write('<p><a href="http://www.adobe.com/go/getflashplayer/" target="_blank">Get Flash Player to watch videos</a></p>');
	}
}

function showHide(id1, id2) {
	dojo.byId(id1).style.display='none';
	dojo.byId(id2).style.display='';
}

function showLoginPage() {
	dojo.byId('loginform').submit();
}
