// Chris Pyper 2006
// Fucntion to contain all the functions registered by the editor

function registryStart()
{
	var callBacks = fetchInterface();

	// Text manipulation functions
	// ('bold')
	callBacks.registerCallBack('bold', function(){ return execCommand('bold'); });
	// ('italic')
	callBacks.registerCallBack('italic', function(){ return execCommand('italic'); });
	// ('underline')
	callBacks.registerCallBack('underline', function(){ return execCommand('underline'); });
	// ('fontname', FontName[String, remember to use fonts that work in all browsers])
	callBacks.registerCallBack('fontname', function(fontName){  return execCommand('fontname', false, fontName); });
	// ('fontsize', FontSize[String/Number, can only use numbers 0/1-7])
	callBacks.registerCallBack('fontsize', function(fontSize){  return execCommand('fontsize', false, fontSize); });	
	// ('forecolor', ForeColor[String, can be hex or word])	
	callBacks.registerCallBack('forecolor', function(foreColor){ return execCommand('forecolor', false, foreColor); });
	// ('formatblock', TagName[String, use angle brackets])
	callBacks.registerCallBack('formatblock', function(tagName){ return execCommand('formatblock', false, tagName); });


	callBacks.registerCallBack('justifyLeft', function(){ return execCommand('justifyLeft'); });
	callBacks.registerCallBack('justifyCenter', function(){ return execCommand('justifyCenter'); });
	callBacks.registerCallBack('justifyRight', function(){ return execCommand('justifyRight'); });
	callBacks.registerCallBack('justifyFull', function(){ return execCommand('justifyFull'); });

	// Cut and paste functions unable to support in Gecko based browsers becuase or security restrictions
	// ('cut')
	callBacks.registerCallBack('cut', function(){ return execCommand('cut'); });
	// ('copy')
	callBacks.registerCallBack('copy', function(){ return execCommand('copy'); });
	// ('paste')
	callBacks.registerCallBack('paste',	function(){ return execCommand('paste'); });

	// Undo Redo functions		
	// ('redo')
	callBacks.registerCallBack('redo', function(){ return execCommand('redo'); });
	// ('undo')
	callBacks.registerCallBack('undo', function(){ return execCommand('undo'); });

	// Design Mode extras
	// ('insertunorderedlist')
	callBacks.registerCallBack('insertunorderedlist', function(){ return execCommand('insertunorderedlist'); });
	// ('inserthorizontalrule')
	callBacks.registerCallBack('inserthorizontalrule', function(){ return execCommand('inserthorizontalrule'); });
	// ('createLink')
	callBacks.registerCallBack('createLink', createLink);
	// ('receiveLink')
	callBacks.registerCallBack('receiveLink', receiveLink);

	// Editor Control functions
	// ('startEditor')
	callBacks.registerCallBack('startEditor', startEditor);
	// ('stopEditor')
	callBacks.registerCallBack('stopEditor', stopEditor);
	// ('setLanguage')
	callBacks.registerCallBack('setLanguage', setLanguage);

	// Content Manipulation
	// ('getContent')
	callBacks.registerCallBack('getContent', getContent);
	// ('setContent', Content[String, html content])
	callBacks.registerCallBack('setContent', setContent);
	// ('setTemplate', Template[String, html template page])
	callBacks.registerCallBack('setTemplate', setTemplate);
	// ('setStyleSheet', StyleSheet[String, url to css])
	callBacks.registerCallBack('setStyleSheet', setStyleSheet);
	// ('setTitle', Title[String])
	callBacks.registerCallBack('setTitle', setTitle);
	// ('setTagLine' TagLine[String])
	callBacks.registerCallBack('setTagLine', setTagLine);
	// ('setMenu', Menu[Dom reference to menu])
	callBacks.registerCallBack('setMenu', setMenu);
	// ('addElement', Element[Dom reference to menu]) 
	callBacks.registerCallBack('addElement', addElement);
	// ('addElement', Element[Dom reference to menu]) 
	callBacks.registerCallBack('insertPlugin', insertPlugin);
	// change image properties
	callBacks.registerCallBack('applySelectedImageProperties', applySelectedImageProperties);
	// change table properties
	callBacks.registerCallBack('applySelectedTableProperties', applySelectedTableProperties);

	// Returns flag indicating whether or not document was edited
	// ('hasDocumentChanged')
	callBacks.registerCallBack('hasDocumentChanged', hasDocumentChanged);

	// Resets the document changed flag (like after a Save operation)
	callBacks.registerCallBack('resetDocumentChangedFlag', resetDocumentChangedFlag);

	// Return current cursor context
	// ('getCommandState') 
	callBacks.registerCallBack('getCommandState', getCommandState);

	// Spell Check functionality
	// ('runSpellCheck')
	callBacks.registerCallBack('runSpellCheck', spellCheck);


	// set up preview mode
	callBacks.registerCallBack('setPreviewMode', setPreviewMode);
	// set up master page editing mode
	callBacks.registerCallBack('setMasterMode', setMasterMode);

/*	Callbacks that can be defined that are triggered by editor
	imageElementSelected     - When a image is put into editable mode
    textElementSelected      - When a text element is put into editable mode
    imageElementUnSelected   - When a image is taken out of editable modd
    textElementUnSelected    - When a text element is taken out of editable mode
    commandStateChanged      - When text is highlighted or the cursor moved and that text has 
							   diffrent properties then the previous selection, will pass associatve
							   array of cursor values over
	linkCreate				 - When a link is created or edited this will be triggered, it wil
							   pass over an array object, manipulte it and pass it back.  If 
							   it is a new link it will contain as innerHTMl the highlighted text.	
*/

}

