/*
	Разные полезные функции
*/

//Common. Замена картинки  
function ChangeImgSrc(sImgName, sValue) {
	var oImage = document.images[sImgName];
	if (oImage != null)  {
	  oImage.src = sValue;
	}
}

//раздвигание меню или форума
function OnElementClickIE(ControlName, nElementId, OpenImgSrc, CloseImgSrc)
{
	var pElementReply = document.getElementById(ControlName + "_ElementReply_" + nElementId.toString());
	var pElementPic = document.getElementById(ControlName + "_ElementPic_" + nElementId.toString());
	if (pElementReply && pElementPic)  {
	  if (pElementReply.style.display == "none")  {
			pElementReply.style.display = "inline";
			pElementPic.src = OpenImgSrc;
	  }
	  else  {
			pElementReply.style.display = "none";
			pElementPic.src = CloseImgSrc;
	  }
	}
}

//раздвигание меню или форума
function ChangeClassElementClick(ControlName, nElementId, OpenClass, CloseClass)
{
	var pElementReply = document.getElementById(ControlName + "_ElementReply_" + nElementId.toString());
	var pElementPic = document.getElementById(ControlName + "_Element_" + nElementId.toString());
	if (pElementReply && pElementPic)  {
	  if (pElementReply.style.display == "none")  {
			pElementReply.style.display = "block";
			pElementPic.className = CloseClass;
	  }
	  else  {
			pElementReply.style.display = "none";
			pElementPic.className  = OpenClass;
	  }
	}
}

//Проверка на нажатие enter
function TestKeyPressOnEnter(event, UniqueID){
	if (event.keyCode == 13) {
	    var p = document.getElementById(UniqueID);
		p.focus();
//		p.click();
        var agt = navigator.userAgent.toLowerCase();
        if (agt.indexOf('ie') != -1 ){
            p.click();
        }
        else{
            var oEvt = document.createEvent ('MouseEvents');
            oEvt.initMouseEvent("click", true, true, window, 1, 12, 345, 7, 220, false, false, true, false, 0, null);                    
            p.dispatchEvent(oEvt);	
        }
     }
}

//открытие popupwindow
function PopupWindow(url)
{
	window.open(url);
}

//Админ. Проверялка на корректность даты 
function TestFormToRequreFilds(UniqueID, eventArgument)
{
	var ControlName = UniqueID.replace(/[:]/g,'$');
	var ArraySize = eval(ControlName + "_Array_Size");
	var IsEmty = false;
	for (i=1; i<=ArraySize; i++){
		if (document.getElementById(ControlName + "_IsReq_" + i.toString()).value.length == 0){
			IsEmty = true;
			break;
		}
	}
	if (IsEmty){
		alert("Необходимо заполнить обязательные поля! \n ");
	}
	else{
		__doPostBack(UniqueID, eventArgument);
	}
}

//Функции проверки корректности даты
//функция пересчета дней при изменении текущего дня
function ProcessDayChange(ControlName, sName) {
	//Поиск элементов
	var pDay = document.getElementById(ControlName + '_' + sName + '_Day');
	var pMonth = document.getElementById(ControlName + '_' + sName + '_Month');
	var pYear = document.getElementById(ControlName + '_' + sName + '_Year');
	//Проверка наличия элементов на странице
	if(pDay == null || pMonth == null || pYear == null) {
		return;
	}
	//если до этого была выбрана несуществующая дата
	if(pYear.value == 1913){
	    if(pMonth.options[1].value == 1)
	        pMonth.options[0]= null;
	    if(pDay.options[1].value == 1)
	        pDay.options[0] = null;
	    pYear.selectedIndex = 1;
	    pMonth.selectedIndex = 0;
	}
}

//Функции проверки корректности даты
//функция пересчета дней при изменении текущего месяца
function ProcessMonthChange(ControlName, sName) {
	//Поиск элементов
	var pDay = document.getElementById(ControlName + '_' + sName + '_Day');
	var pMonth = document.getElementById(ControlName + '_' + sName + '_Month');
	var pYear = document.getElementById(ControlName + '_' + sName + '_Year');
	//Проверка наличия элементов на странице
	if(pDay == null || pMonth == null || pYear == null) {
		return;
	}
	//если до этого была выбрана несуществующая дата
	if(pYear.value == 1913){
	    if(pMonth.options[1].value == 1)
	        pMonth.options[0]= null;
	    if(pDay.options[1].value == 1)
	        pDay.options[0] = null;
	    pYear.selectedIndex = 1;
	    pDay.selectedIndex = 0;
	}
	// массив с количеством дней в месяцах
	var aDay = Array(31,29,31,30,31,30,31,31,30,31,30,31);
	var nHowManyDays = aDay[pMonth.value - 1];
	//если в выбранном месяце меньше дней, чем в текущем, то удаляем лишние
	if(pDay.length > nHowManyDays) {
		//если текущего дня в выбранном месяце не существует, 
		//то текущим назначается последний день выбранного месяца
	    if(pDay.selectedIndex >= nHowManyDays) {
	   		pDay.selectedIndex = nHowManyDays - 1;					 
		}
		for(i = pDay.length; i>nHowManyDays; i--) {
			pDay.options[i-1] = null;
		}
	}	
	// если в выбранном месяце больше дней, чем в текущем, то добавляем недостающие
	else {
		for (i = pDay.length; i<nHowManyDays; i++) {
			pDay.options[i] = new Option(i+1,i+1);			
		}
	}
	//если выбранный месяц - февраль и выбранный год - невисокосный, то удаляем 29-й день
	if(pMonth.value == 2 && pYear.value % 4 != 0) {
		//если текущим было 29 февраля, то текущим назначается 28-е		
		if(pDay.selectedIndex==28) {
	       pDay.selectedIndex = 27;	
	    }		
        pDay.options[28]= null;                	
    }
}

//при изменении в списке лет
function ProcessYearChange(ControlName, sName) { 
	//Поиск элементов
	var pDay = document.getElementById(ControlName + '_' + sName + '_Day');
	var pMonth = document.getElementById(ControlName + '_' + sName + '_Month');
	var pYear = document.getElementById(ControlName + '_' + sName + '_Year');
	
	//Проверка наличия элементов на странице
	if(pDay == null || pYear == null) {
		return;			
	}
	//Если выбран "несуществующий" год, то в дропах "дни" и "месяцы" автоматически
	//добавляется пункт "-"
	if(pYear.value == 1913){
	    pDay.options[pDay.length] = new Option();
	    for(i = pDay.length - 1; i > 0; i--){
	        pDay.options[i].value = pDay.options[i-1].value;
	        pDay.options[i].text = pDay.options[i-1].text;
	    } 
	    pDay.options[0] = new Option("--", 1);
	    pDay.selectedIndex = 0;
	    pMonth.options[pMonth.length] = new Option();
	    for(i = pMonth.length - 1; i > 0; i--){
	        pMonth.options[i].value = pMonth.options[i-1].value;
	        pMonth.options[i].text = pMonth.options[i-1].text;
	    } 
	    pMonth.options[0] = new Option("---", 1);
	    pMonth.selectedIndex = 0;
	}
	else{
	    //если месяцев 13 - значит, до этого выбирали "несуществующий год", 
	    //и теперь 1-е элементы в "днях" и "месяцах" нужно удалить
	    if(pMonth.length == 13){
	        pMonth.options[0] = null;
	        pMonth.selectedIndex = 0;
	        pDay.options[0] = null;
	        pDay.selectedIndex = 0;
	    }
	    //если в текущем месяце 28 дней и выбран високосный год,
	    //то добавляется 29-й день
	    if(pDay.length ==28 && pYear.value%4==0)	 {
 			    pDay.options[28] = new Option(29,29);					 
	    }
	    else {
		    //если в текущем месяце 29 дней и выбран невисокосный год,
		    //то удаляем 29-й день	
		    if(pDay.length == 29 && pYear.value%4 != 0)	 {
			    //если было выбрано 29 февраля, то выбор смещается на 28
			    if(pDay.selectedIndex==28)	{
   				    pDay.selectedIndex = 27;
   		    }			
   		    pDay.options[28] = null;
		    }	
	    }
	}
}

//Редирект после паузы
function CountRedirect(sUrl, nTime, CounterName) {
	if(nTime == "0") {
		window.location = sUrl;
	} else {
		var pCounter = document.getElementById(CounterName);
		pCounter.innerText = nTime.toString();
		setTimeout("CountRedirect('" + sUrl + "'," + (--nTime).toString() + ", '" + CounterName + "')", 1000);
	}
}
