﻿function checkLength(obj, form, ValueLen, count) {
	var text=obj.value;
	var length=ValueLen+1;
	var truncated=false;
	while (length>ValueLen) {
		length=text.length;

		if ( length > ValueLen ) {
			text = text.substr(0, text.length-1);
			truncated = true;
		}
	}

	if (truncated)
		obj.value=text;

	document.getElementById(count).value=ValueLen-length;
	return true;
}

var cities = Array();
var roads = Array();
var types = Array();



function doSort(div, action, linkname, sort, order) {
	var req = new JsHttpRequest();
	req.onreadystatechange = function() {
		if (req.readyState == 4) {
			document.getElementById(div).innerHTML = req.responseText;
			
			if(linkname) {
				showDetailMap();
			} else {
				map.removeOverlay(ml);
				params = "";
				imax = types.length;
				for (i = 0; i < imax; i++) {
					var id = types[i];
					params += '&types[]='+ types[i];
				}
				rimax = roads.length;
				for (i = 0; i < rimax; i++) {
					params += '&roads[]='+ encodeURI(roads[i]);
				}
				
				if(rimax == 0) {
					imax = cities.length;
					for (i = 0; i < imax; i++) {
						params += '&cities[]='+ encodeURI(cities[i]);
					}
				}			
				//alert(params)				
				
				ml = new YMaps.YMapsML( 'http://www.artmp.ru/get_address_xml.php?'+params ); //создание слоя с метками из XML	
				map.addOverlay(ml); //добавление слоя на карту

				YMaps.Events.observe(ml, ml.Events.Fault, function (error) {
					alert('Ошибка ' + error); //если XML документ не загрузился или загрузился с ошибками, выведется сообщение об этом
				});
			}
		}
	}
	var cities = Array();
	var roads = Array();
	var types = Array();

	if(action == 'doFilter') {
		var i=0;
		$('#cities_list').find('div.checkbox_checked').each(function() {
			cities[i++] = $(this).html();
		});
		i=0;
		$('#roads_list').find('div.checkbox_checked').each(function() {
			roads[i++] = $(this).html();
		});
		i=0;
		$('#types_list').find('div.checkbox_checked').each(function() {
			types[i++] = $(this).attr('id');
		});
	}
	
	req.open(null, '/modules/maps/maps.config.php', true);
	req.send( { 
		action: action,
		sort: sort,
		order: order,
		cities: cities,
		roads: roads,
		types: types,
		linkname: linkname
	} );
}


function AddBasket(div, script, id, month, year, price, action) {
	var error = false;
	var error_val = 0;
	var is_error = false;

	if(!error && !is_error) {
		var req = new JsHttpRequest();
		req.onreadystatechange = function() {
			if (req.readyState == 4) {
				document.getElementById(div).innerHTML = req.responseText;
				showNotice()
			}
		}
		req.open(null, script, true);
		req.send( { 
			action: action,
			elem_id: id,
			month: month,
			year: year,
			price: price
		} );

	}
}

function hideNotice() {
	$('div#placeResult').fadeOut("slow")
}

function showNotice() {
	//отключаем кеш
	$.ajaxSetup ({
		cache: false
	});
	
	$('div#placeResult').fadeIn("slow");
	setTimeout("hideNotice()", 1300);
	
};

function reloadBasket(div, script) {
	var error = false;
	var error_val = 0;
	var elems = document.getElementsByName('col');
	imax = elems.length;
	var tmp = new Array();
	var is_error = false;

	for (i = 0; i < imax; i++)
	{
		if(elems[i].value != "") tmp[elems[i].id] = elems[i].value;
		if(!/^(\d+)?$/.test(elems[i].value)) {
			is_error = true;
			document.getElementById(elems[i].id).style.background = "#ff7575";
		} else {
			document.getElementById(elems[i].id).style.background = "";
		}
		if(is_error) document.getElementById('InvalidFormat').style.display = "block";
		else document.getElementById('InvalidFormat').style.display = "none";
	}
	if(!is_error) {
		var req = new JsHttpRequest();
		req.onreadystatechange = function() {
			if (req.readyState == 4) {
				document.getElementById(div).innerHTML = req.responseText;
				loadBasket('BasketBlock','/modules/_order/basket.php');
			}
		}
		req.open(null, script, true);
		req.send( { 
			action: 'reloadBasket',
			elems: tmp
		} );

	}
}

function clearBasket(div, script) {
	var req = new JsHttpRequest();
	req.onreadystatechange = function() {
		if (req.readyState == 4) {	
			location.href='/';
		}
	}
	req.open(null, script, true);
	req.send( { 
		action: 'clearBasket'
	} );
}

function loadBasket(div, script) {
	var req = new JsHttpRequest();
	req.onreadystatechange = function() {
		if (req.readyState == 4) {
			document.getElementById(div).innerHTML = req.responseText;
		}
	}
	req.open(null, script, true);
	req.send( { 
		action: ''
	} );
}

function loadOrderForm(div, script) {
	var req = new JsHttpRequest();

	req.onreadystatechange = function() {
		if (req.readyState == 4) {
			document.getElementById(div).innerHTML = req.responseText;
			$("#citytext").autocomplete("/autocomplete-ajax-regcity.php");
			$("#streettext").autocomplete("/autocomplete-ajax-regstreet.php");
			$("#t2").click( function () {
				$("#contact_form_order").find('.jur').hide().end();
				$("#contact_form_order").find('.phiz').show().end();
			})
			$("#t1").click( function () {
				$("#contact_form_order").find('.phiz').hide().end();
				$("#contact_form_order").find('.jur').show().end();
			})
		}
	}
	req.open(null, script, true);
	req.send( { 
		action: ''
	} );
}

re_email = /^([a-z0-9_\-]+\.)*[a-z0-9_\-]+@([a-z0-9][a-z0-9\-]*[a-z0-9]\.)+[a-z]{2,4}$/i
//re_tel = /^(\+)(7)[ ]?\({0,1}\d{3,6}\){0,1}[ ]?[0-9-\s]{7,10}$/
re_tel = /^((\+){0,1}[0-9-\s\(\)]+)$/
re_name = /^[a-zA-Zа-яА-Я0-9\.\_\-\s]{3,16}$/i
re_text = /^([a-zA-Zа-яА-Я0-9\.\,\_\-\s]+)$/

function checkFieldIsNull(f, field) {
	if(f[field].value == '') {
		$('#'+field).addClass('reqFields');
		return false;
	} else {
		$('#'+field).removeClass('reqFields');
		return true;
	}
}

function checkBusyEmail(field, field_value, div, script, f) {

	$.ajax({
		url:  "/modules/_order/getFieldValueFromDB.php",
		type:  "GET",
		data:  "email=" + field_value,
		cache:  false,
		success: function(response){
			if(response  == "no"){
				$('#'+field).addClass("reqFields");  
				res = '<div>Email уже существует в системе. Авторизуйтесь</div>';
				$('#errors').html(res);
				$('#errors').show();
			} else {
				$('#'+field).removeClass("reqFields");
				if(f == 'order-form') doOrder(div, script, 0)
				else if(f == 'register-form') document.forms[f].submit();
			}
		}
	});	
	return false;
}

function doAuth() {
	var req = new JsHttpRequest();
	req.onreadystatechange = function() {
		if (req.readyState == 4) {
			//location.href='/user/';
		}
	}
	req.open(null, '/includes/lib/auth/auth.php', true);
	req.send( { 
		action: 'doAuth',
		login: login,
		pass: pass
	} );
}

function checkAuthForm(form) {
	var error = '';
	var is_null = false;
	var f = document.forms[form];
	var login = f.login.value;
	var pass = f.pass.value;
	if(login == '') is_null = true;
	if(pass == '') is_null = true;
	if(is_null) error = '<div>Заполните обязательные поля</div>';
	else {
		if (!re_email.test(login)) { 
			error += '<div>Неверный формат Email</div>'; 
		} 
	}
	if(error) {
		$('.errors').html('');
		$('#errors').html(error);
		$('#errors').show();
	} else {
		$('#errors').hide();
		f.submit();
	}
}

function checkOrderForm(div, script, form) {
	var error = '';
	var is_null = false;
	var f = document.forms[form];
	var t = $("input:radio:checked").val();	
	
	var email = t == 1 ? f.email.value : (t == 2 ? f.phemail.value : '');
	var email_name = t == 1 ? 'email' : (t == 2 ? 'phemail' : '');
	var tel = t == 1 ? f.tel.value : (t == 2 ? f.phtel.value : '');	
	var tel_name = t == 1 ? 'tel' : (t == 2 ? 'phtel' : '');
	var elems = t == 1 ? $("div.jur input.requiredF") : (t == 2 ? $("div.phiz input.requiredF") : '');
	
	for (i = 0; i < elems.length; i++) {
		if(!checkFieldIsNull(f, elems[i].id)) is_null = true;
	}
	
	if(is_null) error = '<div>Заполните обязательные поля</div>';
	else {
		if (!re_email.test(email)) { 
			$('#'+email_name).addClass("reqFields"); 
			error += '<div>Неверный формат Email</div>'; 
		} else $('#'+email_name).removeClass("reqFields"); 
		if (!re_tel.test(tel)) {
			$('#'+tel_name).addClass("reqFields"); 
			error += '<div>Неверный формат телефона</div>';
		} else $('#'+tel_name).removeClass("reqFields"); 
	}
	if(error) {
		$('#errors').html(error);
		$('#errors').show();
	} else {
		$('#errors').hide();
		checkBusyEmail(email_name, email, div, script, form);
	}
}

function checkRegisterForm(form) {

	var error = '';
	var is_null = false;
	var f = document.forms[form];
	var t = $("input:radio:checked").val();	
	
	var email = t == 1 ? f.email.value : (t == 2 ? f.phemail.value : '');
	var email_name = t == 1 ? 'email' : (t == 2 ? 'phemail' : '');
	var tel = t == 1 ? f.tel.value : (t == 2 ? f.phtel.value : '');	
	var tel_name = t == 1 ? 'tel' : (t == 2 ? 'phtel' : '');
	var elems = t == 1 ? $("div.jur input.requiredF") : (t == 2 ? $("div.phiz input.requiredF") : '');
	
	for (i = 0; i < elems.length; i++) {
		if(!checkFieldIsNull(f, elems[i].id)) is_null = true;
	}
	
	if(is_null) error = '<div>Заполните обязательные поля</div>';
	else {
		if (!re_email.test(email)) { 
			$('#'+email_name).addClass("reqFields"); 
			error += '<div>Неверный формат Email</div>'; 
		} else $('#'+email_name).removeClass("reqFields"); 
		if (!re_tel.test(tel)) {
			$('#'+tel_name).addClass("reqFields"); 
			error += '<div>Неверный формат телефона</div>';
		} else $('#'+tel_name).removeClass("reqFields"); 
	}
	if(error) {
		$('#errors').html(error);
		$('#errors').show();
	} else {
		$('#errors').hide();
		f.utype.value = t;
		checkBusyEmail(email_name, email, '', '', form);
	}
}

function checkUserForm(form) {

	var error = '';
	var is_null = false;
	var f = document.forms[form];
	var t = $("input:radio:checked").val();	
	
	var email = t == 1 ? f.email.value : (t == 2 ? f.phemail.value : '');
	var email_name = t == 1 ? 'email' : (t == 2 ? 'phemail' : '');
	var tel = t == 1 ? f.tel.value : (t == 2 ? f.phtel.value : '');	
	var tel_name = t == 1 ? 'tel' : (t == 2 ? 'phtel' : '');
	var elems = t == 1 ? $("div.jur input.requiredF") : (t == 2 ? $("div.phiz input.requiredF") : '');
	
	for (i = 0; i < elems.length; i++) {
		if(!checkFieldIsNull(f, elems[i].id)) is_null = true;
	}
	
	if(is_null) error = '<div>Заполните обязательные поля</div>';
	else {
		if (!re_tel.test(tel)) {
			$('#'+tel_name).addClass("reqFields"); 
			error += '<div>Неверный формат телефона</div>';
		} else $('#'+tel_name).removeClass("reqFields"); 
	}
	if(error) {
		$('#errors').html(error);
		$('#errors').show();
	} else {
		$('#errors').hide();
		f.utype.value = t;
		f.submit();
	}
}

function checkRequestForm(form) {

	var error = '';
	var is_null = false;
	var f = document.forms[form];
	
	var elems = $("div.finput input.requiredF");
	for (i = 0; i < elems.length; i++) {
		if(!checkFieldIsNull(f, elems[i].id)) is_null = true;
	}
	if(f.msg.value == '') {
		 is_null = true;
		$('#msg').addClass('reqFields');
	} else {
		 is_null = false;
		$('#msg').removeClass('reqFields');
	}
	
	if(is_null) error = '<div>Заполните обязательные поля</div>';
	else {
		email = f.email.value;
		tel = f.tel.value;
		if (!re_email.test(email)) { 
			$('#email').addClass("reqFields"); 
			error += '<div>Неверный формат Email</div>'; 
		} else $('#email').removeClass("reqFields"); 
		if (!re_tel.test(tel)) {
			$('#tel').addClass("reqFields"); 
			error += '<div>Неверный формат телефона</div>';
		} else $('#tel').removeClass("reqFields"); 
	}
	if(error) {
		$('#errors_req').html(error);
		$('#errors_req').show();
	} else {
		$('#errors_req').hide();
		f.submit();
	}
}


function doOrder(div, script, user) {
	var req = new JsHttpRequest();
	var f = document.forms['order-form'];
	if(user == 0) var t = $("input:radio:checked").val();
	
	req.onreadystatechange = function() {
		if (req.readyState == 4) {
//		alert('asd')
			//document.getElementById(div).innerHTML = req.responseText;
			setTimeout("location.href='/sendrequest/'");
		}
	}
	if(user == 0) {
		if(t == 1) {
			req.open(null, script, true);
			req.send( { 
				action: 'doOrder',
				type: t,
				cname: f.cname.value,
				uname: f.uname.value,
				postname: f.postname.value,
				contact_uname: f.contact_uname.value,
				post_contact_uname: f.post_contact_uname.value,
				email: f.email.value,
				tel: f.tel.value,
				city: f.city.value,
				street: f.street.value,
				address: f.address.value,
				address_index: f.address_index.value,
				msg: f.msg.value
			} );
		}else if(t == 2) {
			req.open(null, script, true);
			req.send( { 
				action: 'doOrder',
				type: t,
				uname: f.phuname.value,
				email: f.phemail.value,
				tel: f.phtel.value,
				msg: f.msg.value
			} );
		}
	} else {
		req.open(null, script, true);
			req.send( { 
			action: 'doOrder',
			msg: f.msg.value
		});
	}
}

function loadContentBasket(div, script) {
	var req = new JsHttpRequest();

	req.onreadystatechange = function() {
		if (req.readyState == 4) {
			document.getElementById(div).innerHTML = req.responseText;
		}
	}
	req.open(null, script, true);
	req.send( { 
		action: ''
	} );
}

function doDelete(div, script, id) {
	var req = new JsHttpRequest();
	req.onreadystatechange = function() {
		if (req.readyState == 4) {
			document.getElementById(div).innerHTML = req.responseText;
			loadBasket('headerBasket','/modules/_order/basket.php');
		}
	}
	req.open(null, script, true);
	req.send( { 
		action: 'delBasket', 
		elem_id: id
	} );
}

function showDetailMap () {
	var current = $('#yandex_point').val();
	var currentScale = $('#yandex_scale').val();
	var obj_name = $('#obj_name').val();
	var obj_type = $('#obj_type').val();
	var obj_desc = $('#obj_desc').val();

	map = new YMaps.Map(YMaps.jQuery("#YMapsIDLinkname")[0]);
	var tmp = current.split(',');
	var tile1 = tmp[0];
	var tile2 = tmp[1];
	map.setCenter(new YMaps.GeoPoint(tile1, tile2), currentScale);// Создает элемент масштабирования
	var zoomControl = new YMaps.Zoom({noTips: true});
	map.addControl(zoomControl);
	// Создает стиль
	mapStyle = new YMaps.Style();

	// Создает стиль значка метки
	mapStyle.iconStyle = new YMaps.IconStyle();

	if(obj_type == 1) {
		mapStyle.iconStyle.href = "/images/map/sbillboard.png";
		mapStyle.iconStyle.size = new YMaps.Point(28, 25);
	} else if(obj_type == 2) {
		mapStyle.iconStyle.href = "/images/map/d_sbillboard.png";
		mapStyle.iconStyle.size = new YMaps.Point(28, 25);
	} else if(obj_type == 3) {
		mapStyle.iconStyle.href = "/images/map/city.png";
		mapStyle.iconStyle.size = new YMaps.Point(14, 25);
	} else if(obj_type == 4) { 
		mapStyle.iconStyle.href = "/images/map/sflag.png";
		mapStyle.iconStyle.size = new YMaps.Point(19, 25);
	} else {
		mapStyle.iconStyle.href = "/images/map/flag.png";
		mapStyle.iconStyle.size = new YMaps.Point(34, 44);
	}
	mapStyle.iconStyle.offset = new YMaps.Point(-9, -25);
	
	placemark = new YMaps.Placemark(new YMaps.GeoPoint(tile1, tile2), {draggable: false, style: mapStyle});
	placemark.name = obj_name;
	placemark.description = obj_desc;
	map.addOverlay(placemark);
}
