$(document).ready(function(){
	core.buttons();
	
	$("table.selectable tbody tr td").live("mouseover",function(){
		$(this).parent().children("td:not('.notHover')").addClass("hover");
	}).live("mouseout",function(){
		$(this).parent().children("td:not('.notHover')").removeClass("hover");
	});
	setInterval(function(){$("#lamp").effect("pulsate");},2000);
	$.extend($.ui.dialog.defaults, {
	 bgiframe: true
	});
	$("span.pointer").live("mouseover",function(){
		$(this).addClass("ui-state-hover").addClass("ui-state-focus");
	}).live("mouseout",function(){
		$(this).removeClass("ui-state-hover").removeClass("ui-state-focus");
	});
	$(".ui-button").live("click",function(){
		$(this).removeClass("ui-state-hover").removeClass("ui-state-focus");
	});
	$(".wfSelect").live("click",function(){
		var input = $(this).children("input");
		var name = $(input).attr("name");
		var form = $(input).attr("class");
		var value = $(input).attr("value");
		if ($(this).hasClass("wfSelected")){
			$(this).removeClass("wfSelected");
			$(this).css("background-color","");
			if ($("input."+form+"[name='"+name+"']").parent(".wfSelected").length == 0){
				if ($("input."+form+"[name='"+name+"'][value='-1']").length > 0){
					$("input."+form+"[name='"+name+"'][value='-1']").parent().addClass("wfSelected");
				}
				else{
					$("input."+form+"[name='"+name+"'][value='"+value+"']").parent().addClass("wfSelected");
				}
			}
		}
		else {
			if (value == "-1"){			
				$("input."+form+"[name='"+name+"']").parent().removeClass("wfSelected");				
			}
			else{
				$("input."+form+"[name='"+name+"'][value='-1']").parent().removeClass("wfSelected");
			}
			$(this).addClass("wfSelected");
		}
	}).live("mouseover",function(){
		$(this).css("background-color","silver");
	}).live("mouseout",function(){
		$(this).css("background-color","");
	});
	
	$(".menuBlock > button").live("click",function(){
		$(this).parent().children("button").removeClass("ui-state-hover selectedMenuButton");
		$(this).addClass("ui-state-hover selectedMenuButton");
	});
	
	$(document).ready(function(){
		$('.clickableTH').live('mouseover',function(){
			$(this).addClass('ui-state-hover');
		}
		).live('mouseout',function(){
			$(this).removeClass('ui-state-hover');
		});
	});
});


$(document).ready(function(){
	$(".selectableTbody > tr").live("mouseover",function(){
		$(this).css("opacity","1");
	}).live("mouseout",function(){
		$(this).css("opacity","0.75");
	});
});

var core = {
	progress_interval:null,
	progress_key:null,
	recolorRadioButtonSet:function(buttonset){
		var input1 = $(buttonset).children("input[value=1]");
		var input0 = $(buttonset).children("input[value=0]");
		if ($(buttonset).children("input[value=1]:checked").length){
			$(buttonset).children("label[for="+$(input0).attr("id")+"]").css("background","").css("color","").css("borderColor","");
			$(buttonset).children("label[for="+$(input1).attr("id")+"]").css({
				"background":"#93EB93 url(/images/reportTable/delivered.png) repeat-x 50% 50%",
				"color":"white",
				"borderColor":"#93EB93"
			});
		}
		else{
			$(buttonset).children("label[for="+$(input0).attr("id")+"]").css({
				"background":"#F88B8B url(/images/reportTable/not_delivered.png) repeat-x 50% 50%",
				"color":"white",
				"borderColor":"#F88B8B"
			});
			$(buttonset).children("label[for="+$(input1).attr("id")+"]").css("background","").css("color","").css("borderColor","");
		}
	},
	buttons:function(){
		var buttons = $("button");
		$.each(buttons,function(){
			if ($(this).hasClass("ui-button")){ return; }
			var icon = $(this).attr("icon");
			var c = $(this).attr("class");
			if (c == "add") icon = "ui-icon-plus";
			if (c == "edit") icon = "ui-icon-pencil";
			if (c == "remove") icon = "ui-icon-close";
			if (c == "save") icon = "ui-icon-disk";
			if (c == "cancel") icon = "ui-icon-cancel";
			if (c == "ok") icon = "ui-icon-check";

			if (icon != null){
				var html = $(this).html();
				var title = $(this).attr("title");
				var deleteTitle = false;
				if (html.length == 0){
					var text = false;
					$(this).html("button");
					if (!title) deleteTitle = true;
				}
				else var text = true;
				
				$(this).button({ icons:{primary:icon}, text:text});
				if (deleteTitle) $(this).removeAttr("title");
				return;
			}
			else $(this).button();
		});
		
		$.each($(".buttonset"),function(){
			if (!$(this).hasClass("ui-buttonset")){
				$(this).buttonset();	
				if ($(this).is(".radioBoxButtonset")){
					$(this).children("input").change(function(){
						core.recolorRadioButtonSet($(this).parent());
					});	
					core.recolorRadioButtonSet($(this));
				}	
			}
		});
		$.each($(".ui-buttonset > label, .smsTypes > label"),function(){
			var icon = $(this).attr("icon");
			if (icon && $(this).children("."+icon).length == 0)
				$(this)
					.prepend("<span class='ui-button-icon-primary ui-icon "+icon+"'></span>")
					.addClass("ui-button-text-icon-primary")
					.removeClass("ui-button-text-only");
		});
		$("input:submit").button();	
		$("input[placeholder],textarea[placeholder]").placeholder();
		$(".menuBlock > button").die("mouseover").die("mouseout").unbind("mouseout").unbind("mouseover");
		$(".menuBlock > button").bind("mouseout",function(){
			if (!$(this).hasClass("selectedMenuButton")) $(this).removeClass("ui-state-hover");
		}).bind("mouseover",function(){
			$(this).addClass("ui-state-hover");
		});
		
		$.each($("td.action > button"),function(){
			$(this).height($(this).parent().height());
		});
	},
	silentAjax:function(url,data,success,method){
		if (method == null) method = "json";
		$.ajax({
			error:function(XMLHttpRequest, textStatus, errorThrown){},
			start:function(){},
			beforeSend:function ( request ) { 
				if (this.data != null){
					if (this.data.length == 0) 
						this.data = "currentLogin="+currentUserLogin+"&currentPassword="+currentUserPassword;
					else 
						this.data += "&currentLogin="+currentUserLogin+"&currentPassword="+currentUserPassword
				}
			},
			url:url,
			data:data,
			dataType:method,
			complete:function(){ core.buttons(); },
			success:success
		});
	},
	centerDialog:function(selector){
		setTimeout(function(){$(selector).dialog('option','position','center');},100);
	},
	translite:function(selector){
		var text = $(selector).attr("value");		
		text = ru2en.translit(text);
		$(selector).attr("value",  text);
		lcab.updateTextBoxCounter($(selector).eq(0));
	},
	messageInterval: null,
	messageTime:7000,
	needToShowLoadingMessage:false,
	needModal:false,
	showModalScreen:function(){
		$(".modalScreen").css("display","block").width($(window).width()).height($(window).height()).animate({opacity:0.6});
	},
	closeModalScreen:function(){
		core.fadeOut(".modalScreen");
	},
	fadeOut:function(selector){
		var opacity = $(selector).css("opacity");
		opacity = core.str_replace(",",".",opacity);
		if (opacity != 0){
			opacity -= 0.15;
			if (opacity < 0) opacity = 0;
		}
		else{ 
			$(selector).hide();
			return;	
		}
		$(selector).css("opacity",opacity.toString());
		setTimeout("core.fadeOut('"+selector+"')",100);
	},
	toggleModalScreen:function(){
		if ($(".modalScreen").css("display") == "block") core.closeModalScreen(); else core.showModalScreen();
	},
	confirmAction:function(flag){
		core.closeModalScreen();
		core.closeMessage();
		jConfirmCallback(flag);
	},
	showConfirmMessage:function(text,title,width){
		if (width != null) $(".systemMessage").width(width);
		else $(".systemMessage").css("width","");
		text += "<div><input onClick='core.confirmAction(true);' type=submit class=authBtn value='Продолжаем'> ";
		text += "<input onClick='core.confirmAction(false);' type=submit class=authBtn value='Отмена'></div>";
		core.showMessage(text,title,"confirm",true);
		core.showModalScreen();
	},
	messageIsOpened:function(){
		if ($(".systemMessage").css("margin-right") == "0px") return true; else return false;
	},
	sortingTable:function(table){
		var th = $(table).children("thead").children("tr").children("th");
		$(th).addClass("clickableTH");
		var i = 0;
		$.each(th,function(){
			var name = $(this).html();
			var html = "<div style='position:relative;'><span class='ui-widget-header thSort'><span class='ui-icon ui-icon-triangle-2-n-s'></span></span></div><span style='padding-right:14px;'>"+$(this).html()+"</span>";
			$(this).data("eq",i).html(html).css("cursor","pointer");
			$(this).click(function(){	
				core.sortingTableSort(table,this);
			});
			i++;
		});
	},
	sortingTables:[],
	sortingTableSort:function(table,th){
		var i = $(th).data("eq");
		var sortType = $(th).data("sort-type");
		if (!sortType) sortType = "string";
		var sortBy = $(table).data("sort-by");
		var sortDirection = $(table).data("sort-direction");
		if (sortBy == i){
			if (sortDirection == "asc") sortDirection = "desc";
			else sortDirection = "asc";
		}
		else sortDirection = "asc";
		sortBy = i;
		$(table).data("sort-by",sortBy).data("sort-direction",sortDirection);
		$(table).children("thead").children("tr").children("th").children("div").children("span.thSort").children(".ui-icon").attr("class","ui-icon ui-icon-triangle-2-n-s");
		if (sortDirection == "asc") var icon = "ui-icon-triangle-1-n"; else var icon = "ui-icon-triangle-1-s";
		$(table).children("thead").children("tr").children("th").eq(sortBy).children("div").children("span.thSort").children(".ui-icon").attr("class","ui-icon "+icon);
		var rows = $(table).find('tbody > tr').get();
		rows.sort(function(a, b) {
			var keyA = $(a).children('td').eq(sortBy).data("value");
			if (typeof(keyA) == "undefined") var keyA = $(a).children('td').eq(sortBy).text();
			var keyB = $(b).children('td').eq(sortBy).data("value");
			if (typeof(keyB) == "undefined") var keyB = $(b).children('td').eq(sortBy).text();
			if (sortType == "string"){
				keyA = keyA.toUpperCase();
				keyB = keyB.toUpperCase();
			}
			else if (sortType == "number"){
				keyA = parseFloat(keyA.toUpperCase());
				keyB = parseFloat(keyB.toUpperCase());
			}
			if (keyA < keyB) return -1;
			if (keyA > keyB) return 1;
			return 0;
		});
		
		if (sortDirection == "desc") rows.reverse(); 

		$.each(rows, function(index, row) {
			$(table).children('tbody').append(row);
		});
	},
	sortingTableSortNumber:function(a,b){ return (a-b); },
	whenMessageClose: 0,
	whenMessageCloseInterval:null,
	updateWhenMessageClose:function(){
		core.whenMessageClose -= 1000;
		if (core.whenMessageClose < 0) {
			core.whenMessageClose = 0;
			clearInterval(core.whenMessageCloseInterval);
		}
		$("#whenMessageClose").html(core.whenMessageClose / 1000);
	},
	showMessage:function(text,title,type,withoutClose){
		clearInterval(core.whenMessageCloseInterval);
		$(".systemMessage").removeClass("load");
		if (typeof(text) == "object") {
			title = text.title; 
			type = text.code;
			text = text.descr;
		}
		if (type == null) type = 1;
		if (type > 1) type = 0;
		if (type == 1) text = "<table><tr><td width=1 valign=top><img src='/images/lcab/accepted.png' style='padding:3px;' align=left></td><td valign=top>"+text+"</td></tr></table>";
		if (type == 0) text = "<table><tr><td width=1 valign=top><img src='/images/lcab/error.png' style='padding:3px;' align=left></td><td valign=top>"+text+"</td></tr></table>";
		if (type == -1) text = "<table><tr><td width=1 valign=top><img src='/images/lcab/warning.png' style='padding:3px;' align=left></td><td valign=top>"+text+"</td></tr></table>";
		jAlert(text,title);
		return;
		clearInterval(core.messageInterval);
		if (type == null) type = "message";
		type = type.toString();
		if (type == "1") type = "ok";
		if (type != "ok" && type != "message" && type != "confirm") type = "error";
		if (title == null) title = "Сообщение системы";
		
		if (type == "confirm"){
			$(".message_about").hide();
			$(".message_close").hide();
		}
		else{
			$(".message_about").show();
			core.whenMessageClose = core.messageTime;
			$(".message_close").show();
			$(".message_close > span").css("display","inline");
			$("#whenMessageClose").html(core.whenMessageClose / 1000);
			core.whenMessageCloseInterval = setInterval("core.updateWhenMessageClose()",1000);
		}
		
		$(".message_title").html(title);
		$(".message_text").html(text);
		$(".systemMessage").removeClass("ok error message confirm").addClass(type);
		$(".systemMessage").clearQueue().stop().show().animate({marginRight:0});
		if (withoutClose != true)
			core.messageInterval = setInterval("core.closeMessage()",core.messageTime);
	},
	closeMessage:function(){
		$(".systemMessage").animate({marginRight:-350},function(){$(this).hide();});
		clearInterval(core.messageInterval);
		if (core.needToShowLoadingMessage == true){
			core.showLoad();
		}
	},
	tinymce:function(id, plugins, buttons1, buttons2){
		if (buttons1 == null) var buttons1 = "cut,copy,paste,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,outdent,indent,|,undo,redo,|,fontsizeselect,forecolor,link,unlink,image,code";
		if (buttons2 == null) var buttons2 = "bullist,numlist,|,tablecontrols,|,hr,|,charmap,emotions,advhr,|,sub,sup,removeformat";
		if (plugins == null) var plugins = "pagebreak,style,layer,table,save,advhr,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,advlist";
		$(document).ready(function(){
			$('textarea#'+id).tinymce({
				script_url : '/engine/javascript/tiny_mce/tiny_mce.js',
				theme : "advanced",
				plugins : plugins,

				theme_advanced_buttons1 : buttons1,
				theme_advanced_buttons2 : buttons2,
				theme_advanced_buttons3 : "",
				theme_advanced_buttons4 : "",
				theme_advanced_toolbar_location : "top",
				theme_advanced_toolbar_align : "left",
				theme_advanced_statusbar_location : "bottom",
				theme_advanced_resizing : true,
				language: 'ru',
				content_css : "css/content.css",

				template_external_list_url : "lists/template_list.js",
				external_link_list_url : "lists/link_list.js",
				external_image_list_url : "lists/image_list.js",
				media_external_list_url : "lists/media_list.js",

				template_replace_values : {
						username : "Some User",
						staffid : "991234"
				}
			});
		});
	},
	updateCaptcha:function(sender){
		$(".captcha").attr("src","/captcha/update/"+core.rand());
	},
	rand:function() {
		var date = new Date()
		var max = 1000000;
		var min = 0;
		if( max ) {
			var rand = Math.floor(Math.random() * (max - min + 1)) + min;
		} else {
			var rand = Math.floor(Math.random() * (min + 1));
		}
		return rand.toString() + date.getFullYear() + date.getUTCMonth() + date.getDate() + date.getHours() + date.getMinutes() + date.getSeconds() + date.getMilliseconds();
	},
	exit:function(location){
		$.post('/cmd/system/user/clear',function(data){
			if (location != null && location) window.location.href = location;
			else window.location.reload()
		},'html');
	},
	in_array:function(string, array)
	{
	   for (i = 0; i < array.length; i++)
	   {
		  if(array[i] == string)
		  {
			 return true;
		  }
	   }
	return false;
	},
	lang:function(lang){
		return $("."+lang+"_lang").attr("value");
	},
	toggleDialog:function(selector)
	{
		if ($(selector).dialog('isOpen'))
		{
			$(selector).dialog('close');
		}
		else
		{
			$(selector).dialog('open');
		}
	},
	load:function(container,url,params,callback){
		if (params == null) params = {};
		$.post(url,params,function(data){
			$(container).html(data).show().dialog('open');
			
			if (typeof(callback) == 'function')
			callback(data);
		},'html');
	},
	replaceToInput:function(selector,form)
	{	   
		$(selector).replaceWith("<input id='"+form+"' name='"+$(selector).attr("name")+"' type=text class='"+$(selector).attr("class")+"' value='"+$(selector).attr("value")+"'>");
	},
	showLoadTimeout:null,
	showLoad:function()
	{
		var text = "Пожалуйста, подождите. Начался сеанс обмена данными с сервером";
		$("#loadingBarImage").show();
		$("#loadingBarText").html(text).show();
		clearTimeout( core.showLoadTimeout );
		core.showLoadTimeout = setTimeout(function(){ $('.loadingBar').dialog('open') }, 500);
	},
	closeLoad:function(){
		clearTimeout( core.showLoadTimeout );
		if ($('.loadingBar').dialog("isOpen"))
			$('.loadingBar').dialog('close');
	},
	addToText:function(selector,text,separator){
		if (separator == null) separator = " ";
		var t = $(selector);
		var i = parseInt(t.attr("position"));
		if (isNaN(i)) i = 0;
		var value = t.attr("value");
		if (value.length > 0){
			if (i == 0) text += separator;
			else{
				if (i > 0 && i == value.length) text = separator + text;
				else{
					if (value.substr(i-1,1) != separator) text = separator + text;
					if (value.substr(i,1) != separator) text += separator;
				}
			}
		}
		value = core.substr_replace(value,text,i,0);
		t.attr("value",value).attr("position", i + text.length);
		var label = $($(selector).data("PLACEHOLDER-LABEL"));
		label.css('display', 'none');
	},
	strpos:function( haystack, needle, offset){
	var i = haystack.indexOf( needle, offset );
	return i >= 0 ? i : false;
	},
	"str_replace":function (search, replace, subject, count) {
		var i = 0, j = 0, temp = '', repl = '', sl = 0, fl = 0,
				f = [].concat(search),
				r = [].concat(replace),
				s = subject,
				ra = r instanceof Array, sa = s instanceof Array;
		s = [].concat(s);
		if (count) {
			this.window[count] = 0;
		}

		for (i=0, sl=s.length; i < sl; i++) {
			if (s[i] === '') {
				continue;
			}
			for (j=0, fl=f.length; j < fl; j++) {
				temp = s[i]+'';
				repl = ra ? (r[j] !== undefined ? r[j] : '') : r[0];
				s[i] = (temp).split(f[j]).join(repl);
				if (count && s[i] !== temp) {
					this.window[count] += (temp.length-s[i].length)/f[j].length;}
			}
		}
		return sa ? s : s[0];
	},
	getInputSelection:function(el) {
		if (el == null) return {start:0, end: 0};
		var start = 0, end = 0, normalizedValue, range,
			textInputRange, len, endRange;

		if (typeof el.selectionStart == "number" && typeof el.selectionEnd == "number") {
			start = el.selectionStart;
			end = el.selectionEnd;
		} else {
			if (document.selection == null) return {start:0, end: 0};
			range = document.selection.createRange();

			if (range && range.parentElement() == el) {
				len = el.value.length;
				normalizedValue = el.value.replace(/\r\n/g, "\n");

				textInputRange = el.createTextRange();
				textInputRange.moveToBookmark(range.getBookmark());

				endRange = el.createTextRange();
				endRange.collapse(false);

				if (textInputRange.compareEndPoints("StartToEnd", endRange) > -1) {
					start = end = len;
				} else {
					start = -textInputRange.moveStart("character", -len);
					start += normalizedValue.slice(0, start).split("\n").length - 1;

					if (textInputRange.compareEndPoints("EndToEnd", endRange) > -1) {
						end = len;
					} else {
						end = -textInputRange.moveEnd("character", -len);
						end += normalizedValue.slice(0, end).split("\n").length - 1;
					}
				}
			}
		}

		return {
			start: start,
			end: end
		};
	},
	substr_replace:function(str, replace, start, length) {
		if (start < 0) {
			start = start + str.length;
		}
		length = length !== undefined ? length : str.length;
		if (length < 0) {
			length = length + str.length - start;
		}
		return str.substr(0,start) + replace + str.substr(start+length);
		return str.slice(0, start)+replace.substr(0, length)+replace.slice(length)+str.slice(start+length);
	},
	substr:function( f_string, f_start, f_length ) {
		if(f_start < 0) {
			f_start += f_string.length;
		}
		if(f_length == undefined) {
			f_length = f_string.length;
		} else if(f_length < 0){
			f_length += f_string.length;
		} else {
			f_length += f_start;
		}
		if(f_length < f_start) {
			f_length = f_start;
		}
		return f_string.substring(f_start, f_length);
	},
	upload:function(params){
		$.form.makeUpload(params.selector,params);
	}
}



$(document).ready(function(){
	$('.loadingBar').dialog({
		modal:true,
		bgiframe:true,
		autoOpen:false,
		height:'auto',
		minHeight:45,
		width:300,
		draggable:false,
		resizable:false
	});
	$('.loadingBar').parent().children(".ui-dialog-titlebar").remove();
	core.buttons();
	$.ajaxSetup({
		cache:false,
		type: "POST",
		complete:function(XMLHttpRequest){
			if (this.dataType == "json"){
				data = $.parseJSON(XMLHttpRequest.responseText);
				if (data.autoUpdate != null){
					if (data.autoUpdate.account != null) {
						lcab.autoUpdate(data.autoUpdate);
					}
				}
			}
			core.closeLoad(); 
			core.buttons();
		},
		dataType:"json",
		error:function(XMLHttpRequest, textStatus, errorThrown) {
			core.closeLoad();
			var html = XMLHttpRequest.responseText;
			
			if (html.indexOf("authOnFly") != -1){
				var m = {
					descr: html,
					code: 0
				};
				core.showMessage(m);
				return;
			}
			
			var a = this.url + "<br><br>" + window.location.href;
			if (a.indexOf("cmd") == -1) return;
			
			$.post("/cmd/lcab_model/json_log",{
				text:html,
				loc:a
			},function(data){},'html');
			var i = core.strpos(html, "</body>");
			if (i != null && i != 0)
			{
				var i = core.strpos(html, "<body>");
				html = core.substr(html, i)
				i = core.strpos(html,"</body>");
				html = core.substr(html,0,i);
			}
			if (showJsonError == true)
			{
				jAlert("Оппа! Что-то пошло не так! <br><br><b>Ответ сервера</b><br><br>" + html +"");
			}
			else{
				if (html.toLowerCase().indexOf("squid") == -1)
			   		jAlert("<div class='ui-state-error ui-corner-all' style='padding: 0pt 0.7em;'><p><span class='ui-icon ui-icon-alert' style='float: left; margin-right: 0.3em;'></span>Ошибка при получении данных от сервера! Пожалуйста, сообщите об этом администрации!</p></div>",false)
				else{
					jAlert("<div class='ui-state-error ui-corner-all' style='padding: 0pt 0.7em;'><p><span class='ui-icon ui-icon-alert' style='float: left; margin-right: 0.3em;'></span>Ваш прокси-сервер Squid обработал запрос на наш сервер с ошибкой!<br>Покажите это сообщение вашему системному администратору:</p></div><textarea style='width:99%; height:100px; margin-top:10px;'>"+html+"</textarea>",false);
				}
			}
		},
		beforeSend: function ( request ) {
			if (this.dataType != "html"){
				if (this.data != null){
					if (this.data.length == 0) 
						this.data = "ajax=1";
					else 
						this.data += "&ajax=1";
				}
			}
			if (this.data != null){
				if (this.data.length == 0) 
					this.data = "currentLogin="+currentUserLogin+"&currentPassword="+currentUserPassword;
				else 
					this.data += "&currentLogin="+currentUserLogin+"&currentPassword="+currentUserPassword;
			}
			if (!this.data || this.data.indexOf("noLoad") == -1)
				core.showLoad();
		}
	});
})

$('').bind("ajaxComplete", function(){
	core.closeLoad();
});


jQuery.form = {

	save:function(params)//name,url,key,callback,params,multi
	{
		var p = {
			name:'form',
			url:'',
			key:null,
			test:false,
			callback:function(){},
			params:{},
			multi:false
		}
		p = $.extend(p,params);
		var form = $.form.get(p.name,false,p.multi);
		if ( p.key !=null )
		{
			var c = {};
			form = c;
		}
		form = $.toJSON(form);
		if (p.params == null) p.params = {p:form};
		else p.params.p = form;
		$.post(p.url,p.params,function(data){
			if (p.test)
				alert(data);
			data = $.parseJSON(data);
			if (data.code==1)
				$.form.ok(p.name,data.descr);
			else $.form.error(p.name,data.descr);
			p.callback(data);
		},'html');
	},
	set:function(form,name,values)
	{
		if (values == null) return;
		$("."+form+"[name="+name+"][type=checkbox]").removeAttr("checked");
		$("select."+form+"[name="+name+"]").children().removeAttr("selected");
		$("."+form+"[name="+name+"][type=radio]").removeAttr("checked");
		
		if (typeof(values)!='object') values = [values];

		if (values.length < 2)
		{
			$("."+form+"[name="+name+"][type=text]").attr("value",values[0]);
			
			$("."+form+"[name="+name+"][type=password]").attr("value",values[0]);
			$("."+form+"[name="+name+"][type=hidden]").attr("value",values[0]);
			$("textarea."+form+"[name="+name+"]").attr("value",values[0]);
			if ($("select."+form+"[name="+name+"]").length > 0){
				$("select."+form+"[name="+name+"]").attr("value",values[0]);
		   }
		}
		else
		{
			for (var i = 0; i < values.length; i++)
			{
				$("."+form+"[name="+name+"][type=text]").eq(i).attr("value",values[i]);
				$("."+form+"[name="+name+"][type=password]").eq(i).attr("value",values[i]);
				$("."+form+"[name="+name+"][type=hidden]").eq(i).attr("value",values[i]);
				$("textarea."+form+"[name="+name+"]").eq(i).attr("value",values[i]);
				if ($("select."+form+"[name="+name+"]").length > 0)
					$("select."+form+"[name="+name+"]").eq(i).children("[value='"+values[i]+"']").attr("selected","selected");
			}
		}
		if ($("input."+form+"[name="+name+"][type=radio]").length > 0)
			$("input."+form+"[name="+name+"][type=radio][value="+values[0]+"]").attr("checked","checked");
		
		if ($("input."+form+"[name="+name+"][type=checkbox]").length > 0)
			for (var i = 0; i<=values.length; i++)
			{		 
				$("input."+form+"[name="+name+"][type=checkbox][value='"+values[i]+"']").attr("checked","checked");
			}
	},
	get:function(form,json,multi){
		if (multi == null) multi = false;
		if (json == null) json = true;
		if (form == null || form.length == 0)
		{
			if (!json) return {};
			else return $.toJSON({});
		}
		var selector = "input."+form+":radio,input."+form+":checkbox,input."+form+":text,input."+form+":hidden,input."+form+":file,input."+form+":password,textarea."+form+",select."+form;
		var inputs = $(selector);
		var values = {};
		$.each(inputs,function(){
			if ($(this).is(":checkbox") && !$(this).attr("checked")) return;
			if ($(this).is(":radio") && !$(this).attr("checked")) return;
			var name = $(this).attr("name");
			var value = $(this).attr("value");
			if (($.isArray(value) && value[0] == null) || value == null)
				return;
			if ($(this).hasClass("tinymce")){
				value = tinyMCE.get($(this).attr("id")).getContent();
			}
			if ($(this).hasClass("codemirror")){
				value = core.editors["#"+$(this).attr("id")].getCode();
			}
			if ($(this).is(':file'))
			{
				var name = $(this).attr("name");

				var key = $(this).attr("key");
				var s = "input[type=hidden][key="+key+"]";
				
				var v = {};
				v.directory = $(s+"[name="+name+"_directory]").attr("value");
				v.serverFileName = $(s+"[name="+name+"_serverFileName]").attr("value");
				v.path = $(s+"[name="+name+"_path]").attr("value");
				v.size = $(s+"[name="+name+"_size]").attr("value");
				v.isUploaded = $(s+"[name="+name+"_isUploaded]").attr("value");
				if (v.isUploaded == false || v.isUploaded == 0 || v.isUploaded == "0") return;
				if (!multi && !$.form.intervals[key].wasMulti) values[name] = v;
				else
				{
					if (values[name] == null) values[name] = new Array();
					values[name][values[name].length] = v;
				}
				return;
			}
			if (multi || $(this).is(':checkbox'))
			{		  
				if ($(this).is(":checkbox") && !$(this).attr("checked")) return;
				if (values[name] == null) values[name] = new Array();
				values[name][values[name].length] = value;
			}
			else
			{
				values[name] = value;
			}
		});

		if (json == false)
			return values;
		else
			return $.toJSON(values);
	},
	
	addInputFile:function(form,name,container)
	{
		var key = $('.'+form+'[name='+name+']').attr("key");

		var p = {};
		var oldparams = $.form.intervals[key];
		p.upload = oldparams.upload;
		p.progress = oldparams.progress;
		p.serverFileName = oldparams.serverFileName_def;
		p.directory = oldparams.directory;
		p.autoUpload = oldparams.autoUpload;
		p.multi = false;
		p.wasMulti = oldparams.wasMulti;
		p.onSelect = oldparams.onSelect;
		p.onStart = oldparams.onStart;
		p.onComplete = oldparams.onComplete;

		$(container).append("<input type=file name="+name+" class="+form+">");
		$.form.makeUpload('.'+form+'[name='+name+']',p,'multi');
	},
	uploadChange:function(key,param,value){
		$("input[key='"+key+"'][name='"+param+"']").attr("value",value);
	},
	makeUpload: function (selector,params,add){

		var elements = $(selector);
		$.each(elements,function(){
			var p = {
				upload:"/upload.php",
				progress:"/progress",
				serverFileName:"%real%",
				directory:"",
				userParam:"",
				autoUpload:true,
				multi:false,
				wasMulti:false,
				onSelect:function(){},
				onStart:function(){},
				onComplete:function(){},
				name:$(selector).attr("name")
			}
			if ($(this).attr("key")!=null) return;
			var date = new Date();
			var key = date.getMilliseconds().toString()+date.getMinutes().toString()+date.getSeconds().toString()+Math.round(Math.random()*(1000000 - 0)).toString();
			p = $.extend(p,params);
			if (add == null)
				p.wasMulti = p.multi;
			else (p.wasMulti = true);
			p.selector = "[type=file][key="+key+"]";
			p.upload += "?X-Progress-ID="+key;
			p.key = key;
			p.serverFileName_def = p.serverFileName;
			$(this).attr("key",key).change(function(){
				if ($("#submit_"+key).length == 0)
				{
					$.form.intervals[key].onSelect($.form.intervals[key]);
					$(this).after("<input type=submit value='Загрузить' id=submit_"+key+">");
					if ($.form.intervals[key].autoUpload == true)
						$("#submit_"+key).click();
				}
			});
			$(this).wrap("<form key='"+key+"' onsubmit=\"return $.form.uploadSelectedFile(this)\" name=wfUpload_"+key+" action='"+p.upload+"' target=iframe_"+key+" enctype='multipart/form-data' method=post></form>")
			$(this).parent().append("<input type=hidden name=key value='"+key+"'>");
			$(this).before('<input type="hidden" name="UPLOAD_IDENTIFIER" value="'+key+'">');
			var span = $(this).parent();
			var html =
				"<input type=hidden name='"+p.name+"_directory' key='"+key+"' value='"+p.directory+"'>" +
				"<input type=hidden name='"+p.name+"_serverFileName' key='"+key+"' value='"+p.serverFileName+"'>" +
				"<input type=hidden name='"+p.name+"_serverFileName_def' key='"+key+"' value='"+p.serverFileName_def+"'>" +
				"<input type=hidden name='"+p.name+"_path' key='"+key+"' value=''>" +
				"<input type=hidden name='inputName' key='"+key+"' value='"+p.name+"'>" +
				"<input type=hidden name='userParam' key='"+key+"' value='"+p.userParam+"'>" +
				"<input type=hidden name='"+p.name+"_isUploaded' key='"+key+"' value='0'>" +
				"<input type=hidden name='"+p.name+"_size' key='"+key+"' value=''>" +
				"<span uploaded=0 class=uploadDescr style='display:none' key='"+key+"'></span>" +
				"<iframe style='display:none;' onLoad=$.form.uploadComplete('"+key+"') name=iframe_"+key+" id=iframe_"+key+"></iframe>";
			$(span).append(html);
			if ($.form.intervals[key] == null)
				$.form.intervals[key] = p;
		});
		if (params.multi == true)
		{
			var l = elements.length;
			if (l > 0 && $('#more_files_'+$(elements[l-1]).attr("key")).length == 0)
				$(elements[l-1]).parent('form').after("<br><input type=submit value='Добавить еще один файл' onclick=$.form.addInputFile('"+$(elements[l-1]).attr("class")+"','"+$(elements[l-1]).attr("name")+"','#more_files_"+$(elements[l-1]).attr("key")+"')><br>").after('<span id=more_files_'+$(elements[l-1]).attr("key")+'></span>');
		}
	},
	uploadSelectedFile: function(s,params)
	{
		var p = {
			width:100,
			height:15
		}
		p = $.extend(p,params);
		var key = $(s).attr("key");
		$("#submit_"+key).attr("disabled","disabled");
		var span = $(s).children(".uploadDescr");
		var style = {display:'none', margin:"10px"};
		$(span).html("<div class=progressbar></div> <span style='text-align:right;' class=uploadedFileDetailInfo>Загрузка началась. Пожалуйста, подождите...</span>").css(style);
		var bar = $(span).children('div.progressbar');
		bar.progressbar({value: 0});
		//alert($.form.intervals[key].selector);
		var fname = $($.form.intervals[key].selector).attr("value");
		fname = fname.split('\\');
		$.form.intervals[key].realFileName = fname[fname.length-1];
		$.form.intervals[key].key = key;
		$.form.intervals[key].bar = bar;
		$.form.intervals[key].span = span;
		$($.form.intervals[key].span).attr("uploaded",0);
		$.form.intervals[key].onStart($.form.intervals[key]);
		$.form.intervals[key].interval = setInterval('$.form.uploadProgress("'+key+'")',1000);
	},
	uploadProgress: function(key){
		$.ajax({
			error:function(XMLHttpRequest, textStatus, errorThrown) {},
			start:function(){},
			beforeSend:function ( request ) {
				if (this.data != null){
					if (this.data.length == 0) 
						this.data = "currentLogin="+currentUserLogin+"&currentPassword="+currentUserPassword;
					else 
						this.data += "&currentLogin="+currentUserLogin+"&currentPassword="+currentUserPassword;
				}
			},
			url:$.form.intervals[key].progress,
			data:{
				'X-Progress-ID':key
			},
			complete:function(){ core.buttons(); },
			dataType:'html',
			type:'get',
			success:function(data){
				data = $.parseJSON(data);
				if (data.state == 'uploading')
				{
					var total = data.size;
					var bytes = data.received;
					var percents = Math.round(bytes * 100 / total);
					$.form.intervals[key].size = total;
					$($.form.intervals[key].span).children('.uploadedFileDetailInfo').html("<b>"+percents+"%</b>, <i>загружено</i> <b>"+$.form.fsize(bytes)+"</b> <i>из</i> <b>"+$.form.fsize(total)+"</b>");
					$.form.intervals[key].bar.progressbar('value',percents);
				}
				if (data.result == -1 )
					$.form.intervals[key].size = data.size;
				if (data.result == 0)
				{
					$.form.intervals[key].size = data.size;
					if ($($.form.intervals[key].span).attr("uploaded") == 0)
						$($.form.intervals[key].span).html("Сервер не поддерживает отображение процесса загрузки. Подождите завершения загрузки файла...");
				}

				$($.form.intervals[key].span).slideDown();
		}});
	},
	uploadCompleteAfterTimer:function(key){
		if ($.form.intervals[key].realFileName == null ) return;
		clearInterval($.form.intervals[key].interval);
		var size = "false";
		if ($.form.intervals[key].size != null) size = $.form.intervals[key].size;
		var extension = $.form.intervals[key].realFileName.split(".");
		var serverFileName = $.form.str_replace('%real%',$.form.intervals[key].realFileName,$.form.intervals[key].serverFileName);
		serverFileName = $.form.str_replace('%extension%',extension[extension.length - 1],serverFileName);
		var value = $.form.intervals[key].directory+"/"+serverFileName;
		$("input[key="+key+"][name="+$.form.intervals[key].name+"_path]").attr("value",value);
		$("input[key="+key+"][name="+$.form.intervals[key].name+"_isUploaded]").attr("value",1);
		$("input[key="+key+"][name="+$.form.intervals[key].name+"_size]").attr("value",size);
		$("input[key="+key+"][name="+$.form.intervals[key].name+"_serverFileName]").attr("value",serverFileName);
		$($.form.intervals[key].span).attr("uploaded",1);
		$("#submit_"+key).remove();
		$(".uploadDescr[key="+key+"]").html("Загрузка завершена!!!");
		var opt = {
			path:value,
			size:size,
			name:$.form.intervals[key].realFileName
		};
		$.form.intervals[key].onComplete(opt);
		if ($(".customField").length > 0)
	   		core.customFieldChanged($(".customField").eq(0));
	},
	uploadComplete:function(key){
			setTimeout("$.form.uploadCompleteAfterTimer('"+key+"')",500);
	},
	intervals:{},
	"fsize":function(x) {
		x = Math.round(x / 1024);
		if (x < 1000) {
			return x + " " + "Кб";
		}
		x = Math.round(x * 100 / 1024) / 100;
		return x + " " + "Мб";
	},
	"speeds":function (x) {
		x = Math.round(x / 1024);
		if (x < 1000) {
			return x + " " + "Кб/сек";
		}
		x = Math.round(x * 100 / 1024) / 100;
		return x + " " + "Мб/сек";
	},
	"str_replace":function (search, replace, subject, count) {
		var i = 0, j = 0, temp = '', repl = '', sl = 0, fl = 0,
				f = [].concat(search),
				r = [].concat(replace),
				s = subject,
				ra = r instanceof Array, sa = s instanceof Array;
		s = [].concat(s);
		if (count) {
			this.window[count] = 0;
		}

		for (i=0, sl=s.length; i < sl; i++) {
			if (s[i] === '') {
				continue;
			}
			for (j=0, fl=f.length; j < fl; j++) {
				temp = s[i]+'';
				repl = ra ? (r[j] !== undefined ? r[j] : '') : r[0];
				s[i] = (temp).split(f[j]).join(repl);
				if (count && s[i] !== temp) {
					this.window[count] += (temp.length-s[i].length)/f[j].length;}
			}
		}
		return sa ? s : s[0];
	},
	
	error:function(form,message){
		$("div."+form).addClass("formError").removeClass("formOk").html("<img src='/images/jAlerts/important.gif' align=left style='padding-right:2px;'>"+message).show();
		setTimeout("$('div."+form+"').slideUp()",5000);
	},
	ok:function(form,message){
		$("div."+form).removeClass("formError").addClass("formOk").html("<img src='/images/jAlerts/info.gif' align=left style='padding-right:2px;'>"+message).show();
		setTimeout("$('div."+form+"').slideUp()",5000);
	}
}

var ru2en = {
  ru_str : "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя",
  en_str : ['A','B','V','G','D','E','JO','ZH','Z','I','J','K','L','M','N','O','P','R','S','T',
	'U','F','H','C','CH','SH','SHH',String.fromCharCode(35),'I',String.fromCharCode(39),'JE','JU',
	'JA','a','b','v','g','d','e','jo','zh','z','i','j','k','l','m','n','o','p','r','s','t','u','f',
	'h','c','ch','sh','shh',String.fromCharCode(35),'i',String.fromCharCode(39),'je','ju','ja'],
  translit : function(org_str) {
	var tmp_str = "";
	for(var i = 0, l = org_str.length; i < l; i++) {
	  var s = org_str.charAt(i), n = this.ru_str.indexOf(s);
	  if(n >= 0) {tmp_str += this.en_str[n];}
	  else {tmp_str += s;}
	}
	return tmp_str;
  }
}




function Get_Cookie( check_name ) {
	var a_all_cookies = document.cookie.split( ';' );
	var a_temp_cookie = '';
	var cookie_name = '';
	var cookie_value = '';
	var b_cookie_found = false;
	var i = '';
	
	for ( i = 0; i < a_all_cookies.length; i++ )
	{
		a_temp_cookie = a_all_cookies[i].split( '=' );
		cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');

		if ( cookie_name == check_name )
		{
			b_cookie_found = true;

			if ( a_temp_cookie.length > 1 )
			{
				cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
			}

			return cookie_value;
			break;
		}
		a_temp_cookie = null;
		cookie_name = '';
	}
	if ( !b_cookie_found ) 
	{
		return null;
	}
}

function Set_Cookie( name, value, expires, path, domain, secure ) {
	
	var today = new Date();
	today.setTime( today.getTime() );

	if ( expires )
	{
		expires = expires * 1000 * 60 * 60 * 24;
	}

	var expires_date = new Date( today.getTime() + (expires) );

	document.cookie = name + "=" +escape( value ) +
		( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + //expires.toGMTString()
		( ( path ) ? ";path=" + path : "" ) + 
		( ( domain ) ? ";domain=" + domain : "" ) +
		( ( secure ) ? ";secure" : "" );
}

function Delete_Cookie( name, path, domain ) {
	if ( Get_Cookie( name ) ) document.cookie = name + "=" +
			( ( path ) ? ";path=" + path : "") +
			( ( domain ) ? ";domain=" + domain : "" ) +
			";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}


/* Russian (UTF-8) initialisation for the jQuery UI date picker plugin. */
/* Written by Andrew Stromnov (stromnov@gmail.com). */
jQuery(function($){
	$.datepicker.regional['ru'] = {
		closeText: 'Закрыть',
		prevText: '&#x3c;Пред',
		nextText: 'След&#x3e;',
		currentText: 'Сегодня',
		monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь',
		'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
		monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн',
		'Июл','Авг','Сен','Окт','Ноя','Дек'],
		dayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'],
		dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'],
		dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],
		weekHeader: 'Нед',
		dateFormat: 'yy-mm-dd',
		firstDay: 1,
		isRTL: false,
		showMonthAfterYear: false,
		yearSuffix: ''};
	$.datepicker.setDefaults($.datepicker.regional['ru']);
});


//placeholder
(function($){
	
	var ph = "PLACEHOLDER-INPUT";
	var phl = "PLACEHOLDER-LABEL";
	var boundEvents = false;
	var default_options = {
		labelClass: 'placeholder'
	};
	
	//check for native support for placeholder attribute, if so stub methods and return
	var input = document.createElement("input");
	if ('placeholder' in input) {
		$.fn.placeholder = $.fn.unplaceholder = function(){}; //empty function
		delete input; //cleanup IE memory
		return;
	};
	delete input;

	$.fn.placeholder = function(options) {
		bindEvents();

		var opts = $.extend(default_options, options)

		this.each(function(){
			var rnd=Math.random().toString(32).replace(/\./,'')
				,input=$(this)
				,label=$('<label style="position:absolute;display:none;top:0;left:0;"></label>');

			if (!input.attr('placeholder') || input.data(ph) === ph) return; //already watermarked

			//make sure the input tag has an ID assigned, if not, assign one.
			if (!input.attr('id')) input.attr('id', 'input_' + rnd);

			label	.attr('id',input.attr('id') + "_placeholder")
					.data(ph, '#' + input.attr('id'))	//reference to the input tag
					.attr('for',input.attr('id'))
					.addClass(opts.labelClass)
					.addClass(opts.labelClass + '-for-' + this.tagName.toLowerCase()) //ex: watermark-for-textarea
					.addClass(phl)
					.text(input.attr('placeholder'));

			input
				.data(phl, '#' + label.attr('id'))	//set a reference to the label
				.data(ph,ph)		//set that the field is watermarked
				.addClass(ph)		//add the watermark class
				.after(label);		//add the label field to the page

			//setup overlay
			itemIn.call(this);
			itemOut.call(this);
		});
	};

	$.fn.unplaceholder = function(){
		this.each(function(){
			var	input=$(this),
				label=$(input.data(phl));

			if (input.data(ph) !== ph) return;
				
			label.remove();
			input.removeData(ph).removeData(phl).removeClass(ph);
		});
	};


	function bindEvents() {
		if (boundEvents) return;

		//prepare live bindings if not already done.
		$('.' + ph)
			.live('click',itemIn)
			.live('focusin',itemIn)
			.live('focusout',itemOut);
		bound = true;

		boundEvents = true;
	};

	function itemIn() {
		var input = $(this)
			,label = $(input.data(phl));

		label.css('display', 'none');
	};

	function itemOut() {
		var that = this;
		//use timeout to let other validators/formatters directly bound to blur/focusout work first
		setTimeout(function(){
			var input = $(that);
			$(input.data(phl))
				.css('top', input.position().top + 'px')
				.css('left', input.position().left + 'px')
				.css('display', !!input.attr("value") ? 'none' : 'block');
		}, 200);
	};

}(jQuery));
