Ext.ns('SroSiteInfo');

SroSiteInfo.MembersDetailInfo = Ext.extend(Ext.Panel, {
	title : 'Детальная информация',
	disabled : true,
	id : 'detail',
	layout : 'ux.row',
	isFired : false,
	
	mainDataId : 'main_data_id',
	activitiesId : 'activities_id',
	insuranceInfoId : 'insurance_info_id',
	partnersId : 'partners_id',
	commonInfoId : 'common_info_id',
	previousPanelId : null,
	previousBtn : null,
	
    isRequestList : false,
    member : null,
    memberInfo : null,
    
    initComponent : function() {
		var me = this;
		
		me.addEvents('firstshow');
		
		var config = {
			tbar: new Ext.Toolbar({
		        items: [{
			        text : 'Основные данные',
			        enableToggle : true,
			        handler : function(btn) {
			    		me.showDataPanel(btn, me.mainDataId);
			        }
			    }, '-', {
			        text : 'Показатели деятельности',
			        enableToggle : true,
			        handler : function(btn) {
			    		me.showDataPanel(btn, me.activitiesId);
			    	}
			    }, '-', {
			        text : 'Страхование и сертификация',
			        enableToggle : true,
			        handler : function(btn) {
			    		me.showDataPanel(btn, me.insuranceInfoId);
			    	}
			    }, '-', {
			        text:'Партнеры, объекты, награды',
			        enableToggle : true,
			        handler : function(btn) {
			    		me.showDataPanel(btn, me.partnersId);
			       	}
			    }, '-', {
			        text:'Прочая информация',
			        enableToggle : true,
			        handler : function(btn) {
			    		me.showDataPanel(btn, me.commonInfoId);
			       	}
			    }]
		    })
		};
		
		Ext.apply(me, Ext.apply(me.initialConfig, config));
		SroSiteInfo.MembersDetailInfo.superclass.initComponent.apply(me, arguments);
		
		me.showDataPanel(me.getTopToolbar().get(0), me.mainDataId);
		
		me.on('firstshow', function() {
			if (!me.isFired) {
				me.updateDetail(me.member, me.memberInfo);
				me.isFired = true;
			}
		}, me);
	},
	
	// private
	showDataPanel : function(btn, panelId) {
		var me = this;
		
		if (me.previousBtn)
			me.previousBtn.toggle(false);
		
		btn.toggle(true);
		me.previousBtn = btn;
		
		if (me.previousPanelId)
			Ext.getCmp(me.previousPanelId).hide();
		
		var infoPanel = Ext.getCmp(panelId);
		if  (infoPanel)
			infoPanel.show();
		
		me.previousPanelId = panelId;
	},
	
	// private
	createPanelWithContent : function(panelId, htmlContent, isHidden) {
		var me = this;
		
		var ie78width = 'auto';
		if(Ext.isIE7 || Ext.isIE8){
			ie78width = '100%';
		}
		
		var panel = Ext.getCmp(panelId);
		if (panel) {
			me.remove(panel);
		}
		var text = htmlContent;
		me.add(new Ext.Panel({
			id : panelId,
			bodyStyle : 'padding: 5px 0px 5px 0px;',
			autoScroll : true,
			rowHeight : 1,
			width : ie78width,
			html : text,
			hidden : isHidden
		}));
		me.doLayout();
	},
	
	updateDetail : function(rec, memberInfo) {
		var me = this;
		
		var mainDataContent = '<div><table class="all-fields">';
		mainDataContent += getLine('№ дела:', rec.numberAct);
		mainDataContent += getLine('Заявитель:', (rec.candidate ? 'кандидат' : 'член'));
		mainDataContent += getLine('ОПФ:', rec.opf);
		mainDataContent += getLine('Название:', rec.name);
		mainDataContent += getLine('Адрес фактический:', getValue(rec.address));
		mainDataContent += getLine('Адрес юридический:', getValue(rec.legalAddress));
		mainDataContent += getLine('ИНН:', rec.idNumber);
		mainDataContent += getLine('ОГРН:', rec.ogrn);
		mainDataContent += getLine('Индекс:', rec.postalCode);
		mainDataContent += getLine('Регион регистрации:', rec.regArea);
		mainDataContent += getLine('Телефон:', rec.phone);
		mainDataContent += getHideLine(memberInfo.faxFlag, 'Факс:', getValue(memberInfo.fax));
		mainDataContent += getHideLine(memberInfo.advertContactPhoneFlag, 'Телефон для контактов рекламного характера:', getValue(memberInfo.advertContactPhone));
		mainDataContent += getHideLine(memberInfo.emailFlag, 'E-mail организации:', getValue(memberInfo.email)); 
		mainDataContent += getHideLine(memberInfo.siteFlag, 'Сайт:', getSite(memberInfo.site));
		mainDataContent += getHideLine(memberInfo.leaderInfoFlag, 'ФИО, должность руководителя, год рождения, город проживания, стаж строительной деятельности, звания, награды:', getTextArea(memberInfo.leaderInfo));
		if (!me.isRequestList && me.loginned) {
			mainDataContent += getLine('Источник информации о нас:', getValue(rec.infoSource));
		}					 
		mainDataContent += '</table></div>';
			
		var activitiesContent = '<div><table class="all-fields">';
		activitiesContent += getHideLine(memberInfo.buildingPriorityFlag, '<span id="workType4Replace">Строительная</span> деятельность является основной?:', getYesNoValue(memberInfo.buildingPriority));
		activitiesContent += getHideLine(memberInfo.yearFlag, 'Год создания:', getValue(memberInfo.year));
		activitiesContent += getHideLine(memberInfo.yearStateFlag, 'Год гос. регистрации:', getValue(memberInfo.yearState));
		activitiesContent += getHideLine(memberInfo.yearReceiptsFlag, 'Годовая выручка, всего (млн.руб.):', getValue(memberInfo.yearReceipts));
		activitiesContent += getHideLine(memberInfo.yearReceiptsBySMRFlag, 'Годовая выручка по СМР (млн.руб.):', getValue(memberInfo.yearReceiptsBySMR));
		activitiesContent += getHideLine(memberInfo.yearReceiptsFromStateFlag, 'в т. ч. по гос (муниципальным) контрактам (млн.руб.):', getValue(memberInfo.yearReceiptsFromState));
		activitiesContent += getHideLine(memberInfo.yearReceiptsInHoldingFlag, 'Объем выручки по СМР за предыдущий год в холдинге(при наличии холдинга) без НДС (млн. руб.):', getValue(memberInfo.yearReceiptsInHolding));
		activitiesContent += getHideLine(memberInfo.staffCountFlag, 'К-во сотрудников, всего(включая рабочих):', getValue(memberInfo.staffCount));
		activitiesContent += getHideLine(memberInfo.ITRCountFlag, 'К-во ИТР, всего:', getValue(memberInfo.ITRCount));
		activitiesContent += getHideLine(memberInfo.ITRCountByMainWorkFlag, 'в т. ч. ИТР по основному месту работы:', getValue(memberInfo.ITRCountByMainWork));
		activitiesContent += getHideLine(memberInfo.capitalFlag, 'Уставной капитал (руб.):', getValue(memberInfo.capital));
		activitiesContent += getHideLine(memberInfo.mainStockFlag, 'Основные фонды (млн.руб.):', getValue(memberInfo.mainStock));
		activitiesContent += getHideLine(memberInfo.taxationSystemFlag, 'Используемая система налогообложения:', getValue(memberInfo.taxationSystem));
		activitiesContent += getHideLine(memberInfo.mainOfficeAreaFlag, 'Площадь головного офиса (кв.м.):', getValue(memberInfo.mainOfficeArea));
		activitiesContent += '</table></div>';
			
		var insuranceContent = '<div><table class="all-fields">';
		insuranceContent += getHideLine(memberInfo.hasAssuranceFlag, 'Наличие договора страхования гражданской ответственности:', getYesNoValue(memberInfo.hasAssurance));
		if (memberInfo.hasAssurance) {
			insuranceContent += getHideLine(memberInfo.assuranceInsurerNameFlag, 'Наименование страховщика:', getValue(memberInfo.assuranceInsurerName));
			insuranceContent += getHideLine(memberInfo.assurancePolicyNumberFlag, '№ полиса:', getValue(memberInfo.assurancePolicyNumber));
			insuranceContent += getHideLine(memberInfo.assuranceInsuranceSumFlag, 'Страховая сумма:', getValue(memberInfo.assuranceInsuranceSum));
			insuranceContent += getHideLine(memberInfo.insuranceStartDateFlag, 'Дата начала договора страхования:', getValue(memberInfo.insuranceStartDateStr));
			insuranceContent += getHideLine(memberInfo.insuranceEndDateFlag, 'Дата окончания договора страхования:', getValue(memberInfo.insuranceEndDateStr));
			insuranceContent += getHideLine(memberInfo.retroactivePeriodFlag, 'Ретроактивный период:', getValue(memberInfo.retroactivePeriod));
			insuranceContent += getHideLine(memberInfo.deductibleFlag, 'Франшиза:', getValue(memberInfo.deductible));
		}
		insuranceContent += getHideLine(memberInfo.hasOtherRisksAssuranceFlag, 'Наличие договоров страхования иных рисков по СМР:', getYesNoValue(memberInfo.hasOtherRisksAssurance));
		insuranceContent += getHideLine(memberInfo.hasEmployeeAssuranceFlag, 'Наличие договоров страхования работников от несчастных случаев:', getYesNoValue(memberInfo.hasEmployeeAssurance));
		insuranceContent += getHideLine(memberInfo.hasCertificateFlag, 'Наличие сертификатов соответствия строительных работ:', getYesNoValue(memberInfo.hasCertificate));
		if (memberInfo.hasCertificate) {
			insuranceContent += getHideLine(memberInfo.certificateOrganFlag, 'Орган по сертификации:', getValue(memberInfo.certificateOrgan));
			insuranceContent += getHideLine(memberInfo.certificationSystemFlag, 'Система сертификации:', getValue(memberInfo.certificationSystem));
			insuranceContent += getHideLine(memberInfo.certificateEndDateFlag, 'Дата окончания действия сертификата:', getValue(memberInfo.certificateEndDateStr));		
		}
		insuranceContent += getHideLine(memberInfo.hasQualityCertificateFlag, 'Наличие сертификатов систем управления качеством:', getYesNoValue(memberInfo.hasQualityCertificate));
		if (memberInfo.hasQualityCertificate) {
			insuranceContent += getHideLine(memberInfo.qualityCertificateOrganFlag, 'Орган по сертификации:', getValue(memberInfo.qualityCertificateOrgan));
			insuranceContent += getHideLine(memberInfo.qualityCertificationSystemFlag, 'Система сертификации:', getValue(memberInfo.qualityCertificationSystem));
			insuranceContent += getHideLine(memberInfo.qualityCertificateEndDateFlag, 'Дата окончания действия сертификата:', getValue(memberInfo.qualityCertificateEndDateStr));		
		}
		insuranceContent += '</table></div>';
		
		var partnersContent = '<div><table class="all-fields">';
		partnersContent += getHideLine(memberInfo.activityRegionFlag, 'Регионы деятельности:', getTextArea(memberInfo.activityRegions));
		partnersContent += getHideLine(memberInfo.notableBuildingsFlag, 'Наиболее примечательные стройки:', getTextArea(memberInfo.notableBuildings));
		partnersContent += getHideLine(memberInfo.buildingPartnersFlag, 'Крупнейшие партнеры - строительные организации:', getTextArea(memberInfo.buildingPartners));
		partnersContent += getHideLine(memberInfo.designingPartnersFlag, 'Крупнейшие партнеры - проектные организации:', getTextArea(memberInfo.designingPartners));
		partnersContent += getHideLine(memberInfo.customersFlag, 'Крупнейшие заказчики:', getTextArea(memberInfo.customers));
		partnersContent += getHideLine(memberInfo.rewardsFlag, 'Дипломы, награды организации:', getTextArea(memberInfo.rewards));
		partnersContent += getHideLine(memberInfo.specCertifierContactFlag, 'Наименование и адрес специализированного в области строительства Органа по сертификации:', getTextArea(memberInfo.specCertifierContact));
		partnersContent += getHideLine(memberInfo.nonprofitMembershipFlag, 'Членство в некоммерческих организациях:', getValue(memberInfo.nonprofitMembership));
		partnersContent += getHideLine(memberInfo.hasDesignUnitFlag, 'Наличие подразделений по проектированию:', getYesNoValue(memberInfo.hasDesignUnit));
		partnersContent += getHideLine(memberInfo.hasEngineeringSurveyFlag, 'Наличие подразделений по инженерным изысканиям:', getYesNoValue(memberInfo.hasEngineeringSurvey));
		partnersContent += '</table></div>';
		
		var commonContent = '<div><table class="all-fields">';
		commonContent += getPrivateLine(memberInfo.accountantGeneralNameFlag, 'ФИО главного бухгалтера:', getValue(memberInfo.accountantGeneralName));
		commonContent += getPrivateLine(memberInfo.accountantGeneralEmailFlag, 'E-mail главного бухгалтера:', getValue(memberInfo.accountantGeneralEmail));
		commonContent += getPrivateLine(memberInfo.accountantGeneralTelephoneFlag, 'Телефон главного бухгалтера:', getValue(memberInfo.accountantGeneralTelephone));
		commonContent += getPrivateLine(memberInfo.HRManagerNameFlag, 'ФИО руководителя кадрового подразделения:', getValue(memberInfo.HRManagerName));
		commonContent += getPrivateLine(memberInfo.HRManagerEmailFlag, 'E-mail руководителя кадрового подразделения:', getValue(memberInfo.HRManagerEmail));
		commonContent += getPrivateLine(memberInfo.HRManagerTelephoneFlag, 'Телефон руководителя кадрового подразделения:', getValue(memberInfo.HRManagerTelephone));			
		if (!me.isRequestList && !this.active) {
			commonContent += getLine('Дата прекращения членства в СРО:', getValue(rec.dateDenyStr));
			commonContent += getLine('Основание прекращения членства в СРО:', getValue(rec.reasonDeny));
		}
		commonContent += '</table></div>';
			
		me.createPanelWithContent(me.mainDataId, mainDataContent, false);
		me.createPanelWithContent(me.activitiesId, activitiesContent, true);
		me.createPanelWithContent(me.insuranceInfoId, insuranceContent, true);
		me.createPanelWithContent(me.partnersId, partnersContent, true);
		me.createPanelWithContent(me.commonInfoId, commonContent, true);
		me.previousPanelId = me.mainDataId;
		
		me.showDataPanel(me.getTopToolbar().get(0), me.mainDataId);
	},
	
	// public 
	setDetailInfo : function(member, memberInfo) {
		var me = this;
		
		me.isFired = false;
		me.member = member;
		me.memberInfo = memberInfo;
	}
});

function getLine(key, value) {
	var line = '<tr>';
	line += '<td class="key-fields" style="font-weight: bold;">' + key  + '</td>';
	line += '<td class="value-fields">' + value + '</td>';
	line += '</tr>';
	line += '<tr><td colspan="2"><hr class="member-goriz-line" /></td></tr>';
	return line;
}

function getHideLine(bool, key, value) {
	var line = '';
	
	if (bool || this.loginned) {
		line += '<tr>';
		line += '<td class="key-fields" style="font-weight: bold;">' + key  + '</td>';
		line += '<td class="value-fields">' + value + '</td>';
		line += '</tr>';
		line += '<tr><td colspan="2"><hr class="member-goriz-line" /></td></tr>';
	}
	return line;
}

function getPrivateLine(bool, key, value) {
	var line = '';
	
	if (bool && this.loginned) {
		line += '<tr>';
		line += '<td class="key-fields" style="font-weight: bold;">' + key  + '</td>';
		line += '<td class="value-fields">' + value + '</td>';
		line += '</tr>';
		line += '<tr><td colspan="2"><hr class="member-goriz-line" /></td></tr>';
	}
	return line;
}

function getValue(value) {
	if (value) {
		return value;
	}	
	return '<span class="no-data">нет данных</span>';
}

function getYesNoValue(value) {
	if (value) {
		return 'да';
	}	
	return 'нет';
}

function getSite(value) {
	if (value) {
		return '<a href = \"http://' + value + '\">' + value + '</a>';
	}
	return '<span class="no-data">нет данных</span>';
}

function getTextArea( value ) {
	if (value) {
		return '<textarea class="text-area-data" readonly>' + value + '</textarea>';
	}
	return '<textarea class="text-area-no-data" readonly>нет данных</textarea>';
}
