/**
 * ObjectOptionsDragEditModule adds a checkBox and a small icon to 
 * the DOMNode passed to its load function if it's reference item is a a Polygon it enables 
 * polygon editing or if it is a marker it enables drag editing
 */
var ObjectOptionsDragEditModule=MapItemModule.extend({
	process:function(){
	var me=this;
	var options=new Element('span',{'class':"clickDrag"}); //add class for css styling

	var mapItem=me.item.wrapper||me.item;
	MapFactory.ItemOwner(MapFactory.GetMM(mapItem), mapItem, function(isOwner){
		//MapFactory has methods to enable or disable click drag editing for polygons lines, or markers.
		if(isOwner&&(mapItem instanceof GeoliveMapItem))
		{
			var checkBox=new Element('input',{type:'checkbox', checked:MapFactory.IsMouseEditing(mapItem),
				title:"Drag To Edit::"+"Click this checkbox to enable or disable mouse editing for this "+MapFactory.ItemDisplayType(mapItem)});

			checkBox.addEvent('click',function(){
				checkBox.checked=MapFactory.ToggleMouseEditing(mapItem); //returns editing status of item
			});
//			var d=new Element('img',{'class':'mediaMenu_controls', 
//				title:"Drag To Edit::"+"Click this checkbox to enable or disable mouse editing for this "+MapFactory.ItemDisplayType(mapItem),
//				src: MapFactory.GetMM(mapItem).options.dir+"images/Utilities/MouseEdit"+((mapItem instanceof GeoliveMarker)?"Marker":"Polygon")+".png"});
			//d.setStyle('cursor',"default");
			new mediaTips(checkBox);
			//new mediaTips(d);

			options.appendChild(checkBox);
			//options.appendChild(d);
		}
	});
	options.injectInside(me.node);
	me.fireEvent('onLoad');
}
});

/**
 * ObjectOptionIconsModule was created for the LayerPalet Class, but is useful here so 
 * this module basically steals and attaches those same icons, and just redefines the execution methods.
 */

var ObjectOptionIconsModule=MapItemModule.extend({
	process:function(){
	var me=this;
	var optionsElement=new Element('span',{'class':"control_icons"});
	var adminControls=me.options.adminControls||{};
	var controlsConfig={
			options:adminControls.options||true,
			save:me.options.showSave||false, forceSave:me.options.showSave||false, onSaveClick:function(){ me.viewer.eventInstance.fireEvent('onSave');},  //fires before actually saving... 
			'delete':adminControls['delete']||true,
			optionsFn:adminControls.optionsFunction||function(){
				
				var modules=PageFactory.getEditModules(me.mediaMap, me.item, {});
				mm_debug({"Opening Custom Page For Editing":modules});
		me.viewer.link(new CustomPageModule(me.mediaMap, me.item,
				modules,{}
		));
		//new CustomPageModule(me.mediaMap, geoliveMarker, PageFactory.getEditModules(me.mediaMap, geoliveMarker, {}), {}), geoliveMarker);
	}
	};
	if(me.options.deleteIcon)controlsConfig.deleteIcon=me.options.deleteIcon;
	if(me.options.editIcon)controlsConfig.editIcon=me.options.editIcon;
	LayersPalet.AddAdminControls(me.item, optionsElement, controlsConfig);
	optionsElement.injectInside(me.node);
	me.fireEvent('onLoad');
}
});

