
var reg=0;
var groups=0;
var groups_types=0;
var its_articles=0;

//  ====================
// -= html-page loaded =-
//  ====================

function onload_init() {
	if (reg) { // location data loaded
		init_groups(['id_m', 'id_mp', 'id_q'], 'Region', reg);
		init_groups(['id_m', 'id_mp', 'id_q'], 'Group',  groups);
	}
	if (gEId('fSearch')) { // advansed search page
		AdvansedSearchSelect(0);
		AdvansedSearchObjectSelect('');
	}
}


//  ================
// -= common funcs =-
//  ================

function gEId(id){
	return (id!='')?document.getElementById(id):0;
}

function showpic(src) {
	var w=360;
	var h=200;
	var t=(screen.height-h-130)/2; if (t<0) {t=0;}
	var l=(screen.width-w)/2; if (l<0) {l=0;}
	var showpic = window.open('/showpic.html?'+src, 'showpic', 'width='+w+',height='+h+',top='+t+',left='+l+',resizable=1,status=0,toolbar=0,menubar=0,location=0,scrollbars=auto');
	showpic.focus()
	return false
}

function print(src) {
	var w=600;
	var h=350;
	var t=(screen.height-h-130)/2; if (t<0) {t=0;}
	var l=(screen.width-w)/2; if (l<0) {l=0;}
	var showpic = window.open(src, 'showpic', 'width='+w+',height='+h+',top='+t+',left='+l+',resizable=1,status=0,toolbar=1,menubar=0,location=0,scrollbars=1');
	showpic.focus()
	return false
}

function addToBookMarks(sHref, sTitle) {
	if(document.all) {
		window.external.AddFavorite(sHref, sTitle);
	} else {
	        alert('Нажмите Ctrl-D чтобы добавить страницу в закладки');
	}
	return false;
}


isNS4 = (document.layers) ? true : false;
isIE4 = (document.all && !document.getElementById) ? true : false;
isIE5 = (document.all && document.getElementById) ? true : false;
isNS6 = (!document.all && document.getElementById) ? true : false;

function show(id) {
	var obj=document.getElementById('id_a'+id);
	if(isNS4||isIE4){
		if (obj.visibility!='visible') {
			obj.visibility ='visible'
		} else {
			obj.visibility ='hidden'
		} 
	} else if (isIE5 || isNS6) {
		if (obj.style.display != 'block') {
			obj.style.display = 'block';
		} else {
			obj.style.display = 'none';
		}
	}
	return false;
}

//  =========================
// -= advansed search funcs =-
//  =========================

var sa=['all', 'art', 'obj'];
var sg_value=0;
var sg_obj='';

function AdvansedSearch(form) {
	for (var i=0; i<groups_types.length; i+=3) {
		if (groups_types[i+1]!=sa_obj) { AdvansedSearchDelete('sg_obj_'+groups_types[i+1]) }
	}
	for (i=0; i<sa.length; i++) {
		if (sg_value!=i) {
			AdvansedSearchDelete('sg_'+sa[i]);
		} else {
			AdvansedSearchDelete('sg_not_'+sa[i]);
		}
	}
	return Submit(form);
}

function AdvansedSearchChange(j) {
	sg_value=j;
	for (i=0; i<sa.length; i++) {
		if (sg_value!=i) {
			gEId(sa[i]).style.display='none';
		} else {
			gEId(sa[i]).style.display='block';
 		}
	}
}

function AdvansedSearchSelect(j) {
	if (gEId('id_mod_'+sg_value)) {
		gEId('id_mod_'+sg_value).className='';
	}
	sg_value=j;
	if (gEId('id_mod_'+sg_value)) {
		gEId('id_mod_'+sg_value).className='active';
	}
	for (i=0; i<sa.length; i++) {
		AdvansedSearchShow('sg_'+sa[i],     (sg_value==i));
		AdvansedSearchShow('sg_not_'+sa[i], (sg_value!=i));
	}
}

function AdvansedSearchShow(id, if_val) {
	if (gEId(id)) {
		if (if_val) {
			gEId(id).style.display='block';
		} else {
			gEId(id).style.display='none';
		}
	}
}

function AdvansedSearchDelete(id) { if (gEId(id)) { gEId(id).innerHTML='' } }

function AdvansedSearchObjectSelect(id) {
	var type=0;
	if (gEId(id)) { type=gEId(id).value }
	sa_obj='';
	for (var i=0; i<groups_types.length; i+=3) {
		if (groups_types[i]==type) { sa_obj=groups_types[i+1]; }
	}
	for (var i=0; i<groups_types.length; i+=3) {
		AdvansedSearchShow('sg_obj_'+groups_types[i+1], (groups_types[i+1]==sa_obj));
	}
}


//  ======================
// -= OLD Check & Submit =-
//  ======================

function Submit(id, arr) {
	var f=document.getElementById(id);
	if (arr) {	
		for (var i=0; i<arr.length; i+=2) {
			if (f.elements[arr[i]]) {
				f.elements[arr[i]].value=arr[i+1]
			}
		}
	}
	f.submit();
	return false;
}

function Check(id, arr) {
	var f=gEId(id);
	var error='';
	if (arr) {	
		for (var i=0; i<arr.length; i+=2) {
			if ((f.elements[arr[i]])&&(f.elements[arr[i]].value==0)) {
//				if (error=='') {
//					f.elements[arr[i]].focus();
//				}
				error=error+arr[i+1]+'\n';
			}
		}
	}
	if (error) { alert(error); return false } else { return true }
}


//  ===========
// -= NOTEPAD =-
//  ===========

function alertContents(http_request, f) {

	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			if (f=='1') {
			} else if (f=='2') {
				var n=http_request.responseText;
				if (n==0) {
					alert('Ваш блокнот пуст');
				} else if (n==666) {
					alert('Ваш блокнот переполнен');
				} else {
					alert('Объявление добавлено в блокнот.\nВсего в блокноте '+n+' объявл.');
					gEId('fav_num').innerHTML=n;
				}
			} else if (f=='3') {
				if (http_request.responseText==1) {
					alert('Письмо успешно отправлено!');
				} else {
					alert('Не удалось отправить письмо...');
				}
			} else {
				alert(http_request.responseText);
			}
        	} else {
			alert('!Ошибка выполнения запроса!\n(error: '+http_request.status+', '+f+')');
		}
	}
		
}

var fav='/ajax/objects.cgi?job=fav&item_id=';

function makeRequest(url, f) {
	var http_request = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari, ...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
			// See note below about this line
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	
	if (!http_request) {
		alert('Giving up :( Ошибка загрузки (Cannot create an XMLHTTP instance)');
		return false;
	}
	http_request.onreadystatechange = function() { 
		alertContents(http_request, f); 
	};
	http_request.open('GET', url+"&rnd="+Math.random(), true);
	http_request.send(null);
	
}

function makePOSTRequest(url, parameters, f) {
	var http_request = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			// set type accordingly to anticipated content type
			//http_request.overrideMimeType('text/xml');
			http_request.overrideMimeType('text/html');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if (!http_request) {
		alert('Cannot create XMLHTTP instance');
		return false;
	}
     
	http_request.onreadystatechange = function() { 
		alertContents(http_request, f); 
	};
	http_request.open('POST', url, true);
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http_request.setRequestHeader("Content-length", parameters.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.send(parameters);
}

//  =======
// -= ... =-
//  =======

function chpic(src) {
	document.getElementById("big_image").innerHTML='<a href="'+src+'" onclick="return showpic(\''+src+'\');"><img src="/tmb/380x288'+src+'" width="380" height="288"/></a>';
	return false
}

function show_hide_common(obj,obj_old){
	if(isNS4||isIE4){
		//~ if (obj.visibility!="visible") {
			if(obj_old!=0){obj_old.visibility ="hidden"}
			if(obj!=0){obj.visibility ="visible"}
		//~ } else {
			//~ obj.visibility ="hidden"
		//~ } 
	} else if (isIE5 || isNS6) {
		//~ if (obj.style.display != "block") {
			if(obj_old!=0){obj_old.style.display = "none";}
			if(obj!=0){obj.style.display = "block";}
		//~ } else {
			//~ obj.style.display = "none";
		//~ }
	}
}
LastOpenBlock = 0;
function show_s(id) {
	var obj=document.getElementById("id_a"+id);
	var obj_old=(LastOpenBlock!=0) ? document.getElementById("id_a"+LastOpenBlock) : 0;
	LastOpenBlock=id;
	//~ alert(LastOpenBlock+" -- "+id);
	show_hide_common(obj,obj_old);
	return false;
}

LastOpenTab = 0;
function show_tab(show,hide){
if(show!=LastOpenTab){
	//~ LastOpenTab = (LastOpenTab==0)?hide:LastOpenTab;
	//~ LastOpenTab = (hide==undefined)?LastOpenTab:hide;
	//~ gEId('tab'+show).className='active'; 
	//~ gEId('tab'+LastOpenTab).className=''; 
	var obj=gEId(show);
	var obj_old=(hide!=undefined) ? gEId(hide) : gEId((LastOpenTab!=0)?LastOpenTab:'');
	//~ alert("show="+show+"; hide="+hide+"; LastOpenTab="+LastOpenTab+"; obj="+obj.id+"; obj_old="+((obj_old!=0)?obj_old.id:obj_old));
	LastOpenTab=(hide==undefined)?show:LastOpenTab;
	//~ alert(show+"--"+hide+"--"+LastOpenTab);
	show_hide_common(obj,obj_old);
}
	return false;
}

function SimbsCounter(fld,limit,enter_id,pos_id,ignor_id,evt){
	if(fld){ if(typeof fld == "string"){ fld=gEId(fld); } }
	if(limit){ if(typeof limit == "string"){ limit=gEId(limit).innerHTML; } }
	evt = (evt) ? evt : event;
	var cC = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode : ((evt.which) ? evt.which : 0));
	gEId(enter_id).innerHTML=fld.value.length;
	gEId(pos_id).innerHTML=limit-fld.value.length;
	gEId(ignor_id).innerHTML=0;
	gEId(ignor_id+'_div').style.display="none";
	if(cC>31 && fld.value.length>limit){
		gEId(pos_id).innerHTML=0;
		gEId(ignor_id).innerHTML=fld.value.length-limit;
		gEId(ignor_id+'_div').style.display="block";
	}
}

function ReadOnly(obj,flag) { obj.readOnly = flag }
function SelectAll(obj)     { obj.select() }
function unSelectAll(obj)   { obj.value=obj.value }


//  =============
// -= CheckForm =-
//  =============

function CheckAndSubmit(id, arr, debug) {
	if   (CheckForm(id, arr, debug)) { return true }
//	document.getElementById(id).submit();
	return false
}

function CheckForm(id, arr, debug) {
	var f=document.getElementById(id);
	if (arr) {
		// 0 - name
		// 1 - Название
		// 2 - тип [e-mail|nohtml|numbers]
		// 3 - min [-1|0|n]
		// 4 - max [-1|n]
		// 5 - заменить ошибку свим сообщением
		var all_error='';
		var focused=0;
		var mail_check = new RegExp ('[0-9a-zA-Z_\\-]+@[0-9a-zA-Z_\\-]+\\.[0-9a-zA-Z_\-]+');
		var html_check = new RegExp ('<[a-zA-Z\\/].*?>');
		var num_check  = new RegExp ('[^\.,0-9]');
		for (var i=0; i<arr.length; i+=6) {
			var error='';
			var fild=f.elements[arr[i]];
			if (fild) {
				if (
					(arr[i+2]=='e-mail') && 
					(! mail_check.test(fild.value))
				) {
					error='Неправильный формат e-mail'
				} else if (
					(arr[i+2]=='nohtml') &&
					(html_check.test(fild.value))
				) {
					error='Запрещено использование HTML-тегов (<xxx>)'
				} else if (
					(arr[i+2]=='numbers')
				) {
					if (num_check.test(fild.value)) {
						error='Можно использовать только цифры'
					} else if ((arr[i+3]>-1) && (fild.value<arr[i+3])) {
						error='Значение не должно быть меньше '+arr[i+3]
					} else if ((arr[i+4]>-1) && (fild.value>arr[i+4])) {
						error='Значение не должно быть больше '+arr[i+4]
					}
				} else if (
					(arr[i+3]==0) &&
					(fild.value.length==0)
				) {
					error='Значение не может быть пустым'
				} else if (
					(arr[i+3]>-1) &&
					(fild.value.length<arr[i+3])
				) {
					error='Значение не может быть меньше '+arr[i+3]
				} else if (
					(arr[i+4]>-1) &&
					(fild.value.length>arr[i+4])
				) {
					error='Значение не может быть больше '+arr[i+4]
				}
			} else if (debug) {
				all_error=all_error+'поле '+arr[i+1]+' ('+arr[i+0]+') не найдено\n'
			}
			if (error) {
				if (!focused) {
					focused=1;
					if (fild.type!='hidden') { fild.focus() }
				}
				if (arr[i+5]) {
					all_error=all_error+arr[i+5]+'\n'
				} else {
					all_error=all_error+'"'+arr[i+1]+'". '+error+'\n'
				}
			}
			
		}
	}
	if (all_error) {
		alert(all_error);
		return false
	}
	return true
}

//  ====================
// -= REGIONS & GROUPS =-
//  ====================

// Инициализация 
function init_groups(pref, suff, arr) {
	// Доступные префксы для блоков групп
	for (var p=0; p<pref.length; p++) {
		// с обязательной конечной ветками
        	var id=pref[p]+suff;
        	if (gEId(id+0)) {
			var i=0;
			var j=0;
			// Первый "инпут" может быть не select, а константа
			for (i=((gEId(id+0).type=='select-one')?(0):(1)); gEId(id+i+'Set'); i++) {
				if (!j) { j=sSelect(id, i, arr, gEId(id+i+'Set').value) }
			}
			if (!j) { sSelect(id, i, arr) }
		}
		// с выбором ветками
        	var id=pref[p]+'_any_'+suff;
        	if (gEId(id+0)) {
			var i=0;
			var j=0;
			// Первый "инпут" может быть не select, а константа
			for (i=((gEId(id+0).type=='select-one')?(0):(1)); gEId(id+i+'Set'); i++) {
				if (!j) { j=sSelectAny(id, i, arr, gEId(id+i+'Set').value) }
			}
			if (!j) { sSelectAny(id, i, arr) }
		}
	}
}

function sSelect(id, g, arr, preset) {

	if ((g>0)&&(!gEId(id+(g-1)).value)) { return }

	// Следующий селект существует
	if (gEId(id+g)!=null) {

		// прячем все следующие блока
		for (var i=g; gEId(id+i+"_div"); i++) { gEId(id+i+"_div").style.display='none' }
		for (var i=g; gEId(id+i+"_tr"); i++) { gEId(id+i+"_tr").style.display='none' }

		// Очищаем селект
		objClearSelect(gEId(id+g), 1);

		// Находим нужный массив
		for (var i=0; i<g; i++) { arr=objGetArray(gEId(id+i).value, arr) }

		// массив существует
		if ((arr!=-1) && (arr.length)) {
			// заполняем селект данными из массива
			for (var i=0; i<arr.length; i+=3) {
				gEId(id+g).options.add(new Option(arr[i+1],arr[i]));
			}
			// если передано его значение - устанавливаем
			if (preset) { gEId(id+g).value=preset; }
			// отображаем блок с селектом
			if (gEId(id+g+"_div")) { gEId(id+g+"_div").style.display='block'; }
			if (gEId(id+g+"_tr")) { gEId(id+g+"_tr").style.display='table-row'; }
			// главное значение не достигнуто
			gEId(id).value=0;
			return 0;
		// последняя ветка
		} else if (g>0) {
			gEId(id).value=gEId(id+(g-1)).value;
			return 1;
		}
	} else {
		// селектов больше нет - значение достигнуто
		if (g<1) { gEId(id).value=-1 } else { gEId(id).value=gEId(id+(g-1)).value; }
		return 1;
	}
}

function sSelectAny(id, g, arr, preset) {

	if ((g>0)&&(!gEId(id+(g-1)).value)) { return }

	// Следующий селект существует

	if (gEId(id+g)!=null) {

		// прячем все следующие блока
		for (var i=g; gEId(id+i+"_div"); i++) { gEId(id+i+"_div").style.display='none' }
		for (var i=g; gEId(id+i+"_tr");  i++) { gEId(id+i+"_tr").style.display='none' }

		// Очищаем селект
		objClearSelect(gEId(id+g), ((g==0)?(1):(0)));

		var ok=1;
		if ((id=='id_m_any_Region')&&(its_articles)) {
			if (g>0) { ok=0 }
		} else if ((id=='id_m_any_Group')&&(its_articles)) {
			var objonly=0;
			for (var i=0; i<groups_types.length; i+=3) {
				if (groups_types[i]==gEId(id+'0').value) { objonly=groups_types[i+2] }
			}
			if (objonly<g) { ok=0 }
		} 
		if (ok) {
			// Находим нужный массив
			for (var i=0; i<g; i++) { arr=objGetArray(gEId(id+i).value, arr) }
		} else {
			arr=-1;
		}

		// массив существует
		if ((arr!=-1) && (arr.length>3)) {
			// заполняем селект данными из массива
			if (g>0) {
				gEId(id+g).options.add(new Option('- нет -', gEId(id+(g-1)).value));
			}
			for (var i=0; i<arr.length; i+=3) {
				gEId(id+g).options.add(new Option(arr[i+1],arr[i]));
			}
//			// если передано его значение - устанавливаем
			if (preset) { gEId(id).value=gEId(id+g).value=preset; }
			// отображаем блок с селектом
			if (gEId(id+g+"_div")) { gEId(id+g+"_div").style.display='block'; }
			if (gEId(id+g+"_tr"))  { gEId(id+g+"_tr").style.display='table-row'; }
			// главное значение не достигнуто
//			gEId(id).value=0;
//			return 0;
		}
//		// последняя ветка
//		} else 
			if (g>0) { gEId(id).value=gEId(id+(g-1)).value; }
			return ((arr.length>1)?(0):(1));
//		}
	} else {
		// селектов больше нет - значение достигнуто
		gEId(id).value=gEId(id+(g-1)).value;
		return 1;
	}
}

// Очистка селекта
function objClearSelect (obj, i) {
	while (obj.options.length>i) { obj.remove(obj.options.length-1) }
	obj.value='0';
}
// Получение массива из стоки массива соответствующей значению
function objGetArray(val, arr) {
	if (arr.length) {
		for (var i=0; i<arr.length; i+=3) {
			if (val==arr[i]) { return arr[i+2]; }
		}
	}
	return -1;
}

var id_count_on=Array();

function _c(id, n) {
	n-=document.getElementById(id).value.length;
	if (n>=0) {
		n='<span class="ok">('+n+')</span>';
	} else {
		n='<span class="error">('+n+')</span>';
	}
	document.getElementById(id+'_str').innerHTML = n;
}
function _s(id, n, tested) {
	if (tested) { }
	else if (!document.getElementById(id))        { alert('No block '+id); return }
	else if (!document.getElementById(id+'_str')) { alert('No block '+id+'_str'); return }
	_c(id, n);
	setTimeout('_s("'+id+'", '+n+', 1)', 500);
}

