(function($)
{
	$(function()
	{
		// edit draft multi-target
		$('#deki-draft-edit').click(function()
		{
			//return false;
		});

		$('#deki-draft-create').click(function()
		{
			var $this = $(this);
			if (!$this.hasClass('disabled')) {
				var el = $(this).get();
				Deki.Plugin.FilesTable.QuickPopupFrom(el);
			}
			return false;
		});

		// status message
		var $status = $('#deki-draft-status');
		var statusType = '';
		var timerPollStatus = null;
		var cookieName = 'redirect.'+$status.attr('href');
		var redirected = $.cookie(cookieName) || false;

		if ($status.length > 0) {
			if (redirected) {
				// hide messages
				$('#sessionMsg').hide();
			} else {
				statusType = $status.hasClass('draft-publish') ? 'publish' : 'create';

				// disable clicking
				$status.click(function(){ return false;});
				pollStatus($status.attr('href'));
			}
		}
		
		function completeOperation(uri)
		{
			$.cookie(cookieName, true, {expires: 2});

			// enable clicking
			$status.unbind('click');
			$status.removeClass('deki-draft-loading');
			$status.attr('href', uri);
			$status.show();
			
			document.location = uri;
		}
		
		function pollStatus(uri)
		{
			// update the status
			$.ajax({
				type: 'GET',
				url: uri,
				cache: false,

				complete: function(xhr)
				{
					if (timerPollStatus) {
						clearTimeout(timerPollStatus);
					}
					switch (xhr.status) {
 						
 						// complete
						case 201:
							var $xml = $(xhr.responseXML).find('draft');
							var uiUri = '';
							if (statusType == 'create') {
								$pageXml = $xml.find('draft\\.page');
								uiUri = $pageXml.find('uri\\.ui:first').text();
								uiUri += String(uiUri).indexOf('?') == -1 ? '?action=edit' : '&action=edit';
							} else { // publish
								$draftXml = $xml.find('draft\\.source');	
								uiUri = $draftXml.find('uri\\.ui:first').text();
							}
							
							completeOperation(uiUri);
							break;

						// continue
						case 202: 
							timerPollStatus = setTimeout(pollStatus, 5000, uri);
							break;
						
						// source conflict
						case 409:
							break;
						
						// unexpected
						default:
							MTMessage.Show('Error', xhr.statusText);
					}
				}
			});		
		}
	});
})(jQuery);

// required for delete
var doDraftPopupDelete = function(el, titleID) {
    var dialog = new Deki.Dialog({
        src: '/skins/common/popups/delete.php?titleID=' + titleID ,
        width: '380px',
        height: '124px',
        buttons: [
            Deki.Dialog.BTN_OK,
            Deki.Dialog.BTN_CANCEL
        ],
        args: null,
        callback : function(params) {
            Deki.$.post('/deki/gui/pageactions.php?action=delete', params, function(data) {
            	try {
            		var result = YAHOO.lang.JSON.parse(data);
            	}
            	catch (e) { alert('Invalid response.') }
            	if (!result.success) {
            		alert(result.message);
					return;
            	}
				// tr > td > a
				Deki.$(el).parent().parent().hide();
				window.location.reload();
            });
        }
    });
    
    dialog.render();
    dialog.show();

    return false;
};

