function popupimg(s,w,h)
{
	var o = window.open('', 'w'+new Date().getTime(), 'width='+w+', height='+h+', toolbar=no,location=no,status=no,resizable=no,scrollbars=yes,left='+(screen.width/2-w/2)+',top='+(screen.height/2-h/2));
	if (o)
	{
		var d = o.document;
		d.write('<html><head><meta http-equiv="imagetoolbar" content="no"><title></title></head><body style="margin:0;padding:0;overflow:auto" onblur="window.close()"><img src="'+s+'" onclick="window.close()" style="cursor: pointer;"></body></html>');
	}
	d.close();
	return false;
}

function changeImg(source, title, w, h, login, pg, select, com_count, com_text, page, write)
{
	var img = document.getElementById("photo") || document.getElementById("image");
	var caption = document.getElementById("caption");
	var com_block = document.getElementById("comment_block");
	
	if (com_block != undefined)
		if ((com_count == 0) && (write == 0))
		{
			if (page == '1')
				page = '';
			com_block.innerHTML = '<a href="profile/photos?login='+login+'&pg='+pg+'&select='+select+'&view=2'+page+'&write=1&rnd='+Math.random()+'#comments">'+com_text+'</a>';
		}
	
	if (img == null || img.src == source) return false;

	if (img != null && img.src != "" && img.src.match(/spacer.gif/i) == null)
	{
		img.style.visibility = "hidden";
	}

	if (img && caption)
	{
		if (w != undefined && h != undefined)
		{
			img.width = w;
			img.height = h;
		}
		img.src = source;
		img.title = title;
		img.alt = title;
		img.onload = function()
		{
			this.style.visibility = "";
		}

		caption.innerHTML = title;
	}
	return false;
}

function changeImgExtended(href, title, width, height, id, login, pg, select, com_count, com_text, page, write) {
	
	if (active != undefined)
	{
		var old = document.getElementById(active);
		var oldImg = old.getElementsByTagName("img");
		oldImg[0].className = "";
	}
	
	var caption = document.getElementById("caption");

	if (title == "") {
		caption.style.display = "none";
	}
	else {
		caption.style.display = "inline";
	}
	
	var a = document.getElementById(id);
	var img = a.getElementsByTagName("img");
	img = img[0];

	img.className = "active";
	
	active = id;

	//var container = document.getElementById("image-container");
	//container.className = "loading";

	changeImg(href, title, width, height, login, pg, select, com_count, com_text, page, write);

	//container.className = "";

	return false;
}

function changeImgByPosition(pos, con)
{
	var thumbnails = con.getElementsByTagName("li");
	
	for (i in thumbnails)
	{
		if (typeof(thumbnails[i]) == "object" && i == pos - 1)
		{
			var a = thumbnails[i].getElementsByTagName("a")[0];

			changeImg(a.href, a.title);
			$run("img", a);
		}
	}
}

function input(what)
{
	if (document.forms['qm_sendform'].elements['new_msg'].createTextRange)
	{
		document.forms['qm_sendform'].elements['new_msg'].focus();
		document.selection.createRange().duplicate().text = what;
	}
	else if ((typeof document.forms['qm_sendform'].elements['new_msg'].selectionStart) != 'undefined') // for Mozilla
	{
		var tarea = document.forms['qm_sendform'].elements['new_msg'];
		var selEnd = tarea.selectionEnd;
		var txtLen = tarea.value.length;
		var txtbefore = tarea.value.substring(0, selEnd);
		var txtafter =  tarea.value.substring(selEnd, txtLen);
		tarea.value = txtbefore + what + txtafter;
		tarea.selectionStart = txtbefore.length + what.length;
		tarea.selectionEnd = txtbefore.length + what.length;
		document.forms['qm_sendform'].elements['new_msg'].focus();
	}
	else
	{
		document.forms['qm_sendform'].elements['new_msg'].value += what;
	}
}

function popup(s,w,h)
{
	var o=window.open(s,'','width='+w+',height='+h+',toolbar=no,location=no,status=no,resizable=yes,scrollbars=yes,left='+(screen.width/2-w/2)+',top='+(screen.height/2-h/2));
	return false;
}

function popupWithName(s,w,h, name)
{
	var o=window.open(s,name,'width='+w+',height='+h+',toolbar=no,location=no,status=no,resizable=no,scrollbars=yes,left='+(screen.width/2-w/2)+',top='+(screen.height/2-h/2));
	if (name == 'newMessagesWindow' || name == 'notificationsWindow')
	{
		o.blur();
	}
	return false;
}

function popupAssistant(s,w,h, name)
{
	var o=window.open(s,name,'width='+w+',height='+h+',toolbar=no,location=no,status=no,resizable=no,scrollbars=yes,left='+(screen.width/2-w/2)+',top='+(screen.height/2-h/2));
	return o;
}

function closeNamedWindow(name)
{
	var o = window.open('', name, 'width=1,height=1,left=1,top=1,toolbar=no,location=no,status=no,resizable=no,scrollbars=no');
	o.blur();
	o.close();
	return false;
}

function popupSimple(s)
{
	var o = window.open(s,'','width=100,height=100,toolbar=no,location=no,status=no,resizable=yes,scrollbars=yes,left=100,top=100');
	return false;
}

function assistantPopup(s)
{
	jQuery("#assistant-banner").empty();
	popupWithName(s+"&"+Math.random(), 200, 600, "assistantWindow");
	jQuery("#assistant-open").hide();
	jQuery("#assistant-close").css("display", "");
	return false;
}

/*function closeAssistant(s)
{
	closeNamedWindow("assistantWindow");
	jQuery.get(s, function(data)
	{
		jQuery("#assistant-banner").empty();
		jQuery("#assistant-banner").append(data);
	});
	jQuery("#assistant-close").hide();
	jQuery("#assistant-open").css("display", "");
	return false;
}*/

function qMessagesPopup(s,w,h,name)
{
	if (!name)
	{
		name = '';
	}
	if(typeof h == "number"){
		if (window.screen.height < 650) {var h = 480;}
	}
	var o=window.open(s, name, 'width='+w+', height='+h+',toolbar=no,location=no,status=no,resizable=yes,scrollbars=yes,left='+(screen.width/2-w/2)+',top='+(screen.height/2-h/2-50));
	return false;
}

function photosPopup(s,w,h)
{
	var o=window.open(s,'','width='+w+',height='+h+',toolbar=no,location=no,status=no,resizable=yes,scrollbars=yes,left='+(screen.width/2-w/2)+',top='+(screen.height/2-h/1.8));
	return false;
}
/*
function closeLowLevel()
{
	for (i in $popups)
	{
		var re = new RegExp("lowLevel", "i");
		
		if (re.test($popups[i].location))
		{
			$popups[i].close();
		}
	}
}
*/
function getTimeZoneOLD()
{
	var rightNow = new Date();
	var date1 = new Date(rightNow.getFullYear(), 0, 1, 0, 0, 0, 0);
	var date2 = new Date(rightNow.getFullYear(), 6, 1, 0, 0, 0, 0);
	var temp = date1.toGMTString();
	var date3 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1));
	var temp = date2.toGMTString();
	var date4 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1));
	var hoursDiffStdTime = (date1 - date3) / (1000 * 60 * 60);
	var hoursDiffDaylightTime = (date2 - date4) / (1000 * 60 * 60);
	//return hoursDiffDaylightTime;
	return hoursDiffStdTime;
}

function getTimeZone()
{
	var d = new Date();
	return -(d.getTimezoneOffset()/60);
}

function activateActionForm(e)
{
	var f = e.form;
	f.className = '';
	var first;
	for (var i = 0; i < f.elements.length; i++)
	{
		if (f.elements[i].type == "textarea" && !first) first = f.elements[i];
		f.elements[i].readOnly = false;
	}
	first.focus();
	window.scrollTo(0, 0);

	e.onclick = function() {this.form.submit();}
}

function initWidgetToggler(toggler, container) 
{
	var $toggler = jQuery(toggler);
	var $container = jQuery(container);
	
	if (jQuery.cookie (container.replace('#', '')) == 'none') {
		$container.css('display', 'none');
		$toggler.toggleClass('mi');
		$toggler.toggleClass('mi2');
	}
	
	$toggler.click(function() {
		$toggler.toggleClass('mi');
		$toggler.toggleClass('mi2');
		
		if (jQuery.browser.msie) {
			$container.toggle();
			jQuery.cookie (container.replace('#', ''), $container.css('display'), {expires: 365, path: '/'});
		} else {
			$container.slideToggle('normal', function() {
				jQuery.cookie (container.replace('#', ''), $container.css('display'), {expires: 365, path: '/'});
			});
		}
	});
}

function userPopups(container)
{
	jQuery(container)
		.find(".upopup")
		.each(function(i) {
			var item = jQuery(this);
			var imgContainer = jQuery(".uphoto", item);
			var login = jQuery("a.ulogin", item);

			login.mouseover(function()
			{
				var pos = login.position();
				
				imgContainer.css("left", pos.left);
				imgContainer.css("top", pos.top + login.outerHeight() + 1);
				imgContainer.show();
			});
			
			login.mouseout(function()
			{
				imgContainer.hide();
			});
		});
}

q.playSound = function(type)
{
	if (q[type+'Sound'])
	{
		var map = {notify : 'notifications', message: 'qmessage'};

		jQuery(function() {
			if (!jQuery('#sound-container').length) {
				jQuery('<span id="sound-container"></span>').appendTo('body');
			}

			var so = new SWFObject(q.staticUrl + "design/sound.swf?r=" + q.revision + "&s=" + map[type], "sounder", "1", "1", "8", "#ffffff", "low");
			so.write("sound-container");
		});
	}
}

q.updateSoundSettings = function(type, el)
{
	var $el = jQuery(el).toggleClass('soundon');
	var value = q[type+'Sound'] = Number($el.hasClass('soundon'));

	if ($el.get(0) != undefined)
		$el.get(0).tooltipText = $translation.get('nsound ' + value);
	
	jQuery.post('notifications/updateSoundSettings', {type: type, value: value});

	if (value)
		q.playSound(type);
}

q.menu = new Object;

q.menu.updateNotificationsCount = function(type, count, reloadPopup)
{
	q.menu[type] = parseInt(count);

	if (q.mainWindow) {
		q.mainWindow.q.menu[type] = parseInt(count);
	}

	if (count <= 0)
	{
		$oQuery('#n' + type).hide()
		$oQuery('#n' + type + 'popup').hide();
	}
	else
	{
		var $tr = q.mainWindow ? q.mainWindow.$translation : $translation;
		var text = (count == 1) ? $tr.get('n' + type) : '<b>' + count + '</b> ' + $tr.morph(count, 'n' + type);

		$oQuery('#n' + type).show().find('span').html(text);

		var $npopup = $oQuery('#n' + type + 'popup');

		if (reloadPopup && $npopup.is(':visible'))
		{
			$npopup.load($npopup.attr('url'), function(){
				$npopup.find('a,img,div').tooltip(q.tooltipSettings);
			});
		}

		if (type == 'notify')
			q.updateNCloseTitle();
	}
}

q.updateNCloseTitle = function()
{
	if ($oQuery('#nclose').get(0) != undefined)
		$oQuery('#nclose').get(0).tooltipText = $oQuery('#nclose').get(0).tooltipText.replace(/<b>(.*)<\/b>/, '(<b>' + q.menu.notify + '</b>)');
}

q.notifyNextPage = function(ids, maxId)
{
	var $npopup = $oQuery('#nnotifypopup');
	
	$npopup.fadeTo(300, 0.7)
	
	$oQuery.get($npopup.attr('url'), {markIds: ids, maxId: maxId}, function(data){
		$npopup.scrollTop(0).html(data).fadeTo(0, 1);
		$npopup.find('a,img,div').tooltip(q.tooltipSettings);
		q.menu.updateNotificationsCount('notify', q.menu.notify, false);
	});

	return false;
}

q.notifyClosePage = function(maxId)
{
	q.menu.updateNotificationsCount('notify', 0, false);
	jQuery.post('notifications/markAsNotNew', {maxId: maxId}, function(){
		if (q.assistantEnabled)
			aW = popupAssistant(q.assistantUrl+Math.random(), 228, 600, 'assistantWindow');
	});
	return false;
}

q.notifyOpenUrl = function(nId, url)
{
	jQuery.post('notifications/markAsNotNew', {nId: nId}, function(){
		window.location = url;
	});

	return false;
}

q.notifyPhotosPopup = function(nId,s,w,h)
{
	jQuery.post('notifications/markAsNotNew', {nId: nId}, function(){
		q.menu.updateNotificationsCount('notify', q.menu.notify - 1, true);
	});

	var o=window.open(s,'','width='+w+',height='+h+',toolbar=no,location=no,status=no,resizable=yes,scrollbars=yes,left='+(screen.width/2-w/2)+',top='+(screen.height/2-h/1.8));
	return false;
}

q.openPopup = function(senderId, url, delta)
{
	jQuery('#r'+senderId).hide();

	q.menu.updateNotificationsCount('message', q.menu.message - delta, false);

	return qMessagesPopup(url, 540, 650, 'qmw' + senderId);
}

q.toggleNotificationsPanel = function(type)
{
	var pos = $oQuery('#n' + type).offset();

	pos.top += 30;
	var $npopup = $oQuery('#n' + type + 'popup').css(pos);

	if ($npopup.is(':visible'))
		$npopup.fadeOut(200);
	else
	{
		$oQuery('#n' + (type == 'notify' ? 'message' : 'notify') + 'popup').fadeOut(200);

		jQuery.get($npopup.attr('url'), function(data){
			$npopup.html(data).slideDown(300);
			$npopup.find('a,img,div').tooltip(q.tooltipSettings);

			if (type == 'notify')
				q.updateNCloseTitle();
		})
	}

	if (q.mainWindow)
		q.mainWindow.focus();

	return false;
}

//q.markAsNotNew = function(nId)
//{
//
//	var $item = jQuery('._notifications #n' + nId);
//	var $group = $item.parents('._group:first');
//	var groupCount = $group.find('.item').length - 1;
//
//	var $header = $group.find('.header:first');
//	$header.html($header.html().replace(/\(.*\)/, '('+groupCount+')'));
//
//	$item.fadeOut(300, function(){
//		$item.remove();
//		q.menu.updateNotificationsCount('notify', jQuery('._notifications .item:visible').length, false);
//	})
//
//	if (groupCount <= 0) {
//		$group.fadeOut(300);
//	}
//
//	return false;
//}

jQuery.fn.loading = function()
{
	this.each(function() {
		$this = jQuery(this);
		$loader = $this.clone();

		if (($loader).is(':not(input)'))
			$loader.html(' ');

		$loader
			.val(' ')
			.addClass('jqueryloader')
			.css('cursor', 'auto')
			.height($this.height())
			.width($this.width())
			.removeAttr('id')
			//.attr('disabled', 'disabled')
			.unbind('click')
			.removeAttr('onclick');

		if ($loader.is('a') || $loader.is('span'))
			$loader.css('display', 'block');

		if ($loader.is('textarea'))
			$loader.attr('disabled', 'disabled');

		$loader.insertAfter($this);

		$this.hide();
		$loader.show();
	})

	return $loader;
}

jQuery.fn.loadingOverlay = function(params)
{
	var settings = jQuery.extend({
		css: {}
	}, params);

	this.each(function() {
		$this = jQuery(this);

		$loader = jQuery('<div class="photoloader"><!-- --></div>')
			.appendTo('body')
			.css('z-index', 9985);

		var rect = $this.offset();
		rect.width = $this.outerWidth(true);
		rect.height = $this.outerHeight(true);
		
		$loader.css(rect);		
		$loader.css({'background-color': 'white'});

		$loader.css(settings.css);
		$loader.show();
	})

	return $loader;
}

jQuery.fn.tinymce = function(params) {
	var instance = this;
	var $loader;


	instance.each(function() {
		$this = jQuery(instance);
		if (!$this.hasClass('tinymce__')) {
			var id = $this.attr('id');

			$this.css('opacity', 0);

			//var bgcolor = $this.parent().css('background-color');
			$loader = $this.loadingOverlay({css: {border: '1px solid #CCCCCC', 'background-color': 'white', margin:'-3px -6px'}});
		}
	})

	var appendEditor = function() {
		instance.each(function() {
			$instance = jQuery(instance);
			$this = jQuery(this);

			onTmceInit = function() {
				$loader.css('opacity', 1);

				jQuery('.mceEditor')
					.hide()
					.css('opacity', 0)
					.css('display', 'block')
					.fadeTo(700, 1);

				$loader.fadeOut(700);
			}

			if (!$this.hasClass('tinymce__'))
			{
				$this.addClass('tinymce__');

				var id = $this.attr('id');
				var settings = jQuery.extend({
					oninit: onTmceInit,
					elements: id
				}, params);

				$this.show();
				tinyMCE.init(settings);
			}
		})
	}

	if (window['tinymce'] == undefined){
		window.tinyMCEPreInit = {
			base : params.from_url.substring(0, params.from_url.lastIndexOf('/')),
			suffix : '',
			query : params.revision
		};

		jQuery.ajaxSetup({cache: true});
		
		jQuery.getScript(params.from_url, function() {
			jQuery.ajaxSetup({cache: false});
			tinymce.dom.Event.domLoaded = 1;
			appendEditor();
		})

		
	}
	else
		appendEditor();

	return instance;
}