<cfsilent>
	<cfimport prefix="c" taglib="."/>	
	

	<!---*** идея включить титул в метаданные была не совсем пустой, но когда титул определяется в селекте, это не слишком удобно --->
	<cfassociate basetag="cf_grid_head" datacollection="headersArray"/>
	<cfset envelope=getBaseTagData('cf_grid_head',1)/>
	
	<cfparam name="ATTRIBUTES.title" type="string" default="#envelope.ATTRIBUTES.titleMap[ATTRIBUTES.name].title#"/>
	<cfparam name="ATTRIBUTES.name" type="string"/><!--- Заголовок указвается на том поле, по которому будет сортировка, а не на том, которе отображается --->
	<cfparam name="ATTRIBUTES.arrows" type="boolean" default="Yes"/>
	

	
	<cfset attributeList="name,arrows,title"/>
	
	<!--- В данном случае реализован подход: дополнительные атрибуты передаются вниз. 
	Другой вариант - создавать атрибут extra, в который писать суффикс QueryString. 
	Первый подход, использованный здесь, позволяет иметь доступ к дополнительным атрибутам, но непонятно, зачем - ведь их имена все равно неизвестны.
	Очевидный минус этого подхода - возможный конфликт имен с именами существующих атрибутов --->
	<cfset extraAttributes=structNew()/>
	
	<!--- дополнительные атрибуты родительского тега--->
	<cfif StructKeyExists(envelope, "extraAttributes") AND isStruct(envelope.extraAttributes)>
		<cfloop collection=#envelope.extraAttributes# item="attr">
			<cfif NOT listFindNoCase(attributeList, attr)><!--- проверка относительно локальных атрибутов, чтобы их не перетереть--->
				<cfset val="#structFind(envelope.extraAttributes, attr)#"/>
				<cfif IsSimpleValue(val)>
					<cfset structInsert(extraAttributes, attr, val)/>
				</cfif>
			</cfif>
		</cfloop>
	</cfif>	
	
	<cfloop collection=#ATTRIBUTES# item="attr">
		<cfif NOT listFindNoCase(attributeList, attr)>
			<cfset val="#structFind(ATTRIBUTES, attr)#"/>
			<cfif IsSimpleValue(val)>
				<cfset structInsert(extraAttributes, attr, val, "Yes")/><!--- локальные атрибуты перетрут родительские --->
			</cfif>
		</cfif>
	</cfloop>	


</cfsilent><cfif thisTag.executionMode is "end"><cfoutput>#ATTRIBUTES.title# 
<cfif ATTRIBUTES.arrows><c:order_arrows sortArray=#envelope.ATTRIBUTES.sortArray# n=#envelope.ATTRIBUTES.titleMap[ATTRIBUTES.name].ordinal# attributeCollection=#extraAttributes#/></cfif></cfoutput></cfif>