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);
			}
			
            $.fn.tipsy.defaults = {
                delayIn: 0,      // delay before showing tooltip (ms)
                delayOut: 0,     // delay before hiding tooltip (ms)
                fade: false,     // fade tooltips in/out?
                fallback: '',    // fallback text to use when no tooltip text
                gravity: $.fn.tipsy.autoNS,    // gravity
                html: false,     // is tooltip content HTML?
                live: true,     // use live event support?
                offset: 0,       // pixel offset of tooltip from element
                opacity: 1.0,    // opacity of tooltip
                title: 'title',  // attribute/callback containing tooltip text
                trigger: 'hover' // how tooltip is triggered - hover | focus | manual
            };
            
            $('*[rel=tooltip]').css('cursor', 'help').tipsy({delayIn: 0, className: 'tipsy_tooltip'});
            $('*[rel=tooltip2]').tipsy({delayIn: 0, className: 'tipsy_tooltip'});
            $('abbr, acronym').tipsy({delayIn: 300});
            $('*[rel=alt]').tipsy({delayIn: 400});	
            $('*[rel=ralt]').tipsy({delayIn: 100, gravity: 'w'});	
            $('*[rel=htmltooltip]').tipsy({delayIn: 0, html: true, className: 'tipsy_tooltip'});         
			
			$('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);
				}			
			}); 
			
            $('#header div.modules ul.main ul').each(function(){
                var $ul = $(this);
                var $li = $ul.parent();
                var $main = $li.parent();
                var ulWidth = $ul.outerWidth();
                var liWidth = $li.outerWidth();
                var mainWidth = $main.outerWidth();
                
                var liPosition = $li.position().left;
                
                if(liWidth > ulWidth)
                {
                    $ul.width(liWidth);
                    ulWidth = liWidth;
                }
                else if(liWidth < ulWidth)
                {
                    var delta = Math.round((ulWidth - liWidth) / 2);
                    liPosition -= delta;
                }
                
                if(liPosition+ulWidth > mainWidth)
                {
                    liPosition -= liPosition + ulWidth - mainWidth;
                    liPosition += 5;
                    $ul.css('left', 'auto');
                    $ul.css('right', 0);
                }
                else if(liPosition < 0)
                {
                    liPosition = -5;
                    $ul.css('left', liPosition+'px');
                }
                else
                {
                    //liPosition -= 5;
                    $ul.css('left', liPosition+'px');
                }
                
                
            });
            
			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.hover').removeClass('hover');
			}
			$('div.modules ul.main > li > a').hover(function(){
				clearTimeout(timeout);
				$('#header div.modules ul.main li.hover').removeClass('hover');
				$('#header div.modules ul.main ul').each(function(){
					$(this).css('visibility', 'hidden');
				});
				$('ul', this.parentNode).css('visibility', 'visible');
				$(this).parent().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 'cqb':
				case 'tce':
				case 'board':
				case 'rss':
				case 'ac':
					$('#accordion dt[rel="'+_set_accordion+'"]').click();
					break;
				default:
					$('#accordion dt[rel="cqb"]').click();
					break;
			}
			
            $('#accordion .board li a').tipsy({html: true, gravity: 'sw', className: 'tipsy_board'});
			
			$('#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();
			}
		});
	}
}

