
function LessonPlanEditorObject(list) 
{	
	var params = {
		             window_id: 'lesson_plan_content_editor_window',
								 window_title: 'Lesson Plan Editor',
								 form_id_prefix: 'lesson_plan_editor_form_',
								 ajax: {
									 actions: {
										 get:'lesson_plan_editor_get_options',
										 save:'lesson_plan_editor_save_options',
										 rename:'rename_content'
									 }
								 }
	             };	
	
	this.popup_window = null;
		
	this.load_editor = function(content_obj) {
		params.content_obj = content_obj;
//		alert(JSON.stringify(content_obj));
		this.popup_window = show_window();
		get_options(params.content_obj.id);
	}
		
	var select_option = function(params,html) {
		var value = params.value ? params.value : '';
		var id    = params.id    ? params.id    : '';
		var text  = params.text  ? params.text  : value;
		if (html) {
			var option  = '<option id="' + id.escapeHTML() + '" value="' + value.escapeHTML() + '">';
			    option += text.escapeHTML() + '</option>';
		}
		else {
			var option = Builder.node('OPTION',{id:id,value:value},[text]);
		}
		return option;
	}
	
	var select_option_range = function(low,high) {
		opts = [];
		for (var i=low;i<=high;i++) {
		  opts.push(select_option({value:i}));
		}
		return opts;
	}	
	
	var select_box_set = function(select_box,value) {
		var sel_opts = $A(select_box.getElementsByTagName('OPTION'));
		var selected = sel_opts.detect(function(opt,index){
			if (opt.value == value) {
				select_box.selectedIndex = index;
				return true;
			}
			return false;
		});			
		if (selected === null) select_box.selectedIndex = 0;			
	}
	
	var show_window = function()	{
		if ($(params.window_id)) { Element.remove(params.window_id); }
		var win 		    = new Window();
				win.id      = params.window_id;
				if (params.content_obj.type == 'lesson') win.title = params.content_obj.name;
				else if (params.content_obj.type == 'exam') win.title = params.content_obj.name;
				else win.title   = params.window_title;
				win.loading = true;
				win.create();
		return win;
	}
	
	var get_options = function(content_id) {
		var query_str  = 'action=' + params.ajax.actions.get;
		    query_str += '&content_id=' + content_id;
		var get_content_options = new Ajax.Request(
				  jsconfig.ajax,
					{
						method:'get',
						parameters: query_str,
						onComplete: function(response_obj) {
							var response = JSON.parse(response_obj.responseText);
							//var test = Builder.node('P',{},[response_obj.responseText]);
							//Element.update($(params.window_id+'_inner'),test.innerHTML);
							//var test = {introduction:{repeat:1},test:{score:1}};
							//send_options(content_id,test);
							// if ($('testerooni')) Element.remove('testerooni');
							// document.body.appendChild(Builder.node('PRE',{id:'testerooni'},[response_obj.responseText]));
							build_form(content_id,response.type,response.options);							
						}
					});			    
	}

	var rename_content = function(content_id,name,saving) {
				saving.innerHTML = 'saving...';
				Element.show(saving);	
				name.disabled = true;
		var query_str  = 'action=' + params.ajax.actions.rename;
		    query_str += '&id=' + content_id;
				query_str += '&name=' + urlencode(name.value);
		var get_content_options = new Ajax.Request(
				  jsconfig.ajax,
					{
						method:'get',
						parameters: query_str,
						onComplete: function(response_obj) {
							var response = JSON.parse(response_obj.responseText);
									saving.innerHTML = 'saved';
									new Effect.Fade(saving,{
																			 afterFinish:function(obj) {																				
																				name.disabled = false;
																				params.content_obj.name = response.name;
																				name.rename(response.name);
																				name.revert();
																				list.add_content(params.content_obj,{update:true});
																			 }
																			 });						
						}
					});			    
	}

	var save_options = function(content_id,options_obj,theform,saving) {
		Form.disable(theform);
			saving.innerHTML = 'saving...';
			Element.show(saving);		
		var query_str  = 'action=' + params.ajax.actions.save;
		    query_str += '&content_id=' + content_id;
				query_str += '&options=' + urlencode(JSON.stringify(options_obj));
		var get_content_options = new Ajax.Request(
				  jsconfig.ajax,
					{
						method:'post',
						parameters: query_str,
						onComplete: function(response_obj) {
							var response = JSON.parse(response_obj.responseText);
									saving.innerHTML = 'saved';
									new Effect.Fade(saving,{
																			 afterFinish:function(obj) {																				
																				Form.enable(theform);
																			 }
																			 });							
						}
					});			    
	}
	
	var save_value = function(content_id,theform,saving) {		
		var option_name = theform.option_name.value;
		var inputs   = Form.getElements(theform);
		var save_obj = {};
		    save_obj[option_name] = {};
		inputs = $A(inputs);
		inputs.each ( function(input, index) {
			if (input.name == 'option_name' || input.name == 'chkbx') return false;							 
	    save_obj[option_name][input.name] = input.value;
		});
		//alert(JSON.stringify(save_obj));
		save_options(content_id,save_obj,theform,saving);
	}
		
	var build_lesson_options = function(content_id,options_data) {
		
		var settings = {};

		settings.introduction = options_data.introduction ? options_data.introduction : {};
		settings.tutor        = options_data.tutor        ? options_data.tutor        : {};
		settings.test         = options_data.test         ? options_data.test         : {};

		var container = Builder.node('DIV');
		
		container.appendChild(build_option(content_id,'introduction',settings.introduction));
		container.appendChild(build_option(content_id,'tutor',settings.tutor));
		container.appendChild(build_option(content_id,'test',settings.test));

		return container;
	}

	var boolean_option = function(content_id,option_name,text,value) {
		if (!value)        value = 0;
		var saving       = Builder.node('SPAN',{className:'indent5px greentext bold'});			
		var option  		 = Builder.node('INPUT',{type:'hidden',name:'option_name',value:option_name});
		var checkbox     = Builder.node('INPUT',{name:'chkbx',type:'checkbox'});
		var yes_no       = Builder.node('INPUT',{type:'hidden',name:'value',value:value});
		var msub         = Builder.node('DIV',{},[option,yes_no,checkbox,text,saving]);
		var theform      = Builder.node('FORM',{onSubmit:'return false;'},[msub]);
		var save_me      = function() { save_value(content_id,theform,saving); };
		checkbox._checkMe = value;
		checkbox.onclick = function() { yes_no.value = this.checked ? 1 : 0; save_me(); };
		return theform;
	}



	var build_exam_options = function(content_id,options_data) {		
		var settings = {};
		settings.repeat             = options_data.repeat             ? options_data.repeat                   : {};
		settings.most_difficult     = options_data.most_difficult     ? options_data.most_difficult.value     : 0;
		settings.non_mastered_first = options_data.non_mastered_first ? options_data.non_mastered_first.value : 0;
		settings.prior_lessons      = options_data.prior_lessons      ? options_data.prior_lessons.value      : 0;
		settings.max_questions      = options_data.max_questions      ? options_data.max_questions.value      : '';		
		var container = Builder.node('DIV');
		
		var exam_repeat = function() {
			var saving       = Builder.node('SPAN',{className:'indent5px greentext bold'});			
			var option  		 = Builder.node('INPUT',{type:'hidden',name:'option_name',value:'repeat'});
			var repeat_value = Builder.node('INPUT',{type:'text',name:'repeat_value',value:settings.repeat.repeat_value});			
			var repeat			 = Builder.node('SELECT',{name:'repeat_type'},repeat_options('exam'));			
			var msub         = Builder.node('DIV',{},[option,repeat,' ',repeat_value,saving]);
			var theform      = Builder.node('FORM',{onSubmit:'return false;'},[msub]);
			var save_me      = function() { save_value(content_id,theform,saving); };
			select_box_set(repeat,settings.repeat.repeat_type);
			formEls = $A(Form.getElements(theform));
			formEls.each(function(el, index) {
				xAddEventListener(el,'change',save_me,false); // save changes on change
			});		
			return theform;
		}
		
		var exam_max_questions = function() {
			var saving       = Builder.node('SPAN',{className:'indent5px greentext bold'});			
			var option  		 = Builder.node('INPUT',{type:'hidden',name:'option_name',value:'max_questions'});
			var max_q			   = Builder.node('INPUT',{type:'text',name:'value',maxlength:3,size:3,value:settings.max_questions});			
			var msub         = Builder.node('DIV',{},[option,'Limit to ',max_q,' questions.',saving]);
			var theform      = Builder.node('FORM',{onSubmit:'return false;'},[msub]);
			var save_me      = function() { save_value(content_id,theform,saving); };
			xAddEventListener(max_q,'change',save_me,false); // save changes on change
			return theform;
		}
		
		var exam_name = function() {
			var saving       = Builder.node('SPAN',{className:'indent5px greentext bold'});
			var name         = Builder.node('INPUT',{type:'text',value:params.content_obj.name});
			var text         = Builder.node('SPAN',{title:'Click to edit'},[params.content_obj.name]);
			var theform      = Builder.node('FORM',{},['Exam Name: ',text,saving]);
			theform.onsubmit = function() {
				name.blur();
				return false;
			}
			    name.revert  = function() { this.parentNode.replaceChild(text,name); };
					name.rename  = function(n) { 
					                 text.innerHTML = n.escapeHTML();
					               }
			    name.onblur  = function() { 
					   if (name.value == params.content_obj.name) { 
						   name.revert(); 
							 return false; 
						 }
						 rename_content(content_id,name,saving);
					};

			    text.onclick = function() {
						this.parentNode.replaceChild(name,this);
						Field.select(name);
					}
			return theform;
		}
				
		var exam_prior_lessons = function() {
			var saving       = Builder.node('SPAN',{className:'indent5px greentext bold'});			
			var option  		 = Builder.node('INPUT',{type:'hidden',name:'option_name',value:'prior_lessons'});
			var sel_opts     = select_option_range(1,5); // change range to no. of lessons
			    sel_opts.unshift(select_option({value:0,text:'all'}));			
			var select_box   = Builder.node('SELECT',{name:'value'},[sel_opts]);
			var msub         = Builder.node('DIV',{},[option,'Questions from ',select_box,' prior lessons.',saving]);
			var theform      = Builder.node('FORM',{onSubmit:'return false;'},[msub]);
			var save_me      = function() { save_value(content_id,theform,saving); };
			xAddEventListener(select_box,'change',save_me,false); // save changes on change
			select_box_set(select_box,settings.prior_lessons);
			return theform;
		}		

		container.appendChild(exam_name());
		container.appendChild(exam_repeat());
		container.appendChild(exam_max_questions());
		container.appendChild(boolean_option(content_id,'most_difficult',
																				 ' Display most difficult question type',settings.most_difficult));
		container.appendChild(boolean_option(content_id,'non_mastered_first',
																				 ' Non-mastered questions first',settings.non_mastered_first));
		container.appendChild(exam_prior_lessons());
		
		return container;
	}	

	var repeat_options = function(option_name) {
		var NA = {introduction:[1,2,3],tutor:[2,3],test:[3],exam:[]};
		repeat_types = [];
		if (NA[option_name].indexOf(0) < 0) repeat_types.push(select_option({value:'times',text:'Times'}))
		if (NA[option_name].indexOf(1) < 0) repeat_types.push(select_option({value:'score',text:'Until Score'}));
		if (NA[option_name].indexOf(2) < 0) repeat_types.push(select_option({value:'strength',text:'Until Strength'}));
		if (NA[option_name].indexOf(3) < 0) repeat_types.push(select_option({value:'course mastery',text:'Until Course Mastery'}));		
		return repeat_types;
	}

	var build_option = function(content_id,option_name,settings) {
/*
		if (settings.include)      settings.include = 0;
		if (settings.repeat_value) settings.repeat_value = 1;
		if (settings.repeat_type)  settings.repeat_type = 'times';
*/
		var saving       = Builder.node('SPAN',{className:'indent5px greentext bold'});
		var option  		 = Builder.node('INPUT',{type:'hidden',name:'option_name',value:option_name});
		var include      = Builder.node('INPUT',{type:'hidden',name:'include',value:settings.include});
		var repeat_value = Builder.node('INPUT',{type:'text',name:'repeat_value',value:settings.repeat_value});
		var repeat			 = Builder.node('SELECT',{name:'repeat_type'},repeat_options(option_name));
		var checkbox     = Builder.node('INPUT',{name:'chkbx',type:'checkbox'});
		var main         = Builder.node('DIV',{},[checkbox,' ',option_name,saving]);
		var msub         = Builder.node('DIV',{className:'sub_div'},[option,include,repeat,' ',repeat_value]);
		var theform      = Builder.node('FORM',{onSubmit:'return false;'},[main,msub]);
		checkbox._checkMe = settings.include;
		select_box_set(repeat,settings.repeat_type);		
		checkbox.onclick = function() { include.value = this.checked ? 1 : 0; };
		var save_me      = function() { save_value(content_id,theform,saving); };
		formEls = $A(Form.getElements(theform));
		formEls.each(function(el, index) {
  		xAddEventListener(el,'change',save_me,false); // save changes on change
		});
		return theform;		
	}

	var build_form = function(id,type,options_data) {		
		if (type == 'lesson')    var container = build_lesson_options(id,options_data);
		else if (type == 'exam') var container = build_exam_options(id,options_data);
		else                     var container = Builder.node('DIV');
		$(params.window_id+'_inner').innerHTML = '';
		$(params.window_id+'_inner').appendChild(container);
		var save_and_close = Builder.node('BUTTON',{},['Save and Close']);
		    save_and_close.onclick = function() {
					Element.remove($(params.window_id));
				};
		var save_para = Builder.node('P',{className:'center'},[save_and_close]);
		$(params.window_id+'_inner').appendChild(container);
		$(params.window_id+'_inner').appendChild(save_para);		
		// IE! Can't set checkbox values until in DOM - therefore:
		var inputs = $A(container.getElementsByTagName('INPUT'));
		inputs.each(function(input,index) {
      if (input.type == 'checkbox' && input._checkMe == 1) {
				input.checked = true;
			}
	  });
	}
	
}

function ContentList(container,key_id)
{
	/*
		array of objects with the following properties
			name, id, type
	*/
	
	var container = $(container);
	var clipboard_params = {
		                       normal_only: true,
													 paste_type: 'normal',
													 clipboard_type: 'lesson_plan'
	                       };
	var clipboard = new Clipboard(this,clipboard_params);
	var LessonPlanEditor = new LessonPlanEditorObject(this);
	var sequence_timeout = false;
	var make_sortable_timeout; // this is so when we are adding more than one it doesn't freak out.
	
	this.clipboard = clipboard;	
	
 // update_type_count:[{type,id of element to update}]
 // type_count: [type] = count
	var params = {
		             update_count: [{lesson:'numbers_of_lessons'},{exam:'number_of_exams'}],
								 type_count: [],
								 no_content_HTML: 'Add lessons to your Course from the Lesson Details page of any lesson.',
								 ajax:{									 
									 			url: jsconfig.ajax,
												actions: {
													        save_sequence:'lesson_plan_save_sequence',
																	delete_content:'lesson_plan_delete_content',
																	paste_content: 'lesson_plan_paste_content'
												         },
								 				key_field: { name: 'lesson_plan', value: key_id },
												key: function() { 
												  return '&' + params.ajax.key_field.name + '=' + params.ajax.key_field.value;
												}
											}
               };

	this.set_key_field = function(name,value) {
		params.ajax.key_field = {name:name,value:value};
	}
	
	var get_selected_content = function()
	{
		var inputs = document.getElementsByClassName("contentlist_checkbox",tbody);
		var selected_content = new Array();
		for (var i=0;i<inputs.length;i++)
		{
			if (inputs[i].checked) selected_content[selected_content.length] = inputs[i].content;
		}
		return selected_content;
	}

	var build_bottom_row = function()
	{
		var select_all_image		= commonjs.new_element({element:"IMG",src:jsconfig.site.root+"images/site/arrow_ltr.png"});
		var select_all_checkbox = commonjs.new_element({element:"INPUT",type:"checkbox"});
				select_all_checkbox.onclick  = function() {
					var inputs = document.getElementsByClassName("contentlist_checkbox",tbody);
					for (var i=0;i<inputs.length;i++)
					{						
						inputs[i].checked = this.checked;
						inputs[i].onclick();
					}
				}
		
		var delete_selected			= commonjs.jslink('remove');
				delete_selected.onclick = function() {
					var selected_content = get_selected_content();
					if (selected_content.length == 0) return false;
					delete_selected_content(selected_content);
				}
		var copy_selected = commonjs.jslink('copy');
				copy_selected.onclick = function() {
					var selected_content = get_selected_content();
					if (selected_content.length == 0) return false;					
					clipboard.add_to_clipboard(selected_content);
				}
		var show_clipboard = commonjs.jslink('show clipboard');
				show_clipboard.onclick = function() {
					clipboard.show();
				}
		
		var tfoot								= commonjs.new_element({element:"TFOOT",className:'contentlist'});
		var bottom_row					= commonjs.new_element({element:"TR"});
		
		var br_name							= commonjs.new_element({element:"TD"});
				br_name.appendChild(show_clipboard);
		

		var br_controls					= commonjs.new_element({element:"TD",colSpan:3});
				commonjs.append_children(br_controls,[select_all_image,select_all_checkbox,delete_selected,commonjs.text_seperator(),copy_selected]);


		commonjs.append_children(bottom_row,[br_name,br_controls]);
		tfoot.appendChild(bottom_row);
		return tfoot;
	}

	var selected						= false;
	var table								= commonjs.new_element({element:"TABLE",className:"contentlist",cellSpacing:0});
	var tbody								= commonjs.new_element({element:"TBODY",className:"contentlist",id:"contentlist"});	
	var no_content_para = Builder.node('DIV',{className:'padding center'});
		  no_content_para.innerHTML = params.no_content_HTML;
	var show_clipboard = commonjs.jslink('clipboard');
			show_clipboard.onclick = function() {
				clipboard.show();
			}
	no_content_para.innerHTML += ' You can also add to the lesson plan from the ';
	no_content_para.appendChild(show_clipboard);
	var no_content_p = Builder.node('TD',{colSpan:'4'},[no_content_para]);
	var nocontenttbody      = Builder.node('TBODY',{},[no_content_p]);
	var bottom_row			 		= build_bottom_row();
	commonjs.append_children(table,[nocontenttbody,tbody,bottom_row]);
	container.appendChild(table);
	
	var make_sortable = function()
	{
		Sortable.create("contentlist",{tag:'TR',containment:["contentlist","clipboard"],constraint:"vertical",handle:'handle',
										onUpdate: function() {
											clearTimeout(sequence_timeout);
											sequence_timeout = setTimeout(save_sequence,3000);
										},
										starteffect: function(element) {
											element._background_color = element.style.backgroundColor;
											element.style.backgroundColor = '#91FF91';
											element._className = element.className;
											element.className  = element.className + ' drag';
											table._className   = table.className;
											table.className    = table._className + ' vertical_move';
										},
										endeffect: function(element) {
											element.style.backgroundColor = element._background_color;
											element.className  			 			= element._className;											
											table.className 				 			= table._className;
											row_coloring();
											new Effect.Highlight(element);											
										}										
									});
		row_coloring();
	}

	var start_sortable_countdown = function()
	{
		clearTimeout(make_sortable_timeout);
		make_sortable_timeout = setTimeout(make_sortable,2000);
	}

	var add_content = function(content,parameters)
	{
		if (!parameters) var parameters = {};		
		
		if ($("contentlist_"+content.id))
		{
			var thecontent = $("contentlist_"+content.id);
			new Effect.Highlight(thecontent);
			if (parameters.update) thecontent.set_name(content.name);
			return false;
		}
		
		var row						 			= commonjs.new_element({element:"TR",id:"contentlist_"+content.id,className:"contentlist_row",color:''});
				row.is_highlighted	= false;
				row.content_type		= content.type;
		var num_comments	= content.comments > 0 ? content.comments : 'no';
		var comments_text = content.comments == 1 ? ' comment' : ' comments';
		if (content.comments > 0)
		{
			var comments_link = Builder.node('A',{href:'?topic='+content.topic_id},[num_comments+comments_text]);
		}
		else var comments_link = document.createTextNode(num_comments+comments_text);

		var comments_td					= Builder.node('TD',{className:'right'},[comments_link]);

		var controls_td					= commonjs.new_element({element:"TD",className:"right"});
		var name_td							= commonjs.new_element({element:"TD",className:"handle vertical_move"});
				name_td.style.paddingRight = '10px';
				name_td.title = "Reorder content by clicking on an item and dragging it up or down the list";
				/*
				name_td.onclick = function() {
					checkbox.checked = checkbox.checked ? false : true;
					checkbox.onclick();
				}
				*/
		row.set_name = function(new_name)
		{
			name_td.removeChild(name_td.childNodes[1]);
			name_td.appendChild(document.createTextNode(new_name));
			content.name = new_name;
			clipboard.rename(content.id,content.name);
		}
		
		var checkbox_td					= commonjs.new_element({element:"TD",className:""});				
		
		var checkbox						= commonjs.new_element({element:"INPUT",type:"checkbox",className:"contentlist_checkbox",content:content});
				checkbox.onclick = function() {
					row.style.backgroundColor 	= this.checked ? 'yellow' : row.color;
					row.is_highlighted = this.checked;
				}
		
		var linked_image = content.linked > 1 ? '_linked' : '';
				
		var image								= commonjs.new_element({
																									 element:"IMG",
																									 className:"contentlist_image",
																									 src:jsconfig.site.root + 'images/site/content_icon_' + content.type + linked_image + '.gif'
																									 }); // hardcoding !!
		
		var edit								= commonjs.jslink('edit');
		var copy								= commonjs.jslink('copy');
		var del									= commonjs.jslink('remove');
		
		edit.onclick = function() {
			LessonPlanEditor.load_editor(content);
		}
		copy.onclick = function() {
			clipboard.add_to_clipboard(content);
		}
		del.onclick = function() {
			delete_selected_content([content]);
		}

		commonjs.append_children(name_td,[image,document.createTextNode(content.name)]);
		checkbox_td.appendChild(checkbox);
		commonjs.append_children(controls_td,[edit,commonjs.text_seperator(),copy,commonjs.text_seperator(),del]);
		commonjs.append_children(row,[name_td,checkbox_td,controls_td,comments_td]);
		
		tbody.appendChild(row);	
		
		start_sortable_countdown();
		
		if (parameters.highlight) new Effect.Highlight(row);
		if (parameters.delete_from_clipboard) {
			if (parameters.remove_after_paste) {
			  clipboard.remove_from_clipboard(parameters.delete_from_clipboard);
			}
		}
		if (parameters.open_editor) edit.onclick();
		
	}
	
	this.make_droppable = function()
	{
		Droppables.remove(table);
		Droppables.add(table, { 
														accept: 'clipboard', 
														hoverclass: 'target',
														onDrop: function(element) {
														paste_content(element.content_id);
													}								
												} );
	}
	
	this.add_content = add_content; // just make this public?
	
	this.paste_content = function(content)
	{
		paste_content(content);
	}

	this.add_new_exam = function() {
		var query_str  = 'action=lesson_plan_add_new_exam';
				query_str += params.ajax.key();
				var do_add = new Ajax.Request(
						 params.ajax.url,
						 {
							 method:'GET',
							 parameters: query_str,
							 onComplete: function(response_obj) {
								 var response = JSON.parse(response_obj.responseText);
								 if (response.content) {	
									  add_content(response.content,{open_editor:true});
								 }																				 
							 }
						 });
	}

	var delete_selected_content = function(selected_content)
	{
		var temp = new Array();
		for (var i=0;i<selected_content.length;i++) {
			temp[temp.length] = selected_content[i].id; // no point in sending anything beside IDs
		}
		selected_content = temp;
		if (!commonjs.word_confirm('You want to remove the '+selected_content.length+' content selected?\nPlease type the word REMOVE to continue','remove')) return false;
		
		var query_str  = 'action=' + params.ajax.actions.delete_content;
		    query_str += '&content=' + JSON.stringify(selected_content);
				query_str += params.ajax.key();
				var do_delete = new Ajax.Request(
						 params.ajax.url,
						 {
							 method:'POST',
							 parameters: query_str,
							 onComplete: function(response_obj) {
								 var response = JSON.parse(response_obj.responseText);
								 if (response.deleted) {
   								 for (var i=0;i<selected_content.length;i++) {
										 Element.remove("contentlist_"+selected_content[i]);
									 }
									 make_sortable();
									 row_coloring();									 
								 }																				 
							 }
						 });
	}

	var save_sequence = function()
	{
		var sequence  =  Sortable.sequence("contentlist",{name:'content'});
		var query_str =  'action=' + params.ajax.actions.save_sequence;
		    query_str += '&sequence=' + sequence;
				query_str += params.ajax.key();
		var save = new Ajax.Request( jsconfig.ajax, { method: 'POST', parameters: query_str } );
	}

	var paste_content = function(content)
	{
		if (!content.length) return false;
		var xmlhttp = new XMLHttpRequest();
		var paste_type = clipboard.get_paste_type();
		var query_str  = 'action=' + 'pastecontent';
		    query_str += '&content=' + JSON.stringify(content);
				query_str += '&lesson=' + key_id;
				query_str += '&pastetype=' + paste_type;
				query_str += '&clipboard_type=' + 'lesson_plan';
				query_str += params.ajax.key();
		var do_paste = new Ajax.Request(
				 jsconfig.site.root+"library/content_actions.php",
				 {
					 method:'POST',
					 parameters: query_str,
					 onComplete: function(response_obj) {
						 var response = JSON.parse(response_obj.responseText);
						var remove_after_paste = clipboard.get_remove_after_paste();						 
						for (var i=0;i<response.length;i++) {							
							add_content({id:response[i].id,name:response[i].title,
													 type:response[i].type,linked:response[i].linked},
													 {highlight:true,delete_from_clipboard:content[i],remove_after_paste:remove_after_paste});
						}
						row_coloring();										
					 }
				 });
	}	
	
	// also update counts
	var row_coloring = function()
	{
		var length = tbody.childNodes.length;
		nocontenttbody.style.display = (length == 0) ? '' : 'none';
		bottom_row.style.display = (length == 0) ? 'none' : '';		
		
		params.type_count = [];
		
		for (var i=0;i<length;i++)
		{
			var therow = tbody.childNodes[i];
			
			if (params.type_count[therow.content_type]) {
				params.type_count[therow.content_type]++;
			}
			else { params.type_count[therow.content_type] = 1; }
			
			therow.color = i & 1 ? '#E7E7E7' : '#ccc';
			if (!therow.is_highlighted) therow.style.backgroundColor = therow.color;
		}

		// need to loop through params.type_count and update counts
		
	}
	
	this.load_data = function(data)
	{
		for (var i=0;i<data.length;i++) {
			add_content(data[i]);
		}
		row_coloring();
	}

}