var App = {
	vars: {
		site_url: "",
		sessionid: "",
		site_path: "",
		site_domain: "",
		site_media: "",
		quoteText: ""
	},
	initialize: function()
	{
		$(document).ready(function()
		{
			/*if($.browser.msie){
				$('img[@src$=".png"]').each(function() {
					var image = $(this).attr('src');
					//image = image.substring(5, image.length - 2);
					$(this).css({
						'backgroundImage': 'none',
						'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=crop, src='" + image + "')"
					});
					$(this).attr('src', '/media/design/tce/pixel.gif');
				});
			}*/
			$.ifixpng(App.vars.site_media+'design/pixel.gif');
			$('div.messagebox img[@src$=.png]').ifixpng(); 
			$('.walkthrough img[@src$=.png]').ifixpng(); 
			
			// Cache selection for board quotes
			if(window.getSelection || (document.selection && document.selection.createRange))
			{
				$(document).mouseup(App.setSelectedText);
			}
			
			// jQuery Tooltip plugin config
			$.extend($.fn.Tooltip.defaults, {
				track: true,
				delay: 200,
				showURL: false,
				showBody: " - ",
				fixPNG: true
			});
			$('*[@rel=tooltip]').each(function(i){
				$(this).css('cursor', 'help');
				$(this).Tooltip({showURL: false, showBody: " - ", track: true});
			});
			$('abbr, acronym').each(function(i){
				$(this).Tooltip({extraClass: 'acronym', delay: 300, showURL: false, showBody: " - ", track: true});
			});
			$('*[@rel=alt]').each(function(i){
				$(this).Tooltip({extraClass: 'acronym', delay: 400, showURL: false, showBody: " - ", track: true});
			});			
			$('#tooltip').bgiframe();
			
			$('div.pagination a[@href="#"]').click(function(){
				return false;
			});
			
			/*$('div.item_sticky div.infobar').click(function(){
				$('div.markdown', this.parentNode).toggle();
			});*/		
            
			// Add onclick events for toggles
            $('div.markdown p a.toggle_make_closed').each(function(){
                
				$('#_toggle_'+this.title).toggle();
				$(this).toggleClass('toggle_closed');
				$(this).removeClass('toggle_make_closed');
			});	
			$('div.markdown p a.toggle').click(function(){
				$('#_toggle_'+this.title).toggle();
				$(this).toggleClass('toggle_closed');
			});	
			
			// Userbar
			$('div#userbar p.toggle span.locked').css('visibility', 'visible');
			$('div#userbar p.toggle span.unlocked').css('visibility', 'visible');
			$('div#userbar p.toggle span.unlocked').hide();
			$('div#userbar p.toggle').click(function(){
				if($('div#userbar').hasClass('absolute'))
				{
					App.fixedUserbar(true);
				}
				else if($('div#userbar').hasClass('fixed'))
				{
					App.absoluteUserbar(true);
				}			
			}); 
			
			var timeout;
			var clear_callback = function(){
				$('#header div.modules ul.main ul').each(function(){
					$(this).css('visibility', 'hidden');
				});
				$('#header div.modules ul.main li.active ul').css('visibility', 'visible');
				$('#header div.modules ul.main li a.hover').removeClass('hover');
			}
			$('div.modules ul.main > li > a').hover(function(){
				clearTimeout(timeout);
				$('#header div.modules ul.main li a.hover').removeClass('hover');
				$('#header div.modules ul.main ul').each(function(){
					$(this).css('visibility', 'hidden');
				});
				$('ul', this.parentNode).css('visibility', 'visible');
				$(this).addClass('hover');
			}, function(){
				timeout = setTimeout(clear_callback, 500);
			});
			$('div.modules ul.main > li > ul').hover(function(){
				clearTimeout(timeout);
			}, function(){
				timeout = setTimeout(clear_callback, 500);
			});         

			if($.cookie('_userbar') == '1')
			{
				App.fixedUserbar();
			}
			
			// Block sending null login form
			$('div#userbar form').submit(function(){
				if($('input[@name=nick]', this).val() == '' || $('input[@name=password]', this).val() == '')
				{
					return false;
				}
			});
			// Blink info about new pm
			$('div.logged#userbar ul li a.new').each(function(){
				var a = $(this);
				function blink()
				{
					a.toggleClass("new");
				}
				setInterval(blink,  500);
			});
			
			// Clearing default search value
			var _searchDefault = '';
			$('input#_searchField').focus(function(){
				//$('#fast_search div.message').fadeOut('slow');
				if(_searchDefault == '')
				{
					_searchDefault = this.value;
					this.value = '';
				}
			}).blur(function(){
				if(this.value == '')
				{
					this.value = _searchDefault;
					_searchDefault = '';
				}
			});
			
			// Captcha refreshing
			var captcha_src = '';//$('img.captcha').attr('src');
			$('a.captcha_refresh').click(function(){
				if(captcha_src == '')
				{
					captcha_src = $('img.captcha').attr('src');
				}
				$('img.captcha').attr('src', captcha_src + '?c=' + Math.random());
				return false;
			});
			
			// Friendly post address copy
			$('div.post a.post_id_date, div.comment div.header ul a.post').each(function(){
				var href = $(this).attr('href');
				$(this).click(function(){
					var answer = prompt("Recznie skopiuj adres do schowka:", App.vars.site_url+href.substr(1));
					if(answer == undefined) {
						return false;
					}
				});
			});
			
			// Drop-down menu
			$('div.top_options div.menu ul li').hover(function(){
				$(this).addClass('hover');
			},function(){
				$(this).removeClass('hover');
			});
			
			$('#accordion dd:visible').each(function(){
				$(this).css('display', 'none').prev('dt.active').removeClass('active');
			});
			
			$('#accordion dt').click(function(){
				if($(this).hasClass('active'))
				{
					$(this).removeClass('active').next('dd').css('display', 'none');
					var cookie = 'null';
				}
				else
				{
					$('#accordion dd:visible').each(function(){
						$(this).css('display', 'none').prev('dt.active').removeClass('active');
					});
					$(this).addClass('active').next('dd').css('display', 'block');
					
					var cookie = $(this).attr('rel');
				}
				
				$.cookie('_active_accordion', cookie, {expires: 50, path: App.vars.site_path, domain: App.vars.site_domain});
			});
			
			var _set_accordion = $.cookie('_active_accordion');
			
			switch(_set_accordion)
			{
				case 'tce':
				case 'board':
				case 'rss':
				case 'ac':
					$('#accordion dt[@rel="'+_set_accordion+'"]').click();
					break;
				default:
					$('#accordion dt[@rel="tce"]').click();
					break;
			}
			
			$('#accordion .board li a').each(function(i){
				$(this).Tooltip({extraClass: 'board', delay: 0, showURL: false, showBody: " - ", track: false});
			});
			
			$('#accordion dt em.board').each(function(){
				var a = $(this);
				function blink()
				{
					a.toggleClass("em_blink");
				}
				setInterval(blink,  500);
			});
			
			// Nie cierpie firefoksa!
			
			// Polls
			$('div.poll').each(function(i){
				var divpoll = $(this);
				var form = $('div.form form', divpoll);
				if(form.is("form"))
				{
					App.pollAssign(form.get(0));
				}
				
				/*var aresults = $('a.show_results', divpoll);
				aresults.each(function(i){
					$(this).click(function(){
						App.pollLoadResult(divpoll, $(this).attr('href'), true);
						return false;
					});
				});*/
			});
			
			/*$('.thgroup[@rel*=lightbox] .thumb .magn a').lightBox({
				overlayBgColor: '#000000',
				overlayOpacity: 0.6,
				imageLoading: App.vars.site_media+'javascript/lightbox/lightbox-ico-loading.gif',
				imageBtnClose: App.vars.site_media+'javascript/lightbox/lightbox-btn-close.gif',
				imageBtnPrev: App.vars.site_media+'javascript/lightbox/lightbox-btn-prev.gif',
				imageBtnNext: App.vars.site_media+'javascript/lightbox/lightbox-btn-next.gif',
				imageBlank: App.vars.site_media+'javascript/lightbox/lightbox-blank.gif',
				//containerResizeSpeed: 350,
				txtImage: 'Zdjęcie',
				txtOf: 'z'
			});*/
		});
		
		/*$(window).load(function(){
			$('div.bbcode').each(function(){
				var $parent = $(this);
				
				$('span.bbimg > img', $parent).each(function(){
					var $span = $(this.parentNode);
					var $img = $(this);
					var parentWidth = Math.floor($parent.width() * 0.6);
					
					if($img.width() > parentWidth)
					{
						var rate = parentWidth / $img.width();
						var width = $img.width();
						var height = $img.height();
						
						$img.css('display', 'block')
							.attr('width', Math.floor(rate * width))
							.attr('height', Math.floor(rate * height))
							.before('<h4>Obrazek zmniejszony z '+width+'x'+height+' o '+(Math.round((1.0-rate)*100))+'%</h4>');
							
						$span.addClass('bbimg-small').css({'width': parentWidth+'px'});
					}
				});
			});
		});*/
	},
	fixedUserbar: function(cookie)  // stick the userbar "over" the site
	{  
		$('div#userbar').removeClass("absolute").addClass("fixed");
		$('div#userbar p.toggle span.locked').hide();
		$('div#userbar p.toggle span.unlocked').show();
		
		if(cookie)
		{
			$.cookie('_userbar', '1', {expires: 50, path: App.vars.site_path, domain: App.vars.site_domain});
		}
	},   
	absoluteUserbar: function(cookie)  // unstick
	{ 
		$('div#userbar').removeClass("fixed").addClass("absolute").css('top', 0);
		$('div#userbar p.toggle span.locked').show();
		$('div#userbar p.toggle span.unlocked').hide();
		
		if(cookie)
		{
			$.cookie('_userbar', '0', {expires: 50, path: App.vars.site_path, domain: App.vars.site_domain});
		}
	},
	setSelectedText: function()
	{
		var txt = window.getSelection ? window.getSelection().toString() : document.selection.createRange().text;
		if(txt.length > 0){
			App.vars.quoteText = txt;
		}
	},
	insertQuickQuote: function(user, date, post)
	{
		var addreply = $('#fastreply');
		var textarea = $('textarea', addreply);
		var infoBox = $('#fast_reply_help');
		
		if(textarea){
			if(App.vars.quoteText.length > 0){
				infoBox.hide();
				textarea.val(textarea.val()+"[quote="+user+", ("+post+")]\n"+App.vars.quoteText+"\n[/quote]\n");
				addreply.show();
			}else{
				infoBox.show();
				addreply.show();
			}
			textarea.focus();
			position = textarea.value.length;
			
			textarea.selectionStart = position;
			textarea.selectionEnd = position;
			
			if(document.selection){
				sel = document.selection.createRange();
			}
		}
	},
	buildParts: function(second, first, add)
	{
		built = first+'@'+second;
		
		if(add == undefined) {add = '';}else {add = ' ('+add+')';}
		
		alert("Adres e-mail: "+built+add);
		return false;
	},
	pollAssign: function(form)
	{
		var parent = $(form).parent();
		var loading = $('div.loading', parent.parent());
		var results = $('div.results', parent.parent());
		var message = $('div.message', parent.parent());
		
		advAJAX.assign(form, {
			parameters:
			{
				"ajax": "true",
				"_form_type": "poll_vote"
			},
			onLoading: function(obj)
			{
				parent.hide();
				loading.show();
			},
			onSuccess: function(obj)
			{
				var msg;
				try
				{
					responseJSON = eval("("+obj.responseText+")");
				}
				catch(e)
				{
					msg = "Błąd wewnętrzny";
					message.html(msg).show();
					loading.hide();
					parent.show();
					return false;
				}
				switch(responseJSON.answer)
				{
					case '0':
						msg = "Błąd wewnętrzny";
						message.html(msg).show();
						loading.hide();
						parent.show();
						return false;
						break;
					case '2':
						msg = "Nie podano id ankiety";
						message.html(msg).show();
						loading.hide();
						parent.show();
						return false;
						break;
					case '1':
						msg = "Nie jesteś zalogowany";
						message.html(msg).show();
						loading.hide();
						parent.show();
						return false;
						break;
					case '3':
						msg = "Już głosowałeś w tej ankiecie";
						break;
					case '4':
						msg = "Nie można już głosować";
						break;
					case '5':
						msg = "Nie wybrano żadnej opcji";
						message.html(msg).show();
						loading.hide();
						parent.show();
						return false;
						break;
					case '6':
						msg = "Dziękujemy za oddanie głosu";
						break;
				}
				//alert(responseJSON.url);
				var occured = false;
				if(msg != '')
				{
					occured = true;
					message.html(msg);
				}
				
				if(responseJSON.url == '')
				{
					msg = "Błąd wewnętrzny";
					message.html(msg).show();
					loading.hide();
					parent.show();
					return false;
				}
				App.pollLoadResult(parent.parent(), responseJSON.url, occured);
			},
			onError: function(obj)
			{
				loading.hide();
				message.html('Wystąpił błąd podczas wysyłania.');
				message.show();
				parent.show();
			}
		});
	},
	pollLoadResult: function(divpoll, req_url, only)
	{
		var loading = $('div.loading', divpoll);
		var divform = $('div.form', divpoll);
		var results = $('div.results', divpoll);  
		var message = $('div.message', divpoll);
		
		results.hide();
		message.hide();
		
		if(only)
		{
			divform.hide();
			loading.show();
		}
		advAJAX.get({
			url: req_url,
			parameters:
			{
				"ajax": "true"
			},
			onComplete: function(obj)
			{
				loading.hide();
			},
			onSuccess: function(obj)
			{      
				if(only)
				{
					message.show();
				}
				
				if(!only && obj.responseText == 'error 1')
				{
					message.html("Wystąpił błąd").show();
					return false;
				}

				results.html(obj.responseText);
				results.show();
			}
		});
	}
}
