var vmenu_01 = {

	onAdd : function(widget, parent, editor) {
		
	},
	
	onLoad: function(widget, parent, editor) {
		widget.empty();
		var linksData = widget[0].data.getField('links');
		if(linksData && linksData.length>0) {
			for(var i=0; i<linksData.length; i++) {
				$('<div class="item"><a href="'+linksData[i].href+'"><span>'+linksData[i].title+'</span></a></div>').appendTo(widget);
			}
			$('<div style="float:none;clear:both;"></div>').appendTo(widget);
			widget.find('.item').first().addClass('first');
			widget.find('.item').last().addClass('last');
		}
		var style = widget[0].data.getSetting('style');
		widget.removeClass();
		widget.addClass('vmenu');
		widget.addClass(style);
	},
	
	onBeforeSave : function(widget, parent, editor) {
		
	},
	
	onResize : function(widget, parent, editor) {
	},
	
	onOpenSettings : function(widget, parent, editor) {
		$('.vmenu_settings .style').val(widget[0].data.getSetting('style'));
	},
	
	onApplySettings : function(widget, parent, editor) {
		var style = $('.vmenu_settings .style').val();
		widget.removeClass();
		widget.addClass('vmenu');
		widget.addClass(style);
		widget[0].data.setSetting('style', style);
		editor.setDirty();
		return true;
	},
	
	onOpenExtra : function(widget, parent, editor, extra) {
		switch(extra) {
		case 'Links':
			$('.vmenu_items .iitems').empty();
			var linksData = widget[0].data.getField('links');
			if(linksData && linksData.length>0) {
				for(var i=0; i<linksData.length; i++) {
					vmenu_01.__appendLinkItem(linksData[i].title, linksData[i].href);
				}
			}
			showAsPopup($('#vmenu_01_Links'));
			break;
		}
	},
	
	onApplyExtra : function(widget, parent, editor, extra) {
		switch(extra) {
			case 'Links':
				var links = $('.vmenu_items .iitems .iitem');
				var linksData = [];
				widget.empty();
				links.each(function(i) {
					linksData.push({title:$(this).find('.ititle').text(), href:$(this).find('.ilink').text()});
					$('<div class="item"><a href="'+$(this).find('.ilink').text()+'"><span>'+$(this).find('.ititle').text()+'</span></a></div>').appendTo(widget);
				});
				$('<div style="float:none;clear:both;"></div>').appendTo(widget);
				widget[0].data.setField('links', linksData);
				widget.find('.item').first().addClass('first');
				widget.find('.item').last().addClass('last');
				editor.setDirty();
				break;
		}
		return true;
	},
	
	onBeforeStylesMenu : function(widget, parent, editor, property) {
		switch(property) {
			case 'border':
			case 'background':
			case 'backgroundimage':
			case 'shadow':
			case 'opacity':
			case 'textshadow':
				return true;
		}
		return false;
	},
	onResetStyles : function(widget, parent, editor, property) {
		return false;
	},
	onApplyStyle : function(widget, parent, editor, property) {
		return false; // returning false will let the editor run the default style setting routine
	},
	
	
	addLink: function() {
		var title = prompt("Link Text:", "");
		if(title==null || title==undefined) return;
		if($.trim(title)=="") {
			alert('Link text cannot be empty!');
			vmenu_01.addLink();
			return;
		}
		vmenu_01.__appendLinkItem(title, '#');
	},
	autoPopulate: function() {
		// TODO:
	},
	removeLink: function(trigger) {
		$(trigger).parents('.iitem').remove();
		vmenu_01.__normalizeItems();
		return false;
	},
	moveLinkUp: function(trigger) {
		var link = $(trigger).parents('.iitem');
		if(link.prev().length > 0) {
			link.insertBefore(link.prev());
			vmenu_01.__normalizeItems();
		}
		return false;
	},
	moveLinkDn: function(trigger) {
		var link = $(trigger).parents('.iitem');
		if(link.next().length > 0) {
			link.insertAfter(link.next());
			vmenu_01.__normalizeItems();
		}
		return false;
	},
	editLinkPart: function(part) {
		part = $(part);
		var text = prompt("Modify:", part.text());
		if(text==null || text==undefined) return;
		if($.trim(text)=="") {
			alert('Link cannot be empty!');
			vmenu_01.editLinkPart();
			return;
		}
		part.text(text);
		return false;
	},
	__appendLinkItem: function(_title, _href) {
		$(
		'<div class="iitem">'+
		'<div class="ititle" onclick="return vmenu_01.editLinkPart(this)" title="Click to edit: '+_title+'">'+_title+'</div>'+
		'<div class="ilink" onclick="return vmenu_01.editLinkPart(this)" title="Click to edit: '+_href+'">'+_href+'</div>'+
		'<div class="iactions">'+
			'<a href="#" class="moveup"  onclick="return vmenu_01.moveLinkUp(this)" title="Move Up"><img src="'+WIDGET_PATH+'vmenu_01/images/moveup.png"></a>'+
			'<a href="#" class="movedn" onclick="return vmenu_01.moveLinkDn(this)"><img src="'+WIDGET_PATH+'vmenu_01/images/movedn.png"></a>'+
			'<a href="#" class="remove" onclick="return vmenu_01.removeLink(this)" title="Delete Link"><img src="'+WIDGET_PATH+'vmenu_01/images/remove.png"></a>'+
		'</div>'+
		'<div style="float: none; clear: both;"></div>'+
		'</div>'
		).appendTo('.vmenu_items .iitems');
		vmenu_01.__normalizeItems();
	},
	__normalizeItems: function() {
		$('.vmenu_items .iitems .ieven').removeClass('ieven');
		$('.vmenu_items .iitems .iodd').removeClass('iodd');
		var even = true;
		$('.vmenu_items .iitems .iitem').each(function() {
			$(this).addClass(even?'ieven':'iodd');
			even = !even;
		});
		$('.vmenu_items .iitems a.moveup').css('visibility', 'visible');
		$('.vmenu_items .iitems a.movedn').css('visibility', 'visible');
		$('.vmenu_items .iitems a.remove').css('visibility', 'visible');
		$('.vmenu_items .iitems .iitem:first').find('a.moveup').css('visibility', 'hidden');
		$('.vmenu_items .iitems .iitem:last').find('a.movedn').css('visibility', 'hidden');
		$('.vmenu_items .iitems .ititle').unbind();
		$('.vmenu_items .iitems .ititle').mouseover(function() {
			$('.vmenu_items .iitems .edith').removeClass('edith');
			$(this).addClass('edith');
		});
		$('.vmenu_items .iitems .ititle').mouseout(function() {
			$(this).removeClass('edith');
		});
		$('.vmenu_items .iitems .ilink').unbind();
		$('.vmenu_items .iitems .ilink').mouseover(function() {
			$('.vmenu_items .iitems .edith').removeClass('edith');
			$(this).addClass('edith');
		});
		$('.vmenu_items .iitems .ilink').mouseout(function() {
			$(this).removeClass('edith');
		});
		
	}
	
};

