
// ........................................................
// Скрытые блоки привязанные к Checkboxу
function cmsSetHiddenBlockFor(checkboxName,blockName){
	var oCheckbox,oBlock;
	if((oBlock=document.getElementById(blockName)) && 
		 (oCheckbox=document.getElementById(checkboxName))){
		oCheckbox.blockName = blockName;
	}
}
function cmsShowHiddenBlock(oCheckbox){
	var oBlock;
	if(oCheckbox.blockName &&
		(oBlock=document.getElementById(oCheckbox.blockName))){
		oBlock.style.display = (oCheckbox.checked)?"block":"none";
	}
}
// ........................................................
// Установка привязки битовых Checkboxов к Inputу
function cmsSetBitCheckboxesFor(inputName,checkboxesBitSize){
	var oInput,oBitCheckbox;
	if(oInput=document.getElementById(inputName)){
		oInput.checkboxesBitSize = checkboxesBitSize;
		var value = oInput.value*1;
		for(var i=0; i<checkboxesBitSize;i++){
			if(oBitCheckbox=document.getElementById(inputName+"_"+i)){
				oBitCheckbox.checked = ((value&(1<<i))>0);
				cmsChangeCheckbox(oBitCheckbox);
			}
		}
	}
}
// ........................................................
// Установка значения Selectа
function cmsSetSelectValue(selectName,selectValue){
	var oSelect;
	var value = (selectValue)?selectValue:false;
	if(oSelect=document.getElementById(selectName)){
		if(value){
			for(var i=0; i<oSelect.options.length;i++){
				if(oSelect.options[i].value == value){
					oSelect.selectedIndex = i;
				}
			}
		}
		cmsChangeSelect(oSelect);
	}
}
// ........................................................
// Изменение состояния Checkboxа
function cmsChangeCheckbox(oCheckbox){
	var oInput;
	var names = oCheckbox.id.split("_");
	if(oInput=document.getElementById(names[0])){
		var value = oInput.value*1;
		oInput.value = (oCheckbox.checked)?value|(1<<names[1]):value-(value&(1<<names[1]));
	}
	cmsShowHiddenBlock(oCheckbox);
}
// ........................................................
// Изменение состояния Selectа
function cmsChangeSelect(oSelect){
	var oInput;
	var mask = 0;
	var names = oSelect.id.split("_");
	if((names.length)>1 && (oInput=document.getElementById(names[0]))){
		for(var i=0;i<oInput.checkboxesBitSize;i++) mask += 1 << i;
		oInput.value = (oInput.value & mask) | oSelect.value;
		var value = oSelect.value & mask;
		for(var i=0; i<oInput.checkboxesBitSize;i++){
			if(oBitCheckbox=document.getElementById(names[0]+"_"+i)){
				oBitCheckbox.disabled = ((value&(1<<i))>0);
			}
		}
		cmsSetBitCheckboxesFor(names[0],oInput.checkboxesBitSize);
	}
}
//===========================================
//  контроль длины вводимого текста
//===========================================
function cnter(MaxLen,idText) {
//===========================================
	var Otext = document.getElementById(idText);
	if (Otext){
		if(Otext.value.length > MaxLen) {
			Otext.value = Otext.value.substring(0,MaxLen);
			alert("Это поле не может быть длиннее "+MaxLen+" символов.");
			Otext.focus();
		}
	}
}
// ........................................................
// Проверка введенных данных
	function cmsCheckInputValue(oInput,type){
		var iclass = oInput.getAttribute(classFix);
		var pos = iclass.indexOf("cms_errorfield");
		if(pos>=0){ 
			if(pos==0) oInput.removeAttribute(classFix);
			else			 oInput.setAttribute(classFix,iclass.substr(0,pos-1));
		}
		switch(type){
			case 0: // положительное целое
				if(oInput.value != oInput.value*1 || !(oInput.value>=0)){
					alert("Infill error: positive integer only\nОшибка заполнения поля: только положительное целое");
					oInput.value = 0;
					oInput.focus();
					if(oInput.getAttribute(classFix).length>0)	oInput.setAttribute(classFix,oInput.getAttribute(classFix)+" cms_errorfield");
					else																				oInput.setAttribute(classFix,"cms_errorfield");
					return false;
				}else{
					oInput.value = Math.abs(Math.round(oInput.value));
					return true;
				}
			break;
			case 1: // email
				var re_mail = /([\w\.\-_]+@[\w\.\-_]+)/;
				if(oInput.value.match(re_mail)!=null){
					return true;
				}else{
					alert("Infill error: email address needed\nОшибка заполнения поля: требуется email адрес");
					oInput.focus();
					if(oInput.getAttribute(classFix).length>0)	{
						oInput.setAttribute(classFix,oInput.getAttribute(classFix)+" cms_errorfield");
					}else{
						oInput.setAttribute(classFix,"cms_errorfield");
					}
					return false;
				}
			break;
			default: // не пустое
				if(oInput.value.length>=3){
					return true;
				}else{
					alert("Infill error: text needed\nОшибка заполнения поля: требуется текст");
					oInput.focus();
					if(oInput.getAttribute(classFix).length>0)	oInput.setAttribute(classFix,oInput.getAttribute(classFix)+" cms_errorfield");
					else																				oInput.setAttribute(classFix,"cms_errorfield");
					return false;
				}
			break;
		}
	}
// ........................................................
// Версия для печати
var cmsPrintObject = null;
var cmsHideObject = null;
function cmsPrintVersion(){
	if(cmsPrintObject==null){
		cmsPrintObject = document.createElement("div");
		cmsPrintObject.setAttribute(classFix,"cms_printversion");
		cmsPrintObject.appendChild(document.getElementById("cms_navigation").cloneNode(1));
		cmsPrintObject.appendChild(document.getElementById("cms_nodecontent").cloneNode(1));
		
		cmsHideObject = document.createElement("div");
		cmsHideObject.innerHTML = document.body.innerHTML;
		document.body.innerHTML = "";
		cmsHideObject.style.display = "none";
		
		document.body.appendChild(cmsPrintObject);
		document.body.appendChild(cmsHideObject);
	}else{
		document.body.innerHTML = cmsHideObject.innerHTML;
		cmsPrintObject = null;
		cmsHideObject = null;
	}
}
// ........................................................
// Функция поиска и подсветки текста в заданом ноде и его потомхах
function searchInNode(node, word, word_length){
			//alert(111);
	var word_position, skip, spannode, middlebit, endbit, middleclone;
	skip=0;
	word = word.toLowerCase();
	if(node.nodeType==3){
		word_position=node.data.toLowerCase().indexOf(word);
		var pre_word = (word_position>0?node.data.substr(word_position-1,1):"");
		if(word_position>=0 && (word_position==1 || pre_word==" " 
			|| pre_word=="(" || pre_word=="" || pre_word=="'" || pre_word=='"')){
			spannode=document.createElement("span");
			spannode.setAttribute(classFix,"cms_illuminate");
			middlebit=node.splitText(word_position);
			endbit=middlebit.splitText(word_length);
			middleclone=middlebit.cloneNode(true);
			spannode.appendChild(middleclone);
			middlebit.parentNode.replaceChild(spannode,middlebit);
			skip=1;
		}
	}else if(node.nodeType==1&& node.childNodes && node.tagName.toUpperCase()!="SCRIPT" && node.tagName.toUpperCase!="STYLE"){
		for (var child=0; child < node.childNodes.length; ++child){
			child=child+searchInNode(node.childNodes[child], word, word_length);
		}
	}
	return skip;
}

// ........................................................
// Добавление полей в форму обратной связи
var cmsFormAddedFields = new Array;

function cmsFormNewField(num){
	var oFormCanvas	=document.getElementById("cms_formcanvas");
	var oFormField	=document.getElementById("cms_formfield");
	var oNumber = cmsFormAddedFields.length;
	var tempElements;
	if(num>=0) oNumber = num;
	else			 cmsFormAddedFields[oNumber] = new Array(0,"заголовок","");
	var oNewField = oFormField.cloneNode(true);
	oNewField.removeAttribute("id");
	oNewField.style.display = "block";
	oFormCanvas.appendChild(oNewField);
	tempElements = oNewField.getElementsByTagName("select");
	if(tempElements.length>0){
		tempElements[0].setAttribute("name","felements["+oNumber+"][ftype]");
		for(var i=0;i<tempElements[0].options.length;i++){
			if(tempElements[0].options[i].value==cmsFormAddedFields[oNumber][0]) tempElements[0].selectedIndex = i;
		}
	}
	tempElements = oNewField.getElementsByTagName("input");
	if(tempElements.length>0){
		tempElements[0].setAttribute("name","felements["+oNumber+"][fname]");
		tempElements[0].value = cmsFormAddedFields[oNumber][1];
	}
	tempElements = oNewField.getElementsByTagName("textarea");
	if(tempElements.length>0){
		tempElements[0].setAttribute("name","felements["+oNumber+"][fdefault]");
		tempElements[0].value = cmsFormAddedFields[oNumber][2];
	}
}
function cmsFormUpdate(){
	for(var i=0;i<cmsFormAddedFields.length;i++) cmsFormNewField(i);
}
function cmsFormClear(){
	var oFormCanvas	=document.getElementById("cms_formcanvas");
	oFormCanvas.innerHTML = "";
	cmsFormAddedFields = new Array;
}
function cmsFormClearLast(){
	var _cmsFormAddedFields = cmsFormAddedFields;
	cmsFormClear();
	for(var i=0;i<(_cmsFormAddedFields.length-1);i++){
		cmsFormAddedFields[i] = _cmsFormAddedFields[i];
		cmsFormNewField(i);
	}
}
// ........................................................
// Добавление полей в форму голосования
var cmsPollAddedFields = new Array;

function cmsPollNewField(num){
	var oFormCanvas	=document.getElementById("cms_pollcanvas");
	var oFormField	=document.getElementById("cms_pollfield");
	var oNumber = cmsPollAddedFields.length;
	var tempElements;
	if(num>=0) oNumber = num;
	else			 cmsPollAddedFields[oNumber] = new Array("вариант","0");
	var oNewField = oFormField.cloneNode(true);
	oNewField.removeAttribute("id");
	oNewField.style.display = "block";
	oFormCanvas.appendChild(oNewField);
	tempElements = oNewField.getElementsByTagName("input");
		tempElements[0].setAttribute("name","felements["+oNumber+"][fname]");
		tempElements[0].value = cmsPollAddedFields[oNumber][0];
		tempElements[1].setAttribute("name","felements["+oNumber+"][fvalue]");
		tempElements[1].value = cmsPollAddedFields[oNumber][1];
}
function cmsPollUpdate(){
	for(var i=0;i<cmsPollAddedFields.length;i++) cmsPollNewField(i);
}
function cmsPollClear(){
	var oFormCanvas	=document.getElementById("cms_pollcanvas");
	oFormCanvas.innerHTML = "";
	cmsPollAddedFields = new Array;
}
function cmsPollClearLast(){
	var _cmsPollAddedFields = cmsPollAddedFields;
	cmsPollClear();
	for(var i=0;i<(_cmsPollAddedFields.length-1);i++){
		cmsPollAddedFields[i] = _cmsPollAddedFields[i];
		cmsPollNewField(i);
	}
}
// ........................................................
// Добавление картинки голосования
var cmsPollSummary = 0;
function cmsPollResult(num,value){
	var oPollCanvas	=document.getElementById("cms_pollresult_"+num);
	var oPollField	=document.getElementById("cms_pollresult");
	var oNumber = cmsPollAddedFields.length;
	var tempElements;
	if(oPollCanvas && oPollField){
		var oNewField = oPollField.cloneNode(true);
		oNewField.style.display = "inline";
		oNewField.removeAttribute("id");
		value = (cmsPollSummary>0)?value/cmsPollSummary:0.01;
		oNewField.width = Math.ceil(oNewField.width * value);
		oPollCanvas.appendChild(oNewField);
	}
}



//---------------------calendar----------------------

var ns6=document.getElementById&&!document.all
var ie4=document.all


var Selected_Month;
var Selected_Year;
var Current_Date = new Date();
var Current_Month = Current_Date.getMonth();

var Days_in_Month = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var Month_Label = new Array('Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь');

var Current_Year = Current_Date.getYear();
if (Current_Year < 1000)
Current_Year+=1900

var Today = Current_Date.getDate();

function Header(Year, Month) {

		if (Month == 1) {
			Days_in_Month[1] = ((Year % 400 == 0) || ((Year % 4 == 0) && (Year % 100 !=0))) ? 29 : 28;
		}
		
		var Header_String = Month_Label[Month] + ' ' + Year;
		return Header_String;
}

function Make_Calendar(Year, Month) {
	var First_Date = new Date(Year, Month, 0);
	var Heading = Header(Year, Month);
	var First_Day = First_Date.getDay();
	var arrL='<div style="width: 20px;float:left;padding:7px 10px 0px 10px;cursor:pointer;" onClick="Skip(\'-\')"><img src="./img/design/arrL.gif" border="0" alt="" onClick="Skip(\'-\')" style="float:right;"></div>';
	var arrR='<div style="width: 20px;float:left;padding:7px 10px 0 10px;cursor:pointer;" onClick="Skip(\'+\')"><img src="./img/design/arrR.gif" border="0" alt="" onClick="Skip(\'+\')" style="float:left;"></div>';

	if (((Days_in_Month[Month] == 31) && (First_Day >= 5)) || ((Days_in_Month[Month] == 30) && (First_Day == 6))) {
		var Rows = 6;
	} else if ((Days_in_Month[Month] == 28) && (First_Day == 1)) {
		var Rows = 4;
	} else {
		var Rows = 5;
	}

	var HTML_String = '<table BORDER=0 CELLSPACING=0 cellpadding=0 class=tCalendar>';

	HTML_String += '<tr><th class="calcHeader" colspan=9 ALIGN="CENTER">'+ arrL +'<span style="float:left;width: 235px;text-align:center;">' + Heading + '</span>'+ arrR +'</th></tr>';

	HTML_String += '<tr><th ALIGN="CENTER">&nbsp;&nbsp;&nbsp;</th><th ALIGN="CENTER">Пн.</th><th ALIGN="CENTER">Вт.</th><th ALIGN="CENTER">Ср.</th><th ALIGN="CENTER">Чт.</th>';

	HTML_String += '<th ALIGN="CENTER">Пт.</th><th ALIGN="CENTER">Сб.</th><th ALIGN="CENTER">Вс.</th><th ALIGN="CENTER">&nbsp;&nbsp;&nbsp;</th></tr>';

	var Day_Counter = 1;
	var Loop_Counter = 0;

	var tempTime = new Date();
	
	for (var j = 1; j <= Rows; j++) {
	HTML_String += '<tr ALIGN="left" VALIGN="top"><td>&nbsp;&nbsp;&nbsp;</td>';
		for (var i = 1; i < 8; i++) {
			if ((Loop_Counter >= First_Day) && (Day_Counter <= Days_in_Month[Month])) {

				var tempTime = new Date(Year, Month, Day_Counter);


				if ((Day_Counter == Today) && (Year == Current_Year) && (Month == Current_Month)) {
					HTML_String += '<td class=curDay><a href="'+clndrSelf+'?a=list&date='+(tempTime.getTime()/1000)+'">' + Day_Counter + '</a></td>';
				} else {
					HTML_String += '<td><a href="'+clndrSelf+'?a=list&date='+(tempTime.getTime()/1000)+'" id="date'+(tempTime.getTime()/1000)+'">' + Day_Counter + '</a></td>';
				}

				Day_Counter++; 
			} else {
				HTML_String += '<td> </td>';
			}
			Loop_Counter++;
		}
		HTML_String += '<td>&nbsp;&nbsp;&nbsp;</td></tr>';
	}

	HTML_String += '</table><div id="forCalendarScript"></div>';

	cross_el=ns6? document.getElementById("Calendar") : document.all.Calendar;

	cross_el.innerHTML = HTML_String;

	tempTime = new Date(Year, Month, 1);
	$.get("./cms.3.7/scripts/calendarTest.php", { firstDay: tempTime.getTime()/1000+'', numDays: Days_in_Month[Month]+'' }, function(getData){
		$('#forCalendarScript').html(getData);
	});
}


function Check_Nums() {
	if ((event.keyCode < 48) || (event.keyCode > 57)) {
		return false;
	}
}

function On_Year() {
	var Year = document.when.year.value;
	if (Year.length == 4) {
		Selected_Month = document.when.month.selectedIndex;
		Selected_Year = Year;
		Make_Calendar(Selected_Year, Selected_Month);
	}
}

function On_Month() {
	var Year = document.when.year.value;
	if (Year.length == 4) {
		Selected_Month = document.when.month.selectedIndex;
		Selected_Year = Year;
		Make_Calendar(Selected_Year, Selected_Month);
	}else {
		alert('Please enter a valid year.');
		document.when.year.focus();
	}
}


function Defaults() {
	if (!ie4&&!ns6)
		return

	var Mid_Screen = Math.round(document.body.clientWidth / 2);

	var oMonth= document.getElementById("month");
	var oYear= document.getElementById("year");

	if (oMonth&&oYear){
		oMonth.selectedIndex = Current_Month;
		oYear.value = Current_Year;
	}

/*	if (document.when.month&&document.when.year){
		document.when.month.selectedIndex = Current_Month;
		document.when.year.value = Current_Year;
	}
*/
	Selected_Month = Current_Month;
	Selected_Year = Current_Year;
	Make_Calendar(Current_Year, Current_Month);
}


function Skip(Direction) {
	if (Direction == '+') {
		if (Selected_Month == 11) {
			Selected_Month = 0;
			Selected_Year++;
		} else {
			Selected_Month++;
		}
	} else {
		if (Selected_Month == 0) {
			Selected_Month = 11;
			Selected_Year--;
		} else {
			Selected_Month--;
		}
	}

	Make_Calendar(Selected_Year, Selected_Month);

	var oMonth= document.getElementById("month");
	var oYear= document.getElementById("year");
	if (oMonth&&oYear){
		oMonth.selectedIndex = Selected_Month;
		oYear.value = Selected_Year;
	}
/*	if (document.when.month&&document.when.year){
		document.when.month.selectedIndex = Selected_Month;
		document.when.year.value = Selected_Year;
	}
*/
}

//===================================================
// версия для печати
function showPrint(url) {
	if (typeof(wnd)=='object') wnd.close();
	wnd=window.open(url+(url.indexOf("?")==-1?"?":"&")+"print=print","wnd");
}
