var uWiki = function() {
	return {
		Edit: function(s_baseId, s_baseVersion) {
		
		//fetch content from the server in case someone has changed it
		$.post("/base/uWiki/GetContentVersion/" + s_baseId + "/" + s_baseVersion + ".aspx",
			function(data){
				
			    if(_currentContent == ''){
			    _currentContent = jQuery("#wikiContent").html();
			    _currentTitle = jQuery("#wikiHeader").html();
			     }

			jQuery("#wikiContent").html( jQuery("node/data [alias = 'bodyText']", data).text() );
			 jQuery("#wikiHeader").html( _currentTitle, jQuery("node", data).attr("nodeName") );
			
			tinyMCE.init({
			// General options
			mode : "exact",
			elements : "wikiContent",
			content_css : "/css/fonts.css",
			auto_resize : true,
			theme : "advanced",
			remove_linebreaks : false
			});


		jQuery("#viewMode").hide();
		jQuery("#editMode").show();
		
		jQuery("#wikiHeader").hide();
		jQuery("#wikiHeaderEditor").show().val( jQuery("#wikiHeader").text() );

		});		

		

		},
		NewEditor: function() {
			tinyMCE.init({
			// General options
			mode : "exact",
			elements : "wikiContent",
			content_css : "/css/fonts.css",
			auto_resize : true,
			theme : "advanced",
			remove_linebreaks : false
			});

		jQuery("#viewMode").hide();
		jQuery("#editMode").show();
		
		jQuery("#wikiHeader").hide();
		jQuery("#wikiHeaderEditor").show().val(jQuery("#wikiHeader").text());

		},
		Save: function(s_pageId, s_title, s_body) {
			$.post("/base/uWiki/Update/" + s_pageId + ".aspx", {body: s_body, title: s_title},
			function(data){
			   window.location = jQuery("value", data).text();
			});
			
			uWiki.Cancel(false);
		},
		Create: function(s_parentId, s_title, s_body){
			$.post("/base/uWiki/Create/" + s_parentId + ".aspx", {body: s_body, title: s_title},
			function(data){
			  window.location = jQuery("value", data).text();
			});

			uWiki.Cancel(false);
		},
		Cancel: function(rollback){
			tinyMCE.execCommand('mceRemoveControl', false, 'wikiContent');
			
			jQuery("#editMode").hide();
			jQuery("#viewMode").show();
			
			jQuery("#wikiHeaderEditor").hide();
			jQuery("#wikiHeader").show();
						
			if(rollback){
				jQuery("#wikiContent").html(_currentContent);
				jQuery("#wikiHeader").html(_currentTitle);
			}else{
				jQuery("#wikiHeader").html(jQuery("#wikiHeaderEditor").val());
			}
		},
		PreviewOldVersion: function(s_pageId, s_versionGuid){
			$.post("/base/uWiki/GetContentVersion/" + s_pageId + "/" + s_versionGuid + ".aspx",
			function(data){
				
			    if(_currentContent == ''){
			    _currentContent = jQuery("#wikiContent").html();
			    _currentTitle = jQuery("#wikiHeader").html();
			     }

			    jQuery("#wikiContent").html( diffString(_currentContent, jQuery("node/data [alias = 'bodyText']", data).text()) );
			    jQuery("#wikiHeader").html( diffString(_currentTitle, jQuery("node", data).attr("nodeName")) );
			}
			);
		},
		Rollback: function(s_pageId, s_versionGuid){
			$.post("/base/uWiki/Rollback/" + s_pageId + "/" + s_versionGuid + ".aspx",
			function(data){
			    window.location = jQuery("value", data).text();
			});
		}		
	};
}();

var _currentContent = "";
var _currentTitle = "";