//////////////////////////////////////////////////////////////////////////////////////
// глобальные переменные для ajax модуля геопривязки
glob_zoneid = "";
glob_statid = "";
glob_cityid = "";
glob_locaid = "";

glob_geo_script = "/geo_ajax.php";

//////////////////////////////////////////////////////////////////////////////////////
// глобальные переменные для формирования контролов
glob_goals = "";
glob_wanteds = "";
glob_goal_default = "";
glob_wanted_default = "";
glob_now = new Date;;
glob_is_text_location = false;

//////////////////////////////////////////////////////////////////////////////////////
// инициализация региона
function geo_init (zoneid_def, statid_def, cityid_def, locaid_def, is_text_location) {
	// инициализуем глобальные переменные
	glob_zoneid = zoneid_def;
	glob_statid = statid_def;
	glob_cityid = cityid_def;
	glob_locaid = locaid_def;
	glob_is_text_location = is_text_location;	

	// скрываем пустые поля при инициализации формы
	if ((zoneid_def == 0) || (zoneid_def == "") && ((statid_def == 0) || (statid_def == ""))) {
		document.getElementById('statid_sel').style.visibility = 'hidden';
	} else {
		document.getElementById('statid_sel').style.visibility = 'visible';
	}
	if ((statid_def == 0) || (statid_def == "") && ((cityid_def == 0) || (cityid_def == ""))) {
		document.getElementById('cityid_sel').style.visibility = 'hidden';
	} else {
		document.getElementById('cityid_sel').style.visibility = 'visible';
	}
        if (((cityid_def == 0) || (cityid_def == "")) && ((locaid_def == 0) || (locaid_def == ""))) {
                document.getElementById('locaid_sel').style.visibility = 'hidden';
                if (glob_is_text_location) {
                        document.getElementById('locaid_text').style.visibility = 'hidden';
                }
        } else {
                document.getElementById('locaid_sel').style.visibility = 'visible';
                if (glob_is_text_location) {
                        document.getElementById('locaid_text').style.visibility = 'hidden';
                }
        }
	// инициализируем последовательность запросов к серверу на формирование дефолтного выбранного региона
	if (zoneid_def != '') {
		get_zone (1, zoneid_def, "geo_def_stat ();");
	} else {
		get_zone (0, 0, "");
	}
}

//////////////////////////////////////////////////////////////////////////////////////
function geo_set (form_id, zoneid_def, statid_def, cityid_def, locaid_def, is_text_location, skip_control_set) {
	if (typeof skip_control_set == 'undefined') {
		skip_control_set = 0;
	}
	form_obj = document.getElementById (form_id);
	form_obj.zoneid.value = zoneid_def;
	form_obj.statid.value = statid_def;
	form_obj.cityid.value = cityid_def;
	form_obj.locaid.value = locaid_def;
	if (skip_control_set == 0) {
		geo_init (zoneid_def, statid_def, cityid_def, locaid_def, is_text_location);
	}
}

//////////////////////////////////////////////////////////////////////////////////////
function geo_copy (subm_form) {
    subm_form.zoneid.value = subm_form.zoneid_sel.value;
    subm_form.statid.value = subm_form.statid_sel.value;
    subm_form.cityid.value = subm_form.cityid_sel.value;
    if (document.getElementById('locaid_sel').style.visibility == 'visible') {
	subm_form.locaid.value = subm_form.locaid_sel.value;    
    } else if (document.getElementById('locaid_text').style.visibility == 'visible') {
	subm_form.locaid.value = subm_form.locaid_text.value;    
    }
    return (true);
}

//////////////////////////////////////////////////////////////////////////////////////
function geo_def_stat () {
	if ((glob_zoneid != "") || (glob_statid != "")) {
		get_stat (1, glob_statid, "geo_def_city ();");
	}
}

//////////////////////////////////////////////////////////////////////////////////////
function geo_def_city () {
	if ((glob_statid != "") || (glob_cityid != "")) {
		get_city (1, glob_cityid, "geo_def_loca ();");
	}
}

//////////////////////////////////////////////////////////////////////////////////////
function geo_def_loca () {
	if ((glob_cityid != "") || (glob_locaid != "")) {
		get_loca (1, glob_locaid, "");
	}
}


//////////////////////////////////////////////////////////////////////////////////////
function get_zone (use_default, default_value, what_to_do) {
	document.getElementById('statid_sel').options.length = 0;
	document.getElementById('cityid_sel').options.length = 0;
	document.getElementById('locaid_sel').options.length = 0;
	get_geo_details ('zoneid_sel', 'zone', '', '', '', use_default, default_value, what_to_do);
}

//////////////////////////////////////////////////////////////////////////////////////
function get_stat (use_default, default_value, what_to_do) {
	document.getElementById('cityid_sel').options.length = 0;
	document.getElementById('locaid_sel').options.length = 0;
	zone = document.getElementById('zoneid_sel').value; 
	get_geo_details ('statid_sel', 'stat', zone, '', '', use_default, default_value, what_to_do);
}

//////////////////////////////////////////////////////////////////////////////////////
function get_city (use_default, default_value, what_to_do) {
	document.getElementById('cityid_sel').options.length = 0;
	zone = document.getElementById('zoneid_sel').value; 
	stat = document.getElementById('statid_sel').value; 
	get_geo_details ('cityid_sel', 'city', zone, stat, '', use_default, default_value, what_to_do);
}

//////////////////////////////////////////////////////////////////////////////////////
function get_loca (use_default, default_value, what_to_do) {
	zone = document.getElementById('zoneid_sel').value; 
	stat = document.getElementById('statid_sel').value; 
	city = document.getElementById('cityid_sel').value; 
	get_geo_details ('locaid_sel', 'loca', zone, stat, city, use_default, default_value, what_to_do);
}

//////////////////////////////////////////////////////////////////////////////////////
function control_change (form_id, control_type, control_value) {
	form_obj = document.getElementById (form_id);
	switch (control_type) {
		case 'zone':
			form_obj.zoneid.value = control_value;
			form_obj.statid.value = '';
			form_obj.cityid.value = '';
			form_obj.locaid.value = '';
			document.getElementById('statid_sel').style.visibility = 'visible';
			document.getElementById('cityid_sel').style.visibility = 'hidden';
			document.getElementById('locaid_sel').style.visibility = 'hidden';
			if (glob_is_text_location) {
				document.getElementById('locaid_text').style.visibility = 'hidden';
				document.getElementById('locaid_text').value = '';
			}
			break
		case 'stat':
			form_obj.statid.value = control_value;
			form_obj.cityid.value = '';
			form_obj.locaid.value = '';
			document.getElementById('cityid_sel').style.visibility = 'visible';
			document.getElementById('locaid_sel').style.visibility = 'hidden';
			if (glob_is_text_location) {
				document.getElementById('locaid_text').style.visibility = 'hidden';
				document.getElementById('locaid_text').value = '';
			}
			break
		case 'city':
			form_obj.cityid.value = control_value;
			form_obj.locaid.value = '';
			break
		case 'loca':
			form_obj.locaid.value = control_value;
			break

	}
}

//////////////////////////////////////////////////////////////////////////////////////
function get_http() {
    var xmlhttp;
    /*@cc_on
    @if (@_jscript_version >= 5)
        try {
            xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                xmlhttp = new 
                ActiveXObject("Microsoft.XMLHTTP");
            } catch (E) {
                xmlhttp = false;
            }
        }
    @else
        xmlhttp = false;
    @end @*/
    if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
        try {
            xmlhttp = new XMLHttpRequest();
        } catch (e) {
            xmlhttp = false;
        }
    }
    return xmlhttp;
}

//////////////////////////////////////////////////////////////////////////////////////
function get_geo_details (sel_obj, mode, zoneid, statid, cityid, use_default, default_value, what_to_do) {
	result = 0; // все хорошо
	working = false;
	if(!http && !working){
		http = get_http ();
	}
	// Запрос
	if (!working && http) {
		var http = http;
		url = glob_geo_script + "?mode=" + mode;
		if (zoneid != '')
		{
			url = url + "&zoneid=" + zoneid;
		}
		if (statid != '')
		{
			url = url + "&statid=" + statid;
		}
		if (cityid != '')
		{
			url = url + "&cityid=" + cityid;
		}

		http.open("GET", url, true);
		//прикрепляем к запросу функцию-обработчик
		//событий
		http.onreadystatechange = function() {
			// 4 - данные готовы для обработки
			if (http.readyState == 4) {
				if (http.responseText.length == 0)
				{
					result = 2; // пустой ответ
				}
				fill_default = '';
				if (use_default)
				{
					fill_default = default_value;
				}
				fill (sel_obj, http.responseText, fill_default, what_to_do);
				working = false;
			}
		}
		working = true;
		http.send(null);
	}
	if(!http){
		alert('Ошибка при создании XMLHTTP объекта!')
	}
	if (working)
	{
		result = 1; // таймаут
	}
	return (result);
}

//////////////////////////////////////////////////////////////////////////////////////
function fill (sel_obj, data, def_value, what_to_do) {
    // поле SELECT в переменную в виде объекта
    var select = document.getElementById(sel_obj);
    // очищаем SELECT
    select.options.length = 0;
    
    if (sel_obj == 'locaid_sel') { // city changed draw location
	if (data.length < 1) { // если данных нет - не делаем больше ничего
	    document.getElementById("locaid_sel").style.visibility = 'hidden';
	    if (glob_is_text_location == 1) {
	        document.getElementById("locaid_text").style.visibility = 'visible';		
	    } 
	    return (0);
	} else {
    	    document.getElementById("locaid_sel").style.visibility = 'visible';	
	    if (glob_is_text_location == 1) {
		document.getElementById("locaid_text").style.visibility = 'hidden';
	    } 	    
	}
    }
    // в массиве arr - строки полученной таблицы
    var arr = data.split('\n');
    // для каждой строки
	select.options[select.options.length] = new Option("", "", false, false);
	var saved_select_index = 0;
	var index_count = 1;
    for (var i in arr) {
        // в массиве val - поля полученной таблицы
        val = arr[i].split(';');
        // добавляем новый объект OPTION к нашему SELECT
        select.options[select.options.length] = new Option(val[1], val[0], false, false);
		if (val[0] == def_value) {
			saved_select_index = index_count;
		}
		index_count = index_count + 1;
    }	
	select.selectedIndex = saved_select_index;

	if (what_to_do != "") { // после завершения действий выполним то что просили
		setTimeout (what_to_do, 50);
	}
	return (0);
}

//////////////////////////////////////////////////////////////////////////////////////
// установка select-а по значению
function set_field_by_value (sel_obj, value) {
	select = document.getElementById (sel_obj);
	for (i=0; i < select.options.length; i++) {
		if (select.options[i].value == value) {
			select.selectedIndex = i;			
			return;
		}
	}
}

//////////////////////////////////////////////////////////////////////////////////////
// формирование списков "ищу" и "цель знакомства" в зависимости от возраста
function set_lists_by_age (process_form) {
	bd_day = process_form.bdd.value;
	bd_month = process_form.bdm.value;
	bd_year = process_form.bdy.value;
	if (bd_year > 0 && bd_month > 0 && bd_day > 0) {
		now_year_start = new Date (glob_now.getFullYear (), 0, 1);
		now_days = Math.floor ((glob_now.getTime () - now_year_start.getTime ()) / (1000 * 60 * 60 * 24));

		bday = new Date (bd_year, bd_month - 1, bd_day);
		bday_year_start = new Date (bd_year, 0, 1);
		bday_days = Math.floor ((bday.getTime () - bday_year_start.getTime ()) / (1000 * 60 * 60 * 24));

		delta = 0;
		if (now_days > bday_days) {
			delta = 1;
		} 
		age = (glob_now.getFullYear() - bd_year - delta);

		// очистим контролы и сформируем заново
		old_goal_index = process_form.goal.selectedIndex;
		process_form.goal.options.length = 0;
		process_form.goal.options[process_form.goal.options.length] = new Option(glob_goal_default, 0, false, false);
		var g_list1 = glob_goals.split(';');
		items = -1;
		for (var i in g_list1) {
			c_goal = g_list1[i].split(',');
			if ((age >= 17) || (c_goal[2] == 0)) {
				process_form.goal.options[process_form.goal.options.length] = new Option(c_goal[1], c_goal[0], false, false);
				items ++;
			}
		}
		if (items >= old_goal_index) {
			process_form.goal.selectedIndex = old_goal_index;
		} else {
			process_form.goal.selectedIndex = 0;
		}

		old_wanted_index = process_form.wanted.selectedIndex;
		process_form.wanted.options.length = 0;
		process_form.wanted.options[process_form.wanted.options.length] = new Option(glob_wanted_default, 0, false, false);
		var w_list1 = glob_wanteds.split(';');
		items = -1;
		for (var i in w_list1) {
			c_wanted = w_list1[i].split(',');
			if ((age >= 17) || (c_wanted[2] == 0)) {
				process_form.wanted.options[process_form.wanted.options.length] = new Option(c_wanted[1], c_wanted[0], false, false);
				items ++;
			}
		}
		if (items >= old_wanted_index) {
			process_form.wanted.selectedIndex = old_wanted_index;
		} else {
			process_form.wanted.selectedIndex = 0;
		}
	}
}

//////////////////////////////////////////////////////////////////////////////////////
// формирование списков "ищу" и "цель знакомства" в зависимости от возраста
function init_list_values (goals_list, wanteds_list, goal_default, wanted_default, current_timestamp) {
	glob_now.setTime (current_timestamp * 1000);
	glob_goals = goals_list;
	glob_wanteds = wanteds_list;
	glob_goal_default = goal_default;
	glob_wanted_default = wanted_default;
}


//////////////////////////////////////////////////////////////////////////////////////
// вставка смайла. Используется в шаблонах messenger/conversation.tpl и messenger/comments.tpl
    function insertSmile(myValue) {
      var myField=document.getElementById('message_body');
      //  Для MSIE
      if (document.selection) {
        myField.focus();
        sel = document.selection.createRange();
        sel.text = myValue;
      }
      // Для нормальных браузеров
      else if (myField.selectionStart || myField.selectionStart == '0') {
        var startPos = myField.selectionStart;
        var endPos = myField.selectionEnd;
        myField.value = myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos, myField.value.length);
      }
      // Для остальных 
      else {
        myField.value += myValue;
      }
    } // insertAtCursor


// проверка количества введенных целей
var goals_count = 0;
function check_goals_count (check_box) {
	if (check_box.checked) {
		goals_count ++;
	} else {
		goals_count --;
	}
	check_result = true;
	if (goals_count > 100) { // разрешаем выбирать сколько угодно целей
//		goals_count --;
//		check_result = false;
//		alert ("Можно выбрать не более двух целей!");
	} else if (goals_count == 0) {
		goals_count ++;
		check_result = false;
		alert ("Нужно выбрать не менее одной цели!");
	}
	return (check_result);
}

// открытие попап окна с запросами top200
function top200open (opener) {
	document.getElementById('topblock').style.top=getElementTop(opener); 
	document.getElementById('topblock').style.left=getElementLeft(opener); 
	document.getElementById('topblock').style.display='block';
}

// определение позиции объекта на экране
function getElementTop (offsetTrail)
{
	var offsetTop = 0;
	while (offsetTrail) {
		offsetTop += offsetTrail.offsetTop;
		offsetTrail = offsetTrail.offsetParent;
	}
	return (offsetTop);
}

function getElementLeft (offsetTrail)
{
	var offsetLeft = 0;
	while (offsetTrail) {
		offsetLeft += offsetTrail.offsetLeft;
		offsetTrail = offsetTrail.offsetParent;
	}
	return (offsetLeft);
}


//////////////////////////////////////////////////////////////////////////////////////
function gender_set (form_id, value) {
	form_obj = document.getElementById (form_id);
	if (value == 1) {
		form_obj.igender.value = 1;
		form_obj.sgender.value = 2;
	} else if (value == 2) {
		form_obj.igender.value = 2;
		form_obj.sgender.value = 1;
	}
}

//////////////////////////////////////////////////////////////////////////////////////
function age_set (form_id, value) {
	form_obj = document.getElementById (form_id);
	if (value == 1) {
		form_obj.agemin.value = 18;
		form_obj.agemax.value = 30;
	} else if (value == 2) {
		form_obj.agemin.value = 31;
		form_obj.agemax.value = 45;
	} else if (value == 3) {
		form_obj.agemin.value = 46;
		form_obj.agemax.value = 100;
	}
}
