/*********************************************************************************************************
								CALCULATION
/*********************************************************************************************************/
	
	CALCULATION_NAME = "Calculation";
	CALCULATION_VERSION = "2.1.0";
	CALCULATION_AUTHOR = "Бутков Антон";
	CALCULATION_COMPANY = "AmorPro Development Studio";
	CALCULATION_CONTACT = "amorpro@mail.ru";
	CALCULATION_DESCRIPTION = 	"Модуль калькуляции формы заказа для" +
								"сайта Агролагутников (http:\\agrolagutniki.ru)."
	Uses(typeof(FRAMEWORK_NAME), 'Framework');
	Uses(typeof(ALIGNMENT_NAME), 'Alignment');	
	Uses(typeof(FIXED_NAME), 'Fixed');		
	function Uses( type, moduleName ){
		
		if ( type == "undefined" ){
		
			window.alert( "Отсутствует модуль " + moduleName + ". Модуль " + POSITION_NAME + 
				" (" + POSITION_DESCRIPTION + ") " + " не работает." );			
		}
	}
	var _properties	= [ 
		"",
		"number",
		"category",
		"name",
		"manufacture",	
		"pack",
		"cost",
		"costX",
		"description",
		"count",
		"pay",
		"payX",
		"fio",
		"organization",
		"phone",
		"email"
	];
	PROPERTY_INDEX_NONE			= 0;
	PROPERTY_INDEX_FIRST		= 1;
	PROPERTY_INDEX_NUMBER 		= 1;
	PROPERTY_INDEX_CATEGORY 	= 2;
	PROPERTY_INDEX_NAME			= 3;
	PROPERTY_INDEX_MANUFACTURE	= 4;	
	PROPERTY_INDEX_PACK	 		= 5;
	PROPERTY_INDEX_COST	 		= 6;
	PROPERTY_INDEX_COSTX	 	= 7;
	PROPERTY_INDEX_DESCRIPTION 	= 8;
	PROPERTY_INDEX_COUNT	 	= 9;
	PROPERTY_INDEX_PAY	 		= 10;
	PROPERTY_INDEX_PAYX	 		= 11;
	PROPERTY_INDEX_FIO			= 12;
	PROPERTY_INDEX_ORGANIZATION	= 13;
	PROPERTY_INDEX_PHONE	 	= 14;
	PROPERTY_INDEX_EMAIL	 	= 15;	
	PROPERTY_INDEX_LAST			= 15;
	function LoadCalculationItem( formId, itemIndex )
	{
		SetFixed(formId);
		var notExistsPropertyCount = 0;		
		for(var propertyIndex = PROPERTY_INDEX_FIRST; 
			propertyIndex <= PROPERTY_INDEX_LAST; 
			propertyIndex++)
		{
			var itemId = GetCalculationPropertyId( propertyIndex ) + itemIndex;
			if( Exists( itemId ) )
			{
				SetCalculationPropertyValue( propertyIndex, GetValue( itemId ) );
			}
			else
			{
				notExistsPropertyCount++;
			}			
		}
		if( notExistsPropertyCount < PROPERTY_INDEX_LAST)
		{
			Show(formId);
			SetAlignment(formId, "center", "middle");				
		}
		else
		{
			Log( "Записи с индексом " + 
			itemIndex +
			" в таблице не существует." );		
		}
	}
	function SendCalculationForm( formId )
	{
		SubmitForm(formId); 
		UnLoadCalculationItem( formId )
	}
	function UnLoadCalculationItem( formId )
	{
		ClearCalculationForm()
		Hide(formId);
	}
	function ClearCalculationForm()
	{
		for(var propertyIndex = PROPERTY_INDEX_FIRST; 
			propertyIndex <= PROPERTY_INDEX_LAST; 
			propertyIndex++)
		{
			if(propertyIndex != PROPERTY_INDEX_CATEGORY) 
			{
				SetCalculationPropertyValue( propertyIndex, "" );
			}
		}
	}
	function GetCalculationPropertyId( propertyIndex )
	{
		if( CalculationPropertyExists( propertyIndex ) )
		{
			return _properties[ propertyIndex ];
		}
		else
		{
			Log("Форма калькуляции. Не удалось ПОЛУЧИТЬ ИДЕНТИФИКАТОР свойства с индексом: " 
				+ propertyIndex + 
				". Индекс не существует");
			
			return _properties[ PROPERTY_INDEX_NONE ];
		}
	}
	function GetCalculationPropertyValue( propertyIndex )
	{
		if( CalculationPropertyExists( propertyIndex ) )
		{
			return GetValue( GetCalculationPropertyId( propertyIndex ) );
		}
		else
		{
			Log("Форма калькуляции. Не удалось ПОЛУЧИТЬ ЗНАЧЕНИЕ свойству с индексом: " 
				+ propertyIndex + 
				". Индекс не существует");
			return _properties[ PROPERTY_INDEX_NONE ];
		}
	}
	function SetCalculationPropertyValue( propertyIndex, value )
	{
		if( CalculationPropertyExists( propertyIndex ) )
		{
			var HIDDEN = "Hidden";
			var propertyId = GetCalculationPropertyId( propertyIndex );
			if(Exists( propertyId ) && Exists( propertyId + HIDDEN ) )
			{
				SetValue( propertyId, value);
				SetValue( propertyId + HIDDEN, value);	
			}
		}
		else
		{
			Log("Форма калькуляции. Не удалось ЗАДАТЬ ЗНАЧЕНИЕ свойству с индексом: " 
				+ propertyIndex + 
				". Индекс не существует");	
		}
	}	
	function CalculationPropertyExists( propertyIndex )
	{
		return (propertyIndex > PROPERTY_INDEX_NONE && propertyIndex <= PROPERTY_INDEX_LAST);
	}
	function SetNDSValue( withOutNdsId, ndsId)
	{
		SetValue( ndsId, CalculateNDS( GetValue( withOutNdsId ) ) + " руб.");
	}
	function CalculateNDS( value )
	{
		var nds = 0.18;
		value = parseInt( value );
		
		return value + (value * nds);
	}
	function SetSum( cashId, countId, sumId)
	{
		var cash = GetValue( cashId );
		var count = GetValue( countId );
		
		SetValue( sumId, CalculateSum( cash, count ) + " руб.");
	}	
	function CalculateSum( cash, count)
	{
		cash = parseInt( cash );
		count = parseInt( count );
		return cash * count;
	}
