$(document).ready(function(){

	$.get('/general/ajax_vars.php?lang=' + lang + '&form=1',function(data){
		$(data).appendTo('body');
	})

	$('select.countryselect').change(function(){
		var sid = $(this).attr('id');
		var country = $(this).val();
		var sname = $(this).attr('name');
		var usa_id = $(this).find('option.location_usa').attr('value');
		if(usa_id && country == usa_id) $('#zipcode' + sid).show();
		$('#towndiv' + sid).load($('#MODULES_FOLDER').text() + 'form/form_locations.php?country=' + country + '&id=' + sid + '&name=' + sname);
	})


	$("form.form_validate").submit(function(){
			var submit_form = true;
			var form_id = $(this).attr('id');
			if(!form_id) form_id = $(this).attr('id','form' + document.uniqueID).attr('id');
			var form = $(this);
			
			$(':input,:password,:radio',this).each(function(){

				if($(this).is('.form_need') && $(this).val() == '')
				{
					show_form_message(this,$("div[@fmessage=fill]").html());
					return submit_form = false;
				}

				if($(this).is('.form_mail') && $(this).val() && !check_mail($(this).val()))
				{
					show_form_message(this,$("div[@fmessage=mail]").html());
					return submit_form = false;
				}

				if($(this).is('[@class*=form_minlength]'))
				{
					var val_length = $(this).val().length;
					if(preg = /form_minlength(\d+)/g.exec($(this).attr('class')))
					{
						var min_length = parseInt(preg[1]);
						if(val_length < min_length)
						{
							show_form_message(this,$("div[@fmessage=min]").html().replace(/#n#/g,min_length));
							return submit_form = false;
						}
					}
				}

				if($(this).is('[@class*=form_maxlength]'))
				{
					var val_length = $(this).val().length;
					if(preg = /form_maxlength(\d+)/g.exec($(this).attr('class')))
					{
						var max_length = parseInt(preg[1]);
						if(val_length > max_length)
						{
							var message = $("div[@fmessage=max]").html();
							message = message.replace(/#n#/g,max_length);
							message = message.replace(/#num#/g,val_length);
							show_form_message(this,message);
							return submit_form = false;
						}
					}
				}

				if($(this).is('.form_exts'))
				{
					var exts = $(this).attr('title').split(' ');
					var file_name = $(this).val();
					if(file_name)
					{
						var valid_ext = false;
						var ext = (preg = new RegExp('\.([a-zA-Z0-9]+)$','g').exec(file_name)) ? preg[1] : '';
						for(i = 0;i < exts.length; i++)
						{
							if(ext == exts[i])
							{
								valid_ext = true;
								break;
							}
						}
						if(!valid_ext)
						{
							show_form_message(this,$("div[@fmessage=fileext]").html().replace('#formats#',exts.join(', ')));
							return submit_form = false;
						}
					}
				}
			})

			if((pss = $(':password',this)) && pss.length > 1)
			{
				var pss_val = $(this).find(':password:first').val();
				pss.each(function()
				{
					if($(this).val() != pss_val)
					{
						show_form_message(this,$("div[@fmessage=pwds]").html());
						return submit_form = false;
					}
				})
			}
			
			if(submit_form)
			{
				$(':file',this).each(function(){
					if($(this).val())
					{
						form.addClass('form_direct');
						if(form.attr('action').indexOf($('#MODULES_FOLDER').text() + 'form/form_handler.php') != -1) form.attr('action','');
						return;
					}
				})
				if(!$(this).is(".form_direct"))
				{
					ccode = $(this).find(':text[@name=confirm_code]');
					if(ccode.size())
					{
						$.post($('#MODULES_FOLDER').text() + 'form/form_validate_kcaptcha.php',ccode.serializeArray(),function(data){
							if(!parseInt(data))
							{
								show_form_message(ccode,'неправильный код блять!');
								reload_captcha(form)
								return submit_form = false;
							}
							else do_submit(form)
						})
					}
					else do_submit(form)
				}
				else return true;
			}
			return false;
	})
})

function do_submit(form)
{
	form_id = form.attr('id');
	//var is_order_form = form.attr('action').indexOf('modules/shop/shop_order_send.php') != -1;
	var sending = show_message($("div[@fmessage=send]").html(),'center',true);
	if(form.method == 'get') $("#" + form_id + "_result").load(form.attr('action'),function(){sending.remove();reload_captcha(form_id)});
	else
	{ 
		var to = form.attr('action');
		$("#" + form_id + "_result").load(to,form.serializeArray(),function(){
			sending.remove();
			reload_events(form);
			if($(this).find('#form_message_ok,.success').size())
			{
				form.remove();
				//if(is_order_form) reload_cart_block()
			}
		})
	}
}

function check_mail(str)
{
	if(str == '') return true;
	str = str.replace(/\s/g,'');
	var mails = str.split(",");
	var reg2 = /^[a-zA-Z0-9][a-zA-Z0-9\._-]+@[a-zA-Z0-9_\.-]+\.[a-zA-Z]{2,4}$/;
	for(i = 0;i < mails.length;i++) if(!reg2.test(mails[i])) return false;
	return true;
}

function show_form_message(obj,message)
{
	var left = $(obj).offset({scroll:true}).left;
	var top = $(obj).offset({scroll:false}).top + $(obj).height() + 4;
	var need_mess = $('<div class=needmessage style="display:none;position: absolute;left:'+left+'px;top: '+top+';">' + message + '</div>').appendTo('body').fadeIn('fast',function(){if($(obj).is(':visible')){$(obj).focus()}});
	$(obj).bind("keydown",function(){need_mess.fadeOut('fast',function(){$(this).remove()})})
}

function reload_captcha(form)
{
	$("img[@src*=kcaptcha]",$(form)).each(function(){
		var new_src = $(this).attr('src') + '?' + Math.random();
		$(this).attr('src',new_src);
	})
}

function reload_events(form)
{
	reload_captcha(form);
	if($('#commentsform').size())
	{
		reload_comments();
		$('#commentsform textarea').val('');
	}
}

function getCaretPos(obj)
{
	obj.focus();
	if(obj.selectionStart) return obj.selectionStart;
	else if(document.selection)
	{
		var sel = document.selection.createRange();
		var clone = sel.duplicate();
		sel.collapse(true);
		clone.moveToElementText(obj);
		clone.setEndPoint('EndToEnd', sel);
		return clone.text.length;
	}
	return 0;
}

function add_smile(str,id)
{
	var area = $('#' + id);
	var pos = getCaretPos(document.forms['comments'].comment);
	newtext = area.val();
	newtext = newtext.substr(0,pos) + str + newtext.substr(pos);
	area.val(newtext);
}

function bbcode(str,id,res_obj)
{
	var area = $('#' + id);
	var areaobj = area.get(0);
	area.focus();
	var temp = res_obj ? '[#str#=#value#]#text#[/#str#]' : '[#str#]#text#[/#str#]';
	if(res_obj) var val = $(res_obj).val();
	if(document.selection) 
	{
		var s = document.selection.createRange(); 
		shit = s.text;
		newtext = temp.replace(/#text#/g,shit);
		newtext = newtext.replace(/#str#/g,str);
		if(res_obj) newtext = newtext.replace(/#value#/g,val);
		s.text = newtext;
		if(!shit) s.moveEnd('character',-(str.length + 3))
		s.select();
	}
	else if (typeof(areaobj.selectionStart) == 'number')
	{
		var start = areaobj.selectionStart;
		var end = areaobj.selectionEnd;
		text = areaobj.value.substr(start,end-start);
		shit = text;
		newtext = temp.replace(/#text#/g,shit);
		newtext = newtext.replace(/#str#/g,str);
		if(res_obj) newtext = newtext.replace(/#value#/g,val);
		fp = areaobj.value.substr(0,start).length;
		areaobj.value = areaobj.value.substr(0,start) + newtext + areaobj.value.substr(end);
		if(!shit) ss = start + str.length + (!res_obj ? 2 : 3 + val.length) ;
		else ss = fp + 2 * str.length + (!res_obj ? 5 : 6 + val.length) + shit.length;
		areaobj.setSelectionRange(ss,ss);
	}
}
