var dragsort = junkdrawer = '';
var editorTName = new Array(); // for editor - DON'T DELETE
var editorTDefId = new Array(); // for editor - DON'T DELETE
tabsArray = [];
tabsTypesArray = [];
function tabs (keyFV, keyTab) { // thisis, classLayer, tagLayer, classOnLayer, classTab, tagTab, classOnTag
	var selected = 'a'; // ' a'
	// активируем данную табу
	if (tabsArray!=undefined && tabsArray.length!=undefined && tabsArray.length) {
		for (i=0; i<tabsArray.length; i++) {
			var objTabLi = $(tabsArray[i].id);
			objTabLi.className = objTabLi.className.replace(selected,'');
			if (tabsArray[i].tabName==keyTab) {
				objTabLi.className += selected;
			}
		}
	} else {
		//if (tabsArray==undefined || tabsArray.length==undefined || !tabsArray.length) {
		var objTabs = $('tabs'+keyFV);
		if (objTabs!=undefined) {
			var objTabLis = objTabs.getElementsByTagName('li');
			if (objTabLis!=undefined && objTabLis.length) {
				for (i=0; i<objTabLis.length; i++) {
					var tabName = objTabLis[i].getAttribute('tabName');
					if (tabName!=undefined && tabName!='') {
						//var classNameOld = objTabLis[i].className;
						objTabLis[i].className = objTabLis[i].className.replace(selected,'');
						if (tabName==keyTab) {
							//objTabLis[i].className = objTD.className.replace(/listRowBgOff/i,'');
							objTabLis[i].className += selected;
							//alert('keyTab= '+keyTab+', tabName= '+tabName+', classNameOld= '+classNameOld+', objTabLis['+i+'].className= '+objTabLis[i].className);
						}
						//alert('keyTab= '+keyTab+', tabName= '+tabName+', classNameOld= '+classNameOld+', objTabLis['+i+'].className= '+objTabLis[i].className);
						objTabLis[i].id = 'tabsLi'+keyFV+i;
						tabsArray[i] = {'id':objTabLis[i].id,'tabName':tabName};
					} else alert('Error tabName..');
				}
			}
		}
	}
	// показываем только нужные слои
	if (tabsTypesArray!=undefined && tabsTypesArray.length!=undefined && tabsTypesArray.length) {
		for (i=0; i<tabsTypesArray.length; i++) {
			var objTabDiv = $(tabsTypesArray[i].id);
			objTabDiv.style.display = (keyTab=='*' || tabsTypesArray[i].tabsTypes.match(keyTab)!=null) ? 'block' : 'none' ;
		}
	} else {
		//if (tabsTypesArray==undefined || tabsTypesArray.length==undefined || !tabsTypesArray.length) {
		var objTabDivs = getElementsByClass('tableed','div');
		if (objTabDivs!=undefined && objTabDivs.length>0) {
			for (i=0; i<objTabDivs.length; i++) {
				var tabsTypes = objTabDivs[i].getAttribute('tabsTypes');
				if (tabsTypes!=undefined && tabsTypes!='') {
					objTabDivs[i].style.display = (keyTab=='*' || tabsTypes.match(keyTab)!=null) ? 'block' : 'none' ;
					objTabDivs[i].id = 'tabsDiv'+keyFV+i;
					tabsTypesArray[i] = {'id':objTabDivs[i].id,'tabsTypes':tabsTypes};
				} else alert('Error tabsTypes..');
			}
		}
	}
	return false;
}


// ставится на событие отправки данных
function submitForm (formObject, btnSubmitFieldId, btnSubmitText) {
	// Если на странице есть редактор, то заполняем нужные скрытые поля из редактора
	if (editorTName!=undefined && editorTName.length && editorTDefId!=undefined && editorTDefId.length) { //  && editorTName!=null
		for (var eDefKey in editorTDefId) {
			//alert('eDefKey= '+eDefKey+', typeof(eDefKey)= '+typeof(eDefKey)+', editorTDefId['+eDefKey+']= '+editorTDefId[eDefKey]);
			if (editorTDefId[eDefKey]!=undefined) { //  && editorTDefId[eDefKey].length
				for (var eDefKey2 in editorTDefId[eDefKey]) {
					//alert('eDefKey= '+eDefKey+', eDefKey2= '+eDefKey2);
					//alert('eDefKey2= '+eDefKey2+', typeof(eDefKey2)= '+typeof(eDefKey2)+', editorTDefId['+eDefKey+']['+eDefKey2+']= '+editorTDefId[eDefKey][eDefKey2]);
					//alert('editorTDefId= '+editorTDefId);
					if (editorTName[eDefKey][eDefKey2]!=undefined && editorTName[eDefKey][eDefKey2]!='' && editorTDefId[eDefKey][eDefKey2]!=undefined && editorTDefId[eDefKey][eDefKey2]!='') {
						var eName = editorTName[eDefKey][eDefKey2];
						var eDefNameObject = $(editorTDefId[eDefKey][eDefKey2]);
						//alert('eName= '+eName+', eDefNameObject= '+eDefNameObject);
						//alert('eName= '+eName+', eDefNameObject= '+eDefNameObject+', eDefNameObject.value= '+eDefNameObject.value);
						if (editorTDefId!=undefined) {
							//alert('Добавляем запись...');
							eDefNameObject.value = getEditorValue (eName);
						}
					}
				}
			}
		}
	}
	if (formObject[btnSubmitFieldId]!=undefined) {
		formObject[btnSubmitFieldId].blur();
		formObject[btnSubmitFieldId].disabled = true;
	}
}


// Если присутствует - включает поле "Пример".
// Если TEXTAREA - проверяет на длинну символом и вытягивает по высоте.
// Если включено - проверяет поле через AJAX.
function checkField (obj, params) {
	if (params!=undefined || typeof(params)=='object') {
		
		if (params.autohight==undefined) params.autohight = false; // Временно не включаю. Надо проверить свойство -  wrap="virtual" - действительно ли оно уничтожает все переносы строк???
		if (params.chkajax==undefined) params.chkajax = false; // Проверять или нет поле через AJAX
		
		//if (params.example_show==undefined) params.example_show = false;
		//alert('obj= '+obj+', params= '+params);
		//alert('params.length= '+params.length+', params.ident= '+params.ident);
		if (obj!=undefined) {
			if (params.ident!=undefined && params.ident!='') {
				
				if (params.chkajax && params.pw!=undefined && params.pw!='') {
					var objChkajax = $('chkajax'+params.ident);
					//var objChkajaxParent = objChkajax.parentNode.parentNode;
					var objChkajaxParent = $('tableed'+params.ident);
					if (objChkajax!=undefined && objChkajaxParent!=undefined) {
						//alert('objChkajax= '+objChkajax+', objChkajax.innerHTML= '+objChkajax.innerHTML+', objChkajax.className= '+objChkajax.className);
						objChkajaxParent.className = objChkajaxParent.className.replace(' chAjOk','');
						objChkajaxParent.className = objChkajaxParent.className.replace(' chAjErr','');
						objChkajaxParent.className += ' chAjWait';
					}
					//alert('params.chkajax= '+params.chkajax+', params.pw= '+params.pw+', params.field= '+params.field+', obj.value= '+obj.value);
					////var fv = {};
					////fv[params.field] = obj.value;
					////var ajData = {'pw':params.pw,'field':params.field,'value':obj.value,'fv':[fv]};
					var ajData = {'pw':params.pw,'ident':params.ident,'field':params.field,'value':obj.value};
					var ajParams = {callback:'ajCheckFieldCallback',include:'wlCheckField'}; // ,caching:false
					wlAjax(ajData,ajParams);
				}
				
				if (obj.type.toLowerCase()=='textarea') { // Проверка длинны, если TEXTAREA
					var objView = $('view'+params.ident);
					if (objView!=undefined) {
						var maxlen=0;
						if (obj && obj.maxLength) {
							maxlen=obj.maxLength;
						} else if (obj && obj.maxlength) {
							maxlen=obj.maxlength;
						} else if (params.length>0) {
							maxlen=params.length;
						}
						//alert('objView.id= '+objView.id+', params.length= '+params.length+', obj.value.length= '+obj.value.length+', maxlen= '+maxlen);
						if (maxlen>0) {
							if (maxlen >= obj.value.length) {
								objView.value = params.length - obj.value.length;
							} else {
								obj.value = obj.value.substring(0,maxlen);
								//objView.style.border = (obj.value.length >= viewLength) ? 'solid red 2px' : '0' ;
								//objView.border = '1px';
								
							}
						}
					}
					//alert('params.autohight= '+params.autohight);
					if (params.autohight) {
						//if ((navigator.userAgent.toLowerCase().indexOf("firefox") == -1) && (navigator.userAgent.toLowerCase().indexOf("opera") == -1)) return true;
						//if ((navigator.userAgent.toLowerCase().indexOf("firefox") != -1) && (navigator.userAgent.toLowerCase().indexOf("opera") != -1)) {
						if ((navigator.userAgent.toLowerCase().indexOf("firefox") == -1) && (navigator.userAgent.toLowerCase().indexOf("opera") == -1)) {
							var substrings = obj.value.split("\n");
							var objHeight = obj.offsetHeight;
							var heightDefault = 60;
							var heightLimit = 1000;
							var addHeight = 19;
							var startOn = Math.round(heightDefault / addHeight);
							var charsOnLine = 38;
							var add = 0;
							//alert('substrings.length= '+substrings.length);
							for(i = 0; i < substrings.length; i ++){
								add = add + Math.round(substrings[i].length / charsOnLine) + 1;
							}
							if(add > startOn && objHeight <= heightLimit){
								obj.style.height = add * addHeight;
							} else if(add <= startOn) obj.style.height = heightDefault;
							if(obj.value == "") obj.style.height = heightDefault;
						}
					}
				}
				if (params.example_show!=undefined) {
					var objExam = $('exmpl'+params.ident);
					if (objExam!=undefined) objExam.style.display = (params.example_show) ? 'block' : 'none' ;
				}
			}
		} else alert('Не указан идентификатор объекта проверки');
	} else alert('Не указаны дополнительные параметры поля');
}
function ajCheckFieldCallback (result) {
	//alert('ajActiveUpdate= '+ajActiveUpdate+', ajActiveUpdate.length= '+ajActiveUpdate.length);
	//alert('result= '+result+', result.length= '+result.length+', result["errors"]= '+result["errors"]+', result["errors"].length= '+result["errors"].length);
	//alert('result= '+result+', result["errors"]= '+result["errors"]+', result["ident"]= '+result["ident"]);
	if (result["ident"]!=undefined && result["ident"]!='') {
		var objChkajax = $('chkajax'+result["ident"]);
		//var objChkajaxParent = objChkajax.parentNode.parentNode;
		var objChkajaxParent = $('tableed'+result["ident"]);
		if (objChkajax!=undefined && objChkajaxParent!=undefined) {
			////alert('objChkajax= '+objChkajax+', objChkajax.innerHTML= '+objChkajax.innerHTML+', objChkajax.className= '+objChkajax.className);
			//objChkajaxParent.className = objChkajaxParent.className.replace(' chAjOk','');
			//objChkajaxParent.className = objChkajaxParent.className.replace(' chAjErr','');
			objChkajaxParent.className = objChkajaxParent.className.replace(' chAjWait','');
			if (result["errors"]!=undefined && result["errors"].length) {
				objChkajax.innerHTML = result["errors"];
				objChkajax.className = 'chkajax err';
				objChkajaxParent.className += ' chAjErr';
			} else {
				objChkajax.innerHTML = '';
				objChkajax.className = 'chkajax ok';
				objChkajaxParent.className += ' chAjOk';
			}
			////alert('objChkajaxParent.className= '+objChkajaxParent.className);
		}
	} //else objChkajaxParent.className = objChkajaxParent.className.replace(' chAjWait','');
}


function chkChecked (thisis) {
	return thisis.checked;
}


// Собираем все значения списка и записываем их в скрытое поле ввода
function pick_chckbx (obj, objInputName, sep) {
	//alert('objInputName= '+objInputName);
	var objInput = $(objInputName);
	var separator = (sep!=undefined && sep!='') ? sep : ',';
	if (objInput!=undefined) {
		var len = (objInput.value.length!=undefined) ? objInput.value.length : 0 ;
		var pos = (len && objInput.value.indexOf(obj.value)>-1) ? objInput.value.indexOf(obj.value) : false ;
		if (obj.checked) objInput.value += (len) ? separator+obj.value : obj.value ;
		else if (pos!==false) { // objInput.value = (pos>0) ? objInput.value.replace(separator+obj.value,'') : objInput.value.replace(obj.value,'') ;
			objInput.value = objInput.value.replace(obj.value+separator,'');
			objInput.value = objInput.value.replace(separator+obj.value,'');
			objInput.value = objInput.value.replace(obj.value,'');
		}
		//alert('objInput.value= '+objInput.value);
	}
}


function editfield_rubrics (objName, objInputName) { // feld, id, action, maxlen, id_f
	//alert('test');
	var objInput = $(objInputName);
	if (objInput!=undefined && objInput.value!=undefined) { //  && arr.length
		//alert('Слой существует');
		objInput.value = '';
		var quo = '';
		for (var i=0; i<objName.length; i++) {
			//alert('thisis.value= '+thisis.value+', arr[i]= '+arr[i]+', arr[thisis.value]= '+arr[thisis.value]);
			if (objName.options[i].value!='' && objName.options[i].selected) {
				objInput.value += quo+objName.options[i].value;
				quo = ',';
			}
		}
		//alert('objInput.value= '+objInput.value);
	}
	return true;
}


function pictPreview (obj, imgfieldId, w, h) {
	var objImg = $(imgfieldId);
	objImg.src = obj.value;
	if (w != undefined) objImg.width = w;
	if (h != undefined) objImg.height = h;
}


// если супер-редактор есть, то обрабатываем и его, иначе переключаем слои с текстом (TEXTAREA или INPUT)
function editorLayerChange (butThisObject,  keyFV,fieldName,contactKey,  butTagName,butPattern,butClass,butClassActive,  textTagName,  textObjectId,viewLength,viewIdNeedle,  eTName,eTDefNam) {
	//alert('textObjectId= '+textObjectId+', viewLength= '+viewLength+', viewIdNeedle= '+viewIdNeedle+', eTName= '+eTName);
	var textObject = $(textObjectId);
	var butTagsArray = document.getElementsByTagName(butTagName);
	var button = butPattern+keyFV+fieldName;
	if (butTagsArray!=undefined && butTagsArray.length && (butClass!=undefined && butClass!='') && (butClassActive!=undefined && butClassActive!='')) {
		for (var i=0; i<butTagsArray.length; i++) {
			if (butTagsArray.item(i).id == button) {
				butTagsArray.item(i).className = 'butLang';
			}
		}
		butThisObject.className = 'butLangA';
	}
	
	if (editorTName!=undefined && editorTName[keyFV]!=undefined && editorTName[keyFV][fieldName]!=undefined && editorTName[keyFV][fieldName]!='' && editorTDefId!=undefined && editorTDefId[keyFV]!=undefined && editorTDefId[keyFV][fieldName]!=undefined && editorTDefId[keyFV][fieldName]!='') {
		//var eName = eval(eTName+'[keyFV][fieldName]');
		var eName = editorTName[keyFV][fieldName];
		//var eDefName = editorTDefId[keyFV][fieldName];
		var eDefNameObject = $(editorTDefId[keyFV][fieldName]);
	} else {
		var eName = undefined;
		var eDefNameObject = undefined;
	}
	
	if (eName!=undefined && eDefNameObject!=undefined && textObject!=undefined) {
		//alert('Имеем дело с редактором...');
		//alert('eName= '+eName+', eDefNameObject= '+eDefNameObject+', textObject= '+textObject);
		eDefNameObject.value = getEditorValue (eName);
		//oFCKeditorTextareaIdDefault = textObject.id;
		//eval(eTDefNam+'[keyFV][fieldName]=textObject.id');
		//eDefName = textObject.id;
		editorTDefId[keyFV][fieldName] = textObject.id;
		setEditorValue (eName,textObject.value);
	} else {
		var textTagsArray = document.getElementsByTagName(textTagName);
		if (textTagsArray!=undefined && textTagsArray.length && (keyFV+'|'+fieldName!=undefined && keyFV+'|'+fieldName!='') && (keyFV+'|'+fieldName+'|'+contactKey!=undefined && keyFV+'|'+fieldName+'|'+contactKey!='')) {
			re = keyFV+"\\|"+fieldName+"\\|\\d{1,}";
			for (var i=0; i<textTagsArray.length; i++) {
				//alert('textTagsArray.item(i).id.match(re)= '+textTagsArray.item(i).id.match(re)+', textTagsArray.item('+i+').id= '+textTagsArray.item(i).id);
				if (textTagsArray.item(i).id.match(re) != null) {
					//alert('keyFV= '+keyFV+', fieldName= '+fieldName+', contactKey= '+contactKey+', textTagsArray.item('+i+').id= '+textTagsArray.item(i).id);
					if (textTagsArray.item(i).id == keyFV+'|'+fieldName+'|'+contactKey) {
						textTagsArray.item(i).style.display = '';
					} else {
						textTagsArray.item(i).style.display = 'none';
						//textTagsArray.item(i).blur();
						//alert('textTagsArray.item('+i+').blur()');
					}
				}
			}
		}
		//if (textObject!=undefined) checkMaxInput(textObject,viewLength,viewIdNeedle+keyFV+fieldName+contactKey); // выставляем цифры и обрезаем лишние символы, в зависимости от заданого ограничения
	}
	
	// Установить курсор в конец поля ввода textarea или input
	if (textObject!=undefined) {
		if (textObject.createTextRange) { // IE4+
			var r = textObject.createTextRange();
			//r.collapse(true); // в начало
			r.collapse(false); // в конец
			r.select();
		} else if (textObject.selectionStart) { // Mozilla/Gecko
			//textObject.setSelectionRange(0,0); // в начало
			var end = textObject.value.length;       // в конец
			//alert('end= '+end);
			textObject.setSelectionRange(end,end);   // в конец
			textObject.focus();
		} else { // Остальные браузеры или если текст не выделен
			textObject.focus();
		}
	}
}