///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 
// Библиотека предназначена для генерации зависимых полей select с подгрузкой данных через JSON, в форме.
// При этом сами тэги селект должны быть определены заранее.
// !!!!!!!! Обязательно необходимо подключение библиотеки jQuery !!!!!!!!!
//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

var path				= '/ajax/geo.php';// путь до вызываемого скрипта
var sh_timeout			= 300;								// время появления/исчезания элементов
var is_init				= 0;
var def_country_id		= 50;
var def_region_id		= 468;
var def_city_id			= 3879;

if ( !zero_name )
var zero_name			= '<option value=null>Выберите</option>';

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 
function get_rand_string (maxlen)
{
	some_symbols		= new Array('q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m','1','2','3','4','5','6','7','8','9','0');
	
	len		= Math.round(Math.random()*maxlen);
	count	= some_symbols.length;
	rand_str = '';
	for (i=0;i<len;i++)
	{
		rand_str = rand_str + some_symbols[Math.round(Math.random()*count)];
	}
	
	return rand_str;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Антикеш для ИЕ
function get_path ()
{
	new_path = path+'?some_trash='+ get_rand_string(32);
	//alert(new_path);
	return new_path;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// добавление первого нулевого элемента в список
function add_default ( key )
{
	$("<option>").attr("value", 'null').text(zero_name).appendTo("#"+key);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 
function update_field(key,parent_key,value)
{
	parent_val = $("#"+parent_key).val();
	if ( !parent_val )	parent_val	= $("#"+parent_key+"_hide").val();
	if ( !parent_val )	eval("parent_val=def_"+parent_key+"_id");
	
	if ( !value )		value = $("#"+key+"_hide").val();
	if ( !value )		eval("value=def_"+key+"_id");
	
	uri	= get_path() + "&key="+key+"&p_key="+parent_key+"&p_val="+parent_val+"&val="+value;
	$.get(uri,function(data){$('#'+key).html(data)});
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// key 			- id селекта который меняем по событию
// parent_key	- id поля за изменением значения которого следим
function spy_geo (key,parent_key,second_key)
{
	// установка значения по умолчанию
	if ($("#"+key+"_hide").val()!='')	
		update_field(key,parent_key,$("#"+key+"_hide").val());
	else
		update_field(key,parent_key,eval("def_"+key+"_id"));
	
	// зацепка на действие родительского элемента
	$("#"+parent_key).change(function(){
		update_field(key,parent_key);
	});
	
	if ( second_key != false )
	{
		$("#"+second_key).change(function(){
			update_field(key,second_key)
		});
	}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
