function addLoadEvent(func) { 
	var oldonload = window.onload; 
	if (typeof window.onload != 'function') { 
		window.onload = func; 
	} else { 
		window.onload = function() { 
			if (oldonload) { 
				oldonload(); 
			}
			func(); 
		}
	}
}

function tms_ajax_submit(url, params, submit_callback)
{
	function tms_ajax_callback(result)
	{
		if (!result['code'])
		{
			alert('Неверный ответ сервера.');
		}
		else if (result['code'] == 200)
		{
			submit_callback(result);
		}
		else
		{
			if (result['msg'])
			{
				alert(result['msg']);
			}
			else
			{
				alert('Ошибка. Код: ' + result['code']);
			}
		}
	}
	
	if (document.JsHttpRequest)
	{
		document.JsHttpRequest.query(
			url, 
			params, 
			tms_ajax_callback, 
			true
		);
	}
	else
	{
		JsHttpRequest.query(
			url, 
			params, 
			tms_ajax_callback, 
			true
		);
	}
	
	return false;
}

function tms_jajax(url, params, submit_callback)
{
	function tms_jajax_callback(data, textStatus, XMLHttpRequest)
	{
		result = XMLHttpRequest.responceJS;
		if (!result['code'])
		{
			alert('Неверный ответ сервера.');
		}
		else if (result['code'] == 200)
		{
			submit_callback(result);
		}
		else
		{
			if (result['msg'])
			{
				alert(result['msg']);
			}
			else
			{
				alert('Ошибка. Код: ' + result['code']);
			}
		}
	}

	$.ajax({
		url: url,
		type: 'POST',
		data: params, 
		success: tms_jajax_callback,
		dataType: 'xml',
		cache: false
	});
	
	return false;
}

function tms_pajax_form(param)
{
	
}

function setCbAsThis(src, cbClass)
{
	var checked = $(src).attr('checked');
	$('.' + cbClass).attr('checked', checked);
}

function delete_plugin_item(description, plugin, action, id, element)
{
	if (confirm("Удалить " + description + "?"))
	{
		JsHttpRequest.query(
			'/pajax/' + plugin + '/', 
			{action: action, id: id, location: document.location.href}, 
			submit_callback, false);
	}

	function submit_callback(result)
	{
		if (result['code'] == 200) {
			$(element).remove();
			alert('Удалено.');
			if (result['redirect'])
			{
				document.location = result['redirect'];
			}
		} else {
			if (result['msg'])
				alert(result['msg']);
			else
				alert('Ошибка.');
		}
	}
		
	return false;
}

function delete_plugin_item_b(description, plugin, id)
{
	return delete_plugin_item(description, plugin, 'delete', id, '#' + plugin + '_' + id);
}

function delete_selected_items(description, plugin, cbClass)
{
	var ids = [];
	function each_cb(el)
	{
		if ($(this).is(':checked'))
		{
			var id = $(this).attr('id').substr(cbClass.length + 1);
			ids.push(id);
		}
	}
	$('.' + cbClass).each(each_cb);
	
	if (ids.length == 0)
	{
		alert("Ни одной позиции не выбрано.");
		return false;
	}
	
	if (confirm(
			"Вы действительно хотите удалить " + description + "?\n" +
			"Будет удалено " + ids.length + " позиций."
	))
	{
		function submit_callback(result)
		{
			var i;
			for (i = 0; i < ids.length; i++)
			{
				$('#' + plugin + '_' + ids[i]).remove();
			}
			alert('Итого удалено: ' + result['count'] + '.');
		}
		
		return tms_ajax_submit(
			'/pajax/' + plugin + '/delete/',
			{ids: ids, location: location.href},
			submit_callback
		);
	}
	return false;
}

function goto_url_arg(url, arg_name, select)
{
	var val = select.options[select.selectedIndex].value;
	if (val == 'undefined' || val.length == 0)
		location.replace(url);
	else
		location.replace(url + arg_name + '~' + val + '/');
}

function htmlspecialchars(html) {
    // Сначала необходимо заменить &
    html = html.replace(/&/g, "&amp;");
    // А затем всё остальное в любой последовательности
    html = html.replace(/</g, "&lt;");
    html = html.replace(/>/g, "&gt;");
    html = html.replace(/"/g, "&quot;");
    // Возвращаем полученное значение
    return html;
}

function insert_attached_file(content_type, file_id, insert_type)
{
	var file = $('#' + content_type + '_attach_' + file_id + '_file').val();
	url_s = '/uploads/' + content_type + '/' + file;
	url_b = '/uploads/' + content_type + '/big/' + file;
	url_t = '/uploads/' + content_type + '/thumb/' + file;
	var text = '';
	if (insert_type == 0)
	{
		text = '<img alt="" src="' + url_t + '" />';
	}
	else if (insert_type == 1)
	{
		text = '<a href="' + url_b + '" rel="jlightbox"><img alt="" src="' + url_t + '" /></a>'; 
	}
	else if (insert_type == 2)
	{
		text = '<img alt="" src="' + url_s + '" />';
	}
	else if (insert_type == 3)
	{
		text = '<a href="' + url_s + '">Файл №' + file_id + '</a>';
	}
	else if (insert_type == 4)
	{
		text = '<img alt="" src="' + url_b + '" />';
	}
	else if (insert_type == 5)
	{
		a = file.split('.');  
		ext = a[a.length - 1]; 
		text = '<a href="' + url_s + '"><img alt="" src="/images/filetype/x32' + ext + '.gif" />Файл №' + file_id + '</a>';
	}
	else
	{
		text = '<a href="' + url_s + '">Файл №' + file_id + '</a>';
	}
	tinyMCE.activeEditor.selection.setContent(
			tinyMCE.activeEditor.selection.getContent() + text);
}

function insert_uploaded_image(target_index, content_type, image_id, insert_type)
{
	var file = $('#img_' + image_id).attr('src');
	file = file.substring(file.lastIndexOf('/') + 1);
	var ext = file.substring(file.lastIndexOf('.'));
	
	var file_type = 'other';
	if(ext == '.jpg' || ext == '.jpeg')
	{
		name_b = '/uploads/' + content_type + '/big/' + file;
		name_t = '/uploads/' + content_type + '/thumb/' + file;
		file_type = 'sized_image';
	}
	else 
	if (ext == '.png' || ext == '.gif')
	{
		name_b = '/uploads/' + content_type + '/' + file;
		name_t = '/uploads/' + content_type + '/' + file;
		file_type = 'image';
	}
	else
	{
		name_b = '/uploads/' + content_type + '/' + file;
		name_t = '/uploads/' + content_type + '/' + file;
	}
		
	//$target_id = $('#uploaded_image_insert_target' + target_index).val();
	
	
	if (file_type == 'sized_image' || file_type == 'image')
	{
		if (insert_type == 1)
		{
			tinyMCE.activeEditor.selection.setContent(
				tinyMCE.activeEditor.selection.getContent() +
				'<a href="'+name_b+'" rel="jlightbox"><img title="" src="'+name_t+'" /></a>' 
			);
		}
		else
		if (insert_type == 2)
		{
			tinyMCE.activeEditor.selection.setContent(
				tinyMCE.activeEditor.selection.getContent() + 
				'<img title="" src="' + name_b + '" />'
			);
		}
		else
		{
			tinyMCE.activeEditor.selection.setContent(
				tinyMCE.activeEditor.selection.getContent() + 
				'<img title="" src="' + name_t + '" />'
			);
		}
	}
	else
	{
		tinyMCE.activeEditor.selection.setContent(
			tinyMCE.activeEditor.selection.getContent() + 
			'<a href="' + name_t + '">Файл №' + image_id + '</a>');
	}
	
}

function insert_upload_image_result_to_table(result, table_id)
{
	if (result['html'])
	{
		$('#' + table_id).append(result['html']);
	}
	else
	{
		$('#' + table_id).append(
			'<tr id="' + result['content_type'] + '_image_' + result['id'] + '">' +
				'<input type="hidden" name="' + result['content_type'] + '_attach_image_' + result['order_id'] +'" ' + 
				'id="' + result['content_type'] + '_attach_image_' + result['order_id'] + '" value="' + result['id'] + '">' +
				'<td>' + result['order_id'] + '</td>' +
				'<td><img id="img_' + result['id'] + '" src="/uploads/' + result['content_type'] + '/thumb/' + result['file'] + '" alt="' + result['alt'] + '" /></td>' +
				'<td>' +
					'<a href="javascript:void(0);" onclick="insert_uploaded_image(0, \'' + result['content_type'] + '\', ' + result['id'] + ', 2);">Вставить большое</a><br />' +
					'<a href="javascript:void(0);" onclick="insert_uploaded_image(0, \'' + result['content_type'] + '\', ' + result['id'] + ');">Вставить превью</a><br />' +
					'<a href="javascript:void(0);" onclick="insert_uploaded_image(0, \'' + result['content_type'] + '\', ' + result['id'] + ', 1);">Вставить превью с увеличением</a><br />' +
					'<a href="javascript:void(0);" onclick="delete_plugin_item(\'изображение №' + result['order_id'] + '\', \'content_image\', \'delete\',  ' + result['id'] + ', \'#' + result['content_type'] + '_image_' + result['id'] + '\');">Удалить</a>' +
				'</td>' +
			'</tr>'
		);
	}
}

function upload_content_image(element_id, content_type_name, content_id, 
	result_element_id, result_insert_function)
{
	
	JsHttpRequest.query(
		'/pajax/content_image/', 
		{
			'action': 'upload', 
			'image': $(element_id)[0],
			'content_type_name': content_type_name,
			'content_id': content_id,
			'size_x': $('#new_image_sx').val(),
			'size_y': $('#new_image_sy').val()
		}, 
		submit_callback, false);


	function submit_callback(result, ajax_msg) 
	{
		if(result["code"] == 200)
		{
			$(element_id).val('');
			
			if (result_insert_function)
			{
				if (result_element_id)
					result_insert_function(result, result_element_id);
				else
					result_insert_function(result);
			}
			else
			{
				alert('Изображение успешно загружено.');
			}

			return true;
		}
		else
		{
			alert(result['msg']);
			return false;
		}
	}

	return false;
	
	$(element_id).val('');
}

function setCbAsThis(src, cbClass)
{
	var checked = $(src).attr('checked');
	if (!checked) checked = '';
	$('.' + cbClass).attr('checked', checked);
}

function trylogin(contr_id)
{
	$('#' + contr_id + '_login').hide();
	$('#' + contr_id + '_wait').show();
	
	var frm = $('#' + contr_id);

	if ($('#login', frm).length > 0)
	{
		var login = $('#login', frm).val();
	}
	else
	{
		var login = '';
	}
	var email = $('#email', frm).val();
	var password = $('#password', frm).val();
	var redirect = $('#redirect', frm).val();
	
	JsHttpRequest.query(
		'/pajax/login/', 
		{
			'action': 'login', 
			login: login,
			email: email,
			password: password,
			location: document.location.href,
			redirect: redirect
		}, 
		submit_callback, false);


	function submit_callback(result, ajax_msg) 
	{
		$('#' + contr_id + '_wait').hide();
		if(result['code'] == 200)
		{
			$('#' + contr_id + '_ok').show();
			document.location = result['redirect'];
			return true;
		}
		else
		{
			alert(result['msg']);
			$('#' + contr_id + '_login').show();
			$('#password', '#' + contr_id).val('');
			return false;
		}
	}
	
	return false;
}

function logout() {
	JsHttpRequest.query(
		'/pajax/login/', 
		{
			'action': 'logout',
			'location': document.location.href}, 
		submit_callback, false);
		
	function submit_callback(result, ajax_msg) 
	{
		if(result['code'] == 200)
		{
			document.location = result['redirect'];
			return true;
		}
		else
		{
			alert(result['msg']);
			return false;
		}
	}
}

function var_dump(arr, level)
{
	var dumped_text = "";
	if(!level) level = 0;

	// The padding given at the beginning of the line.
	var level_padding = "";
	for(var j=0;j<level+1;j++) level_padding += "    ";

	if(typeof(arr) == 'object') { //Array/Hashes/Objects
		for(var item in arr) {
			var value = arr[item];
	   
			if(typeof(value) == 'object') { //If it is an array,
				dumped_text += level_padding + "'" + item + "' ...\n";
				dumped_text += var_dump(value,level+1);
			} else {
				dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
			}
		}
	} else { //Stings/Chars/Numbers etc.
		dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
	}
	return dumped_text;
}

jQuery.fn.maxlength = function(options) {
	var settings = jQuery.extend({
		maxChars: 10,
		leftChars: " символов осталось",
		target_id: ""
	}, options);

	return this.each(function() {
		var me = $(this);
		var l = settings.maxChars;
		me.bind('keydown keypress keyup',function(e) {
			// если строка больше maxChars урезаем её
			if(me.val().length>settings.maxChars) me.val(me.val().substr(0,settings.maxChars));
			// определяем колличество оставшихся для ввода сиволов
			l = settings.maxChars - me.val().length;
			// отображаем значение в информере
			if (settings.target_id == "")
			{
				me.next('div').html(l + ' ' + settings.leftChars);
			}
			else
			{
				$(settings.target_id).html(l + ' ' + settings.leftChars);
			}
		});
		// вставка информера после объекта
		if (settings.target_id == "")
		{
			me.after('<div class="maxlen">' + settings.maxChars + settings.leftChars + '</div>');
		}
	});
};

