/*
	TOP / shared functions
*/
	function limitText(elementId, countId, maxSymbol)
	{
		var textarea = document.getElementById(elementId);
		
		if (!textarea) return;
		if (textarea.value.length > maxSymbol)
			textarea.value = textarea.value.substr(0,maxSymbol);
		
		var countElement = document.getElementById(countId);
		
		if (countElement)
			countElement.innerHTML = (maxSymbol - textarea.value.length);
	}
	
	function inArray(needle, haystack, strict) { 
		
		var found = false, key, strict = !!strict;
		
		for (key in haystack) {
			if (
				(strict && haystack[key] === needle) 
				|| (!strict && haystack[key] == needle)
			) {
				found = true;
				break;
			}
		}
		
		return found;
	}
	
	var storedOptions = null;
	
	function choosePeriod(periodType)
	{
		var TODAY 		= 1;
		var YESTERDAY 	= 2;
		var SEVEN_DAYS	= 3;
		var THIRTY_DAYS	= 4;
		var SIX_MONTHES	= 5;
		var YEAR		= 6;
		var ALL			= 7;
		var CUSTOM		= 8;
		
		var CUSTOM_MORE_ONE_MONTH 	= 9;
		var DAY_WHEN_NO_HOURLY_STAT 	= 10;

		var HOUR		= 1;
		var DAY		= 2;
		var WEEK		= 3;
		var MONTH		= 4;
		
		// must be sync with TopStatisticForm::HOURLY_STATISTIC_LIFE_TIME
		var HOURLY_STATISTIC_LIFE_TIME = 45; // days

		// code must be sync with PeriodType::timeDetails
		this.getPeriodMaps = function() {
			var $result = {};

			$result[TODAY] 		= [HOUR];
			$result[YESTERDAY] 	= [HOUR];
			$result[SEVEN_DAYS]	= [DAY];
			$result[THIRTY_DAYS]= [DAY, WEEK];
			$result[SIX_MONTHES]= [MONTH];
			$result[YEAR]		= [MONTH];
			$result[ALL]		= [MONTH];
			$result[CUSTOM]		= [DAY];
			$result[CUSTOM_MORE_ONE_MONTH] = [WEEK, MONTH];
			$result[DAY_WHEN_NO_HOURLY_STAT] = [DAY];
			
			return $result;
		}
		
		// code must be sync with TopStatisticForm::getPeriod
		this.getPeriod = function($periodType, $startDate, $endDate)
		{
			if ($periodType == CUSTOM) {
				var $diffDate = new Date();
				$diffDate.setTime($endDate.getTime() - $startDate.getTime()); 
				
				$dates = this.createPeriodDates();
				
				if($diffDate.getTime() == 0) {
					$periodType = TODAY;
					
					var now = new Date();
					
					if (
						(now.getTime() - $startDate.getTime()) / 86400000
							> HOURLY_STATISTIC_LIFE_TIME
					) {
						$periodType = DAY_WHEN_NO_HOURLY_STAT;
					}
				} else if($diffDate.getTime() <= $dates['oneWeek'])
					$periodType = SEVEN_DAYS; 
				else if($diffDate.getTime() <= $dates['oneMonth'])
					$periodType = THIRTY_DAYS; 
				else if($diffDate.getTime() > $dates['sixMonth'])
					$periodType = YEAR; 
				else if($diffDate.getTime() > $dates['oneMonth'])
					$periodType = CUSTOM_MORE_ONE_MONTH; 
			}
			
			return $periodType;
		}
		
		this.createPeriodDates = function()
		{
			var sixMonth = new Date(); 
			
			sixMonth.setTime(
				new Date(0, 11, 1).getTime() - new Date(0, 5, 1).getTime()
			);

			var oneMonth = new Date(); 
			
			oneMonth.setTime(
				new Date(0, 1, 1).getTime() - new Date(0, 0, 1).getTime()
			);

			var oneWeek = new Date(); 
			
			oneWeek.setTime(
				new Date(0, 0, 8).getTime() - new Date(0, 0, 1).getTime()
			);

			return {
				'oneMonth': oneMonth.getTime(), 
				'oneWeek': oneWeek.getTime(), 
				'sixMonth': sixMonth.getTime()
			};			
		}

		currentPeriod = periodType;

		var elem = document.getElementById('detailType');
		
		if (!storedOptions)
			storedOptions = elem.cloneNode(elem);
		else {
			var count = elem.options.length;
	
			while (elem.firstChild)
				elem.removeChild(elem.firstChild);

			for (var i=0; i < storedOptions.options.length; i++) {
				elem.appendChild(
					storedOptions.options[i].cloneNode(storedOptions.options[i])
				);
			}
		}
		
		var dateArray = document.getElementById('StartDate').value.split('-')
		var startDate = new Date(dateArray[0], dateArray[1] - 1, dateArray[2]);
		var dateArray = document.getElementById('EndDate').value.split('-')
		var endDate = new Date(dateArray[0], dateArray[1] - 1, dateArray[2]);

		var periodMaps = this.getPeriodMaps();
		
		var periodMap = periodMaps[
			this.getPeriod(periodType, startDate, endDate)
		];
		
		if(!periodMap)
			return;
			
		var count = elem.options.length;
		
		for (var i=0; i < count; i++) {
			var option = elem.options[i];
			
			if (option && !inArray(option.value, periodMap)) {
				elem.removeChild(elem.options[i]);
				i--; count--;
			}
		}
		
		if (elem.selectedIndex == -1)
			elem.selectedIndex = 0;
	}
	
	
	function switcherDateSelection(elemName){

		var elem = document.getElementById(elemName);
		if (elem) {
			elem.checked = true;
		}
	}
	
	function submitWowWebmoneyForm(site)
	{
		new Ajax.Request(
			'/?area=ajaxCreateBill', 
			{
				method: 'get', 
				parameters: 'site='+site, 
				onFailure: function (error) {alert(error);},
				onSuccess: successAjaxCreateBill
			}
		);
	}
	
	function successAjaxCreateBill(request)
	{
		document.getElementById('LMI_PAYMENT_NO').value = request.responseText;
		document.getElementById('wowWebmoneyForm').submit();
	}
