var Ac = 
{
init: function()
	{
	Ac.mapDiv = document.getElementById("YMapsID");
	Ac.map = new YMaps.Map(Ac.mapDiv);

//	Ac.statText = document.getElementById("stat_text");
	Ac.resultText = document.getElementById("results_text");
	Ac.submitButton = document.getElementById("search_button");
	Ac.selectCity = document.getElementById("city");
	Ac.selectService = document.getElementById("service");
	Ac.selectModel = document.getElementById("modl");
	Ac.resultDiv = document.getElementById("results");

	Ac.colorWhite = {style: "default#whitePoint"};
	Ac.colorGreen = {style: "default#greenPoint"};

	$('#select').css({display : 'none'});
	Ac.setupMapControls();
	$.getJSON("get_city.php", Ajax.getCities);

	$('#map_legend').html("Выберите нужную область удерживая правую кнопку мыши.");
	if(window.opera) 	$('#map_legend').html("Для нормальной работы необходимо разрешить обработку щелчков правой кнопкой (F12 -> изменить настройки сайта -> сценарии)");

	$("#show_form").click(function()
		{
		$("#spare_parts ul").slideToggle();
		my_val = $("#show_form").html() == "Скрыть форму" ? "Показать форму" : "Скрыть форму";
		$("#show_form").html(my_val);
		});
	
	$("#sugg_button").click(function()
		{
		var store = $("#sugg").val();
		if(store != "") 
			{
			$.post("store_suggestion.php", "text=" + store);
			alert("Спасибо за Ваш отзыв!");
			}

		$("#sugg").val("");
		});

	$("#spare_button").click(function(event)
		{
		event.preventDefault();
		var city =  $("#spare_parts #spare_parts_city").val();
		var name =  $("#spare_parts #name").val();
		var email = $("#spare_parts #email").val();
		var phone = $("#spare_parts #phone").val();
		var marka = $("#spare_parts #marka").val();
		var model = $("#spare_parts #model").val();
		var year = $("#spare_parts #year").val();
		var vin = $("#spare_parts #vin").val();
		var kuzov = $("#spare_parts #kuzov").val();
		var dvig = $("#spare_parts #dvig").val();
		var cond_new = $("#spare_parts #cond_new").is(":checked");
		var cond_old = $("#spare_parts #cond_old").is(":checked");
		var description = $("#spare_parts #description").val();

		if(
name != "" && 
email != "" && 
phone != "" &&
marka != "" &&
model != "" &&
year != "" &&
(vin != "" || (kuzov != "" && dvig != "")) &&
(cond_new != false || cond_old != false) &&
description != "") 
			{
			if(cond_new == true) cond = 1;
			if(cond_old == true) cond = 0;
			if((cond_old == true) && (cond_new == true)) cond = 2;

			line = "city=" + city + "&name=" + name + "&email=" + email + "&phone=" + phone + "&marka=" + marka + "&model=" + model + "&year=" + year + "&vin=" + vin + "&kuzov=" + kuzov + "&dvig=" + dvig + "&cond=" + cond  + "&description=" + description;
			$.post("store_parts.php", line);
			alert("Ваша заявка отправлена. В ближайшее время с Вами свяжутся представители компаний.");

			$("#spare_parts .parts").val(""); 
			$("#spare_parts input[type=checkbox]").attr("checked", false); 
			}
		else
			{
			alert("Заполните форму полностью, пожалуйста.");
			}
		});

 	},

mainContinue: function()
	{
	Ac.setupNameSearch();
	Ac.centerOnCity();

	if(document.attachEvent)
		{
		Ac.selectCity.attachEvent("onchange", Ac.changeCityAction);
		Ac.selectService.attachEvent("onchange", Ac.changeServiceAction);
		}
	else
		{
		Ac.selectCity.addEventListener("change", Ac.changeCityAction, false);
		Ac.selectService.addEventListener("change", Ac.changeServiceAction, false);
		}

	Ac.map.listenMouseEvent(Ac.map.Events.DOMMouseScroll, true);
	YMaps.Events.observe(Ac.map, Ac.map.Events.DOMMouseScroll, function(event) 
		{
		event.getEvent().preventDefault();
		wheel = event.getEvent().wheelDelta;
		if (wheel != 0) {Ac.map.setZoom(Ac.map.getZoom()+(wheel/120), {smooth: true});}
		});

	},

setupMapControls: function()
	{
	Ac.map.addControl(new YMaps.SmallZoom(), new YMaps.ControlPosition(YMaps.ControlPosition.TOP_LEFT, new YMaps.Size(10,10)));

	YMaps.Events.observe(Ac.map, Ac.map.Events.MouseDown, function(mEvent) 
		{
		if(mEvent.getEvent().button != 2) return false;
		else
			{
			Ac.scrollTop = document.getElementsByTagName("html")[0].scrollTop = 0 ? document.getElementsByTagName("html")[0].scrollTop : document.getElementsByTagName("body")[0].scrollTop;
			Ac.scrollLeft = document.getElementsByTagName("html")[0].scrollLeft;
			Ac.startPos = mEvent.getLocalPixels();
			}
		});

		$(document).mousemove(function(inEvent) 
			{
			if(Ac.startPos)
				{
				if(inEvent.clientX + Ac.scrollLeft > Ac.mapDiv.offsetLeft && inEvent.clientX + Ac.scrollLeft < Ac.mapDiv.offsetLeft + Ac.mapDiv.clientWidth &&
					 inEvent.clientY + Ac.scrollTop > Ac.mapDiv.offsetTop && inEvent.clientY + Ac.scrollTop < Ac.mapDiv.offsetTop + Ac.mapDiv.clientHeight)
					{
					Ac.pos = Ac.startPos.copy();
					Ac.size = new YMaps.Point(inEvent.clientX - (Ac.pos.x + Ac.mapDiv.offsetLeft), Ac.scrollTop + inEvent.clientY - (Ac.pos.y + Ac.mapDiv.offsetTop));
			
					if(Ac.size.x < 0)
						{
						Ac.pos.moveByX(Ac.size.x);
						Ac.size.scaleX(-1);
						}

					if(Ac.size.y < 0)
						{
						Ac.pos.moveByY(Ac.size.y);
						Ac.size.scaleY(-1);
						}
					}
				$('#select').html($('#service :selected').text());
        $('#select').css({display : '', 'line-height' : Ac.size.y + 'px', left : Ac.pos.x + Ac.mapDiv.offsetLeft, top : Ac.pos.y + Ac.mapDiv.offsetTop, height : Ac.size.y, width : Ac.size.x});
				}
			});

		$(document).mouseup(function(anEvent) 
			{
			if(anEvent.button != 2) return false;
			else
				{
//				Ac.selectService.value = 1;
				anEvent.preventDefault();
				$('#map_legend').css({display: 'none'});
				if(Ac.pos && Ac.size)
					{
					Ac.geoBL = Ac.map.converter.localPixelsToCoordinates(new YMaps.Point(Ac.pos.x, Ac.pos.y + Ac.size.y));
					Ac.geoUR = Ac.map.converter.localPixelsToCoordinates(new YMaps.Point(Ac.pos.x + Ac.size.x, Ac.pos.y));
				
					Ac.showProgress();
//					alert(Ac.selectModel.value);
			  	$.getJSON("get_service_data.php", {service_id: Ac.selectService.value, model_id: Ac.selectModel.value, min_lat: Ac.geoBL.getLat(), max_lat: Ac.geoUR.getLat(), min_lng: Ac.geoBL.getLng(), max_lng: Ac.geoUR.getLng()}, Ajax.getServiceData);
					}
				Ac.startPos = null;
				Ac.pos = null;
				Ac.size = null;
        $('#select').css({display : 'none'});
				}
			});
	},

setupNameSearch: function()
	{
/*
	suggest = document.createElement("div");
	suggest.className = "suggest_hide";
	suggest.id = "suggest";

	document.getElementById("name_search").appendChild(suggest);

*/	$("#name_search_input").focus(function()
		{
		if($(this).val() == "Поиск по названию или улице") 
			{
			$(this).val("");
			$(this).css({color: 'black'});
			}
		if($(this).val() != "") 
			{
			my_value = encodeURI($(this).val());
			var my_city = $("#city").val();
			$("#suggest").load("suggest.php",{string: my_value, city: my_city});

			$("#suggest").css({display: 'block', "z-index": "9999"});
			}
		else
			{
			$("#suggest").css({display: 'none', "z-index": "9999"});
			}
		});

	$("#name_search_input").blur(function()
		{
		setTimeout(Ac.myFunc, 500);
		if($(this).val() == "") 
			{
			$(this).val("Поиск по названию или улице");
			$(this).css({color: 'gray'});
			}
		});

	$("#name_search_input").keyup(function()
		{

		if($(this).val() != "") 
			{
			$("#suggest").css({display: 'block', "z-index": "9999"});
			}
		else
			{
			$("#suggest").css({display: 'none', "z-index": "9999"});
			}
		my_value = encodeURI($(this).val());
		var my_city = $("#city").val();
		$("#suggest").load("suggest.php",{string: my_value, city: my_city});

		});
	},

myFunc: function()
	{
	$("#suggest").css({display: 'none'});
	},

inArray: function(needle, haystack)
	{                     	
	var max = haystack.length;
	for(i = 0; i < max; i++)
		{
		if(haystack[i] == needle)
			{
			return true;
			}
		}
		return false;
	},

showAllServices: function()
	{
	Ac.showProgress();
	$.getJSON("get_service_data.php", {city: Ac.selectCity.value, service_id: Ac.selectService.value, model_id: Ac.selectModel.value}, Ajax.getServiceData);
	},

addComment: function(id)
	{
	Ac.shade = document.createElement("div");
	Ac.shade.className = "shader";

	document.body.appendChild(Ac.shade);

	var comment_html = '<div class="round_blue" id="comment_div"><span class="tl"></span><span class="tr"></span><div class="box-content" id="info_text"><h2 style="position: relative">Отзывы<span style="font-size: 0.7em;position: absolute; right: 0"><a onclick="Ac.hideComment(' + id + ')" href="#">Закрыть</a></span></h2><div id="form_contents"><div id="comments"></div><form id="comment_form" method="POST"><fieldset><legend>Новый отзыв</legend><ul><li><label for="serv">Качество сервиса:</label><select id="serv" name="serv"><option value="1">1</option><option value="2">2</option><option value="3" selected="selected">3</option><option value="4">4</option><option value="5">5</option></select></li><li><label for="price">Цена:</label><select id="price" name="price"><option value="1">Очень дёшево</option><option value="2">Дёшево</option><option value="3" selected="selected">Средняя</option><option value="4">Дорого</option><option value="5">Очень дорого</option></select></li><li><label for="name">Имя:</label><input type="text" id="name" name="name" /><span id="name_error" class="error"></span></li><li><label for="otzyv">Отзыв:</label><textarea id="otzyv" name="otzyv"></textarea><span id="otzyv_error" class="error"></span></li><li><label> </label><input type="submit" class="submit" value="Оставить отзыв" /></li></ul></fieldset></form></div></div><span class="bl"></span></div>';
	$('.shader').html(comment_html);

	$('.shader').css({width: "100%", height: $(document).height()});


	myscroll = $(document).scrollTop();
	if(myscroll == 0) myscroll = $("body").scrollTop();

	$("#comment_div").css({"top": myscroll + "px"});

	$(window).scroll(function()
		{
		myscroll = $(document).scrollTop();
		if(myscroll == 0) myscroll = $("body").scrollTop();

		$("#comment_div").css({"top": myscroll + "px"});
		});


	$('#comments').load("get_comments.php?id=" + id);

	$('#comment_form').submit(function()
		{
		
		var hasError = false;

		var name =    $('#comment_form #name').val();
		var otzyv =   $('#comment_form #otzyv').val();
		var service = $('#comment_form #serv').val();
		var price =   $('#comment_form #price').val();

		$('#comment_form #name_error').html('');
		$('#comment_form #otzyv_error').html('');

		if(name=="") 
			{
			$('#comment_form #name_error').html(' Введите имя');
			hasError = true;
			}
		if(otzyv=="") 
			{
			$('#comment_form #otzyv_error').html(' Введите отзыв');
			hasError = true;
			}

		if(hasError==false)
			{
			$('#form_contents').load("add_comment.php", {'name': name, 'otzyv': otzyv, 'service': service, 'price': price, 'id': id});
			}
		return false;
		});
	},

hideComment: function(id)
	{
	document.body.removeChild(Ac.shade);
	$('#comm_num').load("get_comm_num.php?id=" + id);
	},

hideResults: function()
	{
	$("#new_comp_main").css({display: 'block'});
	Ac.resultDiv.style.display = "none";
	},

clearMap: function()
	{
	Ac.map.removeAllOverlays();
	},

centerOnCity: function()
	{
	Ac.cityGeoPoint = new YMaps.GeoPoint(Ac.cityObject[(Ac.selectCity.value-1)].lat,Ac.cityObject[(Ac.selectCity.value-1)].lng)
	Ac.map.setCenter(Ac.cityGeoPoint,10);
	},

showProgress: function()
	{
	$("#new_comp_main").css({display: 'none'});
	Ac.resultDiv.style.display = "block";

	Ac.resultText.style.textAlign = "center";
	Ac.resultText.innerHTML = "<h2>Поиск...</h2><img src=\"img/ajax-loader.gif\" />&nbsp;&nbsp;&nbsp;";		

	},
submitButtonAction: function(event)
	{
	if(!event) event = window.event;
	if(event.preventDefault) event.preventDefault();
	else event.returnValue = false;

	Ac.resultDiv.style.display = "block";
	},

changeService: function(key)
	{
	Ac.selectService.selectedIndex = key;
	},

changeCityAction: function()
	{
	Ajax.main(Ajax.showStats, "get_stats.php?city=" + Ac.selectCity.value);

 	$('#info_text').load('get_offers.php?city=' + Ac.selectCity.value);
 	$('#new_company').load('get_new_company.php?city=' + Ac.selectCity.value);
 	$('#new_comments').load('get_new_comments.php?city=' + Ac.selectCity.value);
 	$('#new_user_ads').load('get_new_user_ads.php?city=' + Ac.selectCity.value);

	Ac.hideResults();
	Ac.clearMap();
	Ac.centerOnCity();
	Ac.getNewAds();
	},

changeServiceAction: function()
	{
	Ac.hideResults();
	Ac.clearMap();
	Ac.centerOnCity();
	Ac.checkService();
	Ac.getNewAds();
	},

checkService: function()
	{
	model_services = new Array(1,2,3,6);
	if(Ac.inArray(Ac.selectService.value, model_services)) 
		{
		Ac.showModels();
		}
	else
		{ 
		Ac.hideModels();
		}
	},

showModels: function()
	{
	$('#model_select').css({display: "block"});
	},

hideModels: function()
	{
	$('#model_select').css({display: "none"});
	Ac.selectModel.selectedIndex = 0;
	},

showOffers: function(data)
	{
	$("offers").html(data);
	},

getNewAds: function()
	{
	$("#banners").load("get_top_banners.php?city=" + Ac.selectCity.value + "&service=" + Ac.selectService.value, Ac.externalLinks);
	$("#banners_left").load("get_left_banners.php?city=" + Ac.selectCity.value + "&service=" + Ac.selectService.value, Ac.externalLinks);
	},

goForward: function()
	{
	if(Ac.currResultsPage < Ac.resultsPages)
		{
		Ac.currResultsPage++;
		Ac.addToMap((Ac.currResultsPage-1) * Ac.maxResults);

		Ac.resultText.innerHTML += "<span class='results_navigation' style='float:left'>&nbsp;</span>";
		Ac.resultText.innerHTML += "<span class='results_navigation' onclick='Ac.goBack();' id='go_back'>&laquo; назад</span>";		
		if((Ac.currResultsPage+1) <= Ac.resultsPages) Ac.resultText.innerHTML += "<span class='results_navigation' onclick='Ac.goForward();' id='go_forward'>вперёд &raquo;</span>";		
		}
	},

goBack: function()
	{
	if(Ac.currResultsPage > 0)
		{
		Ac.currResultsPage--;
		Ac.addToMap((Ac.currResultsPage-1) * Ac.maxResults);

		Ac.resultText.innerHTML += "<span class='results_navigation' style='float:left'>&nbsp;</span>";
		if((Ac.currResultsPage-1) > 0) Ac.resultText.innerHTML += "<span class='results_navigation' onclick='Ac.goBack();' id='go_back'>&laquo; назад</span>";		
		Ac.resultText.innerHTML += "<span class='results_navigation' onclick='Ac.goForward();' id='go_forward'>вперёд &raquo;</span>";		
		}
	},

addToMap: function(from)
	{
	to = from + Ac.maxResults;

	if(to > Ac.firmsObject.length) to = Ac.firmsObject.length;

	var str = "<ul>";
	for(i = from; i < to; i++)
		{
		str += "<li><a target=\"_blank\" href=\"http://acinfo.ru/company.php?id=" + Ac.firmsObject[i].id + "\" title=\"" + Ac.firmsObject[i].address + "\" onmouseover=\"Ac.highlightItem(" + i + ", Ac.colorWhite)\" onmouseout=\"Ac.highlightItem(" + i + ", Ac.colorGreen)\" >" + Ac.firmsObject[i].name + "</a></li>";
		}
	var diff = to - from;
	var left = Ac.maxResults - diff;
	if(diff < Ac.maxResults) 
		{
		for(j = 0; j < left; j++) str += "<li>&nbsp;</li>";
		}
	str += "</ul>";
	Ac.resultText.innerHTML = "<h2><a onclick=\"Ac.centerOnResults();\">Найдено: " + Ac.firmsObject.length + "</a></h2>" + str;
	},

highlightItem: function(id, color) 
	{
	Ac["placemark_" + (id+1)].setOptions(color);
	},

centerOnResults: function()
	{
	if(Ac.firmsObject.length > 0) Ac.map.setBounds(Ac.gResultsBounds);
	},

unload: function()
	{
	Ac.selectCity = "";
	Ac.selectService = "";
	Ac.mapDiv = "";
	Ac.submitButton = "";
//	Ac.statText = "";
	Ac.resultDiv = "";
	Ac.scrollTop = "";
	Ac.scrollLeft = "";
	Ac.firmsObject = "";
	Ajax.xmlHttpObj = "";
	Ac.map.listenMouseEvent(Ac.map.Events.DOMMouseScroll, false);
	},

addBookmark: function()
	{
	url = "http://acinfo.ru/";
	title = "АвтоСправочная ACinfo";

  //Gecko
  if ((typeof window.sidebar == "object") && (typeof window.sidebar.addPanel == "function")) window.sidebar.addPanel (title, url, '');
  //IE4+
  else if (typeof window.external == "object") window.external.AddFavorite(url, title);
  //Opera7+
  else if (window.opera && document.createElement)
	  {
    var a = document.createElement('A');
    if (!a) return false; //IF Opera 6
    a.setAttribute('rel','sidebar');
    a.setAttribute('href',url);
    a.setAttribute('title',title);
    a.click();
	  }
	  else return false;

	  return true;
	},

externalLinks: function()
	{
	if (!document.getElementsByTagName) return; 
	var anchors = document.getElementsByTagName("a"); 
	for (var i=0; i<anchors.length; i++) 
		{ 
		var anchor = anchors[i]; 
		if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external") 
			{
			anchor.target = "_blank"; 
			}
		} 
	},

pasteWarning: function()
	{
	alert("Мы рекомендуем Вам не копировать текст описания с Вашего сайта, так как это может привести к штрафам в поисковых системах за дублированный контент.");
	}
};

var Ajax =
{
getXMLHTTPRequest: function()
	{
	var xmlHttp;
	try
		{
		xmlHttp = new XMLHttpRequest();
		}
	catch(e)
		{
		try
			{
			xmlHttp = new ActiveXObject("msxml2.XMLHTTP");
			}
		catch(e)
			{
			try
				{
				xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
				}
			catch(e)
				{
				return false;
				}
			}
		}
	return xmlHttp;
	},

main: function(act, path)
	{
	Ajax.xmlHttpObj = Ajax.getXMLHTTPRequest();
	if(Ajax.xmlHttpObj)
		{
		Ajax.xmlHttpObj.open("GET", path, true);
		Ajax.xmlHttpObj.onreadystatechange = act;
		Ajax.xmlHttpObj.send(null);
		}
	else
		{
		alert("Your browser doesn't support AJAX");
		}
	},

showStats: function()
	{
	if(Ajax.xmlHttpObj.readyState == 4)
		{
//		Ac.statText.innerHTML = Ajax.xmlHttpObj.responseText;
		}
	},

getCities: function(dat)
	{
	Ac.cityObject = dat;
	Ac.mainContinue(dat);
	},

getServiceData: function(dat)
	{
	Ac.maxResults = 15;

	Ac.firmsObject = dat;

	Ac.resultText.style.textAlign = "left";

	Ac.currResultsPage = 1; 
	Ac.resultsPages	= 1;

	if(Ac.firmsObject.length < Ac.maxResults) 
		{
		Ac.maxResults = Ac.firmsObject.length;
		}
	else
		{
		Ac.resultsPages = Math.ceil(Ac.firmsObject.length / Ac.maxResults);
		if((Ac.firmsObject.length % Ac.maxResults) < (Ac.maxResults / 2))
			{
      Ac.maxResults = Math.ceil(Ac.firmsObject.length / (Ac.resultsPages-1));
			Ac.resultsPages = Math.ceil(Ac.firmsObject.length / Ac.maxResults);
			}
		}

	Ac.addToMap(0, Ac.maxResults);

	if(Ac.firmsObject.length > Ac.maxResults) Ac.resultText.innerHTML += "<span class='results_navigation' style='float:left'>&nbsp;</span><span class='results_navigation' onclick='Ac.goForward();' id='go_forward'>вперёд &raquo;</span>";

	Ac.gResults = new YMaps.GeoObjectCollection();
	Ac.gResultsBounds = new YMaps.GeoCollectionBounds();

	for (i = 0; i < Ac.firmsObject.length; i++)
		{
		Ac["placemark_" + (i+1)] = new YMaps.Placemark(new YMaps.GeoPoint(Ac.firmsObject[i].lng, Ac.firmsObject[i].lat), Ac.colorGreen);
		Ac["placemark_" + (i+1)].description = "<b>" + Ac.firmsObject[i].name + "</b><br />" + Ac.firmsObject[i].address + "<br /><br /><a target=\"_blank\" href=\"http://acinfo.ru/company.php?id=" + Ac.firmsObject[i].id + "\">Подробнее</a>";

   	Ac.gResults.add(Ac["placemark_" + (i+1)]);
		Ac.gResultsBounds.add(new YMaps.GeoPoint(Ac.firmsObject[i].lng, Ac.firmsObject[i].lat));
   	}
	Ac.clearMap();
	Ac.map.addOverlay(Ac.gResults);
	Ac.centerOnResults();
	},

showInfo: function(id)
	{
 	$('#info_text').load('get_data.php?id=' + id);
	},

loadInfo: function(dat,lng,lat)
	{
	Ajax.showInfo(dat);
	Ac.currGeoPoint = new YMaps.GeoPoint(lng, lat);
	Ac.map.setCenter(Ac.currGeoPoint,15);
	}
};



