var classFix = (document.all)?"className":"class";
// ........................................................
// Скрытые блоки привязанные к 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 cmsCheckInputValue(oInput,type){
		switch(type){
			case 0: // положительное целое
				if(oInput.value != oInput.value*1){
					oInput.value = 0;
					oInput.focus();
					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{
					oInput.focus();
					return false;
				}
			break;
			default: // не пустое
				if(oInput.value.length>3){
					return true;
				}else{
					oInput.focus();
					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){
	var word_position, skip, spannode, middlebit, endbit, middleclone;
	skip=0;
	if(node.nodeType==3){
		word_position=node.data.toLowerCase().indexOf(word);
		var pre_word =node.data.substr(word_position-1,1);
		if(word_position>=0 && (word_position==1 || 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");
		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");
		tempElements[0].setAttribute("name","felements["+oNumber+"][fname]");
		tempElements[0].value = cmsFormAddedFields[oNumber][1];
	tempElements = oNewField.getElementsByTagName("textarea");
		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);
	}
}