﻿/// <reference name="MicrosoftAjax.js" assembly="System.Web.Extensions" />

Type.registerNamespace("Finatica");
Type.registerNamespace("Finatica.FindCompany");

Finatica.FindCompany.RegionsLoaded = false;
Finatica.FindCompany.GoodsLoaded = false;

Finatica.FindCompany.Filter = new Object();


Finatica.FindCompany.ShowExtendedSearch = function() {
	$('#divExtended').toggle();
	$('#aExtended').toggle();

	return false;
}

Finatica.FindCompany.SectorsTabClick = function() {
	$('#'+sectorsTab).addClass('active current');
	$('#regionsTab').removeClass('active current');
	$('#'+goodsTab).removeClass('active current');
	$('#'+divSectors).show();
	$('#divRegions').hide();
	$('#'+divGoods).hide();

	return false;
}

Finatica.FindCompany.RegionsTabClick = function() {
	$('#'+sectorsTab).removeClass('active current');
	$('#regionsTab').addClass('active current');
	$('#'+goodsTab).removeClass('active current');
	$('#'+divSectors).hide();
	$('#divRegions').show();
	$('#'+divGoods).hide();

	if (Finatica.FindCompany.RegionsLoaded == false) {
		Finatica.FindCompany.RegionsLoaded = true;

		Finatica.WebServices.CompanyHelper.GetRegionRubricator('', Finatica.FindCompany.OnGetRegionsComplite, Finatica.FindCompany.OnGetRegionsError);
	}
	return false;
}

Finatica.FindCompany.GoodsTabClick = function() {
	$('#'+sectorsTab).removeClass('active current');
	$('#regionsTab').removeClass('active current');
	$('#'+goodsTab).addClass('active current');
	$('#'+divSectors).hide();
	$('#divRegions').hide();
	$('#'+divGoods).show();

	return false;
}

Finatica.FindCompany.OnGetRegionsComplite = function(result) {
	$('#divRegions').html(result);
}

Finatica.FindCompany.OnGetRegionsError = function(error) {
	$find(Finatica.Common.NotificatorID).addMessage('error', 'OnGetRegionsError\n' + error.get_message());
}

Finatica.FindCompany.OnGetGoodsComplite = function(result) {
	$('#divGoods').html(result);
}

Finatica.FindCompany.OnGetGoodsError = function(error) {
	$find(Finatica.Common.NotificatorID).addMessage('error', 'OnGetGoodsError\n' + error.get_message());
}

Finatica.FindCompany.RubricatorOnClientLoad = function(sender, eventArgs) {
	var treeView = $(sender.get_element());
	treeView.removeAttr('class');

	var uls = treeView.children('ul');
	uls.removeAttr('class');
	uls.addClass('no-markers catalog treeViewCatalog');

	uls.find('ul').addClass('no-markers');
	uls.find('ul').before(document.createElement('hr'));

	var lis = uls.children("li").removeAttr('class');
}

Finatica.FindCompany.OnRubricatorNodePopulated = function(sender, eventArgs) {
	if ($(sender.get_element()).parent().attr('id') == divGoods) {
		var loadByFunctionName = 'LoadByGoods';
	} else {
		var loadByFunctionName = 'LoadBySector';
	}
	var parentNode = eventArgs.get_node();
	var nodes = parentNode.get_nodes();
	parentNode.get_childListElement()
	var childList = parentNode.get_childListElement();
	if (childList != null) {
		$(childList).addClass("no-markers");

		for (var i = 0; i < nodes.get_count(); i++) {
			var currentNode = nodes.getNode(i);
			var expMode = currentNode.get_expandMode()
			var hasChildren = expMode != undefined && expMode == 3;
			var node_text = currentNode.get_text();
			var node_count = currentNode.get_attributes().getAttribute("Count");
			var node_name = currentNode.get_attributes().getAttribute("NodeName");
			var open_node_name = currentNode.get_attributes().getAttribute("OpenNodeName");

			var element = $(currentNode.get_element());
			element = element.find('.rtIn').parent();
			element.find('.rtIn').remove();

			var div = $(document.createElement('div')).addClass('rtIn rtTemplate');
			var div2 = $(document.createElement('div')).addClass('catalog-item');
			div.append(div2);

			var a = $(document.createElement('a')).attr('href', open_node_name).addClass('catalog-item-icon');
			div2.append(a);

			var ti = $(document.createElement('i'))
					.click(new Function("Finatica.FindCompany.ExpandRubricatorNode('" + currentNode.get_value() + "','"
							+ currentNode.get_treeView().get_id() + "'); return false;"));
			a.append(ti);

			var a2 = $(document.createElement('a')).attr('href', node_name).addClass('catalog-item-name')
					.click(new Function("return Finatica.FindCompany." + loadByFunctionName + "('" + currentNode.get_value() + ";');"))
					.text(node_text);
			div2.append(a2);

			div2 = $(document.createElement('div')).addClass('catalog-counter');
			div.append(div2);
			var b = $(document.createElement('b')).text(node_count);
			div2.append(b);

			if (hasChildren == true) {
				ti.addClass('icon plus');
			}
			else {
				ti.addClass('icon empty');
			}

			element.append(div);
		}
	}
}

Finatica.FindCompany.ExpandRubricatorNode = function(nodeValue, treeViewID) {
	var treeView = $find(treeViewID);
	var node = treeView.findNodeByValue(nodeValue);
	var isExpanded = node.get_expanded();
	var element = $(node.get_element());
	element.find('.rtTemplate > div > a > i').toggleClass('plus').toggleClass('minus');

	if (isExpanded == true) {
		//if (node.get_level() == 0)
			element.children('hr').remove();
		node.collapse();
	}
	else {
		//if (node.get_level() == 0)
			element.children('div').after(document.createElement('hr'));
		node.expand();
	}
	return false;
}

Finatica.FindCompany.DeleteRubricator = function() {
	$('#divRubricator').remove();
	$('#divNewCompanies').remove();
}

Finatica.FindCompany.GetCompanies = function(pageNumber) {
	getFilter();

	Finatica.FindCompany.Filter.functionName = 'Finatica.FindCompany.GetCompanies';
	Finatica.FindCompany.Filter.pageNumber = pageNumber;

	var filterParameters = Finatica.FindCompany.GetFilterXML(Finatica.FindCompany.Filter);
	Finatica.WebServices.CompanyHelper.GetCompanies(filterParameters, Finatica.FindCompany.OnLoadCompanyComplite, Finatica.FindCompany.OnLoadCompanyError);
}

Finatica.FindCompany.PageChanged = function(event) {
	event.preventDefault();
	Finatica.FindCompany.GetCompanies($find(finPager).get_currentPage());
}


Finatica.FindCompany.GetEmptyFilter = function() {
	Finatica.FindCompany.Filter.optionEnabled = false;
	Finatica.FindCompany.Filter.description = "";
	Finatica.FindCompany.Filter.regions = "";
	Finatica.FindCompany.Filter.sectors = "";
	Finatica.FindCompany.Filter.goods = "";
	Finatica.FindCompany.Filter.legformDDL = null;
	Finatica.FindCompany.Filter.hasSite = false;
	Finatica.FindCompany.Filter.buybusiness = false;
	Finatica.FindCompany.Filter.sellbusiness = false;
	Finatica.FindCompany.Filter.creditsale = false;
	Finatica.FindCompany.Filter.creditbuy = false;
	Finatica.FindCompany.Filter.investor = false;
	Finatica.FindCompany.Filter.needinvestor = false;
	Finatica.FindCompany.Filter.patnershipsearch = false;
	Finatica.FindCompany.Filter.patnershipoffer = false;
}

Finatica.FindCompany.LoadBySector = function(sectorId) {
	initFinMD();
	finMD.setSingleValue('Sectors2', sectorId);
	Finatica.FindCompany.DeleteRubricator();
	Finatica.FindCompany.GetEmptyFilter();

	Finatica.FindCompany.Filter.sectors = sectorId;
	Finatica.FindCompany.Filter.functionName = 'Finatica.FindCompany.GetCompanies';
	Finatica.FindCompany.Filter.pageNumber = 1;

	var filterParameters = Finatica.FindCompany.GetFilterXML(Finatica.FindCompany.Filter);
	Finatica.WebServices.CompanyHelper.GetCompanies(filterParameters, Finatica.FindCompany.OnLoadCompanyComplite, Finatica.FindCompany.OnLoadCompanyError);
	Finatica.FindCompanyNews.GetCompanyNews(filterParameters);
	Finatica.FindCompanyProjects.GetCompanyProjects(filterParameters);
	
	return false;
}

Finatica.FindCompany.LoadByRegion = function(regionId) {
	initFinMD();
	finMD.setSingleValue('Regions', regionId);
	Finatica.FindCompany.DeleteRubricator();
	Finatica.FindCompany.GetEmptyFilter();

	Finatica.FindCompany.Filter.regions = regionId;
	Finatica.FindCompany.Filter.functionName = 'Finatica.FindCompany.GetCompanies';
	Finatica.FindCompany.Filter.pageNumber = 1;

	var filterParameters = Finatica.FindCompany.GetFilterXML(Finatica.FindCompany.Filter);
	Finatica.WebServices.CompanyHelper.GetCompanies(filterParameters, Finatica.FindCompany.OnLoadCompanyComplite, Finatica.FindCompany.OnLoadCompanyError);
	Finatica.FindCompanyNews.GetCompanyNews(filterParameters);
	Finatica.FindCompanyProjects.GetCompanyProjects(filterParameters);
	
	return false;
}

Finatica.FindCompany.LoadByGoods = function(goodId) {
	initFinMD();
	finMD.setSingleValue('Goods', goodId);
	Finatica.FindCompany.DeleteRubricator();
	Finatica.FindCompany.GetEmptyFilter();

	Finatica.FindCompany.Filter.goods = goodId;
	Finatica.FindCompany.Filter.functionName = 'Finatica.FindCompany.GetCompanies';
	Finatica.FindCompany.Filter.pageNumber = 1;

	var filterParameters = Finatica.FindCompany.GetFilterXML(Finatica.FindCompany.Filter);
	Finatica.WebServices.CompanyHelper.GetCompanies(filterParameters, Finatica.FindCompany.OnLoadCompanyComplite, Finatica.FindCompany.OnLoadCompanyError);
	Finatica.FindCompanyNews.GetCompanyNews(filterParameters);
	Finatica.FindCompanyProjects.GetCompanyProjects(filterParameters);

	return false;
}

Finatica.FindCompany.OnLoadCompanyComplite = function(result) {
	$('#divCompanies').show().html(result["content"]);
	$find(finPager).show();
	$find(finPager).set_pagesCount(result["pagesCount"]);
	$find(finPager).createPager();
	$(window).scrollTop($('#divCompanies').offset().top - 15)
}

Finatica.FindCompany.OnLoadCompanyError = function(error) {
	$find(Finatica.Common.NotificatorID).addMessage('error', 'OnLoadCompanyError\n' + error.get_message());
}





Finatica.FindCompany.GetFilterXML = function(filter) {
	var filterParameters = '<?xml version="1.0" encoding="UTF-8"?>';
	filterParameters += '<filter>';
	filterParameters += '<description>' + filter.description + '</description>';
	filterParameters += '<regions>' + filter.regions + '</regions>';
	filterParameters += '<sectors>' + filter.sectors + '</sectors>';
	filterParameters += '<goods>' + filter.goods + '</goods>';
	
	filterParameters += '<legform>' + (filter.optionEnabled == true ? filter.legformDDL.options[filter.legformDDL.selectedIndex].value : '') + '</legform>'
	filterParameters += '<hassite>' + (filter.optionEnabled == true && filter.hasSite == true ? "true" : "false") + '</hassite>';

	var projTypes = '';
	if (filter.optionEnabled == true) {
		if ( filter.buybusiness == true) {
			projTypes += "'"+filter.buybusiness_const+"',";
		}

		if (filter.sellbusiness == true) {
			projTypes += "'"+ filter.sellbusiness_const +"',";
		}

		if (filter.creditbuy == true) {
			projTypes += "'" + filter.creditbuy_const + "',";
		}
		
		if (filter.creditsale == true) {
			projTypes += "'" + filter.creditsale_const + "',";
		}		

		if (filter.investor == true) {
			projTypes += "'" + filter.investor_const +"',";
		}

		if ( filter.needinvestor == true) {
			projTypes += "'"+ filter.needinvestor_const +"',";
		}

		if (filter.patnershipsearch == true) {
			projTypes += "'" + filter.patnershipsearch_const+ "',";
		}
		
		if (filter.patnershipoffer == true) {
			projTypes += "'" + filter.patnershipoffer_const+ "',";
		}

		if (projTypes != '') {
			projTypes = projTypes.substring(0, projTypes.length - 1);
		}
	}

	filterParameters += '<projTypes>' + projTypes + '</projTypes>'
	filterParameters += '<itemsOnPage>'+ filter.itemsOnPage +'</itemsOnPage>';
	filterParameters += '<currentPage>' + filter.pageNumber + '</currentPage>';
	filterParameters += '<pagerMethodName>' + filter.functionName + '</pagerMethodName>';
	filterParameters += '<includeNotVerified>true</includeNotVerified>'
	filterParameters += '</filter>';
	return filterParameters;
}

