﻿
//GenerateDDSelect('from', globalIntCurD, globalIntCurM, globalIntCurY);
//GenerateDDSelect('to', globalIntCurD, globalIntCurM, globalIntCurY);
//GenerateMMYYYYSelect('from', globalIntCurD, globalIntCurM, globalIntCurY);
//GenerateMMYYYYSelect('to', globalIntCurD, globalIntCurM, globalIntCurY);

function TEST( obj )
{
	var ttt = "";
}
// Дата в выпадающих списках должна быть меньше (или равна) текущей даты
function ChangeDDMMYYYYSelectsLess( strPrefix , obj )
{
	ChangeDDMMYYYYSelects( strPrefix , obj, false);
}
// Дата в выпадающих списках должна быть больше (или равна) текущей даты
function ChangeDDMMYYYYSelectsMore( strPrefix , obj )
{
	ChangeDDMMYYYYSelects( strPrefix , obj, true);
}

// Изменение скрытого текстового поля изменяет дату в календаре
function ChangeDD_MM_YYYYSelects( strPrefix , obj, moreCurrentDate )
{
	var objDD = document.getElementById(strPrefix+'DaySelect');
	//var objMMYYYY = document.getElementById(strPrefix+'YearMonthSelect');
	var objMM = document.getElementById(strPrefix+'MonthSelect');
	var objYYYY = document.getElementById(strPrefix+'YearSelect');
	
	if(!objDD ||
	   !objMM ||
	   !objYYYY ||
	   !obj)
	{
		alert("To Developers (ChangeDDMMYYYYSelects): проверьте наличие элементов на странице.");
		return;
	}

	var splitList = obj.value.split('.');
	var intD = parseInt(splitList[0],10);
	var intM = parseInt(splitList[1],10);
	var intY = parseInt(splitList[2],10);
	
	var ttttt = objDD.options[objDD.selectedIndex].value + "." + objMM.options[objMM.selectedIndex].value + "." + objYYYY.options[objYYYY.selectedIndex].value;

	var selDate = new Date(intY, intM-1, intD);
	var maxDate = new Date(globalIntCurY, globalIntCurM-1, globalIntCurD);
	var minDate = new Date(globalIntMinY, globalIntMinM-1, globalIntMinD);
	
	if (maxDate >= selDate && selDate >= minDate)
	{
        GenerateDDSelect( strPrefix, 'DaySelect', '', intD, intM, intY, moreCurrentDate, true);
        GenerateMMSelect( strPrefix, 'MonthSelect', '', intD, intM, intY, moreCurrentDate, true);
        //GenerateYYYYSelect( strPrefix, 'YearSelect', '', intD, intM, intY, moreCurrentDate, true);
		objYYYY.selectedIndex = intY - globalIntMinY;
		//objMM.selectedIndex = intM;
		//objDD.selectedIndex = intD;
		//objYYYY.onchange();
		//objMM.onchange();
		objDD.onchange();
		
		objDD = document.getElementById(strPrefix+'DaySelect');
		var tmp = objDD.options[objDD.selectedIndex].value + "." + objMM.options[objMM.selectedIndex].value + "." + objYYYY.options[objYYYY.selectedIndex].value;
		var splittt = tmp.split('.');
		//var yyy = new Date(parseInt(splittt[2],10),parseInt(splittt[1],10)-1,parseInt(splittt[0],10));
		//obj.CalendarBehavior._selectedDate = yyy;
		obj.value = tmp;
		return;
	}
	
	// Если выбранная в календаре дата выходит за границы дозволенного
	//objMMYYYY.onchange();
	objYYYY.onchange();
	objMM.onchange();
	objDD = document.getElementById(strPrefix+'DaySelect');
	var tmp = objDD.options[objDD.selectedIndex].value + "." + objMM.options[objMM.selectedIndex].value + "." + objYYYY.options[objYYYY.selectedIndex].value;
	var splittt = tmp.split('.');
	//var yyy = new Date(parseInt(splittt[2],10),parseInt(splittt[1],10)-1,parseInt(splittt[0],10));
	//obj.CalendarBehavior._selectedDate = yyy;
	obj.value = tmp;
	var ss = tmp;
}


// Изменение скрытого текстового поля изменяет дату в календаре
function ChangeDDMMYYYYSelects( strPrefix , obj, moreCurrentDate )
{
	var objDD = document.getElementById(strPrefix+'DaySelect');
	var objMMYYYY = document.getElementById(strPrefix+'YearMonthSelect');
	
	if(!objDD ||
	   !objMMYYYY ||
	   !obj)
	{
		alert("To Developers (ChangeDDMMYYYYSelects): проверьте наличие элементов на странице.");
		return;
	}

	var splitList = obj.value.split('.');
	var intD = parseInt(splitList[0],10);
	var intM = parseInt(splitList[1],10);
	var intY = parseInt(splitList[2],10);
	
	var ttttt = objDD.options[objDD.selectedIndex].value + "." + objMMYYYY.options[objMMYYYY.selectedIndex].value;
	
	for ( var i=0 ; i < objMMYYYY.options.length ; i++ )
		if ( objMMYYYY.options[i].value == (intM < 10 ? "0" + intM : intM + "") + "." +intY )
		{
            GenerateDDSelect( strPrefix, 'DaySelect', 'YearMonthSelect', intD, intM, intY, moreCurrentDate, true);		
			objMMYYYY.selectedIndex = i;
			objMMYYYY.onchange();
			objDD = document.getElementById(strPrefix+'DaySelect');
			var tmp = objDD.options[objDD.selectedIndex].value + "." + objMMYYYY.options[objMMYYYY.selectedIndex].value;
			var splittt = tmp.split('.');
			//var yyy = new Date(parseInt(splittt[2],10),parseInt(splittt[1],10)-1,parseInt(splittt[0],10));
			//obj.CalendarBehavior._selectedDate = yyy;
			obj.value = tmp;
			return;
		}
	
	objMMYYYY.onchange();
	objDD = document.getElementById(strPrefix+'DaySelect');
	var tmp = objDD.options[objDD.selectedIndex].value + "." + objMMYYYY.options[objMMYYYY.selectedIndex].value;
	var splittt = tmp.split('.');
	//var yyy = new Date(parseInt(splittt[2],10),parseInt(splittt[1],10)-1,parseInt(splittt[0],10));
	//obj.CalendarBehavior._selectedDate = yyy;
	obj.value = tmp;
	var ss = tmp;
}

// Сгенерировать список месяцев 
// intCurM - первый элемент списка
function GenerateMMYYYYSelect( strPrefix, intCurD, intCurM, intCurY )
{
	var objDD = document.getElementById(strPrefix+'DaySelect');
	var objMMYYYY = document.getElementById(strPrefix+'YearMonthSelect');
	
	if(!objDD ||
	   !objMMYYYY)
	{
		alert("To Developers (GenerateMMYYYYSelect): проверьте наличие элементов на странице.");
		return;
	}
		
	var n=objMMYYYY.options.length;
	var i;
	for(i=0;i<n;i++)
		objMMYYYY.remove(0);
		
	var intM = intCurM;
	var intY = intCurY;
	for ( i=0 ; i < 12 ; i++)
	{
		if (intM > 12)
		{
			intY++;
			intM=1;
		}
		var option = document.createElement('option');
		option.text=MonthName(intM) + ", " + intY;
		option.value=(intM<10 ? "0"+intM: ""+intM) + "." +intY;
		
		try 
		{
			objMMYYYY.add(option,null);// standards compliant; doesn't work in IE
		}
		catch(ex)
		{
			objMMYYYY.add(option);// IE only
		}
		intM++;
	}
	objMMYYYY.selectedIndex=0;
}

// Обновить From при update=1
// Обновить To при update=2
// Обновить один выпадающий список по другому выпадающему списку
function UpdateDDMMYYYYSelects( strSelectFromPrefix , strSelectToPrefix, update, moreCurrentDate, aviaDateTextBox, aviaRevertDateTextBox )
{
	var objDDFrom = document.getElementById(strSelectFromPrefix+'DaySelect');
	var objDDTo = document.getElementById(strSelectToPrefix+'DaySelect');

	var objMMYYYYFrom = document.getElementById(strSelectFromPrefix+'YearMonthSelect');
	var objMMYYYYTo = document.getElementById(strSelectToPrefix+'YearMonthSelect');

	if (!objDDFrom ||
		!objDDTo ||
		!objMMYYYYFrom ||
		!objMMYYYYTo)
	{
		alert("To Developers (UpdateDDMMYYYYSelects): проверьте наличие элементов на странице.");
		return;
	}
	
	var intD = parseInt(objDDFrom.options[objDDFrom.selectedIndex].value,10);
	var splitList = objMMYYYYFrom.options[objMMYYYYFrom.selectedIndex].value.split('.');
	var intM = parseInt(splitList[0],10);
	var intY = parseInt(splitList[1],10);
	var dateFrom = new Date(intY,intM-1,intD);

	intD = parseInt(objDDTo.options[objDDTo.selectedIndex].value,10);
	splitList = objMMYYYYTo.options[objMMYYYYTo.selectedIndex].value.split('.');
	intM = parseInt(splitList[0],10);
	intY = parseInt(splitList[1],10);
	var dateTo = new Date(intY,intM-1,intD);

	// Изменяется поле 'From'
	// Проверяется, надо ли изменять поле 'To'
	if (update == 2)
	{
		intD = parseInt(objDDFrom.options[objDDFrom.selectedIndex].value,10);
		splitList = objMMYYYYFrom.options[objMMYYYYFrom.selectedIndex].value.split('.');
		intM = parseInt(splitList[0],10);
		intY = parseInt(splitList[1],10);
		
		if (dateFrom>dateTo)
		{
			objMMYYYYTo.selectedIndex = objMMYYYYFrom.selectedIndex;
			GenerateDDSelect('to', 'DaySelect', 'YearMonthSelect', intD, intM, intY, moreCurrentDate, true);
			var obj = document.getElementById(prefixForMainContentPlaceHolder + aviaRevertDateTextBox);
			obj.value = objDDTo.options[objDDTo.selectedIndex].value + "." + objMMYYYYTo.options[objMMYYYYTo.selectedIndex].value;
			var splittt = obj.value.split('.');
			if (obj.CalendarBehavior)
				obj.CalendarBehavior._selectedDate = new Date(parseInt(splittt[2],10),parseInt(splittt[1],10)-1,parseInt(splittt[0],10));
		}
		GenerateDDSelect('from', 'DaySelect', 'YearMonthSelect', intD, intM, intY, moreCurrentDate, true);
		var obj = document.getElementById(prefixForMainContentPlaceHolder + aviaDateTextBox);
		obj.value = objDDFrom.options[objDDFrom.selectedIndex].value + "." + objMMYYYYFrom.options[objMMYYYYFrom.selectedIndex].value;
		var splittt = obj.value.split('.');
		if (obj.CalendarBehavior)
			obj.CalendarBehavior._selectedDate = new Date(parseInt(splittt[2],10),parseInt(splittt[1],10)-1,parseInt(splittt[0],10));
	}	
	// Изменяется поле 'To'
	// Проверяется, надо ли изменять поле 'From'
	else if (update == 1)
	{
		intD = parseInt(objDDTo.options[objDDTo.selectedIndex].value,10);
		splitList = objMMYYYYTo.options[objMMYYYYTo.selectedIndex].value.split('.');
		intM = parseInt(splitList[0],10);
		intY = parseInt(splitList[1],10);

		if (dateFrom>dateTo)
		{
			objMMYYYYFrom.selectedIndex = objMMYYYYTo.selectedIndex;
			GenerateDDSelect('from', 'DaySelect', 'YearMonthSelect', intD, intM, intY, moreCurrentDate, true);
			var obj = document.getElementById(prefixForMainContentPlaceHolder + aviaDateTextBox);
			obj.value = objDDFrom.options[objDDFrom.selectedIndex].value + "." + objMMYYYYFrom.options[objMMYYYYFrom.selectedIndex].value;
			var splittt = obj.value.split('.');
			if (obj.CalendarBehavior)
				obj.CalendarBehavior._selectedDate = new Date(parseInt(splittt[2],10),parseInt(splittt[1],10)-1,parseInt(splittt[0],10));
		}
		GenerateDDSelect('to', 'DaySelect', 'YearMonthSelect', intD, intM, intY, moreCurrentDate, true);
		var obj = document.getElementById(prefixForMainContentPlaceHolder + aviaRevertDateTextBox);
		obj.value = objDDTo.options[objDDTo.selectedIndex].value + "." + objMMYYYYTo.options[objMMYYYYTo.selectedIndex].value;
		var splittt = obj.value.split('.');
		if (obj.CalendarBehavior)
			obj.CalendarBehavior._selectedDate = new Date(parseInt(splittt[2],10),parseInt(splittt[1],10)-1,parseInt(splittt[0],10));
	}
}

// Обновить From при update=1
// Обновить To при update=2
// Обновить один выпадающий список по другому выпадающему списку
// 
function UpdateDD_MM_YYYYSelects( strSelectFromPrefix, strSelectToPrefix, update, moreCurrentDate, aviaDateTextBox, aviaRevertDateTextBox )
{
	var objDDFrom = document.getElementById(strSelectFromPrefix+'DaySelect');
	var objDDTo = document.getElementById(strSelectToPrefix+'DaySelect');

    var objMMFrom = document.getElementById(strSelectFromPrefix+'MonthSelect');
    var objMMTo = document.getElementById(strSelectToPrefix+'MonthSelect');
    
	var objYYYYFrom =   document.getElementById(strSelectFromPrefix+'YearSelect');
	var objYYYYTo =     document.getElementById(strSelectToPrefix+'YearSelect');

	if (!objDDFrom ||
		!objDDTo ||
		!objMMFrom ||
		!objMMTo ||
		!objYYYYFrom ||
		!objYYYYTo)
	{
		alert("To Developers (UpdateDD_MM_YYYYSelects): проверьте наличие элементов на странице.");
		return;
	}
	
	var intD = parseInt(objDDFrom.options[objDDFrom.selectedIndex].value, 10);
	//var splitList = objMMYYYYFrom.options[objMMYYYYFrom.selectedIndex].value.split('.');
	var intM = parseInt(objMMFrom.options[objMMFrom.selectedIndex].value, 10);
	var intY = parseInt(objYYYYFrom.options[objYYYYFrom.selectedIndex].value, 10);
	var dateFrom = new Date(intY,intM-1,intD);

	intD = parseInt(objDDTo.options[objDDTo.selectedIndex].value, 10);
	//splitList = objMMYYYYTo.options[objMMYYYYTo.selectedIndex].value.split('.');
	intM = parseInt(objMMTo.options[objMMTo.selectedIndex].value, 10);
	intY = parseInt(objYYYYTo.options[objYYYYTo.selectedIndex].value, 10);
	var dateTo = new Date(intY,intM-1,intD);

	// Изменяется поле 'From'
	// Проверяется, надо ли изменять поле 'To'
	if (update == 2)
	{
		intD = parseInt(objDDFrom.options[objDDFrom.selectedIndex].value, 10);
		//splitList = objMMYYYYFrom.options[objMMYYYYFrom.selectedIndex].value.split('.');
		intM = parseInt(objMMFrom.options[objMMFrom.selectedIndex].value, 10);
		intY = parseInt(objYYYYFrom.options[objYYYYFrom.selectedIndex].value, 10);
		
		if (dateFrom > dateTo)
		{
			//objMMYYYYTo.selectedIndex = objMMYYYYFrom.selectedIndex;
			GenerateMMSelect('to', 'MonthSelect', '', intD, intM, intY, moreCurrentDate, true);
			//objMMTo.selectedIndex = objMMFrom.selectedIndex;
			objYYYYTo.selectedIndex = objYYYYFrom.selectedIndex;
			
			GenerateDDSelect('to', 'DaySelect', '', intD, intM, intY, moreCurrentDate, true);
			
			var obj = document.getElementById(prefixForMainContentPlaceHolder + aviaRevertDateTextBox);
			//obj.value = objDDTo.options[objDDTo.selectedIndex].value + "." + objMMYYYYTo.options[objMMYYYYTo.selectedIndex].value;
			obj.value = objDDTo.options[objDDTo.selectedIndex].value + "." + objMMTo.options[objMMTo.selectedIndex].value + "." + objYYYYTo.options[objYYYYTo.selectedIndex].value;
			var splittt = obj.value.split('.');
			if (obj.CalendarBehavior)
				obj.CalendarBehavior._selectedDate = new Date(parseInt(splittt[2], 10), parseInt(splittt[1], 10) - 1, parseInt(splittt[0], 10));
		}
		GenerateDDSelect('from', 'DaySelect', '', intD, intM, intY, moreCurrentDate, true);
		GenerateMMSelect('from', 'MonthSelect', '', intD, intM, intY, moreCurrentDate, true);
		var obj = document.getElementById(prefixForMainContentPlaceHolder + aviaDateTextBox);
		//obj.value = objDDFrom.options[objDDFrom.selectedIndex].value + "." + objMMYYYYFrom.options[objMMYYYYFrom.selectedIndex].value;
		obj.value = objDDFrom.options[objDDFrom.selectedIndex].value + "." + objMMFrom.options[objMMFrom.selectedIndex].value + "." + objYYYYFrom.options[objYYYYFrom.selectedIndex].value;
		var splittt = obj.value.split('.');
		if (obj.CalendarBehavior)
			obj.CalendarBehavior._selectedDate = new Date(parseInt(splittt[2],10),parseInt(splittt[1],10)-1,parseInt(splittt[0],10));
	}	
	// Изменяется поле 'To'
	// Проверяется, надо ли изменять поле 'From'
	else if (update == 1)
	{
		intD = parseInt(objDDTo.options[objDDTo.selectedIndex].value, 10);
		//splitList = objMMYYYYTo.options[objMMYYYYTo.selectedIndex].value.split('.');
		intM = parseInt(objMMTo.options[objMMTo.selectedIndex].value, 10);
		intY = parseInt(objYYYYTo.options[objYYYYTo.selectedIndex].value, 10);

		if (dateFrom>dateTo)
		{
			//objMMYYYYFrom.selectedIndex = objMMYYYYTo.selectedIndex;
			GenerateMMSelect('from', 'MonthSelect', '', intD, intM, intY, moreCurrentDate, true);
			//objMMFrom.selectedIndex = objMMTo.selectedIndex;
			objYYYYFrom.selectedIndex = objYYYYTo.selectedIndex;

			GenerateDDSelect('from', 'DaySelect', '', intD, intM, intY, moreCurrentDate, true);
			
			var obj = document.getElementById(prefixForMainContentPlaceHolder + aviaDateTextBox);
			obj.value = objDDFrom.options[objDDFrom.selectedIndex].value + "." + objMMFrom.options[objMMFrom.selectedIndex].value + "." + objYYYYFrom.options[objYYYYFrom.selectedIndex].value;
			var splittt = obj.value.split('.');
			if (obj.CalendarBehavior)
				obj.CalendarBehavior._selectedDate = new Date(parseInt(splittt[2],10),parseInt(splittt[1],10)-1,parseInt(splittt[0],10));
		}

		GenerateDDSelect('to', 'DaySelect', '', intD, intM, intY, moreCurrentDate, true);
		GenerateMMSelect('to', 'MonthSelect', '', intD, intM, intY, moreCurrentDate, true);
		var obj = document.getElementById(prefixForMainContentPlaceHolder + aviaRevertDateTextBox);
		obj.value = objDDTo.options[objDDTo.selectedIndex].value + "." + objMMTo.options[objMMTo.selectedIndex].value + "." + objYYYYTo.options[objYYYYTo.selectedIndex].value;
		var splittt = obj.value.split('.');
		if (obj.CalendarBehavior)
			obj.CalendarBehavior._selectedDate = new Date(parseInt(splittt[2],10),parseInt(splittt[1],10)-1,parseInt(splittt[0],10));
	}
}


// Сгенерировать список месяцев 
// intCurM - первый элемент списка
function GenerateMMYYYYSelectV2( strPrefix, fromD, fromM, fromY, toD, toM, toY, curD, curM, curY )
{
	var objDD = document.getElementById(strPrefix+'DaySelect');
	var objMMYYYY = document.getElementById(strPrefix+'YearMonthSelect');
	
	if(!objDD ||
	   !objMMYYYY)
	{
		alert("To Developers (GenerateMMYYYYSelectV2): проверьте наличие элементов на странице.");
		return;
	}
		
	var n=objMMYYYY.options.length;
	var i;
	for(i=0;i<n;i++)
		objMMYYYY.remove(0);
		
	var intM = fromM;
	var intY = fromY;
	while ( 1 )
	{
		if (intM > 12)
		{
			intY++;
			intM=1;
		}
		    
		var option = document.createElement('option');
		option.text=MonthName(intM) + ", " + intY;
		option.value=(intM<10 ? "0"+intM: ""+intM) + "." +intY;
		
		try 
		{
			objMMYYYY.add(option,null);// standards compliant; doesn't work in IE
		}
		catch(ex)
		{
			objMMYYYY.add(option);// IE only
		}
		if (intM == toM && intY == toY)
		    break;
		    
		intM++;
	}
	if (curY == fromY)
	    objMMYYYY.selectedIndex = curM - fromM;
	else
	{
	    objMMYYYY.selectedIndex = 13 - fromM - 1;
	    objMMYYYY.selectedIndex = objMMYYYY.selectedIndex + (curY-fromY-1)*12;
	    objMMYYYY.selectedIndex = objMMYYYY.selectedIndex + curM;
	}
}