$(document).ready(function(){
	initCity();
});

/*
 * Добавление в закладки
 */
function addBookmark(url, title)
{
  if (!url) url = location.href;
  if (!title) title = document.title;
  
  //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);
  
  return true;
}

function FixOperaFavorites (strUrl, strTitle, arIds) {
	if (! window.opera) {
		return;
	}
	
	var objLink = null;
	
	for (var i = 0; i < arIds.length; i++) {
		objLink = document.getElementById(arIds[i]);
 
		if (! objLink) {
			continue;
		}
		objLink.rel = 'sidebar';
		objLink.href = strUrl;
		objLink.title = strTitle;
	}
}
/*
 * /Добавление в закладки
 */

/**
 * Проверка обязательных полей в форме
 */
function checkForm3(form, email, maxMissedFields)
{
	var missed_fields = new Array();
	var focus_field;
	if (!maxMissedFields)
		var maxMissedFields = 3;
	if (!email)
		var email = 'email';
	if (!form) {
		alert("Form object expected in first argument");
		return false;
	}
	for (var i = 0; i < form.length; i++) {
		var field = form.elements[i];
		if (!field || !field.getAttribute('required') || field.getAttribute('required') != 'required')
			continue;
		
		if(!checkIfFieldFilled(field)) {
			missed_fields.push(getFieldLabel(field));
			if (!focus_field)
				focus_field = field;
		}
	}
	if (focus_field) {
		if(typeof focus_field.length == "undefined") {
			focus_field.focus();
		}
		else {
			if (focus_field.length > 0) {
				focus_field = (focus_field.item) ? focus_field.item(0) : focus_field[0];
				if (focus_field) {
					focus_field.focus();
				}
			}
		}
	}
	var sz = missed_fields.length;
	if (sz > 0) {
		if (sz == 1) {
			alert("Необходимо заполнить поле \"" + missed_fields.pop() + "\".");
			return false;
		}
		else {
			var str = "";
			var isTooMuchMissedFields;
			if(sz > maxMissedFields) {
				isTooMuchMissedFields = true;
				sz = maxMissedFields;
			} else {
				isTooMuchMissedFields = false;
			}
			for(i = 0; i < sz; i++) {
				if(i > 0) {
					if(i == sz - 1) {
						str += " и";
					} else {
						str += ",";
					}
				}
				str += " \"" + missed_fields[i] + "\"";
			}
			if(isTooMuchMissedFields) {
				str += "... и остальные обязательные поля";
			}
			alert("Необходимо заполнить поля" + str + ".");
			return false;
		}
	}
	// проверка подтверждения пароля
	if (form.elements['password'] && form.elements['password_confirm'] && form.elements['password'].value !== form.elements['password_confirm'].value) {
		if(checkIfFieldFilled(form.elements['password'])) {
			theLabel_1 = getFieldLabel(form.elements['password']);
			theLabel_2 = getFieldLabel(form.elements['password_confirm']);
			form.elements['password'].focus();
			s_alert = "Значения полей \"" + theLabel_1 + "\" и \"" + theLabel_2 + "\" не совпадают";
			alert(s_alert);
		}
		return false;
	}
	// проверка валидности e-mail
	var oEmail = document.getElementById('email');
		
if (oEmail && form.elements[oEmail.name] && oEmail.value != '') {

		var s_email = oEmail.value;
		var regexp = /[\w\-]+@[\w\-]+\.[\w]+/;
		if (!regexp.test(s_email)) {
			oEmail.focus();
			alert("Неверный синтаксис электронного адреса (E-mail)");
			return false;
		}
	}
	/*
	if (form.elements['email']) {
		var s_email = form.elements['email'].value;
		var regexp = /[\w\-]+@[\w\-]+\.[\w]+/;
		if (!regexp.test(s_email)) {
			form.elements['email'].focus();
			alert("Неверный синтаксис электронного адреса (E-mail)");
			return false;
		}
	}
	*/
	return true;
}

function checkIfFieldFilled(field)
{
	if(typeof field != "object") {
		alert("Expected object, " + (typeof field) + " given");
		return false;
	}
	var fieldType = (field.type) ? field.type : "checkboxArray";

	switch(fieldType) {
		case "text":
		case "password":
		case "file":
		case "textarea":
		case "checkbox":
		case "select":
		case "select-one":
			return (field.value.length == 0) ? false : true;
			break;
		case "checkboxArray":
			var res = false;
			var i;
			for(i = 0; i < field.length; i++) {
				var item = (field.item) ? field.item(i) : field[i];
				if(item.checked) {
					return true;
				}
			}
			return (i > 0) ? res : true;
			break;
		default:
			alert("Don't know, hot to deal with " + field.type + " input");
			break;
	}
	return true;
}

function getFieldLabel(field)
{
	var labels = document.getElementsByTagName("label");
	if(!field.type) {
		field = (field.item) ? field.item(0) : field[0];
	}
	var field_id = field.id;
	var sz = labels.length;
	var i;
	for(i = 0; i < sz; i++) {
		var label = labels.item(i);

		if(label.attributes['for'].nodeValue == field_id) {
			var res = label.textContent;
			if(!res) {	//WORKAROUND for IE7
				res = label.innerHTML;
			}
			res = res.replace(/<[\/]?[A-z0-9+]>/g, "");
			if(res.substring(res.length - 1, res.length) == ":") {
				res = res.substring(0, res.length - 1);
			}
			if(res.substring(0, 1) == "*") {
				res = res.substring(1, res.length);
			}
			return res;
		}
	}
	return false;
}
/**
 * /Проверка обязательных полей в форме
 */

/**
 * Установить дефолтное значение
 */
function setDefaultValue (e)
{
	e = e || window.event;
	var obj;
	if (e.srcElement)
		obj = e.srcElement;
	else
		obj = this;
	if (obj.value == '') {
		obj.value = obj.getAttribute('this_default_value');
	}
}
/**
 * Снять дефолтное значение
 */
function delDefaultValue (e)
{
	e = e || window.event;
	var obj;
	if (e.srcElement)
		obj = e.srcElement;
	else
		obj = this;
	if (obj.getAttribute('this_default_value') == obj.value) {
		obj.value = '';
	}
}
/**
 * Поле по умолчанию
 */
function firstUpdateDefaultValue ()
{
	var oAllInputs = document.getElementsByTagName("input");
	for (var i = 0; i < oAllInputs.length; i++) {
		if (oAllInputs[i].getAttribute('this_default_value') && oAllInputs[i].getAttribute('this_default_value').length > 0 && oAllInputs[i].type == 'text') {
			if (oAllInputs[i].value == '') {
				oAllInputs[i].value = oAllInputs[i].getAttribute('this_default_value');
			}
			addEventSimple(oAllInputs[i], 'focus', delDefaultValue);
			addEventSimple(oAllInputs[i], 'blur', setDefaultValue);
		}
	}
}

addEventSimple(window, 'load', firstUpdateDefaultValue);

/**
 * /Поле по умолчанию
 */

/**
 * Добавить событие
 */
function addEventSimple(obj, evt, fn)
{
	if (obj.addEventListener)
		obj.addEventListener(evt, fn, false);
	else if (obj.attachEvent)
		obj.attachEvent('on' + evt, fn);
}
/**
 * Удалить событие
 */
function removeEventSimple(obj, evt, fn)
{
	if (obj.removeEventListener)
		obj.removeEventListener(evt, fn, false);
	else if (obj.detachEvent)
		obj.detachEvent('on' + evt, fn);
}
/**
 * Показывает/скрывает всплывающее окошко
 */
function displayInfoBlock (id, e)
{
	e = e || window.event;
	var obj = document.getElementById(id);
	if (obj) {
		if (obj.parentNode.className == 'opened') {
			hideAllInfoBlocks();
		}
		else {
			hideAllInfoBlocks();
			obj.parentNode.className = 'opened';
		}
		cancelEvent(e);
	}
	//return false;
}
/**
 * Спятать все всплвшие окна
 */
function hideAllInfoBlocks ()
{
	if (arFilter && arFilter.length > 0) {
		for (var i = 0; i < arFilter.length; i++) {
			var obj = document.getElementById(arFilter[i]);
			if (obj && obj.parentNode.className == 'opened') {
				obj.parentNode.className = '';
			}
		}
	}
}
var arFilter = new Array();
addEventSimple(document, 'click', hideAllInfoBlocks);
/**
 * Остановить выполнение дальнейших событий
 */
function cancelEvent (e)
{
	e = e || window.event;
	if (e.stopPropagation)
		e.stopPropagation();
	// otherwise set the cancelBubble property of the original event to true (IE)
	e.cancelBubble = true;
}

 /*Cockies*/
 function setCookie (name, value, expires, path, domain, secure) {
	document.cookie = name + "=" + escape(value) +
		((expires) ? "; expires=" + expires : "") +
		((path) ? "; path=" + path : "") +
		((domain) ? "; domain=" + domain : "") +
		((secure) ? "; secure" : "");
}

function getCookie(name) {
	var cookie = " " + document.cookie;
	var search = " " + name + "=";
	var setStr = null;
	var offset = 0;
	var end = 0;
	if (cookie.length > 0) {
		offset = cookie.indexOf(search);
		if (offset != -1) {
			offset += search.length;
			end = cookie.indexOf(";", offset)
			if (end == -1) {
				end = cookie.length;
			}
			setStr = unescape(cookie.substring(offset, end));
		}
	}
	return(setStr);
}

function userChoice(menuId) {
	var d = new Date();
    var time = d.getTime() + 2592000;
	setCookie("city_id", menuId, false, '/');
	
	if (window.XMLHttpRequest)
	{// code for IE7+, Firefox, Chrome, Opera, Safari
		xmlhttp=new XMLHttpRequest();
	}
	else
	{// code for IE6, IE5
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	xmlhttp.open('GET', '/data/json_set_city/' + menuId, true);
	xmlhttp.send(null);

	
	return true;
}

 

 AjXmlSimple = function(XMLname,idResDiv) {
	$('#allBlack').show();
	 
	 $.ajax({
		url: XMLname,
		method: 'get',
		dataType: 'html',
		error: function()
		{
			alert('Ошибка AJAX-запроса. Невозможно выполнить действие.');
		},
		success: function(response)
		{
			$('#'+idResDiv).html(response);
			$('#'+idResDiv).css('marginTop', (getHeight()/2 - 380 + getBodyScrollTop()) + 'px');
		}
	 });
	 
	 return false;
}

 AjXmlSimpleNew = function(XMLname,idResDiv) {
	$('#allBlack').show();
	 
	 $.ajax({
		url: XMLname,
		method: 'get',
		dataType: 'html',
		error: function()
		{
			alert('Ошибка AJAX-запроса. Невозможно выполнить действие.');
		},
		success: function(response)
		{
			$('#'+idResDiv).html(response);
			$('#'+idResDiv).css('marginTop', (getHeight()/2 - 460 + getBodyScrollTop()) + 'px');
		}
	 });
	 
	 return false;
}

 AjXmlSimpleDva = function(XMLname,idResDiv) {
     								
		$.ajax({
        	url: XMLname,
        	method: 'get',
			error: function()
			{
				alert('Ошибка AJAX-запроса AjXmlSimpleDva. Невозможно выполнить действие.');
			},
		 
         	success: function(response) {
				$('#ajaxPlaceBlock').css("display","inline");
				$('#'+idResDiv).html(response);

				  //var response = resp.responseText || "no response text";
				  //$(idResDiv).innerHTML = response;
			}
        });
	 return false;
}

testCal = function() {
    Calendar.setup({
        inputField     :    "f_date_c",     // id of the input field
        ifFormat       :    "%d.%m.%Y",      // format of the input field
        button         :    "f_trigger_c",  // trigger for the calendar (button ID)
        align          :    "Bl",           // alignment (defaults to "Bl")
        singleClick    :    false
    });

}


destroyAjax = function() {
	$('#allBlack').hide();
	$('#ajax').empty();
}


getHeight = function() {					
	return window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
}

 getBodyScrollTop = function () {
	return self.pageYOffset || (document.documentElement && document.documentElement.scrollTop) || (document.body && document.body.scrollTop);
}



function checkWebForm(obj, elems) {
var element, pattern;
    for (var i = 0; i < obj.elements.length; i++) {
        element = obj.elements[i];
        if (elems != undefined)
            if (elems.join().indexOf(element.type) < 0) continue;
        if (!element.getAttribute("required")) continue;
        if (pattern = element.getAttribute("check_pattern")) {
            pattern = new RegExp(pattern, "g");
            if (!pattern.test(element.value)) {
                alert(element.getAttribute("required"));
                element.focus();
                return false;
            }
        } else if(/^\s*$/.test(element.value)) {
            alert(element.getAttribute("required"));
            element.focus();
            return false;
        }
    }
	var form = obj;
	// проверка подтверждения пароля
	if (form.elements['password'] && form.elements['password_confirm'] && 
												   form.elements['password'].value !== form.elements['password_confirm'].value) { 
		if(checkIfFieldFilled(form.elements['password'])) {
			theLabel_1 = getFieldLabel(form.elements['password']);
			theLabel_2 = getFieldLabel(form.elements['password_confirm']);
			form.elements['password'].focus();
			s_alert = "Значения полей \"" + theLabel_1 + "\" и \"" + theLabel_2 + "\" не совпадают";
			alert(s_alert);
		}
		return false;
	}
	if(form.elements['password'].value.length < 3 ) {
			s_alert = "Пароль должен содержать не менее 3-х символов";
			alert(s_alert);
			return false;
		
	}
	// проверка валидности e-mail
	var oEmail = document.getElementById('email');
		
if (oEmail && form.elements[oEmail.name] && oEmail.value != '') {

		var s_email = oEmail.value;
		var regexp = /[\w\-]+@[\w\-]+\.[\w]+/;
		if (!regexp.test(s_email)) {
			oEmail.focus();
			alert("Неверный синтаксис электронного адреса (E-mail)");
			return false;
		}
	}
	
	
return true;
}

function clearMessages(element)
{
	$(element).parent().find('.form-error-msg, .form-success-msg').each(function() {
		$(this).parent().css('background', '');
		$(this).remove();
	});
}

function formEerror(element, message)
{	
	clearMessages(element);

	$('<div>')
		.attr('class', 'form-error-msg')
		.text(message)
		.css('color', 'rgb(210,0,0)')
		.insertAfter(element);
		
	$(element).parent().css('background', 'rgb(255,200,200)');	
};

function formSuccess(element, message)
{	
	clearMessages(element);

	$('<div>')
		.attr('class', 'form-success-msg')
		.text(message)
		.css('color', '#697F0F')
		.insertAfter(element);
		
	$(element).parent().css('background', '#E3EFB3');	
};

var formReturn = true;
var emailAvailable = false;

function setEmailAvailable(status)
{
	emailAvailable = status;
}

function checkForm(form)
{
	formReturn = true;
	//alert(formReturn.toString());
	form = $(form);
	
	$(form).find('.form-error-msg, .form-success-msg').each(function() {
		$(this).parent().css('background', '');
		$(this).remove();
	});
	
	if($('#email').size())
	{
		checkEmailAvailable($('#email'));
	}
	
	// Ждем проверки мыла
	if(!emailAvailable && !formReturn)
	{
		return false;
	}
	
	form.find(':input').each(function() {
		var requredMsg = $(this).attr('required');
		//alert(requredMsg.toString());
		
		if(!requredMsg || (typeof requredMsg == 'undefined') || requredMsg == 'none')
		{
			//alert("!");
			if(navigator.userAgent.toLowerCase().indexOf('msie') != -1)
			{
				return true;
			}
			//return true;
			return false;
		}
		
		var elementId = $(this).attr('id');
		var val = $(this).val();
		
		if(val == '' && elementId != 'email')
		{
			$(this).focus();
			formEerror(this, (typeof requredMsg == 'boolean') ? 'Заполните поле' : requredMsg);
			formReturn = false;
			return false;
		}
		
		switch(elementId)
		{
			case 'password':
			{
				if(val.length < 3)
				{
					$(this).focus();
					formEerror(this, 'Пароль не должен быть короче 3-х символов');
					formReturn = false;
					return false;
				}
			
				break;
			}
		
			case 'password_confirm':
			{
				var pass = $('#password').val();
				
				if(pass != '' && val != pass)
				{
					$(this).focus();
					formEerror(this, 'Пароли не совпадают');
					formReturn = false;
					return false;
				}
			
				break;
			}
		}
		
		formReturn = true;
	});
	
	//alert(formReturn.toString());
	return formReturn;
}

function checkEmailAvailable(input)
{
	// Чтобы лишний раз не проверять)
	if(emailAvailable)
	{
		formSuccess(input, 'Адрес электронной почты доступен');
		return;
	}
	
	input = $(input);
	var val = input.val();
	
	clearMessages(input);
	
	if(val == '')
	{
		$(input).focus();
		formEerror(input, 'Укажите адрес электронной почты');
		formReturn = false;
		return;
	}
	
	var regexp = /[\w\-]+@[\w\-]+\.[\w]+/;
	if (!regexp.test(val)) {
		input.focus();
		formEerror(input, 'Неверный формат адреса электронной почты');
		formReturn = false;
		return;
	}
	
	$.ajax({
		async: false,
		url: '/users/json_email_available/',
		data: {email: input.val(), edit: (typeof emailIsEdit == 'undefined' ? 0 : 1)},
		type: 'get',
		dataType: 'text',
		error: function() { alert('Ошибка AJAX-запроса. Невозможно выполнить действие.'); },
		success: function(response)
		{
			if(response != '1')
			{
				input.focus();
				formEerror(input, 'Такой адрес электронной почты уже занят');
				formReturn = false;
				return;
			}
			
			formSuccess(input, 'Адрес электронной почты доступен');
			
			setEmailAvailable(true);
			
			formReturn = true;
		}
	});
}

 function initCity () {
	$('#city_choice').change(function() {
		userChoice($(this).val());
		document.location = window.location;
	});
 }
 
 /**
 * Перегрузим событие добавления элемента в корзину
 */
/*umiBasket.getInstance().onAfterAddElement = function(iElementId, iCount) {
	var oCounter = document.getElementById("item_count_" + iElementId);
	var oArea = document.getElementById("item_text_" + iElementId);
	if (oCounter && oArea) {
		oCounter.innerHTML = iCount;
		oArea.className = 'basket_helper_visible';
	}
}

**
 * Перегрузим событие удаления элемента из корзины
 *
umiBasket.getInstance().onAfterRemoveBasketItem = function (iElementId)
{
	var hdl = function(oResponce) {
		if (oResponce.basket_items.length == 0) {
			location.href = location.href;
		}
	}
	lLib.getInstance().makeRequest('/eshop/json_get_basket/?', hdl);
	
	var oCartRows = document.getElementsByName('basketrow_'+iElementId);
	for (iI = 0; iI < oCartRows.length; iI++) {
		oCartRows[iI].style.display = 'none';
	}
}*/
