﻿;(function($) {
	jQuery.fn.legalStatus = function (settings) {
		var _defaultSettings = {
			listTemplate : "<ul {{if assignments}} class='assignments' {{/if}}>"
+ "	<li>"
+ "		<span class='InfoTitle'>${legal.L007EP.displayName}</span>:"
+ "		<span class='InfoTitle'>${legal.L007EP.text}</span>"
+ "	</li>"
+ "	<li>"
+ "		<span class='InfoTitle'>${legal.L008EP.displayName}</span>:"
+ "		<span class='InfoTitle'>${legal.L008EP.text}{{if legal.L501EP}} ${legal.L501EP.text}{{/if}}{{if legal.L502EP}} ${legal.L502EP.text}{{/if}}</span>"
+ "	</li>"
+ "	<li>"
+ "		<span class='InfoTitle'>Code Expl.</span>:"
+ "		<span class='InfoTitle'>${desc}</span>"
+ "	</li>"
+ "	{{if legal.L509EP}}"
+ "	<li>"
+ "		<span class='InfoTitle'>${legal.L509EP.displayName}</span>:"
+ "		<span class='InfoTitle'>${legal.L509EP.text}</span>"
+ "	</li>"
+ "	{{/if}}"
+ "	{{if legal.L525EP}}"
+ "	<li>"
+ "		<span class='InfoTitle'>${legal.L525EP.displayName}</span>:"
+ "		<span class='InfoTitle'>${legal.L525EP.text}</span>"
+ "	</li>"
+ "	{{/if}}"
+ "	{{if legal.L510EP}}"
+ "	<li>"
+ "		<span class='InfoTitle'>${legal.L510EP.displayName}</span>:"
+ "		<span class='InfoTitle'>${legal.L510EP.text}</span>"
+ "	</li>"
+ "	{{/if}}"
+ "</ul>",
			tableTrTemplate : "<tr {{if assignments}} class='assignments' {{/if}}>"
+ "	<td>"
+ "		<span class='InfoTitle'>${legal.L007EP.text}</span>"
+ "	</td>"
+ "	<td>"
+ "		<span class='InfoTitle'>${legal.L008EP.text}{{if legal.L501EP}} ${legal.L501EP.text}{{/if}}{{if legal.L502EP}} ${legal.L502EP.text}{{/if}}</span>"
+ "	</td>"
+ "	<td>"
+ "		<span class='InfoTitle'>${desc}</span>"
+ "	</td>"
+ "	"
+ "	<td>"
+ "		{{if legal.L509EP}}"
+ "			<span class='InfoTitle'>${legal.L509EP.text}</span>"
+ "		{{/if}}"
+ "	</td>"
+ "	<td>"
+ "		{{if legal.L525EP}}"
+ "		<span class='InfoTitle'>${legal.L525EP.text}</span>"
+ "		{{/if}}"
+ "	</td>"
+ "	<td>"
+ "		{{if legal.L510EP}}"
+ "		<span class='InfoTitle'>${legal.L510EP.text}</span>"
+ "		{{/if}}"
+ "	</td>"
+ "</tr>",

			tableHtmlTemplate : "<table class='ops-legal-status-table'>"
+ "	<colgroup>"
+ "		<col class='ops-legal-status-column-prsDate' />"
+ "		<col class='ops-legal-status-column-prsCode' />"
+ "		<col class='ops-legal-status-column-codeExpl' />"
+ "		<col class='ops-legal-status-column-newOwner' />"
+ "		<col class='ops-legal-status-column-effectiveDate' />"
+ "		<col class='ops-legal-status-column-furtherInformation' />"
+ "	</colgroup>"
+ "	<tr>"
+ "		<th>PRS Date</th>"
+ "		<th>PRS Code</th>"
+ "		<th>Code Expl.</th>"
+ "		<th>New Owner</th>"
+ "		<th>Effective Date</th>"
+ "		<th>Further Information</th>"
+ "	</tr>"
+ "</table>",

			toolbarHtmlTemplate : "<div><span class='ops-legal-status-listView'>+ List</span><span class='ops-legal-status-tableView'>+ Table</span><span class='ops-legal-status-assignments'>+ Assignments</span><span class='ops-legal-status-full'>+ Legal Status</span></div>",
			displayMode : "assignments",
			viewMode : "list",
			showToolbar : true,
			callback : function (display, view){}
		};

		var _settings = $.extend(_defaultSettings, settings);
		
		return this.each(
			function(){
				
				var target = this;
				if (_settings.showToolbar) $(target).append(_settings.toolbarHtmlTemplate);
				
				$(target).click(function(e){
					switch(e.target.className)
					{
						case "ops-legal-status-listView":
							change(target, "list");
							break;
						case "ops-legal-status-tableView":
							change(target, "table");
							break;
						case "ops-legal-status-assignments":
							toggle(target, "assignments");
							break;
						case "ops-legal-status-full":
							toggle(target ,"full");
							break;
					}
				});
				change(target, _settings.viewMode);

				function change(target, view)
				{
					_settings.viewMode = view;
					
					$(target).html("");
					if (_settings.showToolbar) $(target).append(_settings.toolbarHtmlTemplate);
					switch (view) {
						case "list":
							$.template("listTemplate", _settings.listTemplate);
							$("<div class='ops-legal-status-list'/>").append($.tmpl("listTemplate", _settings.legalStatus)).appendTo(target);
							break;
						case "table":
							$.template("tableTrTemplate", _settings.tableTrTemplate);
							$(_settings.tableHtmlTemplate).append($.tmpl("tableTrTemplate", _settings.legalStatus)).appendTo(target);
							break;
					}
					$(target).find(".ops-legal-status-listView")[view == "list" ? "hide" : "show"]();
					$(target).find(".ops-legal-status-tableView")[view == "table" ? "hide" : "show"]();
					toggle(target, _settings.displayMode);
				};

				function toggle(target, display) {
					_settings.displayMode = display;
					var empty = false;
					switch (_settings.viewMode) {
						case "list":
							var uls = $(target).find(".ops-legal-status-list").find("ul");
							uls.not(".assignments")[display == "assignments" ? "hide" : "show"]();
							if (uls.length == uls.filter(":hidden").length)
								empty = true;							
							break;
						case "table":
							var trs = $(target).find(".ops-legal-status-table").find("tr:not(:first)");
							trs.not(".assignments")[display == "assignments" ? "hide" : "show"]();
							if (trs.length == trs.filter(":hidden").length)
								empty = true;
							break;
					}
					$(target).find(".ops-legal-status-assignments")[display == "assignments" ? "hide" : "show"]();
					$(target).find(".ops-legal-status-full")[display == "full" ? "hide" : "show"]();
					if (empty) 
					{
						var textMode = _settings.viewMode == "list" ? $(target).find(".ops-legal-status-list") : $(target).find(".ops-legal-status-table");
						if (display == "assignments")
							textMode.text("No Assignments Data Found");
						else
							textMode.text("No Legal Status Data Found");
					}
					
					_settings.callback(_settings.displayMode, _settings.viewMode);
				};
		});
	};
})(jQuery);
