/*
	spinner
*/
Spinner = Class.create();
Spinner.prototype = {

    initialize: function()
    {
        this.id = 'spinner';
    },

    Show: function()
    {
    	if ( $('logo') )
    	{
	    	var _top	= getRelTop($('logo'));
	    	var _left	= getRelLeft($('logo'));

	    	$(this.id).style.top		= (_top + 16)  + 'px';
	    	$(this.id).style.left		= (_left - 48) + 'px';
			$(this.id).style.display	= '';
    	}
	},

	Hide: function()
    {
		$(this.id).style.display = 'none';
	}
}

Message = Class.create();
Message.prototype = {

    initialize: function()
    {
        this.id = 'msg';
    },

    Show: function(msgType, msgText)
    {
    	$(this.id).innerHTML = msgText;
    	$(this.id).className = msgType;
		$(this.id).style.visibility = 'visible';
	},

	Hide: function()
    {
    	$(this.id).innerText = '';
    	$(this.id).className = '';
		$(this.id).style.visibility = 'hidden';
	}
}

var oSpinner	= new Spinner();
var oMessage	= new Message();

var tmp_option = null;

function send_request(prm, _OnComplete)
{
	oSpinner.Show();

	var url = '/service.php';
	var oAjax = new Ajax.Request(url, {
		method:		'post',
		encoding:	'windows-1251',
		parameters:	prm,
		onComplete: _OnComplete,
		onSuccess: function()
		{
			oSpinner.Hide();
		},
		onFailure: function()
		{
			oSpinner.Hide();
		}
	});

	return oAjax;
}

function load_names(type, exchange)
{
	prefix = exchange ? 'exchange_' : '';

	if ( !$(prefix + 'category_id') )
	{
		return false;
	}

	var index		= $(prefix + 'category_id').selectedIndex;
	var category_id	= $(prefix + 'category_id')[index].value;

	if ( category_id )
	{
		if ( $(prefix + 'model_id') )
		{
			$(prefix + 'model_id').options.length = 1;
		}

		var opt_title = $(prefix + 'name_id').options[0].text;
		$(prefix + 'name_id').options.length = 0;
		$(prefix + 'name_id').options[0] = new Option('-- загрузка... --', '');

		var prm = 'service=GetNameList&type=' + type + '&category_id=' + category_id + '&exchange=' + (exchange ? 1 : 0) + '&opt_title=' + opt_title;
		send_request(prm, put_names);
	}
	else
	{
		$(prefix + 'name_id').options.length = 1;

		if ( $(prefix + 'model_id') )
		{
			$(prefix + 'model_id').options.length = 1;
		}
	}
}

function put_names(oRequest)
{
	XMLresponse = oRequest.responseXML;
	root = XMLresponse.documentElement;

	var options = root.getElementsByTagName('options');

	if ( options )
	{
		var mode		= options[0].getAttribute('mode');
		var opt_title	= options[0].getAttribute('opt_title');
		var prefix		= (mode == 'exchange' ? 'exchange_' : '');

		$(prefix + 'name_id').options[0] = new Option(opt_title, '');

		var options = root.getElementsByTagName('option');

		var need_load_models = false;

		if ( options.length )
		{
			eval('var name_id = _' + prefix + 'name_id;');

			for ( var i = 0; i < options.length; i++ )
			{
				opt_value = options[i].getAttribute('id');
				opt_title = options[i].getAttribute('value');

				$(prefix + 'name_id').options[$(prefix + 'name_id').options.length] = new Option(opt_title, opt_value);

				if ( opt_value == name_id )
				{
					$(prefix + 'name_id').options[$(prefix + 'name_id').options.length - 1].selected = true;
					need_load_models = true;
				}
			}

			if ( need_load_models && $(prefix + 'model_id') )
			{
				var model_loader_mode = (mode == 'exchange' ? true : false);
				load_models(_ad_type_id, model_loader_mode);
			}
		}
	}

	var message = root.getElementsByTagName('message');

	if ( message.length )
	{
		msg_type = message[0].getAttribute('type');
		msg_text = message[0].getAttribute('text');

		oMessage.Show(msg_type, msg_text);
	}
}

function load_models(type, exchange)
{
	prefix = exchange ? 'exchange_' : '';

	if ( !$(prefix + 'name_id') )
	{
		return false;
	}

	var index	= $(prefix + 'name_id').selectedIndex;
	var name_id	= $(prefix + 'name_id')[index].value;

	if ( $(prefix + 'category_id') )
	{
		var index		= $(prefix + 'category_id').selectedIndex;
		var category_id	= $(prefix + 'category_id')[index].value;
	}
	else
	{
		if ( !exchange )
		{
			var category_id	= _category_id;
		}
		else
		{
			var category_id	= _exchange_category_id;
		}
	}

	if ( name_id )
	{
		var opt_title = $(prefix + 'model_id').options[0].text;
		$(prefix + 'model_id').options.length = 0;
		$(prefix + 'model_id').options[0] = new Option('-- загрузка... --', '');

		var prm = 'service=GetModelList&type=' + type + '&category_id=' + category_id + '&name_id=' + name_id + '&exchange=' + (exchange ? 1 : 0) + '&opt_title=' + opt_title;
		send_request(prm, put_models);
	}
	else
	{
		$(prefix + 'model_id').options.length = 1;
	}
}

function put_models(oRequest)
{
	XMLresponse = oRequest.responseXML;
	root = XMLresponse.documentElement;

	var options	= root.getElementsByTagName('options');

	if ( options )
	{
		var mode		= options[0].getAttribute('mode');
		var opt_title	= options[0].getAttribute('opt_title');
		var prefix		= (mode == 'exchange' ? 'exchange_' : '');

		$(prefix + 'model_id').options[0] = new Option(opt_title, '');

		var options = root.getElementsByTagName('option');

		if ( options.length )
		{
			eval('var model_id = _' + prefix + 'model_id;');

			for ( var i = 0; i < options.length; i++ )
			{
				opt_value = options[i].getAttribute('id');
				opt_title = options[i].getAttribute('value');

				$(prefix + 'model_id').options[$(prefix + 'model_id').options.length] = new Option(opt_title, opt_value);

				if ( model_id.indexOf(opt_value) != -1 )
				{
					$(prefix + 'model_id').options[$(prefix + 'model_id').options.length - 1].selected = true;
				}
			}
		}
	}

	var message = root.getElementsByTagName('message');

	if ( message.length )
	{
		msg_type = message[0].getAttribute('type');
		msg_text = message[0].getAttribute('text');

		oMessage.Show(msg_type, msg_text);
	}
}

function add_name(type)
{
	if ( $('category_id') )
	{
		var index		= $('category_id').selectedIndex;
		var category_id	= $('category_id')[index].value;

		if ( !category_id )
		{
			oMessage.Show('error', 'Выберите категорию');
			$('category_id').focus();
			return false;
		}
	}
	else
	{
		var category_id = '';
	}

	var name_title = prompt('Введите название марки', "");

	if ( !name_title.blank() )
	{
		var prm = 'service=AddName&type=' + type + '&category_id=' + category_id + '&title=' + name_title;
		send_request(prm, put_name);
	}
	else
	{
		oMessage.Show('error', 'Введенное название не корректно')
	}
}

function put_name(oRequest)
{
	XMLresponse = oRequest.responseXML;

	root = XMLresponse.documentElement;

	var options = root.getElementsByTagName('option');

	if ( options.length )
	{
		for ( var i = 0; i < options.length; i++ )
		{
			opt_value = options[i].getAttribute('id');
			opt_title = options[i].getAttribute('value');

			$('name_id').options[$('name_id').options.length] = new Option(opt_title, opt_value);
			$('name_id').options[$('name_id').options.length - 1].selected = true;
		}

		if ( $('model_id') )
		{
			$('model_id').options.length = 1;
		}
	}

	var message = root.getElementsByTagName('message');

	if ( message.length )
	{
		msg_type = message[0].getAttribute('type');
		msg_text = message[0].getAttribute('text');

		oMessage.Show(msg_type, msg_text);
	}
}

function add_model(type)
{
	if ( $('category_id') )
	{
		var index		= $('category_id').selectedIndex;
		var category_id	= $('category_id')[index].value;

		if ( !category_id )
		{
			oMessage.Show('error', 'Выберите категорию');
			$('category_id').focus();
			return false;
		}
	}
	else
	{
		var category_id = '';
	}

	var index	= $('name_id').selectedIndex;
	var name_id	= $('name_id')[index].value;

	if ( !name_id )
	{
		oMessage.Show('error', 'Выберите марку');
		$('name_id').focus();
		return false;
	}
	else
	{
		var model_title	= prompt('Введите название модели', "");

		if ( !model_title.blank() )
		{
			var prm = 'service=AddModel&type=' + type + '&category_id=' + category_id + '&name_id=' + name_id + '&title=' + model_title;
			send_request(prm, put_model);
		}
		else
		{
			oMessage.Show('error', 'Введенное название не корректно')
		}
	}
}

function put_model(oRequest)
{
	XMLresponse = oRequest.responseXML;

	root = XMLresponse.documentElement;

	var options = root.getElementsByTagName('option');

	if ( options.length )
	{
		for ( var i = 0; i < options.length; i++ )
		{
			opt_value = options[i].getAttribute('id');
			opt_title = options[i].getAttribute('value');

			$('model_id').options[$('model_id').options.length] = new Option(opt_title, opt_value);
			$('model_id').options[$('model_id').options.length - 1].selected = true;
		}
	}

	var message = root.getElementsByTagName('message');

	if ( message.length )
	{
		msg_type = message[0].getAttribute('type');
		msg_text = message[0].getAttribute('text');

		oMessage.Show(msg_type, msg_text);
	}
}

function show_photo(elPhoto, fileName)
{
	elCurrent = document.getElementsByClassName('photo_thumb_selected');

	elCurrent[0].className = 'photo_thumb';

	elPhoto.className = 'photo_thumb_selected';

	$('photo').src = fileName;
}

function submit_form(id, confirm_text)
{
	if ( confirm_text )
	{
		if ( confirm(confirm_text) )
		{
			$(id).submit();
			return true;
		}
		return false;
	}
	else
	{
		$(id).submit();
		return true;
	}
}

function change_rubric_state(id)
{
	var state		= document.getElementById(id).checked;
	var elements	= $$('input');

	for ( var i = 0; i < elements.length; i++ )
	{
		if ( elements[i].type == 'checkbox' && elements[i].id.indexOf(id + '_') == 0 )
		{
			elements[i].checked = state;
		}
	}
}

function change_exchange_state()
{
	var disabled = !$('exchange').checked;

	$('exchange_category_id').disabled		= disabled;
	$('exchange_name_id').disabled			= disabled;
	$('exchange_model_id').disabled			= disabled;
	$('ex_char_year_till').disabled			= disabled;
	$('ex_char_year_since').disabled		= disabled;
	$('ex_char_fuel').disabled				= disabled;
	$('ex_char_transmission').disabled		= disabled;
}

function change_interval_state()
{
	var disabled = $('interval').value ? false : true;

	$('since_day').disabled		= disabled;
	$('since_month').disabled	= disabled;
	$('since_year').disabled	= disabled;
	$('till_day').disabled		= disabled;
	$('till_month').disabled	= disabled;
	$('till_year').disabled		= disabled;
}

function show_note_form(ad_id)
{
	var note = $('ad_note_' + ad_id) ? $('ad_note_' + ad_id).innerHTML : '';
	$('form_note_' + ad_id).innerHTML = 'Заметка:<br /><textarea id="note_' + ad_id + '" name="note" rows="3" style="width: 300px;">' + note + '</textarea><br /><br /><input type="image" name="_action_SaveAdNote" src="/templates/images/btn_save.gif" onclick="save_ad_note(' + ad_id + ');" />';
}

function save_ad_note(ad_id)
{
	var note = $('note_' + ad_id).value;

	var prm = 'service=SaveAdNote&ad_id=' + ad_id + '&note=' + note;

	send_request(prm, function(oRequest){

		XMLresponse = oRequest.responseXML;

		root = XMLresponse.documentElement;

		var message = root.getElementsByTagName('message');

		if ( message.length )
		{
			msg_type = message[0].getAttribute('type');
			msg_text = message[0].getAttribute('text');

			if ( msg_type == 'error' )
			{
				alert(msg_text);
			}
			else
			{
				$('form_note_' + ad_id).innerHTML = 'Заметка&nbsp;(<a onclick="show_note_form(' + ad_id + ');">изменить</a> | <a onclick="delete_ad_note(' + ad_id + ');">удалить</a>):<br /><span id="ad_note">' + note + '</span>';
			}
		}
	});
}

function delete_ad_note(ad_id)
{
	var prm = 'service=SaveAdNote&ad_id=' + ad_id;

	send_request(prm, function(oRequest){

		XMLresponse = oRequest.responseXML;

		root = XMLresponse.documentElement;

		var message = root.getElementsByTagName('message');

		if ( message.length )
		{
			msg_type = message[0].getAttribute('type');
			msg_text = message[0].getAttribute('text');

			if ( msg_type == 'error' )
			{
				alert(msg_text);
			}
			else
			{
				$('form_note_' + ad_id).innerHTML = '<a onclick="show_note_form(' + ad_id + ');">Создать заметку</a>';
			}
		}
	});
}

function show_prolong_form(ad_id)
{
	$('ad_prolong_' + ad_id).style.display = '';
}

function hide_prolong_form(ad_id)
{
	$('ad_prolong_' + ad_id).style.display = 'none';
}

function reload_captcha()
{
	var d = new Date();
	$('_captcha_').src = '/captcha.php?t=' + d.getTime();
}

function set_default_temp_photo(key)
{
	new Insertion.After('default_photo', '<input type="hidden" name="_action_SetDefaultTempPhoto" value="1" />');
	$('default_photo').value = key;
	$('frm_wizard').submit();

	return true;
}

function delete_default_temp_photo(key)
{
	if ( confirm('Действительно удалить фотографию?') )
	{
		new Insertion.After('photo_key', '<input type="hidden" name="_action_DeleteTempPhoto" value="1" />');
		$('photo_key').value = key;
		$('frm_wizard').submit();

		return true;
	}
	else
	{
		return false;
	}
}

function set_default_ad_photo(key)
{
	new Insertion.After('default_photo', '<input type="hidden" name="_action_SetDefaultAdPhoto" value="1" />');
	$('default_photo').value = key;
	$('frm_photo').submit();

	return true;
}

function delete_default_ad_photo(key)
{
	if ( confirm('Действительно удалить фотографию?') )
	{
		new Insertion.After('photo_key', '<input type="hidden" name="_action_DeleteAdPhoto" value="1" />');
		$('photo_key').value = key;
		$('frm_photo').submit();

		return true;
	}
	else
	{
		return false;
	}
}

function getRelLeft(elem)
{
	var pos = elem.offsetLeft;
    while (elem.offsetParent != null)
    {
        elem = elem.offsetParent;
        pos += elem.offsetLeft;
    }
    return pos;
}

function getRelTop(elem)
{
	var pos = elem.offsetTop;
	while (elem.offsetParent != null)
	{
		elem = elem.offsetParent;
		pos += elem.offsetTop;
	}
	return pos;
}

function open_wnd(url, name, width)
{
	var height	= screen.height - 150;
	var top		= Math.round((screen.height-height)/2);
	var left	= Math.round((screen.width-width)/2);
	var wnd		= this.open(url, name, "top="+top+",left="+left+",width="+width+",height="+height+",buttons=no,scrollbars=yes,location=no,menubar=no,resizable=yes,status=no,directories=no,toolbar=no");

	wnd.focus();
}

