text:
/*!
 * Piwik - Web Analytics
 *
 * @link http://piwik.org
 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
 */

//-----------------------------------------------------------------------------
//								DataTable
//-----------------------------------------------------------------------------
//A list of all our DataTables
//Test if the object have already been initialized (multiple includes)
if(typeof dataTables == "undefined")
	var dataTables = {};

//DataTable constructor
function dataTable()
{
	this.param = {};
}

//Prototype of the DataTable object
dataTable.prototype =
{
	//initialisation function
	init: function(workingDivId, domElem)
	{
		if(typeof domElem == "undefined")
		{
			domElem = $('#'+workingDivId);
		}

		this.workingDivId = workingDivId;
		this.loadedSubDataTable = {};
		this.bindEventsAndApplyStyle(domElem);
		this.initialized = true;
	},

	//function triggered when user click on column sort
	onClickSort: function(domElem)
	{
		var self = this;
		var newColumnToSort = $(domElem).attr('id');
		// we lookup if the column to sort was already this one, if it is the case then we switch from desc <-> asc
		if(self.param.filter_sort_column == newColumnToSort)
		{
			// toggle the sorted order
			if(this.param.filter_sort_order == 'asc')
			{
				self.param.filter_sort_order = 'desc';
			}
			else
			{
				self.param.filter_sort_order = 'asc';
			}
		}
		self.param.filter_offset = 0;
		self.param.filter_sort_column = newColumnToSort;
		self.reloadAjaxDataTable();
	},

	setGraphedColumn: function( columnName )
	{
		this.param.columns = columnName;
	},

	//Reset DataTable filters (used before a reload or view change)
	resetAllFilters: function()
	{
		var self = this;
		var FiltersToRestore = new Array();
		filters = [
			'filter_column',
			'filter_pattern',
			'filter_column_recursive',
			'filter_pattern_recursive',
			'enable_filter_excludelowpop',
			'filter_offset',
			'filter_sort_column',
			'filter_sort_order',
			'disable_generic_filters',
			'columns',
			'flat',
			'include_aggregate_rows'
		];

		for(var key in filters)
		{
			var value = filters[key];
			FiltersToRestore[value] = self.param[value];
			delete self.param[value];
		}

		return FiltersToRestore;
	},

	//Restores the filters to the values given in the array in parameters
	restoreAllFilters: function(FiltersToRestore)
	{
		var self = this;
		for(key in FiltersToRestore)
		{
			self.param[key] = FiltersToRestore[key];
		}
	},

	//Translate string parameters to javascript builtins
	//'true' -> true, 'false' -> false
	//it simplifies condition tests in the code
	cleanParams: function()
	{
		var self = this;
		for(var key in self.param)
		{
			if(self.param[key] == 'true') self.param[key]=true;
			if(self.param[key] == 'false') self.param[key]=false;
		}
	},

	// Returns the standard Ajax request object used by the Jquery .ajax method
	buildAjaxRequest: function(callbackSuccess)
	{
		var self = this;

		//prepare the ajax request
		var ajaxRequest =
		{
			type: 'GET',
			url: 'index.php',
			dataType: 'html',
			async: true,
			error: piwikHelper.ajaxHandleError,		// Callback when the request fails
			success: callbackSuccess,	// Callback when the request succeeds
			data: new Object
		};

		//Extract the configuration from the datatable and pass it to the API
		for(var key in self.param)
		{
			if(typeof self.param[key] != "undefined")
				ajaxRequest.data[key] = self.param[key];
		}

		return ajaxRequest;
	},

	// Function called to trigger the AJAX request
	// The ajax request contains the function callback to trigger if the request is successful or failed
	// displayLoading = false When we don't want to display the Loading... DIV .loadingPiwik
	// for example when the script add a Loading... it self and doesn't want to display the generic Loading
	reloadAjaxDataTable: function(displayLoading, callbackSuccess)
	{
		var self = this;

		if (typeof displayLoading == "undefined")
		{
			displayLoading = true;
		}
		if (typeof callbackSuccess == "undefined")
		{
			callbackSuccess = self.dataTableLoaded;
		}

		if(displayLoading)
		{
			$('#'+self.workingDivId+' .loadingPiwik').last().css('display','block');
		}

		var container = $('#'+self.workingDivId+' .piwik-graph');
		piwikHelper.queueAjaxRequest($.ajax(self.buildAjaxRequest(function(response) {
			container.trigger('piwikDestroyPlot');
			container.off('piwikDestroyPlot');
			callbackSuccess(response);
		})));
	},

	// Function called when the AJAX request is successful
	// it looks for the ID of the response and replace the very same ID
	// in the current page with the AJAX response
	dataTableLoaded: function(response, workingDivId)
	{
		var content = $(response);

		var idToReplace = workingDivId || $(content).attr('id');
		var dataTableSel = $('#'+idToReplace);

		// keep the original list of related reports
		var oldReportsElem = $('.datatableRelatedReports', dataTableSel);
		$('.datatableRelatedReports', content).replaceWith(oldReportsElem);

		// if the current dataTable is located inside another datatable
		table = $(content).parents('table.dataTable');
		if(dataTableSel.parents('.dataTable').is('table'))
		{
			// we add class to the table so that we can give a different style to the subtable
			$(content).find('table.dataTable').addClass('subDataTable');
			$(content).find('.dataTableFeatures').addClass('subDataTable');

			//we force the initialisation of subdatatables
			dataTableSel.replaceWith(content);
		}
		else
		{
			dataTableSel.find('object').remove();
			dataTableSel.replaceWith(content);
		}

		piwikHelper.lazyScrollTo(content[0], 400);

		return content;
	},

	/* This method is triggered when a new DIV is loaded, which happens
		- at the first loading of the page
		- after any AJAX loading of a DataTable

	This method basically add features to the DataTable,
		- such as column sorting, searching in the rows, displaying Next / Previous links, etc.
		- add styles to the cells and rows (odd / even styles)
		- modify some rows to add images if a span img is found, or add a link if a span urlLink is found
			or truncate the labels when they are too big
		- bind new events onclick / hover / etc. to trigger AJAX requests,
			nice hovertip boxes for truncated cells
	*/
	bindEventsAndApplyStyle: function(domElem)
	{
		var self = this;
		self.cleanParams();
		self.handleSort(domElem);
		self.handleLimit(domElem);
		self.handleSearchBox(domElem);
		self.handleOffsetInformation(domElem);
		self.handleExportBox(domElem);
		self.applyCosmetics(domElem);
		self.handleSubDataTable(domElem);
		self.handleConfigurationBox(domElem);
		self.handleColumnDocumentation(domElem);
		self.handleReportDocumentation(domElem);
		self.handleRowActions(domElem);
		self.handleRelatedReports(domElem);
	},

	handleLimit: function(domElem)
	{
		var self = this;
		if( typeof self.parentId != "undefined" && self.parentId != '')
		{
			// no limit selector for subtables
			$('.limitSelection', domElem).remove();
			return;
		}

		$('.limitSelection', domElem).append('
'+self.param.filter_limit+'

');

		if(self.param.viewDataTable == 'table' || self.param.viewDataTable == 'tableAllColumns' || self.param.viewDataTable == 'tableGoals' || self.param.viewDataTable == 'ecommerceOrder' || self.param.viewDataTable == 'ecommerceAbandonedCart') {
			$('.limitSelection ul', domElem).hide();
			var numbers = [5, 10, 25, 50, 100, 250, 500];
			for(var i=0; i<numbers.length; i++) {
				$('.limitSelection ul', domElem).append('
'+numbers[i]+'
');
			}
			$('.limitSelection ul li:last', domElem).addClass('last');
			if(self.param.totalRows > 0) {
				var show = function() {
					$('.limitSelection ul', domElem).show();
					$('.limitSelection', domElem).addClass('visible');
					$(document).on('mouseup.limitSelection',function(e){
						if((!$(e.target).parents('.limitSelection').length || $(e.target).parents('.limitSelection') != $('.limitSelection', domElem)) && !$(e.target).is('.limitSelection')) {
							hide();
						}
					});
				}
				var hide = function() {
					$('.limitSelection ul', domElem).hide();
					$('.limitSelection', domElem).removeClass('visible');
					$(document).off('mouseup.limitSelection');
				}
				$('.limitSelection div', domElem).on('click', function(){
					$('.limitSelection', domElem).is('.visible') ? hide() : show();
				});
				$('.limitSelection ul li', domElem).on('click', function(event){
					var limit = parseInt($(event.target).text());
					hide();
					if(limit != self.param.filter_limit) {
						self.param.filter_limit = limit;
						self.param.filter_offset = 0;
						// Hack for Visitor Log to not pass the maxIdVisit parameter when limit is changed
						delete self.param.maxIdVisit;
						$('.limitSelection>div>span', domElem).text(self.param.filter_limit);
						self.reloadAjaxDataTable();
						self.notifyWidgetParametersChange(domElem, {'filter_limit': self.param.filter_limit});
					}
				});
			} else {
				$('.limitSelection', domElem).toggleClass('disabled');
			}
		} else {
			$('.limitSelection', domElem).hide();
		}
	},

	// if sorting the columns is enabled, when clicking on a column,
	// - if this column was already the one used for sorting, we revert the order desc<->asc
	// - we send the ajax request with the new sorting information
	handleSort: function(domElem)
	{
		var self = this;
		if( self.param.enable_sort )
		{
			$('.sortable', domElem).click(
				function()
				{
					$(this).off('click');
					self.onClickSort(this);
				}
			);

			if (self.param.filter_sort_column != '')
			{
				// are we in a subdatatable?
				var currentIsSubDataTable = $(domElem).parent().hasClass('cellSubDataTable');

				var prefixSortIcon = '';
				if(currentIsSubDataTable)
				{
					prefixSortIcon = '_subtable_';
				}
				var imageSortWidth = 16;
				var imageSortHeight = 16;
				// we change the style of the column currently used as sort column
				// adding an image and the class columnSorted to the TD
				$(".sortable#"+self.param.filter_sort_column+' #thDIV', domElem).parent()
					.addClass('columnSorted')
					.prepend('

');
			}
		}
	},

	//behaviour for the DataTable 'search box'
	handleSearchBox: function(domElem, callbackSuccess)
	{
		var self = this;

		var currentPattern = self.param.filter_pattern;
		if(typeof self.param.filter_pattern != "undefined"
			&& self.param.filter_pattern.length > 0)
		{
			currentPattern = self.param.filter_pattern;
		}
		else if(typeof self.param.filter_pattern_recursive != "undefined"
			&& self.param.filter_pattern_recursive.length > 0)
		{
			currentPattern = self.param.filter_pattern_recursive;
		}
		else
		{
			currentPattern = '';
		}
		currentPattern = piwikHelper.htmlDecode(currentPattern);

		$('.dataTableSearchPattern', domElem)
			.show()
			.each(function(){
				// when enter is pressed in the input field we submit the form
				$('#keyword', this)
					.on("keyup",
						function(e)
						{
							if(isEnterKey(e))
							{
								$(this).siblings(':submit').submit();
							}
						}
					)
					.val(currentPattern)
				;

				$(':submit', this).submit(
					function()
					{
						var keyword = $(this).siblings('#keyword').val();
						self.param.filter_offset = 0;

						if(self.param.search_recursive)
						{
							self.param.filter_column_recursive = 'label';
							self.param.filter_pattern_recursive = keyword;
						}
						else
						{
							self.param.filter_column = 'label';
							self.param.filter_pattern = keyword;
						}
						self.reloadAjaxDataTable(true, callbackSuccess);
					}
				);

				$(':submit', this)
					.click( function(){ $(this).submit(); })
				;

				// in the case there is a searched keyword we display the RESET image
				if(currentPattern)
				{
					var target = this;
					var clearImg = $('\
							\
							')
						.click( function() {
							$('#keyword', target).val('');
							$(':submit', target).submit();
						});
					$('#keyword',this).after(clearImg);

				}
			}
		);
	},

	//behaviour for '< prev' 'next >' links and page count
	handleOffsetInformation: function(domElem)
	{
		var self = this;

		$('.dataTablePages', domElem).each(
			function(){
				var offset = 1+Number(self.param.filter_offset);
				var offsetEnd = Number(self.param.filter_offset) + Number(self.param.filter_limit);
				var totalRows = Number(self.param.totalRows);
				offsetEndDisp = offsetEnd;

				if (self.param.keep_summary_row == 1) --totalRows;

				if(offsetEnd > totalRows) offsetEndDisp = totalRows;

				// only show this string if there is some rows in the datatable
				if(totalRows != 0)
				{
					var str = sprintf(_pk_translate('CoreHome_PageOf_js'),offset + '-' + offsetEndDisp,totalRows);
					$(this).text(str);
				}
			}
		);

		// Display the next link if the total Rows is greater than the current end row
		$('.dataTableNext', domElem)
			.each(function(){
				var offsetEnd = Number(self.param.filter_offset)
									+ Number(self.param.filter_limit);
				var totalRows = Number(self.param.totalRows);
				if (self.param.keep_summary_row == 1) --totalRows;
				if(offsetEnd < totalRows)
				{
					$(this).css('display','inline');
				}
			})
			// bind the click event to trigger the ajax request with the new offset
			.click(function(){
				$(this).off('click');
				self.param.filter_offset = Number(self.param.filter_offset) + Number(self.param.filter_limit);
				self.reloadAjaxDataTable();
			})
		;

		// Display the previous link if the current offset is not zero
		$('.dataTablePrevious', domElem)
			.each(function(){
					var offset = 1+Number(self.param.filter_offset);
					if(offset != 1)
					{
						$(this).css('display','inline');
					}
				}
			)
			// bind the click event to trigger the ajax request with the new offset
			// take care of the negative offset, we setup 0
			.click(
				function(){
					$(this).off('click');
					var offset = Number(self.param.filter_offset) - Number(self.param.filter_limit);
					if(offset < 0) { offset = 0; }
					self.param.filter_offset = offset;
					self.param.previous = 1;
					self.reloadAjaxDataTable();
				}
			);
	},

	// DataTable view box (simple table, all columns table, Goals table, pie graph, tag cloud, graph, ...)
	handleExportBox: function(domElem)
	{
		var self = this;
		if( self.param.idSubtable )
		{
			// no view box for subtables
			return;
		}

		// When the (+) image is hovered, the export buttons are displayed
		$('.dataTableFooterIconsShow', domElem)
			.show()
			.hover( function() {
					$(this).fadeOut('slow');
					$('.exportToFormatIcons', $(this).parent()).show('slow');
				}, function(){}
		);

		//footer arrow position element name
		self.jsViewDataTable=$('.dataTableFooterWrap', domElem).attr('var');

		$('.tableAllColumnsSwitch a', domElem)
			.show()
			.click(
				function(){
					// we only reset the limit filter, in case switch to table view from cloud view where limit is custom set to 30
					// this value is stored in config file General->datatable_default_limit but this is more an edge case so ok to set it to 10

					self.setActiveIcon(this, domElem);

					var viewDataTable = $(this).attr('format');
					self.param.viewDataTable = viewDataTable;

					//self.resetAllFilters();

					// when switching to display simple table, do not exclude low pop by default
					delete self.param.enable_filter_excludelowpop;
					delete self.param.filter_sort_column;
					delete self.param.filter_sort_order;
					delete columns;
					self.reloadAjaxDataTable();
					self.notifyWidgetParametersChange($(this), {viewDataTable: self.param.viewDataTable});
				}
			)

		//handle Graph View icons
		$('.tableGraphViews a', domElem)
			.click(function(){
				var viewDataTable = $(this).attr('format');
				self.setActiveIcon(this, domElem);

				var filters = self.resetAllFilters();
				self.param.flat = filters.flat;
				self.param.columns = filters.columns;

				self.param.viewDataTable = viewDataTable;
				self.reloadAjaxDataTable();
				self.notifyWidgetParametersChange($(this), {viewDataTable: self.param.viewDataTable});
			});

		//Graph icon Collapsed functionality
		self.currentGraphViewIcon=0;
		self.graphViewEnabled=0;
		self.graphViewStartingThreads=0;
		self.graphViewStartingKeep=false; //show keep flag

		//define collapsed icons
		$('.tableGraphCollapsed a', domElem)
			.each(function(i){
				if(self.jsViewDataTable==$(this).attr('var')){
					self.currentGraphViewIcon=i;
					self.graphViewEnabled=true;
				}
			})
			.each(function(i){
				if(self.currentGraphViewIcon!=i) $(this).hide();
			});

		$('.tableGraphCollapsed', domElem).hover(
			function(){
				//Graph icon onmouseover
				if(self.graphViewStartingThreads>0) return self.graphViewStartingKeep=true; //exit if animation is not finished
				$(this).addClass('tableIconsGroupActive');
				$('a', this).each(function(i){
					if(self.currentGraphViewIcon!=i || self.graphViewEnabled){
						self.graphViewStartingThreads++;
					}
					if(self.currentGraphViewIcon!=i){
						//show other icons
						$(this).show('fast', function(){self.graphViewStartingThreads--});
					}
					else if (self.graphViewEnabled){
						//set footer arrow position
						$('.dataTableFooterActiveItem', domElem).animate({left:$(this).parent().position().left+i*(this.offsetWidth+1)}, "fast", function(){self.graphViewStartingThreads--});
					}
				});
				self.exportToFormatHide(domElem);
			},
			function(){
				//Graph icon onmouseout
				if(self.graphViewStartingKeep) return self.graphViewStartingKeep=false; //exit while icons animate
				$('a', this).each(function(i){
					if(self.currentGraphViewIcon!=i){
						//hide other icons
						$(this).hide('fast');
					}
					else if (self.graphViewEnabled){
						//set footer arrow position
						$('.dataTableFooterActiveItem', domElem).animate({left:$(this).parent().position().left}, "fast");
					}
				});
				$(this).removeClass('tableIconsGroupActive');
			}
		);

		//handle exportToFormat icons
		self.exportToFormat=null;
		$('.exportToFormatIcons a', domElem).click(function(){
			self.exportToFormat={};
			self.exportToFormat.lastActiveIcon=self.setActiveIcon(this, domElem);
			self.exportToFormat.target=$(this).parent().siblings('.exportToFormatItems').show('fast');
			self.exportToFormat.obj=$(this).hide();
		});

		//close exportToFormat onClickOutside
		$('body').on('mouseup',function(e){
				if(self.exportToFormat){
					self.exportToFormatHide(domElem);
				}
		});

		$('.exportToFormatItems a', domElem)
			// prevent click jacking attacks by dynamically adding the token auth when the link is clicked
			.click( function() {
				$(this).attr('href', function() {
					return $(this).attr('href') +'&token_auth='+piwik.token_auth;
				})
			})
			.attr( 'href', function(){
				var format = $(this).attr('format');
				var method = $(this).attr('methodToCall');
				var filter_limit = $(this).attr('filter_limit');
				var segment = self.param.segment;
				var label = self.param.label;
				var idGoal = self.param.idGoal;
				var param_date = self.param.date;
				var date = $(this).attr('date');
				if(typeof date != 'undefined') {
					param_date = date;
				}
				var period = self.param.period;

				// RSS does not work for period=range
				if(format == 'RSS'
						&& self.param.period == 'range') {
					period = 'day';
				}
				var str = 'index.php?module=API'
						+'&method='+method
						+'&format='+format
						+'&idSite='+self.param.idSite
						+'&period='+period
						+'&date='+param_date
						+ ( typeof self.param.filter_pattern != "undefined" ? '&filter_pattern=' + self.param.filter_pattern : '')
						+ ( typeof self.param.filter_pattern_recursive != "undefined" ? '&filter_pattern_recursive=' + self.param.filter_pattern_recursive : '');

				if (typeof self.param.flat != "undefined" && self.param.flat) {
					str += '&flat=1';
					if (typeof self.param.include_aggregate_rows != "undefined" && self.param.include_aggregate_rows) {
						str += '&include_aggregate_rows=1';
					}
				} else {
					str += '&expanded=1';
				}
				if (format == 'CSV' || format == 'TSV' || format == 'RSS') {
					str += '&translateColumnNames=1&language='+piwik.language;
				}
				if(typeof segment != 'undefined') {
					str += '&segment='+segment;
				}
				// Export Goals specific reports
				if(typeof idGoal != 'undefined'
					&& idGoal != '-1') {
					str += '&idGoal='+idGoal;
				}
				if(filter_limit)
				{
					str += '&filter_limit='+filter_limit;
				}
				if(label)
				{
					str += '&label='+encodeURIComponent(label);
				}
				return str;
			}
		);

		// Initialize arrow footer to correct icon
		$('.dataTableFooterWrap a.tableIcon', domElem).each(function(){
			if(self.jsViewDataTable==$(this).attr('var')) self.setActiveIcon(this, domElem);
		});

	},

	exportToFormatHide: function(domElem, noAnimation)
	{
		var self=this;
		if(self.exportToFormat){
			self.setActiveIcon(self.exportToFormat.lastActiveIcon, domElem);
			var animationSpeed = noAnimation ? 0 : 'fast';
			self.exportToFormat.target.hide(animationSpeed);
			self.exportToFormat.obj.show(animationSpeed);
			self.exportToFormat=null;
		}
	},

	handleConfigurationBox: function(domElem, callbackSuccess)
	{
		var self = this;

		if (typeof self.parentId != "undefined" && self.parentId != '')
		{
			// no manipulation when loading subtables
			return;
		}

		if ((typeof self.numberOfSubtables == 'undefined' || self.numberOfSubtables == 0)
			&& (typeof self.param.flat == 'undefined' || self.param.flat != 1))
		{
			// if there are no subtables, remove the flatten action
			$('.dataTableFlatten', domElem).parent().remove();
		}

		var ul = $('div.tableConfiguration ul', domElem);

		function hideConfigurationIcon()
		{
			// hide the icon when there are no actions available or we're not in a table view
			$('div.tableConfiguration', domElem).remove();
		}

		if (ul.find('li').size() == 0)
		{
			hideConfigurationIcon();
			return;
		}

		var icon = $('a.tableConfigurationIcon', domElem);
		icon.click(function() { return false; });
		var iconHighlighted = false;

		ul.find('li:first').addClass('first');
		ul.find('li:last').addClass('last');
		ul.prepend('

');

		// open and close the box
		var open = function() {
			self.exportToFormatHide(domElem, true);
			ul.addClass('open');
			icon.css('opacity', 1);
		};
		var close = function() {
			ul.removeClass('open');
			icon.css('opacity', icon.hasClass('highlighted') ? .85 : .6);
		};
		$('div.tableConfiguration', domElem).hover(open, close);

		var generateClickCallback = function(paramName, callbackAfterToggle)
		{
			return function()
			{
				close();
				self.param[paramName] = 1 - self.param[paramName];
				self.param.filter_offset = 0;
				if (callbackAfterToggle) callbackAfterToggle();
				self.reloadAjaxDataTable(true, callbackSuccess);
                var data = {};
                data[paramName]    = self.param[paramName];
                self.notifyWidgetParametersChange(domElem, data);
			};
		};

		var getText = function(text, addDefault)
		{
			text = _pk_translate(text);
			if (text.indexOf('%s') > 0)
			{
				text = text.replace('%s', '
» ');
				if (addDefault) text += ' (' + _pk_translate('CoreHome_Default_js') + ')';
				text += '';
			}
			return text;
		};

		var setText = function(el, paramName, textA, textB)
		{
			if (typeof self.param[paramName] != 'undefined' && self.param[paramName] == 1)
			{
				$(el).html(getText(textA, true));
				iconHighlighted = true;
			}
			else
			{
				self.param[paramName] = 0;
				$(el).html(getText(textB));
			}
		};

		// handle low population
		$('.dataTableExcludeLowPopulation', domElem)
			.each(function()
			{
				// Set the text, either "Exclude low pop" or "Include all"
				if(typeof self.param.enable_filter_excludelowpop == 'undefined')
				{
					self.param.enable_filter_excludelowpop = 0;
				}
				if(Number(self.param.enable_filter_excludelowpop) != 0)
				{
					string = getText('CoreHome_IncludeRowsWithLowPopulation_js', true);
					self.param.enable_filter_excludelowpop = 1;
					iconHighlighted = true;
				}
				else
				{
					string = getText('CoreHome_ExcludeRowsWithLowPopulation_js');
					self.param.enable_filter_excludelowpop = 0;
				}
				$(this).html(string);
			})
			.click( generateClickCallback('enable_filter_excludelowpop') );

		// handle flatten
		$('.dataTableFlatten', domElem)
			.each( function() {
				setText(this, 'flat', 'CoreHome_UnFlattenDataTable_js', 'CoreHome_FlattenDataTable_js');
			})
			.click( generateClickCallback('flat') );

		$('.dataTableIncludeAggregateRows', domElem)
			.each( function() {
				setText(this, 'include_aggregate_rows', 'CoreHome_DataTableExcludeAggregateRows_js',
					'CoreHome_DataTableIncludeAggregateRows_js');
			})
			.click( generateClickCallback('include_aggregate_rows', function() {
				if (self.param.include_aggregate_rows == 1)
				{
					// when including aggregate rows is enabled, we remove the sorting
					// this way, the aggregate rows appear directly before their children
					self.param.filter_sort_column = '';
                    self.notifyWidgetParametersChange(domElem, {filter_sort_column: ''});
				}
			}));

		// handle highlighted icon
		if (iconHighlighted)
		{
			icon.addClass('highlighted');
		}
		close();

		if(	!iconHighlighted
			&& !(self.param.viewDataTable == 'table'
				|| self.param.viewDataTable == 'tableAllColumns'
				|| self.param.viewDataTable == 'tableGoals'))
		{
			hideConfigurationIcon();
			return;
		}

		// fix a css bug of ie7
		if (document.all && !window.opera && window.XMLHttpRequest)
		{
			window.setTimeout(function() {
				open();
				var width = 0;
				ul.find('li').each(function() {
					width = Math.max(width, $(this).width());
				}).width(width);
				close();
			}, 400);
		}
	},

	//footer arrow position handler
	setActiveIcon: function(obj, domElem)
	{
		if(!obj) return false;

		var lastActiveIcon=this.lastActiveIcon;

		if(lastActiveIcon){
			$(lastActiveIcon).removeClass("activeIcon");
		}

		$(obj).addClass("activeIcon");
		this.lastActiveIcon=obj;

		var target=$('.dataTableFooterActiveItem', domElem);

		//set arrow position with delay (for ajax widget loading)
		setTimeout(function(){
			target.css({left:$(obj).position().left});
		},100);

		return lastActiveIcon;

	},

	// Tell parent widget that the parameters of this table was updated,
	notifyWidgetParametersChange: function(domWidget, parameters)
	{
        var widget = $(domWidget).parents('[widgetId]');
        // trigger setParameters event on base element
        widget.trigger('setParameters', parameters);
	},

	truncate: function(domElemToTruncate, truncationOffset)
	{
		var self = this;

		domElemToTruncate = $(domElemToTruncate);

		if (typeof domElemToTruncate.data('originalText') != 'undefined')
		{
			// truncate only once. otherwise, the tooltip will show the truncated text as well.
			return;
		}

		// make the original text (before truncation) available for others.
		// the .truncate plugins adds a title to the dom element but the .tooltip
		// plugin removes that again.
		domElemToTruncate.data('originalText', domElemToTruncate.text());

		if (typeof truncationOffset == 'undefined')
		{
			truncationOffset = 0;
		}
		var truncationLimit = 50;

		if (typeof self.param.idSubtable == 'undefined'
			&& self.param.viewDataTable == 'tableAllColumns')
		{
			// when showing all columns in a subtable, space is restricted
			truncationLimit = 25;
		}

		truncationLimit += truncationOffset;
		domElemToTruncate.truncate(truncationLimit);

		$('.truncated', domElemToTruncate).tooltip();
	},

	//Apply some miscelleaneous style to the DataTable
	applyCosmetics: function(domElem)
	{
		var self = this;

		// Add some styles on the cells even/odd
		// label (first column of a data row) or not
		$("th:first-child", domElem).addClass('label');
		$("td:first-child:odd", domElem).addClass('label labeleven');
		$("td:first-child:even", domElem).addClass('label labelodd');
		$("tr:odd td", domElem).slice(1).addClass('columnodd');
		$("tr:even td", domElem).slice(1).addClass('columneven');

		$('td span.label', domElem).each(function(){ self.truncate($(this)); } );

	},

 	//behaviour for 'nested DataTable' (DataTable loaded on a click on a row)
 	handleSubDataTable: function(domElem)
	{
		var self = this;
		// When the TR has a subDataTable class it means that this row has a link to a subDataTable
		this.numberOfSubtables = $('tr.subDataTable', domElem)
			.click(
			function()
			{
				// get the idSubTable
				var idSubTable = $(this).attr('id');
				var divIdToReplaceWithSubTable = 'subDataTable_'+idSubTable;

				// if the subDataTable is not already loaded
				if (typeof self.loadedSubDataTable[divIdToReplaceWithSubTable] == "undefined")
				{
					var numberOfColumns = $(this).children().length;

					// at the end of the query it will replace the ID matching the new HTML table #ID
					// we need to create this ID first
					$(this).after(
					'
'+
						''+
							'
'+
								''+ _pk_translate('General_Loading_js') +''+
							'
'+
						'	'+
					'
'
					);

					var savedActionVariable = self.param.action;

					// reset all the filters from the Parent table
					var filtersToRestore = self.resetAllFilters();
					// do not ignore the exclude low population click
					self.param.enable_filter_excludelowpop = filtersToRestore.enable_filter_excludelowpop;

					self.param.idSubtable = idSubTable;
					self.param.action = self.param.controllerActionCalledWhenRequestSubTable;
					self.reloadAjaxDataTable(false);

					self.param.action = savedActionVariable;
					delete self.param.idSubtable;
					self.restoreAllFilters(filtersToRestore);

					self.loadedSubDataTable[divIdToReplaceWithSubTable] = true;

					$(this).next().toggle();

					// when "loading..." is displayed, hide actions
					// repositioning after loading is not easily possible
					$(this).find('div.dataTableRowActions').hide();
				}

				$(this).next().toggle();
				self.repositionRowActions($(this));
			}
		).size();
	},

	// tooltip for column documentation
 	handleColumnDocumentation: function(domElem)
	{
		if ($('#dashboard').size() > 0) {
			// don't display column documentation in dashboard
			// it causes trouble in full screen view
			return;
		}

		var self = this;

		$('th:has(.columnDocumentation)', domElem).each(function()
		{
			var th = $(this);
			var tooltip = th.find('.columnDocumentation');

			tooltip.next().hover(function()
			{
				var left = (-1 * tooltip.outerWidth() / 2) + th.width() / 2;
				var top = -1 * (tooltip.outerHeight() + 10);

				if (th.next().size() == 0)
				{
					left = (-1 * tooltip.outerWidth()) + th.width() +
					parseInt(th.css('padding-right'), 10);
				}

				tooltip.css({
					marginLeft: left,
					marginTop: top
				});

				tooltip.stop(true, true).fadeIn(250);
			},
			function()
			{
				$(this).prev().stop(true, true).fadeOut(400);
			});
		});
	},

	// documentation for report
	handleReportDocumentation: function(domElem)
	{
		// don't display report documentation in dashboard
		if ($('#dashboard').size() > 0
				// or in Widgetize screen
				|| $('.widgetContent').size() > 0
				// or in Widget export
				|| $('.widget').size() > 0
				) {
			return;
		}
		domElem = $(domElem);
		var doc = domElem.find('.reportDocumentation');

		var h2 = this._findReportHeader(domElem);
		if (doc.size() == 0 || doc.children().size() == 0) // if we can't find the element, or the element is empty
		{
			if (h2 && h2.size() > 0)
			{
				h2.find('a.reportDocumentationIcon').addClass('hidden');
			}
			return;
		}

		var icon = $('');
		var docShown = false;

		icon.click(function()
		{
			if (docShown)
			{
				doc.stop(true, true).fadeOut(250);
			}
			else
			{
				var widthOrientation = domElem.find('table, canvas, object').eq(0);
				if (widthOrientation.size() > 0)
				{
					var width = Math.min(widthOrientation.width(), doc.parent().innerWidth());
					doc.css('width', (width - 2) + 'px');
				}
				doc.stop(true, true).fadeIn(250);
			}
			docShown = !docShown;
			return false;
		});

		icon.addClass('reportDocumentationIcon');
		if (h2 && h2.size() > 0)
		{
			// handle previously added icon
			var existingIcon = h2.find('a.reportDocumentationIcon');
			if (existingIcon.size() > 0)
			{
				existingIcon.replaceWith(icon);
			}
			else
			{
				// add icon
				h2.append('   ');
				h2.append(icon);

				h2.hover(function()
				{
					$(this).find('a.reportDocumentationIcon').show();
				},
				function()
				{
					$(this).find('a.reportDocumentationIcon').hide();
				})
				.click(
				function()
				{
					$(this).find('a.reportDocumentationIcon').click();
				})
				.css('cursor', 'pointer');
			}
		}
		else
		{
			//domElem.prepend(icon);
		}
	},

	handleRowActions: function(domElem)
	{
		this.doHandleRowActions(domElem.find('table > tbody > tr'));
	},

	handleRelatedReports: function(domElem)
	{
		var self = this,
			hideShowRelatedReports = function(thisReport)
			{
				$('span', $(thisReport).parent().parent()).each(function () {
					if (thisReport == this)
						$(this).hide();
					else
						$(this).show();
				});
			},
			// 'this' report must be hidden in datatable output
			thisReport = $('.datatableRelatedReports span:hidden', domElem)[0];

		hideShowRelatedReports(thisReport);
		$('.datatableRelatedReports span', domElem).each(function() {
			var clicked = this;
			$(this).unbind('click').click(function(e) {
				var url = $(this).attr('href');

				// if this url is also the url of a menu item, better to click that menu item instead of
				// doing AJAX request
				var menuItem = null;
				$("#root>ul.nav a").each(function () {
					if ($(this).attr('name') == url)
					{
						menuItem = this;
						return false
					}
				});

				if (menuItem)
				{
					$(menuItem).click();
					return;
				}

				// modify parameters
				self.resetAllFilters();
				var newParams = broadcast.getValuesFromUrl(url);
				for (var key in newParams)
				{
					self.param[key] = newParams[key];
				}

				// do ajax request
				self.reloadAjaxDataTable(true, function(newReport) {
					var newDomElem = self.dataTableLoaded(newReport, self.workingDivId);
					hideShowRelatedReports(clicked);

					// update header, if we can find it
					var h2 = self._findReportHeader(newDomElem);
					if (h2)
						h2.text($(clicked).text());
				});
			});
		});
	},

	// also used in action data table
	doHandleRowActions: function(trs)
	{
		var self = this;
		var actionInstances = {};

		trs.each(function()
		{
			var tr = $(this);
			var actions = tr.find('div.dataTableRowActions');
			if (actions.size() == 0)
			{
				return true;
			}

			// move before image in actions data table
			if (actions.prev().size() > 0)
			{
				actions.prev().before(actions);
			}

			// show actions on hover
			tr.hover(function()
			{
				self.repositionRowActions($(this));
				actions.show();
			},
			function()
			{
				actions.hide();
			});

			// handle the individual actions
			actions.find('> a').each(function()
			{
				var a = $(this);
				var className = a.attr('class');
				if (className.substring(0, 6) == 'action')
				{
					var actionName = className.substring(6, className.length);
					if (typeof actionInstances[actionName] == "undefined")
					{
						actionInstances[actionName] = DataTable_RowActions_Factory(actionName, self);
					}
					var action = actionInstances[actionName];
					action.initTr(tr);

					a.click(function(e)
					{
						$(this).blur();
						actions.hide();
						action.trigger(tr, e);
						return false;
					});
				}
			});
		});
	},

	repositionRowActions: function(tr) {
		var td = tr.find('td:first');
		var actions = tr.find('div.dataTableRowActions');
		actions.height(tr.innerHeight() - 2)
			.css('marginLeft', (td.width() + 5 - actions.outerWidth())+'px');
	},

	_findReportHeader: function(domElem) {
		var h2 = false;
		if (domElem.prev().is('h2'))
		{
			h2 = domElem.prev();
		}
		else if (this.param.viewDataTable == 'tableGoals')
		{
			h2 = $('#titleGoalsByDimension');
		}
		else if( $('h2', domElem))
		{
			h2 = $('h2', domElem);
		}
		return h2;
	}
};

//-----------------------------------------------------------------------------
//								Action Data Table
//-----------------------------------------------------------------------------

//inheritance declaration
//actionDataTable is a child of dataTable
actionDataTable.prototype = new dataTable;
actionDataTable.prototype.constructor = actionDataTable;

//actionDataTable constructor
function actionDataTable()
{
	dataTable.call(this);
	this.parentAttributeParent = '';
	this.parentId = '';
	this.disabledRowDom = {};	//to handle double click on '+' row
}

//Prototype of the actionDataTable object
actionDataTable.prototype =
{
	//method inheritance
	cleanParams: dataTable.prototype.cleanParams,
	reloadAjaxDataTable: dataTable.prototype.reloadAjaxDataTable,
	buildAjaxRequest: dataTable.prototype.buildAjaxRequest,
	handleConfigurationBox: dataTable.prototype.handleConfigurationBox,
	handleSearchBox: dataTable.prototype.handleSearchBox,
	handleExportBox: dataTable.prototype.handleExportBox,
	handleSort: dataTable.prototype.handleSort,
	handleColumnDocumentation: dataTable.prototype.handleColumnDocumentation,
	handleReportDocumentation: dataTable.prototype.handleReportDocumentation,
	doHandleRowActions: dataTable.prototype.doHandleRowActions,
	repositionRowActions: dataTable.prototype.repositionRowActions,
	onClickSort: dataTable.prototype.onClickSort,
	truncate: dataTable.prototype.truncate,
	handleOffsetInformation: dataTable.prototype.handleOffsetInformation,
	setActiveIcon: dataTable.prototype.setActiveIcon,
	resetAllFilters: dataTable.prototype.resetAllFilters,
	restoreAllFilters: dataTable.prototype.restoreAllFilters,
	exportToFormatHide: dataTable.prototype.exportToFormatHide,
	handleLimit: dataTable.prototype.handleLimit,
	notifyWidgetParametersChange: dataTable.prototype.notifyWidgetParametersChange,
	handleRelatedReports: dataTable.prototype.handleRelatedReports,
	_findReportHeader: dataTable.prototype._findReportHeader,

	//initialisation of the actionDataTable
	init: function(workingDivId, domElem)
	{
		if(typeof domElem == "undefined"
			|| domElem.length == 0 ) // needed for actions subtables where truncating was not working otherwise
		{
			domElem = $('#'+workingDivId);
		}
		this.workingDivId = workingDivId;
		this.bindEventsAndApplyStyle(domElem);
		this.initialized = true;
	},

	//see dataTable::bindEventsAndApplyStyle
	bindEventsAndApplyStyle: function(domElem)
	{
		var self = this;

		self.cleanParams();

		// we dont display the link on the row with subDataTable when we are already
		// printing all the subTables (case of recursive search when the content is
		// including recursively all the subtables
		if(!self.param.filter_pattern_recursive)
		{
			self.numberOfSubtables = $('tr.subActionsDataTable.rowToProcess').click( function() {
					self.onClickActionSubDataTable(this)
			}).size();
		}

		self.applyCosmetics(domElem);
		self.handleRowActions(domElem);
		self.handleLimit(domElem);
		self.handleExportBox(domElem);
		self.handleSort(domElem);
		self.handleOffsetInformation(domElem);
		if( self.workingDivId != undefined)
		{
			self.handleSearchBox(domElem, self.dataTableLoaded );
			self.handleConfigurationBox(domElem, self.dataTableLoaded );
		}

		self.handleColumnDocumentation(domElem);
		self.handleReportDocumentation(domElem);
		self.handleRelatedReports(domElem);
	},

	//see dataTable::applyCosmetics
	applyCosmetics: function(domElem)
	{
		var self = this;

		$('tr.subActionsDataTable.rowToProcess')
		.css('font-weight','bold');

		$("th:first-child", domElem).addClass('label');
		$('td span.label', domElem).each(function(){ self.truncate($(this)); } );
		var imagePlusMinusWidth = 12;
		var imagePlusMinusHeight = 12;
		$('tr.subActionsDataTable.rowToProcess td:first-child')
				.each( function(){
						$(this).prepend('');
						if(self.param.filter_pattern_recursive)
						{
							setImageMinus(this);
						}
						else
						{
							setImagePlus(this);
						}
					});

		$('tr.rowToProcess')
			.each( function() {
				// we add the CSS style depending on the level of the current loading category
				// we look at the style of the parent row
				var style = $(this).prev().attr('class');
				var currentStyle = $(this).attr('class');

				if( (typeof currentStyle != 'undefined')
					&& currentStyle.indexOf('level') >= 0 )
				{
				}
				else
				{
					var level = getNextLevelFromClass( style );
					$(this).addClass('level'+ level);
				}

				// we add an attribute parent that contains the ID of all the parent categories
				// this ID is used when collapsing a parent row, it searches for all children rows
				// which 'parent' attribute's value contains the collapsed row ID
				$(this).prop('parent', function(){
					return self.parentAttributeParent + ' ' + self.parentId;
					}
				);

				// Add some styles on the cells even/odd
				// label (first column of a data row) or not
				$("td:first-child:odd", this).addClass('label labeleven');
				$("td:first-child:even", this).addClass('label labelodd');
			});
	},

	handleRowActions: function(domElem)
	{
		var rowsToProcess = $('tr.rowToProcess').removeClass('rowToProcess');
		this.doHandleRowActions(rowsToProcess);
	},

	// Called when the user click on an actionDataTable row
	onClickActionSubDataTable: function(domElem)
	{
		var self = this;

		// get the idSubTable
		var idSubTable = $(domElem).attr('id');

		var divIdToReplaceWithSubTable = 'subDataTable_'+idSubTable;

		var NextStyle = $(domElem).next().attr('class');
		var CurrentStyle = $(domElem).attr('class');

		var currentRowLevel = getLevelFromClass(CurrentStyle);
		var nextRowLevel = getLevelFromClass(NextStyle);

		// if the row has not been clicked
		// which is the same as saying that the next row level is equal or less than the current row
		// because when we click a row the level of the next rows is higher (level2 row gives level3 rows)
		if(currentRowLevel >= nextRowLevel)
		{
			//unbind click to avoid double click problem
			$(domElem).off('click');
			self.disabledRowDom = $(domElem);

			var numberOfColumns = $(domElem).children().length;
			$(domElem).after( '\

\
				\
						 Loading...\
					\

\
			');
			var savedActionVariable = self.param.action;

			// reset all the filters from the Parent table
			var filtersToRestore = self.resetAllFilters();

			// Do not reset the sorting filters that must be applied to sub tables
			this.param['filter_sort_column'] = filtersToRestore['filter_sort_column'];
			this.param['filter_sort_order'] = filtersToRestore['filter_sort_order'];
			this.param['enable_filter_excludelowpop'] = filtersToRestore['enable_filter_excludelowpop'];

			self.param.idSubtable = idSubTable;
			self.param.action = self.param.controllerActionCalledWhenRequestSubTable;

			self.reloadAjaxDataTable(false, function(resp){
				self.actionsSubDataTableLoaded(resp);
				self.repositionRowActions($(domElem));
			});
			self.param.action = savedActionVariable;

			self.restoreAllFilters(filtersToRestore);

			delete self.param.idSubtable;
		}
		// else we toggle all these rows
		else
		{
			var plusDetected = $('td img.plusMinus', domElem).attr('src').indexOf('plus') >= 0;

			$(domElem).siblings().each( function(){
				var parents = $(this).prop('parent');
				if(parents)
				{
					if(parents.indexOf(idSubTable) >= 0
						|| parents.indexOf('subDataTable_'+idSubTable) >= 0)
					{
						if(plusDetected)
						{
							$(this).css('display','');

							//unroll everything and display '-' sign
							//if the row is already opened
							var NextStyle = $(this).next().attr('class');
							var CurrentStyle = $(this).attr('class');

							var currentRowLevel = getLevelFromClass(CurrentStyle);
							var nextRowLevel = getLevelFromClass(NextStyle);

							if(currentRowLevel < nextRowLevel)
								setImageMinus(this);
						}
						else
						{
							$(this).css('display','none');
						}
						self.repositionRowActions($(domElem));
					}
				}
			});
		}

		// toggle the +/- image
		var plusDetected = $('td img.plusMinus', domElem).attr('src').indexOf('plus') >= 0;
		if(plusDetected)
		{
			setImageMinus(domElem);
		}
		else
		{
			setImagePlus(domElem);
		}
	},

	//called when the full table actions is loaded
	dataTableLoaded: function(response, workingDivId)
	{
		var content = $(response);
		var idToReplace = workingDivId || $(content).attr('id');

		//reset parents id
		self.parentAttributeParent = '';
		self.parentId = '';

		var dataTableSel = $('#'+idToReplace);

		// keep the original list of related reports
		var oldReportsElem = $('.datatableRelatedReports', dataTableSel);
		$('.datatableRelatedReports', content).replaceWith(oldReportsElem);

		dataTableSel.replaceWith(content);
		piwikHelper.lazyScrollTo(content[0], 400);

		return content;
	},

	// Called when a set of rows for a category of actions is loaded
	actionsSubDataTableLoaded: function(response)
	{
		var self = this;
		var idToReplace = $(response).attr('id');

		// remove the first row of results which is only used to get the Id
		var response = $(response).filter('tr').slice(1).addClass('rowToProcess');
		self.parentAttributeParent = $('tr#'+idToReplace).prev().prop('parent');
		self.parentId = idToReplace;

		$('tr#'+idToReplace).after( response ).remove();

		var re = /subDataTable_(\d+)/;
		ok = re.exec(self.parentId);
		if(ok)
		{
			self.parentId = ok[1];
		}

		// we execute the bindDataTableEvent function for the new DIV
		self.init(self.workingDivId, $('#'+idToReplace));

		//bind back the click event (disabled to avoid double-click problem)
		self.disabledRowDom.click(
			function()
			{
				self.onClickActionSubDataTable(this)
			});
	}
};

//helper function for actionDataTable
function getLevelFromClass( style)
{
	if (!style || typeof style == "undefined") return 0;

	var currentLevelIndex = style.indexOf('level');
	var currentLevel = 0;
	if( currentLevelIndex >= 0)
	{
		currentLevel = Number(style.substr(currentLevelIndex+5,1));
	}
	return currentLevel;
}

//helper function for actionDataTable
function getNextLevelFromClass( style )
{
	if (!style || typeof style == "undefined") return 0;
	currentLevel = getLevelFromClass(style);
	newLevel = currentLevel;
	// if this is not a row to process so
	if(  style.indexOf('rowToProcess') < 0 )
	{
		newLevel = currentLevel + 1;
	}
	return newLevel;
}

//helper function for actionDataTable
function setImageMinus( domElem )
{
	$('img.plusMinus',domElem).attr('src', 'themes/default/images/minus.png');
}

//helper function for actionDataTable
function setImagePlus( domElem )
{
	$('img.plusMinus',domElem).attr('src', 'themes/default/images/plus.png');
}


text:
Benefits and Drawback of S Corporation
Every organization structure has its benefits and drawback when taxation is taken into consideration. Taxation is not treated similarly in sole proprietorship, partnership and in S corporations. In sole proprietorships and partnerships, tax is not only borne by the firm but also by the owners since there are not distinct from the business (Wahab & Holland, 2012).. However, in S corporation, there is limited liability which shows that the company and the owner are very distinct entities. Undoubtedly, S corporation has benefits in taxation as it enjoys advantages over sole proprietors, partnership organizations, and C corporations. For instance, in the other businesses, there is double taxation like in the case of a sole proprietorship the owner taxation encompasses all the incomes (Wahab & Holland, 2012).. Therefore, I would propose to Bob that he adopts an S corporation as it is the safest form of entity when it comes to operations, taxation and liability.
If this sample essay on"Benefits and Drawback of S Corporation" doesn't help,
Benefit of an S corporation over other businesses
Cash basis vs. Accrual basis
Bob is recommended to use S corporation. There is no inventory requirements under this form of business thus, it makes it easier and suitable for him to use cash accounting system rather than the accrual accounting system which is mostly used by sole proprietorship and other forms of business where inventory is kept.
Under cash accounting system, income is taxable once only when it has been received unlike in accrual accounting system. However, certain recent changes have been made in tax regulation and law which has resulted in the formation of the Small Business Job Protection Act of 1996 that has made the S corporation eye-catching for the entrepreneurs and business owners (Schenk, 2014).
Cost to prepare returns
Although it is recommended for Bob to adopt S Corporation, it should be noted that the cost related to preparation and filling returns is relatively lower compared to the other forms of business such as C corporations. This is due to the statutory requirement that requires companies to prepare detailed financial statements at the end of each trading period whereas in C corporations, returns may be filed yearly, semi annually or quarterly, thus, making it somehow expensive for C corporations.
Tax benefits and limited liability protection
In S corporations, there are tax benefits as well as limited liability protection. However, there are some disadvantages associated with S corporations. For instance, they are numerous requirements that must be adhered to which results to higher tax and legal service costs.
They are required to submit the articles of association and memorandum of association. They ought not to commence business unless they obtain a certificate from the registrar of companies. It is also mandatory to hold regular shareholders meetings mostly annually (Graham, Raedy & Shackelford, 2012)
The company employees and shareholders enjoy full limited liability protection. Their personal assets cannot be used to pay for the losses of the corporations. This is what is referred to as limited liability.
Tax effects
The proprietors of C corporation experience double tax due to the payment of federal tax on income and taxes imposed on dividends. Conversely, in an S corporation taxation is only once that is on the revenues of the organization. Apparently, the S corporations have simplified tax as they do not have to remit tax in a company level. Undoubtedly, this provides for a reduced amount of money paid for the taxes on the business earnings. In a partnership and a sole ownership, the proprietors pay self-employment tax, which is not payable to an S corporation. For instance, a case can arise where a proprietor is also a worker in an S corporation. Without a doubt, in such a scenario the shareholder may remit the self-employment salary as earnings arising from the company. Basing on the fact that the proprietor is technically a worker in the corporation, self-employment taxes will not be obligatory. Apparently, the individual will only pay the income tax as the salary, and the dividend will not be subjected to taxation (International Business Publications, USA, 2008).
Taxation preparation varies with the consulting firms, the region, and the type of taxes to be computed the expenditures to be incurred in preparing of are a constituent of various variables. Nonetheless, according to US Tax Centre, (2015) preparation of taxes in an S corporation are not cumbersome as the most crucial item to factor is the income statements. The average cost of computing taxes for the partnership are higher than the S corporation as mean cost of filing form 1040 per individual is $218. The average cost of filing a form 1120s for the S corporation is $761 which is less than filling form 1120 for Sub C, which amounts to $806. Undeniably, the expenditures incurred in taxation preparation in S corporation are affordable.
Corporations and limited liability companies all enjoy protection on the individuals properties. However, the liability of partners in a partnership and proprietors in a sole ownership are not limited. The owners in this organization may lose their personal property in cases of liquidation or when creditors owe the organization amounts which is more than the organization assets. The limited companies and S corporations are in most cases suitable for an organization which is not large. Unequivocally, with an S corporation, it is easier to expand the business with time and acquiring new proprietors is easy. The earnings from S corporation must pass through the proprietors who in turn remit taxes on their individual earnings. As the owner of the Business Bob will also be a worker of the organization thereby the medical care taxes will be paid from compensation receipts rather than the amount arising from distribution. The taxes on social security will also have the same criteria for medical care (IRS, 2015).
Raising capital in an S corporation is easier than a sole proprietorship because the credibility of the organization by the stakeholders is high. In a sole proprietorship, the credit worthiness is determined by taking into account the owners assets. An S corporation is allowed to use cash accounting method by IRS in cases only when the company does not have inventory. The method used has a significant influence on the tax payable. The S corporation can use either of the methods, but the cash method is more suitable as cash is recognized when earned and not when it is received. The payment of $180 000 and $70,000 will reduce the taxable income as the tax base will reduce. The business for the first few years may opt to use the cash basis and switch to the accrual method later as indicated in the IRS schedule 446b (James , 2011).
Percentage of ownership
Mandy Jones can be considered as an employee who can also translate to a shareholder. As an owner, she will have shares which are less than that of Bob making her a minority shareholder. The salary received from the business will be deemed as income from the business and will be taxed on here thereby the business will not incur self-employment tax. The S corporation will be organized in a way that the incomes will be subdivided into two the portion for distribution and the portion of earnings. Indeed, to avoid audits by the IRS or suspicion, Mandy Jones will have to receive a significant amount of income which will be subject to self-employment tax on her. The amount set aside for distribution will not be subjected to this tax but will only be subjected to the ordinary corporate tax.
Mandy will incur a high percentage of self-employment taxes but will also have an augmented income from the business. As a shareholder, some duties will be delegated to her, and she will lower the burden of responsibility. The taxation will depend on the amount of shares in the business. For instance, if she has a shareholding of 40 % that is the percentage of income that will be taxed. In a case where she will earn $70,000 and Bob earns $ 180,000 the shareholding on the organization will be presumed to be 28%, and that of Bob will be 72%. The self-employment tax will be imposed on the individual tax, and the business will only be subjected to corporate income tax. Money paid regarding the dividend will not be subjected to tax as this occurs in the C corporation where double taxation is experienced. Planning of the S corporation will be essential in achieving the desirable benefits when compared to a sole proprietorship (International Business Publications, USA, 2008).
Strategic estate planning
The IRS code is responsible for the creation of the S corporation which is a corporation which represents a corporation where the owner has an important amount of investment. Revocation of an S corporation status can lead to a disaster not only to the owner but family of the proprietor in the case of demise. Undeniably, having a laid bad plan on the estates is vital to be it the S corporation will be passed on to as a gift or estate. In fact, taking into account various circumstances S corporation can be held in by estates or trusts. In a scenario where the shares are transferred to Mandy Jones after passing of the proprietor, and she is not a qualifying owner, this will affect the business negatively. The consequence will be termination of the S corporation, and the organization will be subjected to corporate level taxes.
The best way to protect the business is to ensure that the shares of Mandy are qualifying. Qualifying Trusts can be categorized into grantor's trust or the QSSTs, ESBTs the voting trusts. The IRS code provides particular requirements to various trust. Incontestably, it would be advisable to seek legal counsel from an attorney before try users of shareholding in an S corporation. A clause should be written in the agreement providing that all transfers should be terminated until legal counsel is provided on the implications of the move. Undoubtedly, this will ensure that the organization will continue enjoying the S corporation status in case of an unfortunate event such as passing away. A continuous review is required for the eligibility of Mandy on taking over the business, and this will ensure if she cannot inherit the business alternative measures need to be put in place (Kluwer, 2014).
Selling S Corporation
The vital consideration that should be made in the treatment of tax when selling an S corporation is how you approach the transaction on the sale. The seller of the S corporation can approach the sell in two ways, that is, selling the stock of the S corporation and the second approach is selling its assets. The second approach helps to maintain the existing structure of the corporate intact. However, the simplest way for the owner is to undertake the transaction by selling the stock of the S corporate. If the owner plans to undertake the transaction through the sale of stock, for the purpose of taxation, take the amount of cash received from the sale of stock by the owner, then subtract the owners tax basis in the S corporation shares. Although determining the tax in S Corporation is somehow complicated. However, the owners basis will be the business owner investment in capital. The capital investment will still be adjusted for any differences in the taxable income the business has adjusted in its tenure and any amount withdrawn from the business by the owner on the profits distributed. In instances where some proceeds are higher from t...
Leadership Theory: Behavioral Approach Theory
Psychological Testing of Employees
Business Plan: Zumba Fitness
Nike Competition in the Market
Analysis of Khawlas Experience as TSR and FLM
Freight Modes
Organizational Culture Decision Making Enterprise Planning and Forecasting Project Management Time Management Risk Management Sustainable Development Corporate Governance Leadership Organization of Production Teamwork Strategic Management Safety Management Business Administration

redpajama_set_name: RedPajamaCommonCrawl


Providing Highly Effective Applications for The Education Sector!
When it comes to learning, there is no right or wrong time. All you need to have is the availability of valuable knowledge and the determination to retain it. This thought has allowed the technology to enter the education sector. With modern technologies such as smartphones and mobile applications, the education becomes much for flexible and much more available for people. Hence, the demand of education software development companies has increased a lot.
There are many companies today that provide crash courses, study materials, language learning, dictionaries and many other forms of education. In the process of development, the expertise of the qualified developers helps these companies. Hence, it becomes a necessity to select the most experienced team of developers.
We, at Rai Techintro, provide robust solutions for the education sector with our experienced team of professionals. Leveraging the latest tools brings the functionality that you desire in the app. Plus, our approach towards the development and testing methods leave no chances of error.
So, when you choose us to be your educational app development company the success becomes a sure thing!
While creating the interface for every project, we keep the user experience our prime goal. We know that in order to keep learning, the users need to feel engaged and comfortable. Hence, the developers ensure the user-friendly interface.
During the whole project, we make sure that the data stays secure. The constant testing of the application allows us to test the security and fix if any problem arises. This way, you get a secured application.
We are known for our finest quality all over the country. When you need the education web application Development, our expertise suits the best. Our experts understand the needs of the education sector and have developed many projects successfully. Hence, you can definitely rely on us.
Even with the extreme testing and quality development work, we take care of the time limit. Our systematic approach towards the work allows us to provide on-time delivery of the project. You get to achieve the finest quality at the right time. This way, you can comfortably design the launch and marketing plan for your application.
Our job doesn't stop after creating the application for you. We stay with you as a technical partner and provide the much-needed customer support. This way, you get to achieve the help to understand the technicalities of the application.
To achieve the assistance of a dedicated, experienced team, we suggest you contact us today. Give us call and let us know your exclusive requirements.


text:
Q: How to open Android app, after a click on website link? I want to open Android app when url click from browser, for this I had implemented intent filter in manifest with uri scheme below-
<intent-filter>
  <data android:host="www.myweb.com" android:scheme="https"/>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
</intent-filter>

When user click www.myweb.com on browser or whatsapp or facebook then mobile browser is open instead of android app.
Is there any thing I am doing wrong in above code? Any help on this.

A: Are you doing this?
Go to Tools > App Links Assistant.

*

*Follow the guidelines by creating URL mapping by clicking on the    "+" button.

*Select the activity and add the logic to handle intent.

*Third, and the most important step is to have access to the website    you are mentioning. You need to add Digital Asset Links
  file by    generating it and adding it to the mentioned location.

*You can test the app links now by visiting the website from your    browser. You are ready to go.

NOTE:

*

*By following the procedure you can make sure the app supports deep linking, however it is completely upto the user who can control to enable or disable to open the website and redirect it directly to your app.

*Make sure you have your app defaults URLs set to open the app with your app. Visit,
App Info > Open by default > Open supported links > Open in this app.
Documentation:

*

*https://developer.android.com/training/app-links

*https://developer.android.com/studio/write/app-link-indexing.html

redpajama_set_name: RedPajamaStackExchange


text:
MLS: Ann Arbor
Designed by George Mason, the Masonic temple built between the years of 1920 and 1926 is currently the world's largest Masonic Temple. The East tower features over 60,000 sq ft of usable space that is prime for redevelopment that could include a combination of commercial offices, hotel, apartments, retail, and restaurants. This beautiful building has had recent exterior renovations including cleaning, tuckpointing, and roof. The interior offers great detail and character while still allowing a blank canvas for new development. The East Tower is located less than one mile to Detroit's Downtown, less than 1/3 of a mile from Little Caesar Arena, and walking distance to an abundance of restaurants and entertainment venues including the many shows in the Masonic theatre adjacent to the East Tower. It consists of 10 floors with floor plates ranging from 4,200 sq ft to just under 5,600 sq ft. The building also has useable basement footage perfect for retail or bar/restaurant space.
I'd like to learn more about 434 Temple Street Detroit, MI 48201.


5 State music act, Kcee and his brother, E-money not too long ago paid a go to to their village, Uli in Anambra State, the place they gave out a Toyota Camry and 7 motorcyles to youths.
Kcee shared the images with the caption, 'simply since you do not perceive does not imply it is not so. My brother and I doing our personal little bit to help our individuals the nice individuals of Uli which is our residence city. When you can , ask about your neighbors welfare . Pleasure comes from giving. God bless you all'.


text:
UVic's working capital fund goes fossil fuel free
The University of Victoria's working capital fund is free of fossil-fuel investments. Photo credit: leungchopan
The University of Victoria's working capital fund is now free of any fossil-fuel investments with the move of $80 million to a short-term bond fund that focuses on reducing the carbon intensity of the investments within the pool.
Also in keeping with UVic's commitment to promote sustainable futures, the university is investing $10 million to further its responsible investment policy goals in a renewable power impact fund that will measure the carbon emissions avoided by the fund investments.
BlackRock's Global Renewable Power III Fund supports 250 renewable power projects across the globe including an onshore wind facility in Norway and a floating solar farm in Taiwan. All projects in the fund align with United Nations' Sustainable Development Goals (SDGs). In December, UVic announced its investment in the Raven Indigenous Impact Fund LP and the Vancouver Island Investment Hub.
We are acting on our commitment to address climate change in every domain at UVic including through our investments. The opportunity to invest in renewable power is clear and it aligns with UVic's responsible investment strategy allowing for support of future technologies while also ensuring a strong financial return. Investing in the fossil fuel free fund allows us to lower the carbon footprint of our investments which helps to mitigate the investment risk associated with climate change as society transitions to a greener economy that is focused on reducing greenhouse gas emissions.
—UVic Treasurer Andrew Coward
Last year, the university approved a new policy for its $225-million working capital fund to materially lower the carbon emissions across the entire portfolio by 45 per cent by 2030, allocate 25 per cent of the funds to thematic impact investments—including in energy companies that will be part of the required transition and investments that support Indigenous economic development—and encourage better disclosure of carbon emissions and climate-related risks.
In approving the new policy, the university acknowledged that the passionate commitment, research and perspective shared by students and faculty in pressing the university to address climate change through its investments played an important role in the Board of Governor's deliberations.
The move of funds to the RBC Vision Fossil Fuel Free Short Term Bond Fund will mean investing in holdings that prioritize low carbon intensity investments and exclude companies directly involved in extracting, processing or transporting fossil fuels.
Management of the university's financial assets is among the many ways that UVic is responding to the climate crisis. Through research, academic programs, campus operations and community outreach, students, faculty and staff are tackling the complex challenges of climate change and striving to make a difference.
Promoting sustainable futures is a priority in the Strategic Framework that sets out the university's goals and priorities.
For more details on the University's working capital investments visit: https://www.uvic.ca/vpfo/capitalinvestments/
Andrew Coward (UVic Financial Planning and Operations) at 250-721-7037 or acoward@uvic.ca
Krista Boehnert (University Communications + Marketing) at 250-721-6246 (cell) or boehnert@uvic.ca
Keywords: climate, clean energy, environment, community, working capital, investment, administrative, Financial Planning and Operations
People: Andrew Coward
Addressing climate anxiety
Last Fall's Living With Climate Change event included a series of campus events and learning opportunities to help students share solidarity and human connection in the shadow of climate anxiety.
Hope and story
UVic social sciences grad and Crookes professor Sean Holman works long hours trying to bring a human face to the way the media covers climate change—and build communities of action.
From climate impacts to action
Climate impacts put BC research into the global race for solutions For many, the reality of climate change didn't hit home until its effects literally hit home—in the form of atmospheric rivers and heat domes. For many more, the reality …
2022 UVic Canada Research Chairs
Seven University of Victoria faculty who are leaders in quantum physics, assistive technologies, virology, geophysics, drug discovery, software engineering and biostatistics are named new or renewed Canada Research Chairs (CRCs).


text:
/**
 * (created at 2011-1-23)
 */
package fm.liu.timo.parser.ast.expression.primary;

import fm.liu.timo.parser.visitor.Visitor;

/**
 * @author QIU Shuo
 */
public class Identifier extends PrimaryExpression implements Cloneable {
    public static String unescapeName(String name) {
        return unescapeName(name, false);
    }

    public static String unescapeName(String name, boolean toUppercase) {
        if (name == null || name.length() <= 0) {
            return name;
        }
        if (name.charAt(0) != '`') {
            return toUppercase ? name.toUpperCase() : name;
        }
        if (name.charAt(name.length() - 1) != '`') {
            throw new IllegalArgumentException(
                    "id start with a '`' must end with a '`', id: " + name);
        }
        StringBuilder sb = new StringBuilder(name.length() - 2);
        final int endIndex = name.length() - 1;
        boolean hold = false;
        for (int i = 1; i < endIndex; ++i) {
            char c = name.charAt(i);
            if (c == '`' && !hold) {
                hold = true;
                continue;
            }
            hold = false;
            if (toUppercase && c >= 'a' && c <= 'z') {
                c -= 32;
            }
            sb.append(c);
        }
        return sb.toString();
    }

    /** null if no parent */
    protected Identifier   parent;
    /** e.g. "id1", "`id1`" */
    protected String       idText;
    protected final String idTextUpUnescape;

    public Identifier(Identifier parent, String idText) {
        this(parent, idText, idText.toUpperCase());
    }

    public Identifier(Identifier parent, String idText, String idTextUp) {
        this.parent = parent;
        this.idText = idText;
        this.idTextUpUnescape = unescapeName(idTextUp);
    }

    public String getLevelUnescapeUpName(int level) {
        Identifier id = this;
        for (int i = level; i > 1 && id != null; --i) {
            id = id.parent;
        }
        if (id != null) {
            return id.idTextUpUnescape;
        }
        return null;
    }

    /** trim not happen because parent in given level is not exist */
    public static final int PARENT_ABSENT  = 0;
    /** trim happen */
    public static final int PARENT_TRIMED  = 1;
    /** trim not happen because parent in given not equals to given name */
    public static final int PARENT_IGNORED = 2;

    /**
     * @param level At most how many levels left after trim, must be a positive integer. e.g. level
     *        = 2 for "schema1.tb1.c1", "tb1.c1" is left
     * @param trimSchema upper-case. Assumed that top trimmed parent is schema, if that equals given
     *        schema, do not trim
     * @return {@link #PARENT_ABSENT} or {@link #PARENT_TRIMED}or {@link #PARENT_IGNORED}
     */
    public int trimParent(int level, String trimSchema) {
        Identifier id = this;
        for (int i = 1; i < level; ++i) {
            if (id.parent == null) {
                return PARENT_ABSENT;
            }
            id = id.parent;
        }
        if (id.parent == null) {
            return PARENT_ABSENT;
        }
        if (trimSchema != null && !trimSchema.equals(id.parent.idTextUpUnescape)) {
            return PARENT_IGNORED;
        } else {
            id.parent = null;
            return PARENT_TRIMED;
        }
    }

    public void setParent(Identifier parent) {
        this.parent = parent;
    }

    public Identifier getParent() {
        return parent;
    }

    public String getIdText() {
        return idText;
    }

    public String getIdTextUpUnescape() {
        return idTextUpUnescape;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder("ID:");
        if (parent != null) {
            sb.append(parent).append('.');
        }
        return sb.append(idText).toString();
    }

    @Override
    public int hashCode() {
        final int constant = 37;
        int hash = 17;
        if (parent == null) {
            hash += constant;
        } else {
            hash = hash * constant + parent.hashCode();
        }
        if (idText == null) {
            hash += constant;
        } else {
            hash = hash * constant + idText.hashCode();
        }
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == this)
            return true;
        if (obj instanceof Identifier) {
            Identifier that = (Identifier) obj;
            return objEquals(this.parent, that.parent) && objEquals(this.idText, that.idText);
        }
        return false;
    }

    private static boolean objEquals(Object obj, Object obj2) {
        if (obj == obj2)
            return true;
        if (obj == null)
            return obj2 == null;
        return obj.equals(obj2);
    }

    @Override
    public void accept(Visitor visitor) {
        visitor.visit(this);
    }

    public void setIdText(String string) {
        this.idText = string;

    }

    @Override
    public Identifier clone() {
        Identifier clone = null;
        try {
            clone = (Identifier) super.clone();
        } catch (CloneNotSupportedException e) {
            throw new RuntimeException(e); // won't happen
        }
        return clone;
    }
}

redpajama_set_name: RedPajamaGithub


Historians who replied to our request for comment could not find much "force for good" in the historical record.
The Political Uses of the Past Project collects and checks statements by elected and appointed officials. This is the first installment of what will hopefully become a regular feature of the project. Read more about the project here. Contact the editor of the project here.
VICE PRESIDENT PENCE: "FOR NEARLY 200 YEARS, STRETCHING BACK TO OUR TREATY OF AMITY AND COMMERCE WITH OMAN, THE UNITED STATES HAS BEEN A FORCE FOR GOOD IN THE MIDDLE EAST"
Eight historians responded to our request for comment; their full statements and recommended sources are on the Political Uses of the Past page).
Vice President Pence made this broad statement at a ministerial meeting on terrorism, but his mind was primarily on Iran. His intent was to draw a contrast between the United States and Iran, with the former being a "force for good" in the region and the latter being a perpetrator of continual violence. But by going back to 1833 to reference a routine and fairly boring trade agreement with a minor kingdom, he appears to be grasping at straws.
If Pence was looking for good done by the United States in the Middle East, he could have asked some of the historians who reacted to his statement. He may have learned from Joel Beinin how "American missionaries established some of the leading universities in the Middle East: The American University of Beirut, The American University in Cairo and Robert College in Istanbul. The Medical School of AUB is among the best in the region." He may have been interested to hear from Indira Falk Gesink that "after World War I, most of those polled in the regions surrounding Syria wanted the US as their mandatory power (if they wanted any)." He may have learned from Lior Sternfeld how the United States has sponsored "schools, universities, and orphanages" and took a stand against its European allies and Israel during the Suez Crisis of 1956.
But if he had asked and had learned about these efforts, he would also have learned from Professor Beinin that many of the missionaries who established these schools went to work for the CIA in the postwar period, "so even the very best thing that Americans have done in the Middle East since the early 19th century was corrupted by government efforts to exert power over the region in order to control its oil." And Pence would have also had to hear Professor Sternfeld tell about the 1953 coup in Iran that cemented a brutal regime in place for the next quarter-century and how, as described by Professor Gesink, "from that point on, US actions in the Middle East were guided by demand for oil and anti-Communist containment." Finally, he would have had to hear about how much that 1953 coup has to do with our relations with Iran now.
Historians who replied to our request for comment could not find much "force for good" in the historical record. Instead, they find "death, displacement, and destruction" (Ziad Abu-Rish), support for "the most ruthless and brutal dictators at every turn" and the "most fanatical and chauvinistic nationalist and religious forces at every turn" (Mark Le Vine), "intense and destructive interventions … characterized by public deception, confusion, and mixed motives" (Michael Provence), "a moral compromise with authoritarianism" (Indira Falk Gesink), and actions that have "contributed to breakdowns in security, widespread violence, and humanitarian disaster" (Dale Stahl).
Homage to the Shah after coup d'état, 5 September 1953, The Guardian - Unseen images of the 1953 Iran coup.
Three historians below recommend The Coup: 1953, The CIA, and The Roots of Modern U.S.-Iranian Relations by Ervand Abrahamian, and this book is incredibly pertinent today. Previous historical accounts and justifications by 1950s policymakers made the coup all about Mosaddegh's unwieldiness to compromise or said it was all about winning the Cold War. Abrahamian instead shows that it was about oil, or, more specifically, "the repercussions that oil nationalization could have on such faraway places as Indonesia and South America, not to mention the rest of the Persian Gulf." And for this, Iran and the Middle East got, courtesy of the United States, the brutal Mohammad Reza Shah. The shah crushed the democratic opposition, filling his jails with thousands of political prisoners, and left "a gaping political vacuum—one filled eventually by the Islamic movement." And so here we are.
Mike Pence's incredibly blinkered statement can be viewed as an extreme counterpoint to the right-wing view of Obama's Cairo speech, in which the president mildly acknowledged that the US had not always been on the side of right in the Middle East, and that its history of actions have come back to haunt us all. Such things, it seems, must not be spoken in the muscular Trump administration, even if it means abandoning an understanding that might actually be useful. "For me as an historian," Mark Le Vine notes below, "perhaps the worst part the history of US foreign policy in the region is precisely that scholars have for so long done everything possible to inform politicians, the media and the public about the realities there. Largely to no avail." Indeed, Mike Pence here appears intent on utterly blocking out history and historical thinking, even as he dreams of a long and glorious past.
Browse and download sources recommended by the historians below from our Zotero library, or try our in-browser library.
Allen Mikaelian is an editor and writer based in Washington, DC, where he specializes in working on meaningful projects with amazing people. He earned an MA in the history of the book at the University of London's Institute of English Studies and a PhD in US history from American University. He serves as editor of the American Historical Association's monthly magazine, Perspectives on History, and has an infrequently updated blog that crunches data relevant to historians. Checkered History is his own project and has no endorsement from or connection with his employers and partners, current or former.


text:
Other Pro Wrestling Forum
Other Wrestling
November 2nd Newswire
Platt
- ROH's return to Mississauga Ontario on November 13th for a Night of the Champions will be a night history could be made. The odds are high that a title will change hands as all three ROH Championships will be defended! ROH World Champion Roderick Strong defends against Christopher Daniels. The ROH World Television Championship will be on the line as Eddie Edwards defends against El Generico. The Kings of Wrestling will also put their Tag Team Championship on the line against the unpredictable duo of Kevin Steen & Steve Corino. Also, Homicide and Jay Briscoe will face off in a huge grudge match stemming from their recent heated confrontation. Tickets are on sale now for this huge event!! http://www.rohwrestling.com/news/toronto-ontario-june-19th/.
- ROH's return to Dearborn, MI, on November 12th will end with the Survival of the Fittest Finals however a HUGE Semi-Main Event has officially been signed (http://www.rohwrestling.com/news/six-man-tag-action-in-dearborn/). ROH World Champion Roderick Strong, Christin Able, & Truth Martini's newest addition to The HoT face off against Christopher Daniels and The Briscoes in six man tag team action! Tickets are available here for "Survival of the Fittest 2010": http://www.rohwrestling.com/store.php?sec=prod&prod=268.
- Andy "Right Leg" Ridge will have his third Trial Series match in Dearborn, MI on November 12th against "The Notorious 187" Homicide! Homicide is an ROH veteran who has wrestled all across the planet for over 15 years. Both men have New York roots however the similarities stop there as Homicide is a former ROH World Champion who has earned a reputation for being one of the most dangerous men in and out of the ring. This will be Ridge's biggest test yet as Homicide brings a wealth of wrestling and street credibility to the table. Homicide has many different things in his arsenal including the Cop Killah, the Ace Crusher, and a strong passion to brawl and get crazy. Ridge is in for a big fight in Dearborn as Homicide is not happy with the match making. "You got me in there with a kid?Huh I should be in there with the champ fighting for my belt," said Homicide after finding out about the match. A focused and anxious Ridge said, "Either I will earn Homicide's respect or die trying."
- Ring of Honor is very pleased with the performance of current ROH World Champion Roderick Strong & current ROH World TV Champion Eddie Edwards during Pro Wrestling NOAH's 4th Annual NTV Cup Jr. Heavyweight Tag Team League Tournament. Strong & Edwards wrestled to the end but lost in the finals on 10/30 at Korakuen Hall to KENTA & Atsushi AOKI. When asked about the tournament Eddie Edwards had this to say, "We came very close to winning the tournament but KENTA and AOKI were the better wrestlers on that night in Tokyo." Strong was upset with the loss but very happy with the response from the Japanese fans, "After the match all of Korakuen Hall was chanting ROH. I am very proud of this and even though we lost, we won the respect of the entire audience." Despite losing in the finals, Strong and Edwards proved that they are both world class championship caliber wrestlers and both ROH and the USA are very proud of both men.
- Speaking of ROH World Champion Roderick Strong and ROH World TV Champion Eddie Edwards, both men returned from Japan yesterday and each man officially signed to appear for the "ROH on HDNet" national television tapings in Louisville, Kentucky on December 9th and 10th.
- We are currently running a special 25% Off Your Order Sale exclusively at ROHWrestling.com. Save on DVD's, live event tickets, apparel, & more. Look for the new ROH Online Store to hopefully launch within the next 24 hours. For details on the 25% Off Sale and to get the discount code please click here: http://www.rohwrestling.com/news/take-25-off-your-order/.
- Kevin Steen sent word via Steve Corino to the ROH offices stating that he prays to god every night that the last 2 men in Survival of the Fittest will be Generico and himself. Steen said if they face one-on-one in Dearborn there will be no need for a match at Final Battle because November 12th in Dearborn will be the final battle.
- Prince Nana's recent article at rohwrestling.com (http://www.rohwrestling.com/news/nanas-world-november-1st/) is, to say the least, very interesting. Many in ROH feel Nana is losing it and is on the verge of a mental breakdown.
- The current ROH World Tag Team Champions Chris Hero & Claudio Castagnoli are in route to Lima, Peru to participate in a Tag Team Tournament for the Leader Wrestling Association on November 6th.
- Be sure to visit the ROH wrestlers at the Toronto Sports Card Expo before the November 13th event in Mississauga, Ontario. The event is also located at the International Centre at 6900 Airport Road in Mississauga Ontario Canada (Buildings 4 & 5). Jim Cornette, The Kings of Wrestling (Hero & Claudio), Colt Cabana, and Christopher Daniels will all be on hand to meet and greet the fans. Autographs and wrestler merchandise will be available.
- The Ring of Honor Wrestling Academy just started there new session last week with head trainer, DELIRIOUS. Expect the next session to begin during the week of February 21st, 2011. The school is located in Bristol, PA (close to I-95 and the PA turnpike). The facility includes a full size ring, weight lifting equipment, a video library, and other resources. Our Academy continues to grow and improve daily. If you have ever had any interest in being a professional wrestler now is your time to train at the best school around. For more information or questions please email [email protected]. Also visit www.prowrestlingrespect.com which is a small promotion exclusively for ROH Academy graduates!
LegendofBaseball
Bowing down to the BEAST INCARNATE
NoC looks like a great show on paper with 4 main event caliber matches.
I'm happy for Strong & Edwards. I was just rewatching the two Tokyo shows from 2008 and the crowd seemed quite warm towards those two, even though they were pretty un-emotional for the rest of the roster.
KingCrash
Over/under on match time for Homicide/Ridge is 4 min.
Eddie Kingston said:
....It's like watching Lost and getting angry at the end. "Fuck I've been watching this show for six years and it turned out to be the bullshit thing I thought it would be!"
EffectRaven
Both November shows are stacked. Looks like great lead-in to Final Battle. I really hope Steen wins SOTF this year, he's been on an epic roll all year
WF's first official Mike Bennett mark
CactusBoehm
It would be interesting if Steen won SOTF and then lost at Final Battle.
The title shot that comes along with SOTF would be a good excuse for him to come back after losing to Generico. Might not be a bad plan.
Reactions: seancarleton77
Marty Scurll
whats everyone's opinion on marty signing a contract with ring of honor? my opinion is it feels like a wrong move he should of gone to nxt he would of been massive there!!
billyuk1989 · updated a moment ago
Some Guy Slappes Konnan On The Street
njcam · updated 25 mins ago
Official ROH Discussion Thread
Catch all general thread for Ring of Honor discussion. Don't be shy and make your own threads for more specific discussion topics too. Or you can be a rebel and use the unofficial ROH thread.
seabs · updated 5 hours ago
NWA Hard Time 1/24/20 PPV - From Rags to Riches!!!!!
GPB studios - Atlanta, GA January 24, 2020 @ 7 pm ET NWA World Championship Match (Not sure if non-title) Nick Aldis (c) vs. Flip Gordon NWA Women's World Championship Match Allysin Kay vs. TBD NWA Television Championship Tournament **Nikita Koloff to present the TV title to winner Block A...
captainzombie · updated 9 hours ago
Any Dolph ziggler and Robert roode match suggestions?
AjStylesIsGOAT · updated 10 hours ago
CactusBoehm Nov 3, 2010
Wrestling Forum
A forum community dedicated to all Wrestling enthusiasts. Come join the discussion about WWE, AEW, Ring of Honor, Impact and all forms of professional and amateur wrestling.
General WWE RAW Future & Past WWE PPVs Impact Wrestling Rants


text:
"Harrisonville" redirects here. For other uses, see Harrisonville (disambiguation).
Location in the state of Missouri
Brian Hasek
Area[2]
10.01 sq mi (25.93 km2)
9.88 sq mi (25.59 km2)
0.13 sq mi (0.34 km2)
Population (2010)[3]
• Estimate (2012[4])
1,014.1/sq mi (391.5/km2)
CDT (UTC-5)
ci.harrisonville.mo.us
Harrisonville is a city in Cass County, Missouri, United States. The population was 10,019 at the 2010 census. It is the county seat of Cass County.[7]
Harrisonville was founded in 1837 upon land donated to Cass County by Congress for county purposes, and was named for Congressman Albert G. Harrison, who was instrumental in obtaining the land grant.[8] The area suffered greatly during the American Civil War, though Harrisonville was one of the few places exempted in Union General Thomas Ewing's notorious General Order No. 11 (1863), which ordered the depopulation of three entire Missouri counties and part of a fourth.[9]
In 1972, Harrisonville was the site of escalating tensions between a handful of would-be hippies—mostly Vietnam veterans—and town elders, which culminated in a brief rampage by 25-year-old Charlie "Ootney" Simpson. In the town square, in plain view of onlookers, he killed two police officers and a bystander before shooting himself. The victims were officers Donald Marler and Francis Wirt and local businessman Orville Allen. His motivation turned out to be personal, not political; he had saved money to buy a farm, but the seller had recently backed out of the deal, and Simpson had used the money to bail his friends out of jail.[10]
The Robert A. Brown House, Harrisonville Courthouse Square Historic District, and St. Peter's Episcopal Church are listed on the National Register of Historic Places.[11]
Harrisonville is located at 38°39′13″N 94°20′49″W / 38.65361°N 94.34694°W / 38.65361; -94.34694 (38.653592, -94.346915).[12] According to the United States Census Bureau, the city has a total area of 10.01 square miles (25.93 km2), of which, 9.88 square miles (25.59 km2) is land and 0.13 square miles (0.34 km2) is water.[2]
Est. 2015 9,986 [13] −0.3%
U.S. Decennial Census[14]
As of the census[3] of 2010, there were 10,019 people, 3,854 households, and 2,516 families residing in the city. The population density was 1,014.1 inhabitants per square mile (391.5/km2). There were 4,144 housing units at an average density of 419.4 per square mile (161.9/km2). The racial makeup of the city was 95.0% White, 1.1% African American, 0.7% Native American, 0.6% Asian, 0.8% from other races, and 1.7% from two or more races. Hispanic or Latino of any race were 2.6% of the population.
There were 3,854 households of which 36.6% had children under the age of 18 living with them, 44.7% were married couples living together, 15.3% had a female householder with no husband present, 5.3% had a male householder with no wife present, and 34.7% were non-families. 29.6% of all households were made up of individuals and 13.9% had someone living alone who was 65 years of age or older. The average household size was 2.49 and the average family size was 3.07.
The median age in the city was 35.5 years. 27.1% of residents were under the age of 18; 8.4% were between the ages of 18 and 24; 26.6% were from 25 to 44; 22.4% were from 45 to 64; and 15.5% were 65 years of age or older. The gender makeup of the city was 47.2% male and 52.8% female.
As of the census[5] of 2000, there were 8,946 people, 3,457 households, and 2,302 families residing in the city. The population density was 1,035.2 people per square mile (399.8/km²). There were 3,646 housing units at an average density of 421.9/sq mi (162.9/km²). The racial makeup of the city was 96.15% White, 0.97% African American, 0.66% Native American, 0.47% Asian, 0.01% Pacific Islander, 0.39% from other races, and 1.34% from two or more races. Hispanic or Latino of any race were 1.41% of the population.
In the city the population was spread out with 27.6% under the age of 18, 8.1% from 18 to 24, 29.4% from 25 to 44, 19.6% from 45 to 64, and 15.3% who were 65 years of age or older. The median age was 35 years. For every 100 females there were 87.4 males. For every 100 females age 18 and over, there were 82.8 males.
The median household income was $39,498, and the median family income was $47,761. Males had a median income of $31,931 versus $22,416 for females. The per capita income for the city was $17,280. About 4.7% of families and 6.5% of the population were below the poverty line, including 8.4% of those under age 18 and 5.1% of those age 65 or over.
Parts of the 1983 nuclear apocalyptic film The Day After are set in Harrisonville.
Robert Cook Bell, United States federal judge.
Delmer Brown, Japanologist.
Vicky Hartzler, U.S. Representative for Missouri's 4th congressional district since 2011.
Chris Koster, 41st Attorney General of Missouri
Edward Capehart O'Kelley, The man who killed Robert Ford, who killed Jesse James.
Angelica Bridges, actress, model and singer.
↑ http://ci.harrisonville.mo.us/index.aspx?NID=18
1 2 "US Gazetteer files 2010". United States Census Bureau. Retrieved 2012-07-08.
1 2 "American FactFinder". United States Census Bureau. Retrieved 2012-07-08.
↑ "Population Estimates". United States Census Bureau. Retrieved 2013-05-30.
↑ "Find a County". National Association of Counties. Retrieved 2011-06-07.
↑ Eaton, David Wolfe (1916). How Missouri Counties, Towns and Streams Were Named. The State Historical Society of Missouri. p. 272.
↑ http://www.harrisonvillechamber.com/livinghistory2.html
↑ Eszterhas, Joe, Charlie Simpson's Apocalypse. Random House, 1974.
↑ National Park Service (2010-07-09). "National Register Information System". National Register of Historic Places. National Park Service.
↑ "US Gazetteer files: 2010, 2000, and 1990". United States Census Bureau. 2011-02-12. Retrieved 2011-04-23.
↑ "Census of Population and Housing". Census.gov. Retrieved June 4, 2015.
City of Harrisonville
Historic maps of Harrisonville in the Sanborn Maps of Missouri Collection at the University of Missouri
Municipalities and communities of Cass County, Missouri, United States
County seat: Harrisonville
Creighton
Drexel‡
East Lynne
Greenwood‡
Harrisonville
Kansas City‡
Lake Annette
Lake Winnebago
Lee's Summit‡
Gunn City
Loch Lloyd
Riverview Estates
West Line
Camp Branch
West Dolan
West Peculiar
Unincorporated communities
Daugherty
Jaudon
Main City
Prettyman
‡This populated place also has portions in an adjacent county or counties
Kansas City metropolitan area's cities and counties
Largest cities
(over 100,000 in 2000)
Medium-sized cities
(10,000 to 100,000 in 2000)
Excelsior Springs
Lee's Summit
Raytown
Smaller Cities
(between 5,000 and 9,900 in 2010)
Jefferson City (capital)
Boonslick
Bootheel
Crowley's Ridge
Dissected Till Plains
Four State Area
Henry Shaw Ozark Corridor
Honey Lands
Lead Belt
Little Dixie
Loess Hills
Mid-Missouri
Mississippi Embayment
Missouri Rhineland
Northern Plains
Osage Plains
Ozark Plateau
Platte Purchase
St. Francois Mountains
Westplex
Metro areas
Counties and
independent cities
Moniteau
St. Louis (City)
St. Louis (County)
County seats in Missouri
Caruthersville
Cassville
Grant City
Ironton
Kahoka
Kennett
Keytesville
Linneus
Pineville
Plattsburg
Rock Port
Steelville
Warrensburg
West Plains


Students at Memorial got a chance to reflect on their immigration experiences for about a month prior to the recordings this week. They then will work with teachers to turn their stories into personalized essays that eventually make it into the books, whose proceeds go entirely toward funding the next set of books.
Getting a chance to talk about her own experiences was empowering, Salgado said.
"I thought it was an amazing opportunity to tell kids that there are people like you, and that we should empower our fellow people of color," Salgado said.
Salgado has been extremely busy as a student since arriving in Madison. She's been involved in a slew of sports including soccer, basketball and cross country, as well as leading AVID Student Council and Scholars of Color, a club for students of color who are taking Advanced Placement or honors classes.
Salgado has applied to seven colleges, and is still waiting to hear back from two of her top choices. During her recording session, she explained how she wants to pursue a degree in environmental science at the University of Wisconsin-Madison and eventually go to law school to work on environmental policy issues.
The writer does not address achievement data.