﻿(function($) {

	
	jQuery.fn.edit_linkList = function(options) {
		//try {
		
		options = jQuery.extend(
			{
			},
			options
		);

		var edge = $(this);

		if ($('ul.edit', edge).attr('linklist-loaded') == 'true') return;

		edge.prepend('<ul class="edit"></ul>');
		
		var ul = $('ul', edge);
		ul.attr('linklist-loaded', 'true');
		
		ul.after('<textarea name="' + options.clientID + '_value" style="width: 100%; height: 100px; display: none;" />');
		ul.after('<div class="add"><input type="text" class="add-text fresh" title="Link Title" value="Link Title" /><input type="text" class="add-url fresh" title="Link Url" value="Link Url" /><button class="add">add</button><button class="cancel">cancel</button><div class="line2"><input name="newWindow" type="checkbox" class="add-newwindow" /> New window?</div></div>');

		var output = $('textarea', edge);
		//output.show();
		
		
		var bind = function() {
			
			ul.empty();
			
			$.each(options.data.Links,
				function() {
					var nwindow = (this.NewWindow) ? 'checked="true"' : "";
					ul.append('<li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span><a href="#" class="delete" tilte="Delete this link.">X</a><input type="text" value="' + this.Text + '" title="Link Text" class="edit-text" /><input type="text" value="' + this.Url + '" class="edit-url" title="Link Url: ' + this.Url + '" /><input type="checkbox" ' + nwindow + ' class="edit-newwindow" /> New window?</li>');
				}
			);
			serialize();
		}

		var serialize = function() {
			output.text(JSON.stringify(options.data));
		}

		var update = function() {
			options.data.Links = [];
			
			$('li', ul).each(
				function() {
					var i = $(this);
					var text = $('.edit-text', i);
					var url = $('.edit-url', i);
					var newwindow = $('.edit-newwindow', i);
					options.data.Links.push({ Url: url.val(), Text: text.val(), IconUrl: "", NewWindow: newwindow.get(0).checked });
				}
			);
			
			serialize();
		}
		

		bind();
		
		
		$('.add input', edge).focus(
			function(event) {
				var i = $(this);
				if (i.hasClass('fresh')) {
					i.val('').removeClass('fresh');
				}
			}
		);
		
		$('button.add', edge).click(
			function(event) {
				event.preventDefault();
				var text = $('.add-text', edge);
				var url = $('.add-url', edge);
				var newwindow = $('.add-newwindow', edge);
				
				options.data.Links.push({ Url: url.val(), Text: text.val(), IconUrl: "", NewWindow:  newwindow.get(0).checked });
				
				url.val('');
				text.val('');
				newwindow.get(0).checked = false;
				
				bind();
			}
		);
		
		$('button.cancel', edge).click(
			function(event) {
				event.preventDefault();
				$('.add-text', edge).val('');
				$('.add-url', edge).val('');
			}
		);

		$('input', ul).live(
			'keyup',
			function() {
				update();
			}
		);

		$('a.delete', ul).live(
			'click',
			function(event) {
				event.preventDefault();
				if (!confirm('Are you sure?')) return;
				
				$(this).parents('li').remove();
				update();
			}
		);

		$('input.edit-newwindow', ul).live(
			'click',
			function(event) {
				update();
			}
		);
		
		
		ul.sortable({ update: function() { update(); } });

		//} catch (ex) {
		//	alert(ex.message);
		//}
		
	};
})(jQuery);