var media=0;
var media=0;
var needSearchresult=0;
var globalTabNum = 0;
var eventPlacesInited = false;
var friendsInited = false;
var hiddener="#hiddener1";
var questionary_state = 'question';
var questionary_length = 0;
var question_number = 0;
var static_event_id = 0;
var metroCount = 0;
var trusteeByMail = {};
var Search = {};
var iLayerTimer;
var iLayerDelay = 500;
var noFurtherValidationFixInJQ141  = false;
var eventSummaryToDo = false;

(function($) {
	
	
	var pasteEventName = ($.browser.msie ? 'paste' : 'input') + ".mask";
	var iPhone = (window.orientation != undefined);

	$.mask = {
		//Predefined character definitions
		definitions: {
			'9': "[0-9]",
			'a': "[A-Za-z]",
			'*': "[A-Za-z0-9]"
		}
	};

	$.fn.extend({
		//Helper Function for Caret positioning
		caret: function(begin, end) {
			if (this.length == 0) return;
			if (typeof begin == 'number') {
				end = (typeof end == 'number') ? end : begin;
				return this.each(function() {
					if (this.setSelectionRange) {
						this.focus();
						this.setSelectionRange(begin, end);
					} else if (this.createTextRange) {
						var range = this.createTextRange();
						range.collapse(true);
						range.moveEnd('character', end);
						range.moveStart('character', begin);
						range.select();
					}
				});
			} else {
				if (this[0].setSelectionRange) {
					begin = this[0].selectionStart;
					end = this[0].selectionEnd;
				} else if (document.selection && document.selection.createRange) {
					var range = document.selection.createRange();
					begin = 0 - range.duplicate().moveStart('character', -100000);
					end = begin + range.text.length;
				}
				return { begin: begin, end: end };
			}
		},
		unmask: function() { return this.trigger("unmask"); },
		mask: function(mask, settings) {
			if (!mask && this.length > 0) {
				var input = $(this[0]);
				var tests = input.data("tests");
				return $.map(input.data("buffer"), function(c, i) {
					return tests[i] ? c : null;
				}).join('');
			}
			settings = $.extend({
				placeholder: "_",
				completed: null
			}, settings);

			var defs = $.mask.definitions;
			var tests = [];
			var partialPosition = mask.length;
			var firstNonMaskPos = null;
			var len = mask.length;

			$.each(mask.split(""), function(i, c) {
				if (c == '?') {
					len--;
					partialPosition = i;
				} else if (defs[c]) {
					tests.push(new RegExp(defs[c]));
					if(firstNonMaskPos==null)
						firstNonMaskPos =  tests.length - 1;
				} else {
					tests.push(null);
				}
			});

			return this.each(function() {
				var input = $(this);
				var buffer = $.map(mask.split(""), function(c, i) { if (c != '?') return defs[c] ? settings.placeholder : c });
				var ignore = false;  			//Variable for ignoring control keys
				var focusText = input.val();

				input.data("buffer", buffer).data("tests", tests);

				function seekNext(pos) {
					while (++pos <= len && !tests[pos]);
					return pos;
				};

				function shiftL(pos) {
					while (!tests[pos] && --pos >= 0);
					for (var i = pos; i < len; i++) {
						if (tests[i]) {
							buffer[i] = settings.placeholder;
							var j = seekNext(i);
							if (j < len && tests[i].test(buffer[j])) {
								buffer[i] = buffer[j];
							} else
								break;
						}
					}
					writeBuffer();
					input.caret(Math.max(firstNonMaskPos, pos));
				};

				function shiftR(pos) {
					for (var i = pos, c = settings.placeholder; i < len; i++) {
						if (tests[i]) {
							var j = seekNext(i);
							var t = buffer[i];
							buffer[i] = c;
							if (j < len && tests[j].test(t))
								c = t;
							else
								break;
						}
					}
				};

				function keydownEvent(e) {
					var pos = $(this).caret();
					var k = e.keyCode;
					ignore = (k < 16 || (k > 16 && k < 32) || (k > 32 && k < 41));

					//delete selection before proceeding
					if ((pos.begin - pos.end) != 0 && (!ignore || k == 8 || k == 46))
						clearBuffer(pos.begin, pos.end);

					//backspace, delete, and escape get special treatment
					if (k == 8 || k == 46 || (iPhone && k == 127)) {//backspace/delete
						shiftL(pos.begin + (k == 46 ? 0 : -1));
						return false;
					} else if (k == 27) {//escape
						input.val(focusText);
						input.caret(0, checkVal());
						return false;
					}
				};

				function keypressEvent(e) {
					if (ignore) {
						ignore = false;
						//Fixes Mac FF bug on backspace
						return (e.keyCode == 8) ? false : null;
					}
					e = e || window.event;
					var k = e.charCode || e.keyCode || e.which;
					var pos = $(this).caret();

					if (e.ctrlKey || e.altKey || e.metaKey) {//Ignore
						return true;
					} else if ((k >= 32 && k <= 125) || k > 186) {//typeable characters
						var p = seekNext(pos.begin - 1);
						if (p < len) {
							var c = String.fromCharCode(k);
							if (tests[p].test(c)) {
								shiftR(p);
								buffer[p] = c;
								writeBuffer();
								var next = seekNext(p);
								$(this).caret(next);
								if (settings.completed && next == len)
									settings.completed.call(input);
							}
						}
					}
					return false;
				};

				function clearBuffer(start, end) {
					for (var i = start; i < end && i < len; i++) {
						if (tests[i])
							buffer[i] = settings.placeholder;
					}
				};

				function writeBuffer() { return input.val(buffer.join('')).val(); };

				function checkVal(allow) {
					//try to place characters where they belong
					var test = input.val();
					var lastMatch = -1;
					for (var i = 0, pos = 0; i < len; i++) {
						if (tests[i]) {
							buffer[i] = settings.placeholder;
							while (pos++ < test.length) {
								var c = test.charAt(pos - 1);
								if (tests[i].test(c)) {
									buffer[i] = c;
									lastMatch = i;
									break;
								}
							}
							if (pos > test.length)
								break;
						} else if (buffer[i] == test[pos] && i!=partialPosition) {
							pos++;
							lastMatch = i;
						} 
					}
					if (!allow && lastMatch + 1 < partialPosition) {
						input.val("");
						clearBuffer(0, len);
					} else if (allow || lastMatch + 1 >= partialPosition) {
						writeBuffer();
						if (!allow) input.val(input.val().substring(0, lastMatch + 1));
					}
					return (partialPosition ? i : firstNonMaskPos);
				};

				if (!input.attr("readonly"))
					input
					.one("unmask", function() {
						input
							.unbind(".mask")
							.removeData("buffer")
							.removeData("tests");
					})
					.bind("focus.mask", function() {
						focusText = input.val();
						var pos = checkVal();
						writeBuffer();
						setTimeout(function() {
							if (pos == mask.length)
								input.caret(0, pos);
							else
								input.caret(pos);
						}, 0);
					})
					.bind("blur.mask", function() {
						checkVal();
						if (input.val() != focusText)
							input.change();
					})
					.bind("keydown.mask", keydownEvent)
					.bind("keypress.mask", keypressEvent)
					.bind(pasteEventName, function() {
						setTimeout(function() { input.caret(checkVal(true)); }, 0);
					});

				checkVal(); //Perform initial check for existing values
			});
		}
	});
})(jQuery);

function addOption (oListbox, text, value, isDefaultSelected, isSelected)
{
	if (oListbox != null)
	{
	  var oOption = document.createElement("option");
	  oOption.appendChild(document.createTextNode(text));
	  oOption.setAttribute("value", value);
	
	  if (isDefaultSelected) oOption.defaultSelected = true;
	  else if (isSelected) oOption.selected = true;
	
	  oListbox.appendChild(oOption);
	}
}

function clearSelect(oListbox){
	if (oListbox != null){
		for (var i=oListbox.options.length-1; i >= 0; i--){
			oListbox.remove(i);
		}
	}
}

function initAjaxLocations(){
$( function($){
	$("select#country").change(function(){
		if ($(this).val() == 0){
			$("select#region").val(0);
			$("select#region").attr('disabled','disabled');
			$("select#city").val(0);
			$("select#city").attr('disabled','disabled');
		}else{			
			var value = $(this).val();
			$.ajax({
				type: "GET",
				url: "/ajax.locations/",
				dataType: "text/plain",
				data: "id="+value+"&type=country",				
				success: function(response){
					try{
						var j = JSONToArray(response);	
						var bRegions = false;
						var bCities = false;
						var bSubway = false;						
						var objSelRegion = document.getElementById("region");
						var objSelCities = document.getElementById("city");						
						clearSelect(objSelRegion);
						addOption(objSelRegion, "Не указывать", 0, true, true);						
						clearSelect(objSelCities);
						addOption(objSelCities, "Не указывать", 0, true, true);
						
						for (var i in j) {
							if(j[i].regValue != undefined){
								addOption(objSelRegion, j[i].regName, j[i].regValue,false,false);
								bRegions = true;							
							}
							if(j[i].cityValue != undefined){
								addOption(objSelCities, j[i].cityName, j[i].cityValue,false,false);
								bCities = true;						
							}
						}		
						if (bRegions) {					
							$("select#region").removeAttr('disabled');
							$("select#region").val(0);
						} else {
							$("select#region").attr('disabled','disabled');
						}
						
						if (bCities) {
							$("#subway-row-search").show();
							$("select#city").removeAttr('disabled');
							$("select#city").val(0);
						} else {
							$("select#city").attr('disabled','disabled');
						}
						
						if ($("select#subway_id")){
							var objSelSubWay = document.getElementById("subway_id");
							clearSelect(objSelSubWay);
							addOption(objSelSubWay, "Любое", 0, true, true);
							$("select#subway_id").attr('disabled','disabled');
							$("#subway-row-search").hide();
						}
					}catch(Exception){}	
				}
			});
		}
	});  
	
	$("select#region").change(function(){		  	
		if ($(this).val() == 0){
			$("select#city").val(0);
			$("select#city").attr('disabled','disabled');
		}
		else{				
			var value = $(this).val();
			$.ajax({
				type: "GET",
				url: "/ajax.locations/",
				dataType: "text/plain",
				data: "id="+value+"&type=region",
				success: function(response){
					try{
						var j = JSONToArray(response);				
						var objSelCities = document.getElementById("city");
						var objSelSubWay = document.getElementById("subway_id");
						
						clearSelect(objSelCities);
						addOption(objSelCities, "Не указывать", 0, true, true);				
						
						if (j){
							var bCities = false;
							var bSubway = false;
							for (var i in j) {
								if(j[i].cityValue != undefined){
									addOption(objSelCities, j[i].cityName, j[i].cityValue,false,false);
									bCities = true;
								}
							}						
		
							if (bCities) {
								$("#subway-row-search").show();
								$("select#city").removeAttr('disabled');
								$("select#city").val(0);
							}
							else {
								$("select#city").attr('disabled','disabled');
								$("#subway-row-search").hide();
							}
							if ($("select#subway_id")){
								clearSelect(objSelSubWay);
								addOption(objSelSubWay, 'Любое', 0, true, true);
								$("select#subway_id").attr('disabled','disabled');
								$("#subway-row-search").hide();
							}
						} else {				
							$("select#city").attr('disabled','disabled');
							$("#subway-row-search").hide();
						}
					}catch(Exception){}	
				}
			});
		}
	});

	$("select#city").change(function(){		
		if (!$("select#subway_id")) return false;
		var value = $(this).val();
		$.ajax({
			type: "GET",
			url: "/ajax.locations/",
			dataType: "text/plain",
			data: "id="+value+"&type=city",
			success: function(response){				
				try{
					var j = JSONToArray(response);				
					var objSelSubWay = document.getElementById("subway_id");
					clearSelect(objSelSubWay);
					metroCount =  0;
					var selected = true;
					for (var i in j) {
						addOption(objSelSubWay, j[i].metroName, j[i].metroValue, selected, selected);
						selected = false;
						metroCount++;
					}
					
					if (metroCount>1){
						$("#subway-row-search").show();
						$("select#subway_id").removeAttr('disabled');
						$("select#subway_id").val(0);
					}
					else {
						$("select#subway_id").attr('disabled','disabled');
						$("#subway-row-search").hide();
					}
				}catch(Exception){}	
			}			
		})
	});

	$("form#search").submit(function(){
		$("select#region").removeAttr('disabled');
		$("select#city").removeAttr('disabled');    			  
	});
	
	if ($("select#subway_id").attr('disabled') != false){
		$("#subway-row-search").hide();
	}else $("#subway-row-search").show();
});	
}

function initInfoFormAjax()
{
	$(document).ready(function()
	{
	  	var options = 
	  	{ 
	    		// элемент, который будет обновлен по ответу сервера 
	  		target: "#output",
		    	beforeSubmit: showRequest, // функция, вызываемая перед передачей 
	    		success: showResponse, // функция, вызываемая при получении ответа
	    		timeout: 3000 // тайм-аут
	  	};
	  
	  	// привязываем событие submit к форме
	  	$('#edit-info-form').submit(function() 
	  	{ 
	    		$(this).ajaxSubmit(options); 
	    		return false;
	  	}); 
	});
}

// вызов перед передачей данных
function showRequest(formData, jqForm, options) 
{ 
    // formData - массив; здесь используется $.param чтобы преобразовать его в строку для вывода в alert(),
    // (только в демонстрационных целях), но в самом плагине jQuery Form это совершается автоматически.
    var queryString = $.param(formData); 
    // jqForm это jQuery объект, содержащий элементы формы.
    // var formElement = jqForm[0]; 
    //alert('Вот что мы передаем: \n\n' + queryString); 
    return true; 
} 
 
// вызов после получения ответа 
function showResponse(responseText, statusText) { 
 	$('#edit-info-link').show();
}
		  	
function initMediaControls(){
    $('a[rel=list-delete-confirm]').unbind('click');
    $('a[rel=list-delete-confirm]').bind('click', function(){
        var button = this;
        var buttons = [{label:"OK", click:function(){
            $.get($(button).attr('href'), {ask_confirm:'true', mute:'1'}, function(){
                $("a",$(button).parent().parent().parent().parent()).attr("href","javascript:void(0)");
                $(button).replaceWith('<div class="perform-box">' + $(button).attr('success') + '</div>');
                cd.close();
            });
        }}, 
        {label:"Отмена", click:function(){cd.close();}, style:'form-button-2'}];
        var cd = new ConfirmDialog('Подтверждение действия', $(this).attr('ask'), buttons);
        return false;
    });		
    $('.list-paging a').click(function(){
    	$.post($(this).attr('href'),{},function(data){
    	   $("#media-comments-container").html(data);
    	   initMediaControls();		
    	   initMediaCommentsFormAjax();		
    	});
    	return false;
    });				
}
		
// для комментов видео
function initMediaCommentsFormAjax()
{	
  	var options1 = { 
    	// элемент, который будет обновлен по ответу сервера 
  		target: "#media-comments-container",
	    beforeSubmit: showVCRequest, // функция, вызываемая перед передачей 
    	success: showVCResponse, // функция, вызываемая при получении ответа
    	timeout: 3000 // тайм-аут
  	};
  
  	// привязываем событие submit к форме
  	$('#add-media-comments-form').submit(function() { 	  		
  		if ($("textarea[name=body]").attr('empty')!='1')
    		$(this).ajaxSubmit(options1);
    		return false;
  	}); 
  	initMediaControls();
}
function showVCRequest(formData, jqForm, options) 
{ 
//	if (!$('#comment[lbody]').val())
	if (!formData[4].value) 
	{
		AlertDialog('Произошла ошибка', 'Вы не ввели текст комментария!');
		return false;
	}
	if (formData[4].value.length > 255)
	{
		AlertDialog('Произошла ошибка', 'Текст комментария не должен быть больше 255 символов!');
		return false;		
	}
	/*
	var test = formData[4].value.split(String.fromCharCode(10));
	var pe = false;
	for (var i in test){
		if (test[i].length > 50){
			pe = true;
			break;
		}
	}
	
	var test = formData[4].value.split(' ');
	for (var i in test){
		if (test[i].length > 50){
			if (pe){
			AlertDialog('Произошла ошибка', 'Длина слова не должна превышать 50 символов!');
			return false;		
			}
		}
	}	
*///    var queryString = $.param(formData); 
//    alert('Вот что мы передаем: \n\n' + queryString); 
    return true; 
}  
function showVCResponse(responseText, statusText)  
{ 
// 	alert(responseText);
 	initMediaCommentsFormAjax(); 	
}



initAjaxLocations();

function doAdminUploadEventPlaceAvatar(id)
{
	
   $('#upload1').upload({
           name: 'file',
           method: 'post',
           enctype: 'multipart/form-data',
           action: '/admin.place.info.avatar.upload/?id='+id,
           onSubmit: function() {
           	
                   ///$('#upload1').hide();
                   $('#progress1').text('Отправка файла...');
           },
           onComplete: function(data) {           		           	
           	if (!data)
           	{
           		$('#progress1').text('Аватар не изменён');
           	}
           		else
           	{
                  $('#event-place-avatar').attr("src",data);
                  $('#progress1').text('Аватар изменён');
           	}
          }
  });
}


function pluralNumber(count, arg0, arg1, arg2, arg3) 
{
    var result = arg0;
    var last_digit = count % 10;
    var last_two_digits = count % 100;
    if (last_digit == 1 && last_two_digits != 11) result += arg1;
    else if ((last_digit == 2 && last_two_digits != 12)
    || (last_digit == 3 && last_two_digits != 13)
    || (last_digit == 4 && last_two_digits != 14))
        result += arg2;
    else
        result += arg3;
    return result;
}

function congratulationsOfCreatingNewEvent(event_id)
{    
    var buttons = [{label:'Да', click:function(){location="/event.edit/?id="+event_id;}}, {label:'Нет', click:function(){cd.close();}, style:'form-button-2'}];
    var cd = new ConfirmDialog("Поздравляем, Ваше мероприятие создано!", 'Воспользуйтесь разделом Настройки, чтобы сделать Ваше мероприятие более качественным и информативным. Хотите сделать это сейчас?', buttons);
    return false;    
}

function trim(value)
{
  	value = value.replace( /^\s+/g, '');
	return value.replace( /\s+$/g, '');
}


Search.init = function(sLabel) {
	$( function($) {
		$('#search_form').submit( function() {
			Search.submit();
		});

		$("#search_form").keypress( function(e) {
			if (e.which == 13) {
				$('#search_form').submit();
			}
		});

		$('#search_type').change( function() {
			Search.trigger(this.value);
		});

		$('#search_data').click( function() {
			$(this).attr('value', '');
			$(this).css( {
				'color' :'#000'
			});
		});
		Search.trigger(sLabel);
	});
}

Search.submit = function() {
	$( function($) {
		var oSearchData = $('#search_data');		
		if (oSearchData.val() == 'Поиск') {
			oSearchData.val('');
		}
	});
}

Search.decorateLabel = function(sLabel, sStatus) {
	$( function($) {
		var oLabel = $('#' + sLabel);

		if (sStatus == 'active') {
			oLabel.attr('class', '');
			oLabel.css( {
				'cursor' :'default',
				'text-decoration' :'none',
				'color' :'#000',
				'font-weight' :'bold'
			});
		} else {
			oLabel.attr('class', 'sys');
			oLabel.css( {
				'cursor' :'',
				'text-decoration' :'',
				'color' :'',
				'font-weight' :''
			});
		}
	});
}

Search.trigger = function(sLabel) {
	$( function($) {
		if (sLabel == 'users') {
			$('#search_link').attr('href', '/search.users/?type=users&adv=1');
			$('#search_form').attr('action', '/search.users/');
			$('#search_data').val('Поиск');
			$('#search_data').css({'color' :'#999'});
			Search.decorateLabel('search_label_events', 'inactive');
			Search.decorateLabel('search_label_users', 'active');
		}
		else if (sLabel == 'events') {
			$('#search_link').attr('href', '/search.events/?type=events&adv=1');
			$('#search_form').attr('action', '/search.events/');
//			$('#search_type').val('events');
			$('#search_data').val('Поиск');
			$('#search_data').css({'color' :'#999'});
			Search.decorateLabel('search_label_users', 'inactive');
			Search.decorateLabel('search_label_events', 'active');
		}
		else if (sLabel == 'places') {
			$('#search_link').attr('href', '/search.places/?type=places&adv=1');
			$('#search_form').attr('action', '/search.places/');
			$('#search_data').val('Поиск');
			$('#search_data').css({'color' :'#999'});
			Search.decorateLabel('search_label_users', 'inactive');
			Search.decorateLabel('search_label_events', 'active');
		}
	});
}

function loadResult(block_id, event_id){
	var date = new Date();
	var version = date.getMilliseconds() + date.getMinutes();
	
	$.post('/prefs.result.ajax/?event_id='+event_id+'&ver='+version,
		{},
		function(data){
			$('#'+block_id).html(data);
			//192 - short
			//370 - wide
			if ($("#summary-questionary").width() > 300){
				$("a#wide-form-link").show();
				$("a#short-form-link").hide();
			} else {
				$("a#wide-form-link").hide();
				$("a#short-form-link").show();
			}
		}
	);		
}

function loadQuestionary(block_id, event_id, length, state){
	if(length > questionary_length) questionary_length = length;
	if(state != 'question' && state != 'thanx') state = questionaryGetState();
	number = questionaryGetQuestionNumber();
	static_event_id = event_id;
	var date = new Date();
	var version = date.getMilliseconds() + date.getMinutes();	
	switch (state) {
		case 'question' :
			$.post('/prefs.questions.ajax/?number=' + number + '&event_id='+event_id+'&ver='+version,
				{},
				function(data){
					$('#'+block_id).html(data);
			if ($("#summary-questionary").width() > 300){
				$("a#wide-form-link").show();
				$("a#short-form-link").hide();
			} else {
				$("a#wide-form-link").hide();
				$("a#short-form-link").show();
			}
					
				}
			);
			break;
		case 'thanx' :			
			loadResult(block_id, event_id);
			break;
	}
}
function questionaryIncrementQuestionNumber(){
	question_number++;
}
function questionaryGetState(){
	if(question_number >= questionary_length) 
		questionary_state = 'thanx';
	return questionary_state;
}
function questionaryGetQuestionNumber(){
	return question_number;
}

function questionaryRestart(){
	block_id = 'summary-questionary';
	questionary_state = 'question';
	question_number = 0;
	loadQuestionary(block_id, static_event_id, 0, '');
}
function questionaryPass(form_id){
	block_id = 'summary-questionary';	
	event_id = $("form#" + form_id + " input[name='event_id']").attr("value");
	questionaryIncrementQuestionNumber();
	loadQuestionary(block_id, event_id, 0, '');
}

function setQuestionaryAnswer(form_id){
	var block_id = 'summary-questionary';	
	$('#questionary-submit-button').html('Ответ обрабатывается.');	
	var date = new Date();
	var version = date.getMilliseconds() + date.getMinutes();	
	var event_id = $("form#" + form_id + " input[name='event_id']").attr("value");

	$.post("/prefs.setanswer.ajax/",
		$("form#" + form_id + "").serializeArray(),
		function(data){
			questionaryIncrementQuestionNumber();
			loadQuestionary(block_id, event_id, 0, '');
		}
	);
	return false;
}

function loadContactsList(event_id, page){	
	var date = new Date();
	var version = date.getMilliseconds() + date.getMinutes();	
	$.post('/ajax.event.contactslist/?page='+page+'&event_id='+event_id+'&ver='+version+'&session-key='+$("#session-key").val(),
		{},
		function(data){
			$('#contacts-list').html(data);
		}
	);
}

function appointTrustee(event_id, user_id, id){	
	var date = new Date();
	var version = date.getMilliseconds() + date.getMinutes();	
	$.post('/ajax.appoint.trustee/?user_id='+user_id+'&event_id='+event_id+'&ver='+version+'&id='+id+'&session-key='+$("#session-key").val(),
		{},
		function(data){
			loadContactsList(event_id, 1);
			loadTrusteeList(event_id, id);
		}
	);				
}

function loadTrusteeList(event_id, id){		
	var date = new Date();
	var version = date.getMilliseconds() + date.getMinutes();
	$.post('/ajax.event.trusteelist/?id='+event_id+'&item='+id+'&ver='+version+'&session-key='+$("#session-key").val(),
		{},
		function(data){
			$('#trustee-list').html(data);
		}
	);
}

function ajaxEventInviteTrustee(form_id){	
	var date = new Date();
	var version = date.getMilliseconds() + date.getMinutes();	
	$(function(){
	    
		element_name_first = $("div.cdlg-window input#trustee-name-first");		
		element_name_last = $("div.cdlg-window input#trustee-name-last");
		element_email = $("div.cdlg-window input#trustee-email");
		event_id = $("#event_id").attr("value");
		if(element_name_first.attr("value") == ''){ 
			$("div.cdlg-window #invite-output").html('<font color="red">Заполните поле "Имя"</font>');
			return false;
		}
		
		if(element_email.attr("value") == '') {		    
			$("div.cdlg-window #invite-output").html('<font color="red">Заполните поле "Электронная почта"</font>');
			return false;
		}
		reg = new RegExp("^[_a-z0-9\-\.]+@[a-z0-9\-\.]+\.[a-z]{2,3}$","i");
		if(reg.exec(element_email.attr("value")) == null){
			$("div.cdlg-window #invite-output").html('<font color="red">Неверное значение в поле "Электронная почта"</font>');
			return false;
		}
		trusteeByMail[element_email.attr("value")] = {name_first : element_name_first.attr("value"), name_last : element_name_last.attr("value"), email : element_email.attr("value")};
		displayTrustees();		
		$("div.cdlg-window #invite-output").html(' ');
		UIDialog.hide();
	});
}

function showsubmenu() {
	$('#submenuStaff').show();
	$('#head-tab-separator-ideas img').hide();
	$('#head-tab-separator-ideas').css({'border-left':'1px solid #c7c9cb', 'width':'1px'});
	document.getElementById('head-tab-staff').className='current';
}	
	
function hidesubmenu() {
	$('#submenuStaff').hide();
	$('#head-tab-staff').removeClass('current');
	$('#head-tab-separator-ideas').css({'border-left':'0', 'width':'2px'});
	$('#head-tab-separator-ideas img').show();
}

function formatPhone(raw, mask)
{
	var res = "";
	var i = 0;
	for(var ind in mask)
	{
		for (var b=0;b<mask[ind]; b++)
		{
			if (i<raw.length){
				res = res + raw.charAt(i);
				i++;
			}
		}
		if (i<raw.length)
		{
			if (ind > 1)
				res = res + "-";
			else
				res = res + " ";
		}
	}	
	
	if (res.charAt(res.length-1) == "-")
	{
		var ret = "";
		for (var b=0;b<res.length-1; b++)
		{
			ret = ret + res.charAt(b);
		}
		res = ret;
	}
	return res;
}

function isValidPhone(value)
{
	var raw = getRawPhone(value);
	if (!raw) return true;
	if (raw.charAt(0) == "3")
	{
		if (raw.length != 12) return false;
		var str = raw.charAt(0) + raw.charAt(1) + raw.charAt(2);
		if ((str != "380") && (str != "375"))
		{
			 return false;
		}
		else return true;
	}

	if (raw.charAt(0) == "7")
	{
		if (raw.length != 11) return false; else return true;
	}
	
	return false;
}

function checkPhoneInvalidDialog(value){
	if (!isValidPhone(value)){
	    AlertDialog("Телефонный номер указан некорректно!", "Укажите телефон в формате +7 XXX XXX-XX-XX либо +380 XX XXX-XX-XX либо +375 XX XXX-XX-XX ");
		return false;
	} else return true;	
}

function getRawPhone(value)
{
	if (value == undefined) return;
	if (value.length == 0) return;
	var raw = "";
	for (var i=0;i<value.length;i++)
	{
		if ((value.charCodeAt(i) >= 48) && (value.charCodeAt(i) <= 57))
		{
			raw = raw + value.charAt(i);
		}
	}
	return raw;
}

function getCaretPos(obj)
{
  obj.focus();  
  if(obj.selectionStart) return obj.selectionStart;//Gecko
  else if (document.selection)//IE
  {
    var sel = document.selection.createRange();
    var clone = sel.duplicate();
    sel.collapse(true);
    clone.setEndPoint('EndToEnd', sel);
    return clone.text.length;
  }  
  return 0;
}

function processFormat(k, id)
{	
	if  (((k >= 48 && k <= 57) && (k!=32)&& (k!=109)) || (k==8) || (k==46) || (k ==43)  || (k ==0)  || (k ==32)   || (k ==45) || ((k>=35) && (k<=39)))
	{							
		var value = $("#"+id).val();
		var raw = getRawPhone(value);
		
		if (k == 43){ 
			var p = 0;
			for (var z=0; z<value.length; z++)
			{
				if (value.charAt(z) == '+') p++;
			}
			
			if (p>0)
			{
				return false;
			}
			if (getCaretPos(document.getElementById(id)) != 0) return false;
		}
		
		if (k == 45){ 
			var p = 0;
			for (var z=0; z<value.length; z++)
			{
				if (value.charAt(z) == '-') p++;
			}
			
			if (p==2)
			{
				return false;
			}
		}
		
		if (k == 32){ 
			var p = 0;
			for (var z=0; z<value.length; z++)
			{
				if (value.charAt(z) == '-') p++;
			}
			
			if (p==2)
			{
				return false;
			}
		}
		
		if (raw == undefined) return true;
		
		if  ((!value) || (!raw)) {
			if ((raw.length!=0) || (k!=0))
			$("#"+id).val("+"+raw);
			else $("#"+id).val(raw);
			
			return true;
		}
		
		var firstNumber = raw.charAt(0);
		/*
		// начиная ввод с 9ки добавляется +7
		if (firstNumber == "9"){
			var r = "";
			for(var z=1;z<raw.length;z++)
				r = r+ raw.charAt(z);
			raw = "79"+r;
			firstNumber = "7";
			
		}
		*/
		if (firstNumber == "8"){
			var r = "7";
			for(var z=1;z<raw.length;z++)
				r = r+ raw.charAt(z);
			raw = r;
			firstNumber = "7";
		}
		
		var input = $("#"+id);
		var sp = input.caret();
		
		if ((k == 8) || (k==46) || (k >= 48 && k <= 57)){
			if ((sp.end == value.length) && (sp.begin <1)) return true;
			if (sp.begin <1){
			 	return false;
			}
		}
		
		var mask = {"3":[3,2,3,2,2], "7":[1,3,3,2,2]};
		if ((firstNumber == "3") || (firstNumber == "7")){			
			var len = 0;
			for(var ind in mask[firstNumber])
				len += mask[firstNumber][ind];			
			if (k >= 48 && k <= 57) {
				if (raw.length>=len)
					return false;
			}
			var res = "+"+formatPhone(raw, mask[firstNumber]);			
			$("#"+id).val(res);
			$("#"+id).attr("raw", raw);
			if ((k >= 48) && (k <= 57)){
				if (sp.end != value.length)
				input.caret(sp.begin);
			}
			else input.caret(sp.begin);
		} else {
			var input = $("#"+id);
			var sp = input.caret();
			$("#"+id).attr("raw", raw);			
			$("#"+id).val("+"+raw);
			if ((k >= 48) && (k <= 57)){
				if (sp.end != value.length)
				input.caret(sp.begin);
			}
			else input.caret(sp.begin);
		}
		return true;
	}
	return false;
}

function phoneValidationHandler(e, id)
{
	e = e || window.event;					
	var k = e.charCode || e.keyCode || e.which;
	if (e.ctrlKey || e.altKey || e.metaKey || k==9)  
		return true;
	 else return processFormat(k,id);	
}

function maxLengthOnValidFormat(value)
{
	if (value.charAt(1) == "7"){
		return 16;
	}
	if (value.charAt(1) == "3"){
		return 17;
	}
	return false;
}

function initPhoneValidation(id,showdialog)
{		
	if (typeof id != "string") return false;
	$(document).ready(function(){		
		if (typeof id != "string") return false;
		$("#"+id).keypress(function(e){
			return phoneValidationHandler(e, id);
		});
		
		$("#"+id).change(function(){					
			processFormat(0,id);
		});

		$("#"+id).keyup(function(){					
			if ($(this).val().length == maxLengthOnValidFormat($(this).val())) {
				var mask = {"3":[3,2,3,2,2], "7":[1,3,3,2,2]};
				processFormat(0,id);
				//$(this).val("+"+formatPhone(getRawPhone($(this).val()), mask[$(this).val().charAt(1)]));
			}
		});
		
		$("#"+id).focus(function(){
//			if ($(this).attr("raw") == "") $(this).val("+");
//			if ($(this).val() == "") $(this).val("+");
		});
		$("#"+id).blur(function(){								
			if ($(this).attr("raw") == "+") $(this).val("");
			if ($(this).val() == "+") $(this).val("");
			try{
			if (showdialog) checkPhoneInvalidDialog($(this).val());
			}catch(Exception){}
		});
		processFormat(0,id);
	});
}

function loadJsonUsersList(list, table_id, table_height, paging)
{
	table = $('table#' + table_id);
	if(!table.get(0)) return;
	
	var profile;
	var button;
	for (var item in list)
	{
		profile = '';
		button = '';
		column = (item*1 + 1)/table_height > 1? 2 : 1;
		row = item - (table_height * (column - 1));
		line = $('table#' + table_id + ' td#column-' + column + ' table').get(row);
		if(list[item].profile)
			profile = '<a href="' + list[item].profile + '" class="user">' + list[item].name + '</a>';
		else {
			profile = list[item].name;
		}
		if(list[item].action)
			button = '<div onclick="' + list[item].action + '"><img align="left" src="/img/accept.gif"/> <div style="margin:2px 0px 0px 20px"><a href="JavaScript:void(0)">' + list[item].caption + '</a></div></div>';
		else
			button = list[item].caption;
		$(line).find('td:eq(1)').html(profile);
		$(line).find('td:eq(2)').html(button);
	}
	for(i = list.length; i < table_height*2; i++){
		column = (i*1 + 1)/table_height > 1? 2 : 1;
		row = i - (table_height * (column - 1));
		line = $('table#' + table_id + ' td#column-' + column + ' table').get(row);
		$(line).find('td:eq(1)').html('');
		$(line).find('td:eq(2)').html('');
	}		
	pager_html = getPaging(paging, true);
	$("#table-pager-cells").html(pager_html);
}

function getListPage(list, iCurrent, iPerPage){
	iOffset = (iCurrent > 0 ? iCurrent - 1 : 0) * iPerPage;
	var array_list = new Array();
	for(i = 0; i < iPerPage; i++){
		if(list[i + iOffset]) array_list[i + iOffset] = list[i + iOffset];
	}
	return array_list;
}

function getPagingArray(iTotal, iCurrent, sActionPattern, iPerPage)
{		
	var paging = {};		
	var autoreplace_var = '%%page%%';
	var iStart;
	var iEnd;
	
	var iVisibility = 3;//7 / 2;
	var iPageTotalCount = Math.ceil(iTotal / iPerPage);		
	
	if(iPageTotalCount < 2) return {};
	
	iCurrent 	= iCurrent ? iCurrent : 1;
	iStart 		= iCurrent - iVisibility;
	iStart 		= iStart > 0 ? iStart : 1;
	iEnd 		= iCurrent + iVisibility < iPageTotalCount ? iCurrent + iVisibility : iPageTotalCount;
	iEnd 		= iEnd > 0 ? iEnd : 1;
	
	if(iCurrent > 1) {
		paging['first'] = {
			'number' 	: 'first',
			'current' 	: false,			
			'action' 	: sActionPattern.replace(/%%page%%/, 1) 
		};
		
		paging['prev'] = {
			'number' 	: 'prev',
			'current' 	: false,
			'action' 	: sActionPattern.replace(/%%page%%/, iCurrent * 1 - 1) 
		};
	}
	
	if(iStart > 1) {
		paging['jump_back'] = {
			'number' 	: 'jump_backward',
			'current' 	: false,			
			'action' 	: sActionPattern.replace(/%%page%%/, iStart * 1 - 1) 
		};
	}
	
	for(i = iStart; i <= iEnd; i++) {
		paging[i] = {
			'number' 	: i,
			'current' 	: i == iCurrent? true : false,		
			'action' 	: sActionPattern.replace(/%%page%%/, i * 1) 
		};
	}
	
	if(iEnd < iPageTotalCount) {
		paging['jump_forvard'] = {
			'number' 	: 'jump_forward',
			'current' 	: false,	
			'action' 	: sActionPattern.replace(/%%page%%/, iEnd * 1 + 1) 
		};
	}
	
	if(iCurrent < iPageTotalCount) {
		paging['next'] = {
			'number' 	: 'next',
			'current' 	: false,
			'action' 	: sActionPattern.replace(/%%page%%/, iCurrent * 1 + 1) 
		};
		
		paging['last'] = {
			'number' 	: 'last',
			'current' 	: false,
			'action' 	: sActionPattern.replace(/%%page%%/, iPageTotalCount * 1) 
		};
	}
	
	return paging;
}

function getPaging(paging, cells_only) {
	var pager_html = '';
	if ($(paging).length > 0){
		pager_html = '<td>Страницы: </td>';		
		if(!cells_only) {
			pager_html = '<table cellpadding="0" celspacing="0"><tr>' + pager_html;
		}		
		for (var item in paging) {
			if(paging[item].number == 'last') 
				paging[item].number = '»|';
			
			if(paging[item].number == 'first') 
				paging[item].number = '|«';
			
			if(paging[item].number == 'next') 
				paging[item].number = 'Следующая';
			
			if(paging[item].number == 'prev') 
				paging[item].number = 'Предыдущая';
			
			if(paging[item].number == 'jump_forward' || paging[item].number == 'jump_backward') 
					paging[item].number = '...';
			
			pager_html += '<td ' + (paging[item].current?'class="current"':'') + '>'
				+ (!paging[item].current? '<a href="JavaScript:' + paging[item].action + '">' : '') 
				+ paging[item].number 
				+ (!paging[item].current? '</a>' : '')
				+'</td>';
		}		
		if(!cells_only) {
			pager_html += '</tr><table cellpadding="0" celspacing="0">';
		}		
	}	
	return pager_html;
}

function setInputDecorValue(input, value, blur_css, focus_css){
	$(input).attr('value', value);
	$(input).css(blur_css);
	
	$(input).focus(function(){
		if($(this).attr('value') == value) {
			$(this).attr('value', '');
		}
		$(this).css(focus_css);
	}).blur(function(){
		if($(this).attr('value') == '' || $(this).attr('value') == value) {
			$(this).attr('value', value);
			$(this).css(blur_css);
		}
	});	
	if($(input).get(0)) {
		$($(input).get(0).form).submit(function(){
			if($(input).attr('value') == value) $(input).attr('value', '');
		});
	}
}

function userPoints() {    
   var buttons = [
        {label:'OK', click:function(){
	val = $("#price", cdDlg.container).val();
	if (val=='' || isNaN(parseInt(val)) || parseInt(val)==0)
		$("#price", cdDlg.container).addClass("error-highlight");
	else {
		$("form", cdDlg.container).submit();
		$("#userAddPoints").html(cdDlg.html());
	}
           cdDlg.close(); 
        }},
        {label:'Отмена', style:'form-button-2', click:function(){
            $("#userAddPoints").html(cdDlg.html());
            cdDlg.close();
        }}
    ];
    
    var cdDlg = ConfirmDialog('Зачисление бонусов пользователю.', $("#userAddPoints").html(), buttons);
    $("#userAddPoints").html('');
}

var helpEventCompleteDialog = {};

function helpEventComplete(block) {
   
    UIDialog.setTitle('Информативность мероприятия.');
    
    $("#UIDialogWindowBody").html($("#help-complete #"+block).html());
    UIDialog.updatePosition();
    
    if (block == 'avatar'){
        initFileUploadDialogButton();
    }
    
    var link = $("#help-complete #link_"+block).attr('href');
    link = link.replace(/%event_id%/g, event_id);
    UIDialog.yes(true, function() {
        window.location = link;
        UIDialog.hide();
    });
    
    UIDialog.ok(false, function(){});
    
    UIDialog.cancel(false, function(){});
    
    UIDialog.no(true, function(){
        UIDialog.hide();
    });		
    UIDialog.show();	
		
    /*
    if (block == 'avatar') initFileUploadDialogButton();
    var link;
    var helpEventCompleteDialog = new CDialog({
            guid:"helpEventCompleteDialog", 
            title:'Информативность мероприятия.', 
            body:$("#help-complete #"+block).html()
    });    
    
    helpEventCompleteDialog.addButton({label:'Да', click:function(){ window.location = link; helpEventCompleteDialog.close(); }});
    helpEventCompleteDialog.addButton({label:'Нет', style:'form-button-2', click:function(){helpEventCompleteDialog.close();}});
    helpEventCompleteDialog.open();
    
    link = $("#help-complete #link_"+block).attr('href');
    link = link.replace(/%event_id%/g, event_id);
    */
}

function loadImage(id, src) {
    if ($.browser.msie == true)
    setTimeout("$('img#"+id+"').attr('src', '"+src+"');", 1);
    else $('img#'+id).attr('src', src);
}

function newCaptcha() {
    var captchaSrc = '/captcha/?'+Math.random();
    loadImage('code', captchaSrc);
}

function showcode(sender, response, customFunction) {	
    if (typeof response != "undefined"){
        if (response.captcha) {
            $("input[name=kaptcha]").val(response.captcha);
            if (typeof customFunction == "undefined"){$(sender).submit();} else {
                if (typeof customFunction == "function") 
                    customFunction(sender, response); 
            }
            return false;
        }	
    }	
    var kaptchaDialog = new ConfirmDialog(
    'Введите код с картинки', 
    '<div align="center"><p>Робот не сможет ввести код, а Вы сможете. </p><a class="alink" href="javascript:" title="Показать другой" onclick="newCaptcha();">Показать другой код</a><br/><img src="/captcha/?'+Math.random()+'" title="Показать другой" class="show-another-code" width="124" height="48" id="code" onclick="newCaptcha();"/><br/><input type="text" maxlength="7" style="width: 121px;" name="input_captcha" id="input_captcha"/></div>', 
    [{label:'ОК', click:function(){$("input[name=kaptcha]").val($("#input_captcha").val());if (sender) { if (typeof customFunction == "function")             customFunction(sender, response); 
        else {
            noFurtherValidationFixInJQ141 = true;
            $(sender).submit();
        }
    }
    kaptchaDialog.close(); }}, 
    {label:'Отмена',click:function(){ $("input[name=kaptcha]").val(''); kaptchaDialog.close();}, style:'form-button-2'}]);
    
    $("#input_captcha").focus();
    if (($.browser.msie == true) || ($.browser.safari == true))
        setInterval('$("#input_captcha").focus();',100);
    return false;
}

function JSONToArray(data)
{
	try{
		return eval( "(" + data + ")" );
	}
  	catch(Exception){}
}

function JSONToArrayEx(data)
{
  return eval( '(' + data + ')' );
}

var formArray = {};
var ajaxValidationAct = "ajax.validation";
/*
sender == this
form_id == 'form-main'
successCallback == 'callBackFunctionName' - опционально
*/
function prePostForm(sender, form_id, successCallback, altDialogFunction) {	
	formArray = $(sender).formToArray(); 
	$(sender).unbind("submit");
	var act = $("input[name=act]").val();
	
	$("input[name=act]").val(ajaxValidationAct);
	
	///$(sender).beforeSubmit
	 
	$(sender).ajaxSubmit({
	 	data:{"form_id":form_id},
	 	dataType : 'json',
		beforeSubmit: function(formArray, jqForm) {
			if (formArray.length == 0) {
				return false;
			}
		},
 		success: function(responseText, status, xhr) {
			$("input[name=act]").val(act);
			$("input[class='highlight']").removeAttr("class");
			$("textarea[class='highlight']").removeAttr("class");
			
 			if (responseText.success == 1) {
 				$(sender).unbind("submit");
 				if (typeof successCallback == "function") {
 					successCallback(sender, responseText);
 				} 
 				else 
				$(sender).submit();
        	}
			else if (responseText.success == 0) {				
				for (var err in responseText.errors){
					$("#"+responseText.errors[err].field).attr("class","highlight");
				}
				if (typeof altDialogFunction == "undefined"){
				    AlertDialog('Внимание!', responseText.message);
				} else {
					if (typeof altDialogFunction == "function"){
						altDialogFunction(sender, responseText);
					}
				}
			}
			return false;
 		}
 	});
 	
	return false;
}

function showcodeajax(sender, response, customFunction){
	return showcode(sender, response, function(data){
		var path = "/index.php?rnd="+Math.random()*10000000000;
		var dialogFormData = {act:"ajax.newuser",kaptcha:$("input[name=kaptcha]").val(), name_first:$("input[name=name_first]").val(), name_last:$("input[name=name_last]").val(), email:$("input[name=email]").val(), password:$("input[name=password]").val(), day:$("select[name=day] option:selected").val(), month:$("select[name=month] option:selected").val(), year:$("select[name=year] option:selected").val(), invitation:$("input[name=invitation]").val()};
		$.post(path, dialogFormData, function(data){
			var res = JSONToArray(data);
			if (typeof res!="undefined"){
				if (res.isSuccessful == 1){
					window.location = '/mypage/';
				} else {
				        var neverno = AlertDialog('Внимание!', 'Код введен неверно');
				        neverno.setOnClose(function(){validateRegistration(sender);});
				        return false;
				}
			}	else {
				validateRegistration(sender);
			}
		});
	});
}

function validateRegistration(sender) {
	if (noFurtherValidationFixInJQ141) return false;
	ajaxValidationAct = "ajax.validate.registration";
	return prePostForm(sender, 'form.register', showcodeajax);
}			

function showLayer(id, x, y, immediatly)
{
	if(iLayerTimer < 0) return 0;
	
	if(!immediatly) {
		clearLayerTimeout();
		iLayerTimer = window.setTimeout("$('#" + id + "').show()", iLayerDelay);
	}
	else {
		$('#' + id).show();
	}
	
	if(x && y) $('#' + id).css({top:y, left:x});
}

function hideLayer(id, immediatly)
{
	if(iLayerTimer < 0) return 0;
	
	clearLayerTimeout();
	if(!immediatly)
		iLayerTimer = window.setTimeout("$('#" + id + "').hide()", iLayerDelay);
	else
		$('#' + id).hide();
}

function clearLayerTimeout(){
	window.clearTimeout(iLayerTimer);
}

function blockHiding(){
	iLayerTimer = -1;
}

function unblockHiding(){
	iLayerTimer = 0;
}

function showProcessImage(where,attrs){
	if (!attrs) {
		var attrs = "";
	}
	$(where).html('<div align="center" '+attrs+'><img src="/img/processingbar.gif" width="36" height="36"/><br/><br/>Загрузка информации</div>'); 
}

function loadEventIdeaText(that, idea_id, text_id, admflag)
{
	if (text_id == 0) return JPAccess();
	var hn = 'hiddener'+text_id;
	$('.eventplace-hiddener').hide(); 
	$(hiddener).hide(); 
	hiddener = '#'+hn; 
	$(hiddener).show(); 
	$('.selected-idea-navig-item').attr('className','idea-navig-item'); 
	that.parentNode.className='selected-idea-navig-item'; 
	showProcessImage('#raw-data', 'style="text-align:left"');
	//$('#raw-data').html('<div align="center" style="margin-top:150px"><img src="/img/processingbar.gif" width="36" height="36"/></div>'); 
	$.post('/view.ideas.text/?'+admflag+'id='+idea_id+'&text_id='+text_id, {}, function(data){ $('#raw-data').html(data);});
	return false;
}

function adminEditEventIdeaDescription(idea_id)
{	
	$('#idea-description-edit-link').hide(); 
	showProcessImage('#idea-description');
	$.post('/admin.idea.description.edit/?id='+idea_id,{},function(data){
		$('#idea-description').html(data);
	});	
}

function adminEditEventIdeaText(idea_id, selectedTextId)
{
	showProcessImage('#raw-data', 'style="margin-top:150px"');
	$.post('/admin.idea.text.edit/?id='+idea_id+'&text_id='+selectedTextId,{},function(data){
		$('#raw-data').html(data); 
	});	
}

function getOffset(elem) {
    if (elem.getBoundingClientRect) {
        // "правильный" вариант
        return getOffsetRect(elem)
    } else {
        // пусть работает хоть как-то
        return getOffsetSum(elem)
    }
}

function getOffsetSum(elem) {
    var top=0, left=0
    while(elem) {
        top = top + parseInt(elem.offsetTop)
        left = left + parseInt(elem.offsetLeft)
        elem = elem.offsetParent
    }

    return {top: top, left: left}
}

function getOffsetRect(elem) {
    // (1)
    var box = elem.getBoundingClientRect()

    // (2)
    var body = document.body
    var docElem = document.documentElement

    // (3)
    var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop
    var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft

    // (4)
    var clientTop = docElem.clientTop || body.clientTop || 0
    var clientLeft = docElem.clientLeft || body.clientLeft || 0

    // (5)
    var top  = box.top +  scrollTop - clientTop
    var left = box.left + scrollLeft - clientLeft

    return { top: Math.round(top), left: Math.round(left) }
}

function hideLoadProgress(id_img){	
	$("img#"+id_img).fadeTo("normal",1);
	$("#loading-progress").hide();
	$("#photo-bg-layer").attr("class", "");
}

function showLoadProgress(id_img, offsetX,  offsetY ){
	$("img#"+id_img).fadeTo("normal",0.33);
	$("div#loading-progress").show();
	$("#photo-bg-layer").attr("class", "photo-bg-layer");
	var offset = getOffset(document.getElementById(id_img));
	var dX = 0;
	var dY = 0;
	if (typeof offsetX != "undefined"){
		dX = offsetX;
	}
	if (typeof offsetY != "undefined"){
		dY = offsetY;
	}
	
	//if ($("img#"+id_img).width() >= 200)
	{		
		var left = parseInt(offset.left)-16+parseInt(dX) + parseInt($("img#"+id_img).width()/2);
		var right = parseInt(offset.top)-16+parseInt(dY) +parseInt( $("img#"+id_img).height()/2);
		//alert(left+  " " + right);
		$("div#loading-progress").css("left",left);
		$("div#loading-progress").css("top",right);
	}
}

/*
id_img - id картинки
action - куда слать без слэшей
parameters - {массив параметров}
*/
function imageRotate(action, id_img, parameters, cb, cb_showLoadProgress,  cb_hideLoadProgress)
{
	if (typeof cb_showLoadProgress == "function")
		cb_showLoadProgress(id_img);
	else
		showLoadProgress(id_img);
		$.post("/"+action+"/", parameters, function(data){		
		var res = JSONToArray(data);
		
		if (res){
			if (res.src){
				var src = res.src+(Math.random()*100000000000000000);
				$("img#"+id_img).attr("src",src);
			}
		}
		if (typeof cb_hideLoadProgress == "function")
			cb_hideLoadProgress(id_img);
		else
			hideLoadProgress(id_img);
		if (typeof cb == "function"){
			cb(res);
		}
	});
	return false;
}

function imageRotateLeftById(action, id_img, id, cb, cb_showLoadProgress,  cb_hideLoadProgress)
{
	return imageRotate(action, id_img, {id:id, degrees:90}, cb, cb_showLoadProgress,  cb_hideLoadProgress);
}

function imageRotateRightById(action, id_img, id, cb, cb_showLoadProgress,  cb_hideLoadProgress)
{
	return imageRotate(action, id_img,  {id:id, degrees:270}, cb, cb_showLoadProgress,  cb_hideLoadProgress);
}

function imageDelete(action, id_img, id, cb)
{
    var buttons = [
        {label:'ОК',click:function(){             
            opbj.startProcessingBar();
            $.post("/"+action+"/", {id:id}, function(data){
                var res = JSONToArray(data);			
                if (typeof cb == "function"){
                	cb(res);
                } else {
                	$("img#"+id_img).parent().hide();
                	$(".image-toolbar").hide();
                }
                opbj.close();
            });            
        }}, 
        {label:'Отмена', style:'form-button-2',click:function(){ opbj.close();}}
    ];
    var opbj = new ConfirmDialog('Подтверждение удаления', 'Удалить изображение?', buttons);    
    return false;
}

function changeOptionsSelect(opts)
{
	$.post("/ajax.eventplace.searchoptions/",{type_id:$("#category").val()},function(data){
		var result = JSONToArray(data);		
		var content = '';		
		for (var key in result) {
			content = '<option value="0">Не указывать</option>';
			if (result[key].count != 0) {
				for (var i in result[key].items) 
					content += '<option value="' + result[key].items[i].value + '">' + result[key].items[i].title + '</option>\n';
				$("#"+result[key].tag_type_id+"-row").show();
				$("select#"+result[key].tag_type_id).html(content);
			} else {
				$("select#" + result[key].tag_type_id).val(0);
				$("#"+result[key].tag_type_id+"-row").hide();
			}
			
			if (typeof opts != "undefined")
			{				
				if (typeof opts[result[key].tag_type_id] != "undefined")
				{
					//$("select#" + result[key].tag_type_id + " option[@value^=" + opts[result[key].tag_type_id] + "]").attr("selected", "selected");
					$("select#" + result[key].tag_type_id).val(opts[result[key].tag_type_id]);
				}
			}							
		}		
	});
}


var subpost = 0;
function initFileUploadDialogButton(){	
      var fileInput = document.getElementById('file-upload-dialog-button');
      if ($.browser.opera == true){
      	$("#file-upload-dialog-button").css("left", "80px");
      }
      
      if ($.browser.msie == true){
      	if ($.browser.version >6)
      	$("#file-upload-dialog-button").css("left", "80px");
      	
      	if ($.browser.version >7){
      	$("#file-upload-dialog-button").css("left", "50px");
      }}
      if ($.browser.safari == true){
      	$("#file-upload-dialog-button").css("left", "80px");
      }
      $('#file-upload-dialog-button').show();
      
//      $('#file-upload-dialog-button').click(UIDialog.hide);
      
      UIDialog.updatePosition();
      var activeButton = document.createElement('div');
      var bb = document.createElement('div');
      var bl = document.createElement('div');
	        
      function HandleChanges()
      {
      	UIDialog.hide();
      	$('#wrapper').attr("action", "/media.image.handling/?id=" + $("#event_id").val());
        	$("#ava-cell").css("height", $("img#event-image-name").height());
        	$("#noteImageLoading").show();
        	var image = document.getElementById("event-image-name"); 
        	image.setAttribute("class","");
        	image.setAttribute("src","/img/processingbar.gif");
           $("#wrapper").submit();
           
           //document.forms["wrapper"].submit();
      };
      
      function MakeActive()
      {
         activeButton.style.display = 'block';
      };
      function UnMakeActive()
      {
          activeButton.style.display = 'none';
      };
	  	   
  	var wrap = document.getElementById('wrapper');
      activeButton.setAttribute('id','activeBrowseButton');
      fileInput.value = '';
      fileInput.onchange = HandleChanges;
      fileInput.onmouseover = MakeActive;
      fileInput.onmouseout = UnMakeActive;
      fileInput.className = 'customFile';
      bl.className = 'blocker';
      bb.className = 'fakeButton';
      activeButton.className = 'fakeButton';
      wrap.appendChild(bb);
      wrap.appendChild(bl);            
      wrap.appendChild(activeButton);            
    var options = 
    { 
    enctype:"multipart/form-data",
    method:"POST",
    target: "#UIDialogWindowBody",
    beforeSubmit: function(){UIDialog.hide();}, 
    success: function(resp, statusText)  { 
    subpost = 0;  			
    $("#noteImageLoading").hide();
    var data = JSONToArray(resp);
    image = parent.document.getElementById("event-image-name"); 
    image.setAttribute("src",data.l);
    if (data.s == 1){
    $("#toolbar-icons").show();
    image.setAttribute("avatar-id", data.id);
    }else{
    image.setAttribute("avatar-id", data.id);
    }
    image.setAttribute("class","avatar");
    $("#bar").css("width", data.cs.percentage+"%");
    $("#cell3").html(data.cs.percentage+"%");	        	
    
    if (data.cs.percentage != 100) {
    eventSummaryToDo = data.cs.todo;
    $("a#help-event-complete").unbind("click");
    $("a#help-event-complete").bind("click", function(){helpEventComplete(data.cs.todo); return false;});
    //$("a#help-event-complete").attr("onclick", "helpEventComplete('"+data.cs.todo+"'); return false;");
    }
    else $("#help-event-complete").hide();
    },
    timeout: 3000 // б�АаЙаМ-аАб��  	
};
  
  	$(document).ready(function(){  		
	  	$('form#wrapper').submit(function() 
	  	{ 
	  		if (subpost != 1){
	  			subpost = 1;  			
	    			$(this).ajaxSubmit(options); 
	  		}
	    		return false;
	  	}); 
  	});
}
/*
var subpost = 0;
function initFileUploadDialogButton(){	    
      var fileInput = document.getElementById('file-upload-dialog-button');
      if ($.browser.opera == true){
      	$("#file-upload-dialog-button").css("left", "80px");
      }
      
      if ($.browser.msie == true){
      	if ($.browser.version >6)
      	$("#file-upload-dialog-button").css("left", "80px");
      	
      	if ($.browser.version >7){
      	$("#file-upload-dialog-button").css("left", "50px");
      }}
      if ($.browser.safari == true){
      	$("#file-upload-dialog-button").css("left", "80px");
      }
      $('#file-upload-dialog-button').show();
      
//      $('#file-upload-dialog-button').click(UIDialog.hide);
      
//      UIDialog.updatePosition();
      var activeButton = document.createElement('div');
      var bb = document.createElement('div');
      var bl = document.createElement('div');
	        
      function HandleChanges()
      {
          	    	    alert('H');
      	//UIDialog.hide();
      	$('#wrapper').attr("action", "/media.image.handling/?id=" + $("#event_id").val());
        	$("#ava-cell").css("height", $("img#event-image-name").height());
        	$("#noteImageLoading").show();
        	var image = document.getElementById("event-image-name"); 
        	image.setAttribute("class","");
        	image.setAttribute("src","/img/processingbar.gif");
           $("#wrapper").submit();
           
           //document.forms["wrapper"].submit();
      };
      
      function MakeActive()
      {
          alert('M');
         activeButton.style.display = 'block';
      };
      
      function UnMakeActive()
      {
          alert('U');
          activeButton.style.display = 'none';
      };
	  	   
      var wrap = document.getElementById('wrapper');

      activeButton.setAttribute('id','activeBrowseButton');
      
      fileInput.value = '';
      fileInput.onchange = HandleChanges;
      fileInput.onmouseover = MakeActive;
      fileInput.onmouseout = UnMakeActive;
      fileInput.className = 'customFile';
      bl.className = 'blocker';
      bb.className = 'fakeButton';
      activeButton.className = 'fakeButton';      
      wrap.appendChild(bb);
      wrap.appendChild(bl);            
      wrap.appendChild(activeButton);            
  
  	var options = 
  	{ 
  		enctype:"multipart/form-data",
  		method:"POST",
  		target: "#dialogbody-helpEventCompleteDialog",
	    	beforeSubmit: function(){
	    	    //UIDialog.hide();
	    	}, 
    		success: function(resp, statusText)  { 
    			subpost = 0;  			
	        	$("#noteImageLoading").hide();
	        	var data = JSONToArray(resp);
	        	image = parent.document.getElementById("event-image-name"); 
	        	image.setAttribute("src",data.l);
	        	if (data.s == 1){
	        		$("#toolbar-icons").show();
	        		image.setAttribute("avatar-id", data.id);
		      }else{
	        		image.setAttribute("avatar-id", data.id);
	        	}
	        	image.setAttribute("class","avatar");
	        	$("#bar").css("width", data.cs.percentage+"%");
	        	$("#cell3").html(data.cs.percentage+"%");	        	
	        	
	        	if (data.cs.percentage != 100) {
	        		eventSummaryToDo = data.cs.todo;
	        		$("a#help-event-complete").unbind("click");
	        		$("a#help-event-complete").bind("click", function(){helpEventComplete(data.cs.todo); return false;});
	        		//$("a#help-event-complete").attr("onclick", "helpEventComplete('"+data.cs.todo+"'); return false;");
	        	}
	        	else $("#help-event-complete").hide();
    		},
    		timeout: 3000 // б�АаЙаМ-аАб��  	
};
  
  
  
  	$(document).ready(function(){  		
	  	$('form#wrapper').submit(function() 
	  	{ 
	  		if (subpost != 1){
	  			subpost = 1;  		 
	  			alert('ajaxSubmit'); 			
	    			$(this).ajaxSubmit(options); 
	  		}
	    		return false;
	  	}); 
  	});
}*/

function initHistoryMessagesPaging(){	
	$("table.list-paging a").click(function(){
		$.post($(this).attr("url"),{},function(data){$('#history-container-messages').html(data);initHistoryMessagesPaging();});
		return false;
	});
	$("table.list-paging tbody tr td a").each(function(){ $(this).attr("url",$(this).attr("href"));});	
	$("table.list-paging tbody tr td a").attr("href","javascript:void(0)");
	
	$('a[rel=list-delete-confirm]').unbind('click');
	$('a[rel=list-delete-confirm]').bind('click', function(){
		button = this;
		UIDialog.setTitle('Подтверждение действия');
		UIDialog.setBody($(this).attr('ask'));
		UIDialog.ok(true, function() {			
			$.get($(button).attr('href'), {ask_confirm:'true', mute:'1'}, function(){
				$("a",$(button).parent().parent().parent().parent()).attr("href","javascript:void(0)");
				$(button).replaceWith('<div class="perform-box">' + $(button).attr('success') + '</div>');
				UIDialog.hide();				
				
			});
		});
		UIDialog.cancel(true, UIDialog.hide);
		UIDialog.show();		
		return false;	
	});	
}

//jquery 1.3.2 bugfix with toggle <tr>
// don't use this shit? use jQ toggleClass('no-display')
function toggleBlockByID(id){
	var _toggleBlockByIDState = document.getElementById(id).style.display;
	
	if (_toggleBlockByIDState == 'none'){
		document.getElementById(id).style.display = '';
	}else{
		document.getElementById(id).style.display = 'none';
	}
}

function confirmSendCard(fn, cardPrice, cardCount, ballance) {
    if (cardCount != 0){
        var buttons = [
        {label:'Да',click:function(){  opbj.startProcessingBar(); document.forms[fn].submit();  }},
        {label:'Нет', style:'form-button-2',click:function(){ opbj.close();}}
        ];
        var opbj = new ConfirmDialog('Подтверждение', "На Вашем счету "+ballance+" баллов. Стоимость одной открытки "+cardPrice+" баллов. <br/>С Вашего счета будет списано "+(cardCount*cardPrice)+" баллов. Продолжить отправку?", buttons);
    } else {
        AlertDialog('Произошла ошибка', 'Нужно выбрать получателя открытки');
    }
}

function setFormCardSendToEventHandler(){
$(document).ready(function(){	
	document.forms['form-card-send'].onsubmit = function(){
		var yesMoney = 0;	
		var max = 0;	
		var message = '';	
  		var ballance = 0;
  		var cardPrice = 0;
  		var count = 0;

		$.ajax({
			type:"POST",
			data:{},
			async :false,
		  	url: "/json.cards.limit/",
		  	cache: true,
		  	success: function(aResponse){
		  		try{
		  		aResponse = JSONToArray(aResponse);	
		  		ballance = aResponse.balance;
		  		cardPrice = aResponse.price;
		  		max = parseInt(aResponse.max);
		  		message = aResponse.message_tpl;
				if (max < 1){
					var otkrytok = pluralNumber(count, " открыт", "ки", "ок", "ок" );
					var str = str_replace('$1', 'открытки', message);
					notEnoughMoneyForCard(str);
					yesMoney = 0;
				} else yesMoney = 1;				
		  		} catch(Exception){};
		  	}});
		  //if (!count) return true;
		if (yesMoney){
			confirmSendCard('form-card-send', cardPrice, 1, ballance);
		} else notEnoughMoneyForCard('К сожалению, Ваших баллов недостаточно для отправки 1 открытки. Хотите пополнить баланс прямо сейчас?');
		return false;	
	};
});
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

$(document).ready(function(){	
	$('a[rel=send-message-dialog]').click(function(){
		UIMessageDLG.run(this, 1);
		return false;		
	});		
	
	$('a[rel=send-sms-dialog]').click(function(){
		UIMessageDLG.run(this, 2);
		return false;		
	});
	
});

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


function showHistoryList(receiverID){
	$.post('/ajax.mail.gethistory/?id='+receiverID,{},function(data){ 
		$('#history-container-messages').html(data); 
		$('#history-container').hide(); 
		initHistoryMessagesPaging(); 
	});
	return false;
}

function noAccess(){
	JPAccess();
}


function var_dump(d) {
	alert(dump(d));
}

function dump(d,l) {
    if (l == null) l = 1;
    var s = '';
    if (typeof(d) == "object") {
        s += typeof(d) + " {\n";
        for (var k in d) {
            for (var i=0; i<l; i++) s += "  ";
            s += k+": " + dump(d[k],l+1);
        }
        for (var i=0; i<l-1; i++) s += "  ";
        s += "}\n"
    } else {
        s += "" + d + "\n";
    }
    return s;
}

$(function(){
    if (($.browser.opera) || ($.browser.msie)){
        $("#file-upload-dialog-button").css('margin-left', '155px');
    }
    
    oldPageDecor = $(document.body).attr("class");	
    oldPageStyleDecor = $(document.body).attr("style");	
    
    $("a#hide-card-button").click(function(){
        var card_id = $(this).attr('card-id');
        var buttons = [
            {label:'Да',click:function(){
                objDialog.startProcessingBar();
                $("input#card_id").val(card_id);
                document.forms['act-hide-card'].submit();
            }}, 
            {label:'Нет', style:'form-button-2',click:function(){ objDialog.close();}}
        ];
        var objDialog = new ConfirmDialog('Подтверждение удаления', 'Вы уверены что хотите удалить открытку?', buttons);
    });
    
    var iCardEventID = $("form[name='form-card-send'] input[name='event_id']").val();
    if (typeof iCardEventID != "undefined"){
        if (iCardEventID != 0){
            $("li#send-sms").hide();
        }
    }
});

function toggleCommentsForm(){
    $("#togglable-comments-form").toggle();
    return false;
}

function checkCommentsFormForSubmit(id){
    if (typeof id == "undefined") {
        var id = "textarea#comments-form-body"
    }
	
    if ($(id).attr("empty")!=0) {	
        showErrorDialog('Произошла ошибка', 'Вы не ввели текст комментария', function(){
            $(id).focus();
        });
        return false;
    }
	
    if(trim($(id).val())!='') return true;	
    showErrorDialog('Произошла ошибка', 'Вы не ввели текст комментария!', function(){
        $(id).focus();
    });
    $(id).focus();
    
    return false;
}

function contextCheckIfEmptyText(context){
    checkIfEmptyText(context);
    return true;
}

function checkIfEmptyText(context){
    if ($(context).attr("empty")!=0) { 
        $(context).empty(); 
        $(context).attr("empty", 0); 
        $(context).css("color", 'black'); 
    }
    return false;
}

function checkEventDesignService(){
    var objDialog = new CDialog({guid:'checkEventDesignServiceDialog', title: 'Сменить тему мероприятия'});
    
    objDialog.loadContent('/ajax.eventdesign.service/', {}, function(data){
        var res = JSONToArray(data);
        objDialog.html(res.message);
        
        objDialog.addButton({label:'OK',click:function(){            
            if (res.hasBablo){
                // doPokupka
                objDialog.startProcessingBar();
                $.post('/ajax.buyeventdesign.service/', {}, function(data){
                    var res = JSONToArray(data);
                    if (res.isSuccessful){
                        window.location.reload();                        
                    } else {
                        objDialog.hide();
                        addBalance();
                    }
                });
            } else {
                objDialog.close();
                addBalance();
            }            
        }});
        
        objDialog.addButton({label:'Отмена',style:'form-button-2', click:function(){
            objDialog.close();
        }});        
    });
        
    objDialog.open();
    return false;
}

function adviceApplicationInstall(link, msg){
	    var buttons = [
	        {label:'Да',click:function(){location=link;}},  
	        {label:'Нет', style:'form-button-2',click:function(){ opbj.close();}}
	    ];
	    var opbj = new ConfirmDialog('Установить приложение', msg, buttons);	
	    return false;
}

