var map;
var manager;
var rg;
var cg = false;
var marker;
var flag = false;
var show_map = false;
var addr_mode = 1;
var addr_base = '';
var lat;
var lng;
var dist;
var manual_allowed = true;
var metro = 0;
var coll = false;

var tmp = 14;


$(document).ready(function(){  
    $('.check_error').live('blur', function(){
	    if ($(this).val() != '') {
			$(this).removeClass('check_error');
		}
	});
						   
    $(".nav-main > ul > li").hover(function() {
		$("ul", this).show();},
		function() {
		$("ul", this).hide();
	});
  
	$("input.submit").bind('click', function(){
		var _form = $(this).parent('form');
		
		$('input', _form).removeClass('check_error');
		$('textarea', _form).removeClass('check_error');		
		var error = false;
		
		$('.required', _form).each(function(){
			var v = $(this).val();
			if (v == '') {
				$(this).addClass('check_error');
				error = true;
			}
		});
		
		if (error) {
			alert('Не заполнены обязательные поля');
			return false;
		}

		if ($("input.email").length > 0) {
			var email= $("input.email").val();
			var reg= new RegExp("[0-9a-z_]+@[0-9a-z_^.]+\\.[a-z]{2,3}", 'i')
			if (!reg.test(email)) {
				$("input.email").addClass('check_error');
				alert('Введенный Email не прошел проверку на валидность');
				return false;
			}
		}

		var ajax_sended = false;
		// Проверка формы регистрации магазина
		if ($(_form).hasClass('add_shop_form')) {
			var ajax_sended = true;
			var country = $('select[name=f_Country]').val();
			var town = $('input[name=f_Town]').val();
			var street = $('input[name=f_Street]').val();
			if ($('input[name=f_XCoord]').val() != '') {
				var defined = 1;
			} else {
				var defined = 0;
			}
			
			$.post('/ajax/search.php?op=checkadr', {country:country, town:town, street:street, defined:defined}, function(data){
				if (data == 1) {
					$(_form).submit();
					return
				}
				data = unserialize(data);
				if (data['error']) {
				    $("input[name=" + data['field'] + "]").addClass('check_error');
				    alert(data['error_txt']);
				}
				if (data['warning']) {
				    alert(data['warn_txt']);
					$('input[name=f_Checked]').val('0');
					$(_form).submit();
					return
				}
			});
		}
		
		if (!ajax_sended) {
		    $(_form).submit();
		}
	});
	
	$('form.add_shop_form select[name=f_Country]').bind('change', function(){
	    $("#f_Town").flushCache();
	});
	
	$('a.edit-link').bind('click', function(){
		var _form = $(this).parents('form:first');
		var html = $('span.f_Date_day', _form).html();
		$('span.f_Date_day', _form).html('<input type="text" name="f_Date_day" size="2" maxlength="2" value="' + html + '">');

		var html = $('span.f_Date_month', _form).html();
		$('span.f_Date_month', _form).html('<input type="text" name="f_Date_month" size="2" maxlength="2" value="' + html + '">');
		
		var html = $('span.f_Date_year', _form).html();		
		$('span.f_Date_year', _form).html('<input type="text" name="f_Date_year" size="4" maxlength="4" value="' + html + '">');
		
		var html = $('span.f_ShortText i', _form).html();
		$('span.f_ShortText i', _form).html('<textarea name="f_ShortText" cols="20" rows="5">' + html + '</textarea>');
		$('a.edit-link', _form).hide();
		$('.f_Shop_ID', _form).hide();
		$('.f_Shop_ID_select', _form).show();		
		$('a.edit-cancel', _form).show();
		$('.save-button', _form).show();
		return false;
	});
	
	$('a.del-link').bind('click', function(){
		if (confirm("Удалить эту новость?")) {
			var _form = $(this).parents('form:first');
			var id = $(_form).attr('id');
			id = id.split('_');
			$('form#delnews_' + id[1]).submit();;
		}
	});
	
	$('a.del-shop').bind('click', function(){
		if (confirm("Удалить этот магазин навсегда?")) {
			var _form = $(this).next('form:first');
			$(_form).submit();;
		}
	});
	
	
	$('a.add-news-toggle').toggle(
		function(){
			$(this).parents('b').next('form').slideDown('fast');
		}, 
		function(){
			$(this).parents('b').next('form').slideUp('fast');			
		}
	);


    /*
	$('a.add-ob').toggle(
		function(){
			$('div.form-ob').slideDown('fast');
		}, 
		function(){
			$('div.form-ob').slideUp('fast');			
		}
	);
	*/
	
	$('.ob_item a.expand').bind('click', function(){
	    var div = $(this).parents('div.ob_item');
		$('.short', div).slideUp('fast');
		$('.full', div).slideDown('fast');
	});
	
	$('.ob_item a.collapse').bind('click', function(){
	    var div = $(this).parents('div.ob_item');	
		$('.full', div).slideUp('fast');
		$('.short', div).slideDown('fast');
	});
	

	$('a.link-ob-answer').toggle(
		function(){
			$(this).next('form').slideDown('fast');
		}, 
		function(){
			$(this).next('form').slideUp('fast');			
		}
	);

	if (show_map) {
		InitMap(lat, lng);
		$('div#map').css('display', 'block');
		
		createYMarker(lat, lng, 'Название магазина', 'Адрес');
		flag = true;
	}
	
});

// Функция сабмита формы с валидацией
function form_submit() {
		
}

function InitMap(lat, lng){
	  if (!flag) {
		  map = new YMaps.Map(document.getElementById("map"));
		  manager = new YMaps.ObjectManager();
		  map.setCenter(new YMaps.GeoPoint(lng, lat), dist);
		  map.addControl(new YMaps.TypeControl());
		  map.addControl(new YMaps.ToolBar());
		  map.addControl(new YMaps.Zoom());
		  //map.addControl(new YMaps.MiniMap());
		  map.addControl(new YMaps.ScaleLine());
	  }
	  
	  coll = new YMaps.GeoObjectCollection();
      map.addOverlay(coll); 	
	  
	  YMaps.Events.observe(map, map.Events.SmoothZoomEnd, function (obj) {
		  var a = 1;
		  var b = map.getZoom();
		  
		  if ($('input[name=f_Distance]').length == 1) {
			  $('input[name=f_Distance]').val(b);
		  }
	  
	  });	
	  flag = true;
}


function ProcessAddress(mode){
	// Режимы (mode)
	// mode = 1 - Определение точки при добавлении магазина
	// mode = 2 - Определение точки только для страна-город
	// mode = 3 - Определение точки для страна город метро
	if ($('form#adminForm select[name=f_Country] option:selected').length == 1) {
	    var country = $('form#adminForm select[name=f_Country] option:selected').text();
	}
	if ($('form#adminForm select[name=f_Country_ID] option:selected').length == 1) {
	    var country = $('form#adminForm select[name=f_Country_ID] option:selected').text();
	}
	
	if ($('form#adminForm input[name=f_Town]').length == 1) {
	    var town = $('form#adminForm input[name=f_Town]').val();
	} else if ($('form#adminForm select[name=f_Town]').length == 1) {
	    var town = $('form#adminForm select[name=f_Town]').val();
	}

	if ($('form#adminForm input#f_Metro').length == 1) {
		var metro = $('form#adminForm input#f_Metro').val();
	} else {
		var metro = $('form#adminForm input[name=f_Metro]').val();
	}
	var street = $('form#adminForm input[name=f_Street]').val();
	var dom = $('form#adminForm input[name=f_Dom]').val();	
	
	// Основа адреса (берется всегда)
	var addr = country + ',+' + town;
	// Основной адрес включает в себя только страну и город (запоминается)
	addr_base = addr;
	if (mode == 2 || mode == 3) {
		addr_mode = 2;
	}

	if (mode == 3 && metro != '') {
		addr = addr + ', метро ' + metro;
	}

    if (mode == 1) {
		if (street != '') {
			addr = addr + ',+' + street;
		}
		if (dom != '') {
			addr = addr + ',+дом+' + dom;
		}
	}
	addr_mode = 1; 		// полный адрес либо только страна-город
	$.get('http://geocode-maps.yandex.ru/1.x/?format=json&geocode=' + addr + '&key=AL4h-E4BAAAA_RfgDwIAoT-plVgIyFpdcCtF709br1GDooMAAAAAAAAAAAC-MYxVvz9sosfr429SbLQImZS16g==', function(data){
		
		var point = data.response.GeoObjectCollection.featureMember[0].GeoObject.Point.pos;
		point = point.split(' ');
        var lng = point[0];
        var lat = point[1];
       	$('input[name=f_XCoord]').val(lat);
    	$('input[name=f_YCoord]').val(lng);

    	if (!flag) {
    		$('div#map').css('display', 'block');
       		InitMap(lat, lng);
    		flag = true;
    	}
    	$('span#result').css('display', 'block');
		
		// Удаленние предыдущего маркера
		map.removeOverlay(coll);
		coll = new YMaps.GeoObjectCollection();
		map.addOverlay(coll);

	    var placemark = createYMarker(lat, lng, 'Название магазина', 'Здесь будет адрес', true);
		  // Прикрепляет обработчики событий метки
		  /*
		  YMaps.Events.observe(placemark, placemark.Events.DragEnd, function (obj) {
			  // Устанавливает содержимое балуна
			  var current = obj.getGeoPoint().copy();
			  obj.update();
			  var current2 = obj.getGeoPoint().copy();
			  var a = 1;
		  });	  
		  */
		  
		  YMaps.Events.observe(placemark, placemark.Events.PositionChange, function (obj) {
			  // Устанавливает содержимое балуна
			  var current = obj.getGeoPoint().copy();
       		  $('input[name=f_XCoord]').val(current.__lat);
    	      $('input[name=f_YCoord]').val(current.__lng);
			  
			  obj.update();
			  var current2 = obj.getGeoPoint().copy();
			  var a = 1;
		  });	  
		
		map.setCenter(new YMaps.GeoPoint(lng, lat), 15);
		tmp = tmp-1;
        //marker.setLatLng(new GLatLng(lat, lng));
	});
	
}


function createYMarker(x, y, name, comment, drag) {
	// Создает стиль
	var s = new YMaps.Style();
	
	// Создает стиль значка метки
	s.iconStyle = new YMaps.IconStyle();	
	s.iconStyle.href = "/images/iconline.gif";
	s.iconStyle.size = new YMaps.Point(24, 24);
	s.iconStyle.offset = new YMaps.Point(-12, -25);
	
	// Создает метку
	var opts = {style: s};
	if (drag) {
		opts.draggable = true;
	}
	var placemark = new YMaps.Placemark(new YMaps.GeoPoint(y, x), opts);

	// Устанавливает содержимое балуна
	placemark.name = name;
	placemark.description = comment;

	// Добавляет метку на карту
	if (typeof(coll) == 'boolean') {
		map.addOverlay(placemark);
	} else {
		coll.add(placemark);
	}
	
	return placemark;
}


function ResetMap() {
	$('div#map').css('display', 'none');
	$('span#result').css('display', 'none');	
	$('form input[name=f_XCoord]').val('');
	$('form input[name=f_YCoord]').val('');
	
}
  
function town_entered() {
	var town = $('input[name=f_Town]').val();
	var country = $('input[name=f_Country]').val();
	$.post('/ajax/search.php?op=metro', {town:town, metro:metro}, function(data){
		if (data) {
			$('div#d_metro').css('display', 'block');
			$('select[name=f_Metro_ID]').html(data);
		}
	});
}


