// calc width, parent - jquery obj, elm - class or tag
function calc_width(parent, elm)
{
	var total = 0;
	$(elm, parent).each(function()
		{
			var mr = 0, ml = 0, pl = 0, pr = 0, bl = 0, br = 0;
			mr = (isNaN(parseInt($(this).css("marginRight")))) ? 0 : parseInt($(this).css("marginRight"));
			pr = (isNaN(parseInt($(this).css("paddingRight")))) ? 0 : parseInt($(this).css("paddingRight"));
			ml = (isNaN(parseInt($(this).css("marginLeft")))) ? 0 : parseInt($(this).css("marginLeft"));
			pl = (isNaN(parseInt($(this).css("paddingLeft")))) ? 0 : parseInt($(this).css("paddingLeft"));
			bl = (isNaN(parseInt($(this).css("borderLeftWidth")))) ? 0 : parseInt($(this).css("borderLeftWidth"));
			br = (isNaN(parseInt($(this).css("borderRightWidth")))) ? 0 : parseInt($(this).css("borderRightWidth"));
			total += $(this).width() + mr + ml + pl + pr + br + bl;
		}
	);
	return total;
}
// casting blanket
function cast_blanket(popup, time, o_args)
{
	var document_h = $(document).height();
	var document_w = $(window).width();
	var opacity = .5;
	var bg_c = "#000";
	if (o_args.opacity || o_args.opacity == 0)
	{
		opacity = o_args.opacity;
	}
	if (o_args.bg_c)
	{
		bg_c = o_args.bg_c;
	}
	$("<div></div>").attr({id: "blanket"}).css({background: bg_c, height: document_h, left: 0, opacity: opacity, position: "absolute", top: 0, width: document_w, zIndex: 100}).appendTo($("body"));
	if ($.browser.msie)
	{
		$("<iframe></iframe>").attr({id: "blanket_iframe"}).css({border: 0, height: document_h, left: 0, opacity: 0, position: "absolute", top: 0, width: document_w, zIndex: 99}).appendTo($("body"));
	}
	// applying elements values
	if (o_args.type == "portfolio")
	{
		$("#ww_portfolio .img a").empty();
		var img_w = parseInt(o_args.ww_image.attr("width"));
		var img_h = parseInt(o_args.ww_image.attr("height"));
		var ww_width = img_w + 22;
		if ($.browser.msie)
		{
			img_w = parseInt(o_args.ww_image.css("width"));
			img_h = parseInt(o_args.ww_image.css("height"));
			ww_width = img_w + 22;
		}
		$("#ww_portfolio").css({width: ww_width});
		$("#ww_portfolio .img a").empty();
		$("<img />").attr({height: img_h, src: o_args.ww_image.attr("src"), width: img_w}).appendTo("#ww_portfolio .img a");
		$("#ww_portfolio .descr h4").text("");
		$("#ww_portfolio .descr h4").text(o_args.ww_title);
		$("#ww_portfolio .descr .url a").attr({href: ""});
		$("#ww_portfolio .descr .url a").text("");
		$("#ww_portfolio .descr .url a").attr({href: "http://"+o_args.ww_url});
		$("#ww_portfolio .descr .url a").text(o_args.ww_url);
		$("#ww_portfolio .descr .info").text(" ");
		$("#ww_portfolio .descr .info").text(o_args.ww_preface);
	}
	position_popup(popup);
	if (time != 0)
	{
		popup.fadeIn(time, change_blanket);
	}
	else
	{
		popup.show(10, change_blanket);
	}
	$(window).bind("resize", function()
		{
			change_blanket();
			position_popup(popup);
		}
	);
	$("#blanket").bind("click", function()
		{
			$(window).unbind("resize");
			remove_blanket(popup, 0);
		}
	);
	return;
}
// changing dimensions of blanket
function change_blanket()
{
	var document_h = $(document).height();
	var document_w = $(window).width();
	if ($.browser.msie && $.browser.version <= 6 && ($(window).height() - $(document).height() < 0))
	{
		document_w -= 17;
	}
	$("#blanket").css({height: document_h, width: document_w});
	$("#blanket_iframe").css({height: document_h, width: document_w});
}
// init slider
function init_slider()
{
	$(".slider").each(function()
		{
			var p = $(this);
			var blck = $(".list", p);
			var blck_pre = $(".list_pre", p);
			blck_pre.scrollLeft(0);
			blck_pre.css({overflowX: "hidden"});
			var w = calc_width(blck, "li");
			var w_li = $("li", blck).eq(0).width();
			var w_delim = $("li", blck).eq(0).css("marginRight");
			w_delim = (isNaN(parseInt(w_delim))) ? 0 : parseInt(w_delim);
			var total_elms = $("li", blck).length;
			var scoll_val = w_li + w_delim;
			var clicks = 0;
			var show_elms = 3;
			var max_clicks = total_elms - show_elms;
			blck.width(w);
			if (total_elms > show_elms)
			{
				$(".nav_next", p).show();
			}
			$(".nav_prev", p).on("click", function(e)
				{
					e.preventDefault();
					clicks = slide_left(p, clicks, max_clicks, scoll_val);
				}
			);
			$(".nav_next", p).on("click", function(e)
				{
					e.preventDefault();
					clicks = slide_right(p, clicks, max_clicks, scoll_val);
				}
			);
		}
	);
	return;
}
//positioning popup
function position_popup(popup)
{
	var view_height = $(window).height();
	var view_width = $(window).width();
	var bb = (isNaN(parseInt(popup.css("borderBottomWidth")))) ? 0 : parseInt(popup.css("borderBottomWidth"));
	var bl = (isNaN(parseInt(popup.css("borderLeftWidth")))) ? 0 : parseInt(popup.css("borderLeftWidth"));
	var br = (isNaN(parseInt(popup.css("borderRightWidth")))) ? 0 : parseInt(popup.css("borderRightWidth"));
	var bt = (isNaN(parseInt(popup.css("borderTopWidth")))) ? 0 : parseInt(popup.css("borderTopWidth"));
	var popup_width = popup.width() + bl + br;
	var popup_height = popup.height() + bb + bt;
	var popup_loading_left = Math.ceil((view_width - popup_width) / 2) + $(document).scrollLeft();
	var popup_loading_top = Math.ceil((view_height - popup_height) / 2) + $(document).scrollTop();
	if (view_width - popup_width < 0)
	{
		popup_loading_left = $(document).scrollLeft() + 10;
	}
	if (view_height - popup_height < 0)
	{
		popup_loading_top = $(document).scrollTop() + 10;
	}
	if (popup.css("position") == 'fixed')
	{
		var popup_loading_left = Math.ceil((view_width - popup_width) / 2);
		var popup_loading_top = Math.ceil((view_height - popup_height) / 2);
		if (view_width - popup_width < 0)
		{
			popup_loading_left = 10;
		}
		if (view_height - popup_height < 0)
		{
			popup_loading_top = 10;
		}
	}
	popup.css({left: popup_loading_left, top: popup_loading_top});
	return;
}
//castaway blanket
function remove_blanket(popup, time)
{
	if (time != 0)
	{
		popup.fadeOut(time);
		setTimeout(function() { $("#blanket").css({opacity: 0}); }, time);
		setTimeout(function() { $("#blanket_iframe").remove(); }, time);
		setTimeout(function() { $("#blanket").remove(); }, time);
	}
	else
	{
		popup.hide();
		$("#blanket").css({opacity: 0});
		$("#blanket_iframe").remove();
		$("#blanket").remove();
	}
	return;
}
// sliding photos to the left
function slide_left(p, clicks, max_clicks, scoll_val)
{
	if (clicks > 0)
	{
		--clicks;
		$(".list_pre", p).animate({scrollLeft: scoll_val * clicks}, 300);
		if (clicks < 1)
		{
			$(".nav_prev", p).hide();
		}
	}
	if (clicks < max_clicks && $(".nav_next", p).is(":hidden"))
	{
		$(".nav_next", p).show();
	}
	return clicks;
}
// sliding photos to the right
function slide_right(p, clicks, max_clicks, scoll_val)
{
	if (clicks < max_clicks)
	{
		++clicks;
		$(".list_pre", p).animate({scrollLeft: scoll_val * clicks}, 300);
		if (clicks >= max_clicks)
		{
			$(".nav_next", p).hide();
		}
	}
	if (clicks >= 1 && $(".nav_prev", p).is(":hidden"))
	{
		$(".nav_prev", p).show();
	}
	return clicks;
}
// input or textarea hints toggle
function toggle_form_hint()
{
	$(":input").each(function()
		{
			var elm = $(this);
			var text = elm.attr("title");
			elm.on("focus", function()
			{
				if ($(this).parents(".error").length == 1)
				{
					$(this).parents(".error").removeClass("error");
				}
				if (elm.hasClass("hlp_input"))
				{
					$(this).addClass("hlp_toggle");
					$(this).removeClass("hlp_input");
					if ($(this).val() == text)
					{
						$(this).val('');
					}
				}
			}
			);
			elm.on("blur", function()
			{
				if ($(this).val() == '' && elm.hasClass("hlp_toggle"))
				{
					$(this).val(text);
					$(this).addClass("hlp_input");
				}
			}
			);
		}
	);
	return;
}
// definitions
$(document).ready(function(){
	// init
	init_slider();
	toggle_form_hint();
	// definitions
	// checking order form
	$(".blck_order :submit").bind("click", function(e)
		{
			var form = $(".blck_order");
			var frms = {
				frm_name: $("#frm_name"),
				frm_phone_email: $("#frm_phone_email")
			};
			var errors = new Array();
			e.preventDefault();
			$.each(frms, function(field, input)
				{
					var val = '';
					switch (field)
					{
						case 'frm_name':
							val = (input.val() != input.attr("title")) ? input.val() : '';
						break;
						case 'frm_phone_email':
							val = (input.val() != input.attr("title")) ? input.val() : '';
						break;
						default:
							val = input.val();
					}
					if (val == '')
					{
						input.parents(".fld").addClass("error");
						errors.push(field);
					}
					else if (field == "frm_email" && !/^[a-z\'0-9]+([._-][a-z\'0-9]+)*@([a-z0-9-_])+\.([a-z0-9]{2,4})$/.test(val))
					{
						input.parents(".fld").addClass("error");
						errors.push(field);
					}
					else
					{
						input.parents(".fld").removeClass("error");
					}
				}
			);
			if (errors.length == 0)
			{
				$.ajax({
					type: "post",
					url: "/js_order.php",
					dataType: 'json',
					data: $("form", form).serialize(),
					success: function(json)
					{
						if (json.errors == 0)
						{
							cast_blanket($("#ww_ok"), 0, {opacity: .5});
							$.each($(":input", form), function()
								{
									//$(this).val('');
								}
							);
							$.each($("select", form), function()
								{
									$(":selected", $(this)).attr({selected: false});
								}
							);
						}
						else
						{
							$.each($(".fld", form), function()
								{
									$(this).removeClass("error");
								}
							);
							$.each(json.errors, function(num, field)
								{
									$("#"+field).parents(".fld").addClass("error");
								}
							);
						}
					},
					error: function(){ alert("Во время отправки произошла ошибка."); }
				});
			}
		}
	);
	$("#ww_ok button, #ww_ok .lnk_close").on("click", function(e)
		{
			e.preventDefault();
			remove_blanket($("#ww_ok"), 0);
		}
	);
	// ww_action show up
	$(".lnk_action").bind("click", function(e)
		{
			e.preventDefault();
			cast_blanket($("#ww_action"), 0, { opacity: .7 });
		}
	);
	$("#ww_action .lnk_close, #ww_action .step_2 button").bind("click", function(e)
		{
			e.preventDefault();
			remove_blanket($("#ww_action"), 0);
		}
	);
	// checking action form
	$("#ww_action :submit").bind("click", function(e)
		{
			var form = $("#ww_action");
			var frms = {
			frm_a_name: $("#frm_a_name"),
			frm_a_phone_email: $("#frm_a_phone_email")
			};
			var errors = new Array();
			e.preventDefault();
			$.each(frms, function(field, input)
				{
					var val = '';
					switch (field)
					{
						case 'frm_a_name':
							val = (input.val() != input.attr("title")) ? input.val() : '';
						break;
						case 'frm_a_phone_email':
							val = (input.val() != input.attr("title")) ? input.val() : '';
						break;
						default:
							val = input.val();
					}
					if (val == '')
					{
						input.parents(".fld").addClass("error");
						errors.push(field);
					}
					else if (field == "frm_email" && !/^[a-z\'0-9]+([._-][a-z\'0-9]+)*@([a-z0-9-_])+\.([a-z0-9]{2,4})$/.test(val))
					{
						input.parents(".fld").addClass("error");
						errors.push(field);
					}
					else
					{
						input.parents(".fld").removeClass("error");
					}
				}
			);
			if (errors.length == 0)
			{
				$.ajax({
					type: "post",
					url: "/js_action.php",
					dataType: 'json',
					data: $("form", form).serialize(),
					success: function(json)
					{
						if (json.errors == 0)
						{
							$(".step_2", form).show();
							$(".step_1", form).hide();
							setTimeout(function()
								{
									remove_blanket();
									$(".step_2", form).hide();
									$(".step_1", form).show();
								}, 3000);
							$.each($(":input", form), function()
								{
									//$(this).val('');
								}
							);
							$.each($("select", form), function()
								{
									$(":selected", $(this)).attr({selected: false});
								}
							);
						}
						else
						{
							$.each($(".fld", form), function()
								{
									$(this).removeClass("error");
								}
							);
							$.each(json.errors, function(num, field)
								{
									$("#"+field).parents(".fld").addClass("error");
								}
							);
						}
					},
					error: function(){ alert("Во время отправки произошла ошибка."); }
				});
			}
		}
	);
	// ww site popup
	$(".slider .list a").on("click", function(e)
		{
			e.preventDefault();
			var p = $(this).parents("li");
			o_args = {};
			o_args = {
				opacity: .7,
				type: "portfolio",
				ww_image: $(".ww_img img", p),
				ww_preface: $(".ww_preface", p).html(),
				ww_title: $(".ww_img img", p).attr("alt"),
				ww_url: $(".ww_url", p).text(),
				ww_url_spec: $(".ww_url_spec", p).text()
			};
			cast_blanket($("#ww_portfolio"), 0, o_args);
		}
	);
	$("#ww_portfolio .lnk_close").on("click", function(e)
		{
			e.preventDefault();
			remove_blanket($("#ww_portfolio"), 0);
		}
	);
	// esc removes blanket
	$(document).bind("keydown", function(e)
		{
			var keycode;
			if (e == null)
			{
				keycode = e.keyCode; // ie
			}
			else
			{
				keycode = e.which; // mozilla
			}
			if (keycode == 27)
			{
				remove_blanket($(".ww"), 0);
			}
		}
	);
});
