jQuery(document).ready(function($){
	
	// QUICK CONFIG
	var leadStorySpeed = 5; // szybkość zmiany "tematów dnia"
	var arcadePanelsSpeed = 10; // szybkość przewijania w pasażu finansowym nad stopką
	
	$('.topQuotesList').jcarousel({
		animation: 1500,
		wrap: "circular"
	});
	
	$('#arcade:not(".arcade-manager") #arcadePanels .panel').jcarousel({
		auto: arcadePanelsSpeed,
		animation: 1500,
		scroll: 7,
		initCallback: function(carousel) {
			if(carousel.size() > 7) {
				carousel.buttonNext.css('visibility', 'visible');
				carousel.buttonPrev.css('visibility', 'visible');
			}
		}
	});
	
	$('#arcade.arcade-manager .panel').jcarousel({
		auto: arcadePanelsSpeed,
		animation: 1500,
		scroll: 4,
		initCallback: function(carousel) {
			if(carousel.size() > 4) {
				carousel.buttonNext.css('visibility', 'visible');
				carousel.buttonPrev.css('visibility', 'visible');
			}
		}
	});
	
	
	// ========== search ==========
	$('.searchBox .tabs a').bind('click', function(){
		var li = $(this).parent();
		var liAll = li.parent().children('li');
		
		$('.searchBox input[name="searchtype"]').val($(this).attr('href').substr(1));
		
		liAll.removeClass('active');
		li.addClass('active');
				
		// Ukryj dropdown jezeli wyszukiwanie nie jest dla calosci
		// if (li.children('a').attr('href') !== "#site") {
		// 	$('.siteDropdown').hide();
		// } else {
		// 	$('.siteDropdown').show();
		// }

		// if (li.children('a').attr('href') == "#companies") {
		// 	$('.searchBox input');
		// } else {
		// 	$('.searchBox input');
		// }
		
		return false;
	});
	
	// ========== userPanel ==========
	$('a.optLink').click(function(event) {
		var $this = $(this);
		var li = $this.parent('li');
		var panel = $('#'+$this.data('panel'));
		
		if(panel.is(':hidden')) {
			$('.hiddable .panel').fadeOut('fast');
			$('.hiddable').removeClass('active');
			
			li.addClass('active').addClass('hiddable');
			li.append(panel);
			panel.fadeIn('fast');
			
			// IE7 z-index fix
			if($.browser.msie && $.browser.version == 7) {
				$this.parents().css('z-index', '2');
			}
			
			// hide panel when click anywhere, but no if click on .panel
			$('body').one('click', function(){
				li.removeClass('active');
				panel.fadeOut('fast');
			});
			
			panel.click(function(event){
				event.stopPropagation();
			});
		} else {
			li.removeClass('active');			
			panel.fadeOut('fast');
		}
		
		event.stopPropagation();
		return false;
	});
	
	// ========== mainMenu .panel ==========
	$('#mainMenu li').bind('mouseover', function(event){
		var panel = $(this).find('.panel').first();
		var panelMenu = $(this).find('.panelMenu').first();
		var panelContent = $(this).find('.panelContent').first();
		
		// equal height
		if (panelMenu.innerHeight() > panelContent.innerHeight()) {
			panelContent.innerHeight(panelMenu.innerHeight());
		}
		else {
			panelMenu.innerHeight(panelContent.innerHeight());
		}
		
		if($(this).position().left + panel.outerWidth(true) > $('#mainMenu').width()) {
			panel.addClass('panel-right');
		}
		
		if($.browser.msie) {
			if(panel.hasClass('panel-right')) {
				panel.css('right', '0');
			}
			else {
				panel.css('left', '0');
			}
			
			panel.css('border', '1px solid #cecdca');
			panel.css('border-top', '0');
			
			// IE7 z-index fix
			if($.browser.version == 7) {
				$(this).parents().css('z-index', '1');
			}
		}
	});
	
	$('#mainMenu li').bind('mouseout', function(event){
		// IE7 z-index fix revert
		if($.browser.msie && $.browser.version == 7) {
			$(this).parents().css('z-index', 'auto');
		}
	});
	
	
	// ========== dropdown ==========
	$('dl.dropdown dt').bind('click', function(event){
		var obj = $(this);
		
		obj.parent('dl').toggleClass('dropdown-active');
		$('dl.dropdown').not(obj.parent('dl')).removeClass('dropdown-active');
		
		// if there is comboBox inside - focus on it
		var combo = obj.next('dd').find('.comboBox');
		if(combo) {
			combo.find('input[type="text"]').first().focus();
		}
		
		// hide dropdown when click anywhere, but no if click on <dd>
		$('body').one('click', function(){
			obj.parent('dl').removeClass('dropdown-active');
		});
		event.stopPropagation();
		
		obj.next('dd').click(function(event){
			event.stopPropagation();
		});
		
		var hidden = obj.parent('dl').data('field');
		if (hidden != undefined) {
			obj.parent('dl').find('li').click(function(){
				$('#'+hidden).val($(this).data('value'));
				obj.parent('dl').removeClass('dropdown-active');
				obj.html($(this).text() + '<span><img src="public/images/t.gif"></span>');
				return true;
			});
		}
	});
	
	
	// ========== comboBox ==========
	$('div.comboBox > span').bind('click', function(e) {
		var $this = $(this);
		var $comboBoxList = $this.siblings('ul.comboBoxList');
		
		$comboBoxList.toggle();
		
		$('body').one('click', function() {
			$comboBoxList.hide();	
		});
		e.stopPropagation();
		
		$comboBoxList.click(function(e){
			e.stopPropagation();
		});		
	});
	
	$('div.comboBox li.item').click(function() {
		var $this = $(this);
		var $comboBoxList = $this.parent('ul');
		var liVal = $this.text();
		
		$comboBoxList.children('li').removeClass('active');
		$this.addClass('active');		
		$comboBoxList.parents('div.comboBoxSet').children('input[name="searchin"]').val(liVal);		
		$comboBoxList.hide();
	});
	
	
	// ========== footMenu ==========
	$('#footMenu .more').bind('click', function(event){
		var obj = $(this);
		
		if(!obj.hasClass('more-active')) {
			obj.html('mniej <img src="public/images/t.gif" alt="&uarr;">');
			obj.next('div.rest').show();
		}
		else {
			obj.html('więcej <img src="public/images/t.gif" alt="&rarr;">');
			obj.next('div.rest').hide();
		}
		
		obj.toggleClass('more-active');
		return false;
	});
	
	
	// ========== tabs ==========
	$('#leadStory').uitabs({fx: {opacity: 'toggle'}}).uitabs('rotate', leadStorySpeed*1000);
	
	$('#arcade:not(".arcade-manager")').uitabs({
		selected: Math.floor(Math.random()*($('#arcadeTabs').children().size()))
	});
	
	$('#readAlso').uitabs();
	$('#quoteTabs').uitabs();
	$('.cmpInfoTabs').uitabs();
	$('#topQuotes').uitabs();
	$('#search').uitabs();
	
	var myQuotesCurrentContainer;
	var myQuotesCurrentGroup;
	var myQuotesCurrentMethod;
	
	$('#topQuotes .dropdownList a').click(function(){
		return dropdownHide(this, $(this).text());
	});
	
	$('#myQuotes .quote').click(function(){
		var ticket = $(this).data('ticket');
		
		if (!ticket || $('#'+myQuotesCurrentContainer).length==0 || 
			observedCharts[myQuotesCurrentContainer].current == ticket) {
			return true;
		}
		
		loadObservedChart(ticket, myQuotesCurrentContainer, myQuotesCurrentGroup, myQuotesCurrentMethod);
		return false;
	});
	
	$('#myQuotes').uitabs({
		show: function(event, ui) {
			var selected = $('#myQuotes').uitabs('option', 'selected');
			
			switch(selected) {
				case 0:
				case 1:
				case 3:
				case 4:
					var idNum = selected+1;
					var items = $('#myquotes-' + idNum).find('.quote');
					
					myQuotesCurrentContainer = 'indexQuoteChart'+idNum;
					
					myQuotesCurrentGroup = 'gielda';
					myQuotesCurrentMethod = 'today';
					
					if (selected == 1 || selected == 4) {
						myQuotesCurrentMethod = 'month';
						if (selected == 1) {
							myQuotesCurrentGroup = 'waluty';
						}
					}
					
					loadObservedChart(items.first().data('ticket'), myQuotesCurrentContainer, myQuotesCurrentGroup, myQuotesCurrentMethod);
					
					break;
			}
		}
	});
	
	// ========== tableSorter ==========
	$.tablesorter.defaults.widgets = ['zebra'];
	
	$('.quoteTbl:not(.quoteTblIcons, .quoteTblOne, .quoteTblCompany) table').tablesorter({
		headers: {
			0: {sorter: false},
			1: {sorter: false},
			2: {sorter: false},
			4: {sorter: false}
		}
	});
	$('.quoteTblIcons table').tablesorter({
		sortInitialOrder: 'desc',
		sortList: [[1,0]],
		headers: {
			/*0: {sorter: false},
			1: {sorter: false},
			2: {sorter: false},
			3: {sorter: false},
			5: {sorter: false}*/
		}
	});
	$('.quoteTblOne table').tablesorter({
		headers: {
			0: {sorter: false},
			2: {sorter: false}
		}
	});
	
	$('.quoteTbl table').bind('sortEnd',function() {
		$(this).find('td').removeClass('highlighted');
		
		var matchString = '';
		$(this).children('thead').find('.headerSortUp, .headerSortDown').each(function(i){
			var activeThNum = $(this).attr('class').match(/c(\d+)/)[1];
			matchString += 'td:eq(' + activeThNum + '), ';
		});
		matchString = matchString.slice(0, -2);
		
		$(this).children('tbody').children('tr').each(function(i){
			$(this).children(matchString).addClass('highlighted');
		});
	});
	
	
	// ========== newsletter ==========
	if ($('#newsletterBtn').length) {
		var $newsletterBtn = $('#newsletterBtn');
		var newsletterBtnY = $newsletterBtn.position().top;
		
		if ($.cookie('hideNewsletter')) {
			$newsletterBtn.hide();
		}
		
		$newsletterBtn.overlay({
			top:'7%',
			mask: {
				color: '#000',
				loadSpeed: 200,
				opacity: 0.5
			},
			closeOnClick:false,
			fixed:false,
			api:true,
			onClose: function(){
				$.cookie('hideNewsletter','true');
				$newsletterBtn.hide();
			}
		});
		
		$newsletterBtn.append('<span class="mask"></span>');
		$newsletterBtn.children('span.mask').hide();
		
		setInterval(function() {
			$newsletterBtn.children('span.mask').css('opacity', '0')
			.show(100)
			.fadeTo(500,1)
			.fadeTo(500,0);
		}, 7000);
		
		/*$(window).scroll(function() {	
			var scrollPos = $(this).scrollTop();
			
			if(scrollPos < 2100)
				$newsletterBtn.stop().animate({top:newsletterBtnY+scrollPos}, 'fast');
				//$newsletterBtn.css("top",scrollPos + "px");
		});*/
	}
	
	$('#scrollingNLEmail').focus(function() {
		if(this.value == 'Wpisz swój e-mail') this.value = '';
	}).blur(function() {
		if(this.value == '') this.value = 'Wpisz swój e-mail';
	});
	
	$('#chb_newsCustomize').change(function() {
		if($(this).is(':checked'))
			$('.newsletter-customize').slideDown();
		else
			$('.newsletter-customize').slideUp();
	});
	
	$('div.newsletter-customize').find('img.expand').click(function(e) {
		var $this = $(this);
		
		$this.toggleClass('expand');
		$this.parent().next('div.chb-adv').slideToggle();
		
		e.preventDefault();
		return false;
	});
	
	
	// ========== myQuotes ==========
	$('#myQuotesPanels .dropdown').hide();
	$('#myQuotesPanels .btn-remove').hide();
	
	$('#myQuotesPanels div.panelFoot a.btn').click(function() {
		var container = $('#myQuotesPanels');
		var $this = $(this);
		var panel = $this.closest('.panel');
		
		if (container.data('guest')) {
			container.find('.errors').hide().text('Zaloguj się, aby dostosować obserwowane instrumenty.').fadeIn(300);
			return false;
		}
		
		$this.hide();
		panel.find('.dropdown').show();
		panel.find('.btn-remove').show().click(function(){
			var remove = $(this);
			$.ajax({
				url: remove.attr('href'),
				success: function (response) {
					remove.parent('li').hide();
					return false;
				}
			});
			return false;
		});
		
		return false;
	});
	
	// ========== quoteTbl ==========
	if($('div.companyPriceTbl').size() == 0) {
		$('div.quoteTbl thead tr:nth-child(2) th:nth-child(6)').addClass('light-highlighted');
		$('div.quoteTbl tbody td:nth-child(7)').addClass('light-highlighted');
	}
	else {
		$('div.companyPriceTbl div.quoteTbl thead tr:nth-child(2) th:nth-child(4)').addClass('light-highlighted');
		$('div.companyPriceTbl div.quoteTbl tbody td:nth-child(4)').addClass('light-highlighted');
	}
	
	
	// ========== datePicker ==========
	$.datepicker.regional['pl'] = {
		closeText: 'Zamknij',
		prevText: '&#x3c;Poprzedni',
		nextText: 'Następny&#x3e;',
		currentText: 'Dziś',
		monthNames: ['Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec',
		'Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'],
		monthNamesShort: ['Sty','Lu','Mar','Kw','Maj','Cze',
		'Lip','Sie','Wrz','Pa','Lis','Gru'],
		dayNames: ['Niedziela','Poniedziałek','Wtorek','Środa','Czwartek','Piątek','Sobota'],
		dayNamesShort: ['Nie','Pn','Wt','Śr','Czw','Pt','So'],
		dayNamesMin: ['N','Pn','Wt','Śr','Cz','Pt','So'],
		weekHeader: 'Tydz',
		dateFormat: 'dd.mm.yy',
		firstDay: 1,
		isRTL: false,
		showMonthAfterYear: false,
		yearSuffix: ''};
		
	$.datepicker.setDefaults($.datepicker.regional['pl']);	
	
	$('input.datepicker').datepicker({
		showOn: 'both',
		buttonImage: 'public/images/calendar.png',
		buttonImageOnly: true,
		buttonText: 'Pokaż kalendarz',
		dateFormat: 'dd.mm.yy'
	});
	
	$('#companyHistory').datepicker('option', {
		onSelect: function(dateText, i) {
			var ticket = $(this).data('id');
			var module = $(this).data('module');
			module = module ? module : 'gielda';
			
			$.get('/'+module+'/json/'+ticket+'/history/'+i.currentYear+'-'+(i.currentMonth+1)+'-'+i.currentDay, function(response) {
				if (response) {
					$('#hd-close').text(money(response.close));
					$('#hd-open').text(money(response.open));
					$('#hd-min').text(money(response.min));
					$('#hd-max').text(money(response.max));
					$('#hd-diff').html(proc(response.diff, ''));
					$('#hd-diff_proc').html(proc(response.diff_proc));
					$('#hd-volume').text(money(response.volume));
					
					$('#hd-date').text(dateText);
				} else {
					alert('Dane historyczne dla wybranej daty nie są dostępne.');
				}
			});
			
			return false;
		}
	});
	
	// ========== managerSlider ==========
	if( $('#managerSlider').length != 0 ) {
		$('#managerSlider .pics').after('<div class="nav"><ul></ul><div class="clear"></div></div>').cycle({
			fx: 'fade',
			pause: 1,
			timeout: 3000,
			pager: 'div.nav ul',
			pagerAnchorBuilder: function(idx, slide) {
				return '<li><a href="#" title="">' + (idx+1) + '</a></li>';
			}
		});
	}
	
	// ========== rejestracja ajax ==========
	$('#userRegister').submit(function() {
		var dataString = 
			'email='+ $('#cf-reg-email').val() + 
			'&name=' + $('#cf-reg-name').val() + 
			'&pass=' + $('#cf-reg-pass').val() + 
			'&pass2=' + $('#cf-reg-pass2').val() + 
			'&terms=' + $('#cf-reg-terms:checked').val();
		
		$.ajax({
			url: 'http://'+document.domain+'/user/register',
			type: 'post',
			data: dataString,
			success: function(response){
				$('.errors').hide();
				
				if (response.status == 'ok') {
					$('#userRegister').fadeOut('fast', function() {
						$(this).fadeIn('fast').html(response.msg);
					});
				} else {
					var errors = response.errors;
					for (i in errors) {
						$('#error-'+i).text('').fadeIn('fast');
						
						for (j in errors[i]) {
							$('#error-'+i).append(errors[i][j]);
						}
					}
				}
			}
		});
		
		return false;
	});
	
	// ========== logowanie ajax ==========
	$('#userLogin').submit(function() {
		var dataString = 
			'email='+ $('#cf-email').val() + 
			'&pass=' + $('#cf-pass').val() + 
			'&remember=' + ($('#cf-remember:checked').val() ? 1 : 0);
		
		$.ajax({
			url: 'http://'+document.domain+'/user/login',
			type: 'post',
			data: dataString,
			success: function(response){
				if (response.status == 'ok') {
					window.location.reload();
				} else {
					$('#login-error').fadeOut('fast', function() {
						$(this).fadeIn('fast').html(response.msg);
					});
				}
			},
			error: function(a,b) {
				console.log(a);
				console.log(b);
			}
		});
		
		return false;
	});

	// ========== spolki - sidebar ==========
	$('#SideCompany').autocomplete({
		appendTo: $('#SideCompany').closest('.comboBoxHolder'),
		minLength: 3,
		source: '/autocomplete/a',
		select: function( event, ui ) {
			window.location = '/gielda/profil/' + ui.item.value;
			return false;
		}
	});

	// ========== search autocomplete ==========
	$('#TopSearchCompany').autocomplete({
		appendTo: $('#TopSearchCompany').closest('.comboBoxHolder'),
		minLength: 3,
		source: '/autocomplete/g',
		select: function( event, ui ) {
			window.location = '/gielda/profil/' + ui.item.value;
			return false;
		}
	});
	
	// ========== newsletter ================
	var NLSelectedCompanies = [];
	var NLLastCompany;
	
	$('#NLCompany').autocomplete({
		appendTo: $('#NLCompany').closest('.comboBoxHolder'),
		minLength: 3,
		source: '/autocomplete/g',
		select: function( event, ui ) {
			NLLastCompany = ui.item;
			return true;
		}
	});
	
	$('#NLCompanySubmit').click(function(e){
		if (NLLastCompany) {
			for(i in NLSelectedCompanies) {
				if (NLSelectedCompanies[i].name == NLLastCompany.name) {
					alert('Wybrana pozycja jest już na Twojej liście.');
					e.stopPropagation();
					return false;
				}
			}
			
			NLSelectedCompanies.push(NLLastCompany);
			NLLastCompany = null;
			$('#NLCompany').val('');
			showSelectedCompanies();
		}
		
		e.stopPropagation();
		return false;
	});
	
	function showSelectedCompanies() {
		$('#NLCompanyItems').html('');
		
		for(i in NLSelectedCompanies) {
			$('#NLCompanyItems').append('<li>'+NLSelectedCompanies[i].name+'</li>');
		}
	}
	
	$( '#scrollingNL' ) .validate ( {
	submitHandler : function ( form ) {
					
					var preferences = {};
					checkboxes = $("#scrollingNL input[type=checkbox]");
					
					
					// Omijam pierwszy CB, bo jest to "Chce dostosowac NL do swoich potrzeb
					for ( i=1; i< checkboxes.length; i++ ) {
						if ( checkboxes [i].checked )
							preferences [  'detail_12['+(i-1)+']'  ] = i;
						else
							continue;
					}
					
					var details = $("[name^='detail']");
					for ( i=0; i< details.length; i++ ) {
						preferences [ details[i].name ] = details[i].value ;
					}
					
					var companies = [];
					for ( i=0; i< NLSelectedCompanies.length; i++ ) {
						 companies.push ( NLSelectedCompanies[i].id );
					}
					
					preferences['detail_14'] = companies.join (',');
					
					preferences['form_send_basic'] = '1';
					preferences['form_send_optional'] = '1';	
					$.getJSON( 'http://mejlonosz.pl/m/sub/57/0/1/'+ form.scrollingNLEmail.value +'/cos?callback=?', preferences, function(json) { 
					
						
						if ( json.success ) {
							$( "#scrollingNL" ).fadeOut ();
							$("#o_newsletter div.newsletter-info p").fadeOut();
							$("#o_newsletter div.newsletter-info").html ( "<p>" + json.komunikat + "</p>");
							$("#o_newsletter div.newsletter-info p").fadeOut();
							$("#o_newsletter div.newsletter-info p").fadeIn();
							
						}
					});

				},
			rules : {
						"scrollingNLEmail"  : { required: true, email: true } 
					},
			messages :  {
						"scrollingNLEmail" : {
									required:  "Podaj poprawny adres e-mail",
									email : "Podaj poprawny adres e-mail"
							}
						}
		}
	);
	
	$( '#footNL' ).validate ( {
			submitHandler : function ( form ) {
					
					$.getJSON( 'http://mejlonosz.pl/m/sub/57/0/1/'+ form.email.value +'/cos?callback=?', {var1:'val1', var2:'val2'}, function(json) { 
						
						if ( json.success ) {
							$( "#footNL fieldset" ).fadeOut ();
							$( "#footNL fieldset input" ).remove();
							$( "#footNL fieldset div" ).remove();
							$( "#footNL fieldset" ).html ( "<h4 style='padding:2px;color:#1D7AF5'>" + json.komunikat+"</h4>");
							$( "#footNL fieldset" ).fadeIn();
						}
					});

				},
			rules : {
						"email"  : { required: true, email: true } 
					},
			messages :  {
						"email" : {
									required:  "Podaj poprawny adres e-mail",
									email : "Podaj poprawny adres e-mail"
							}
						}
					}
		);
	
	
	// ========== ocena komentarzy ==========
	$('.rate').each(function() {
		var $this = $(this);
		var postId = $this.data('id');
		var buttU = $this.find('.rate-u');
		var buttD = $this.find('.rate-d');
		
		buttU.click(function() {
			sendVote('up');
		});
		
		buttD.click(function() {
			sendVote('down');
		});
		
		function sendVote(type) {
			if ($this.data('guest')) {
				$this.find('.rate-msg').hide().text('Zaloguj się aby oddać głos.').fadeIn(300);
				return false;
			}
			
			var url = '/forum/vote/'+postId+'/'+type;
			
			$.ajax({
				url: url,
				success: function(response) {
					buttU.find('span').text(response.up);
					buttD.find('span').text(response.down);
					$this.find('.rateBar div div').animate({'width':response.proc+'%'}, 300).css({overflow:'visible'});
				}
			});
		}
	});
	
	// ========== automatyczne odświażanie ==========
	var timer;
	
	function replaceTimer() {
		if (timer) {
			clearTimeout(timer);
		}
		
		if ($('#arCheckbox').attr('checked')) {
			timer = setTimeout(function() {
				window.location.reload();
			}, $('#arDelay').val()*1000);
		}
	}
	
	if ($('#arCheckbox').length) {
		var cb    = $('#arCheckbox');
		var delay = $('#arDelay');
		var now   = $('#arNow');
		
		cb.click(replaceTimer);
		delay.blur(function() {
			$.cookie('autoRefreshDelay', delay.val());
			replaceTimer();
		});
		now.click(function(){
			window.location.reload()
		});
		
		if ($.cookie('autoRefreshDelay')) {
			delay.val($.cookie('autoRefreshDelay'));
		}
		
		replaceTimer();
	}
});

function myQuotesAdd(type, id, list) {
	$.ajax({
		url: '/user/observed/'+type+'/'+id,
		success: function (response) {
			list.append(
				'<li>'+
				'<a class="btn btn-remove btnDel" href="/user/observed/'+type+'/'+id+'">x</a>'+
				'<a class="quote" href="/gielda/profil/'+response.item.nazwa+'">'+
					'<span class="name">'+response.item.nazwa+'</span>'+
					'<span class="price">'+response.item.close+'</span>'+
					'<span class="chabs">'+response.item.diff+'</span>'+
					'<span class="chrel">'+
						response.item.diff_proc + (response.item.diff_proc_raw<0 ? 
							'% <img src="public/images/t.gif" alt="&darr;" class="charr-d">' : 
							'% <img src="public/images/t.gif" alt="&darr;" class="charr-u">')+
					'</span>'+
				'</a></li>'
			);
		}
	});
}

function dropdownHide(link, label) {
	var dl = $(link).parents('dl');
	dl.removeClass('dropdown-active');
	
	if (label) {
		dl.find('dt em').text(label);
	}
	
	return false;
}

// ========== małe wykresy ==========

function timeToDate(date) {
	var tmp = date.split(' ');
	var day  = tmp[0].split('-');
	
	if (tmp[1]) {
		var time = tmp[1].split(':');
	} else {
		var time = [16,0,0];
	}
	
	var x = new Date();
	x.setUTCFullYear(day[0]);
	x.setUTCMonth(day[1]-1);
	x.setUTCDate(day[2]);
	x.setUTCHours(time[0]);
	x.setUTCMinutes(time[1]);
	x.setUTCSeconds(time[2]);
	return x;
	//return new Date(day[0], day[1]-1, day[2], time[0], time[1], time[2]);
}

var observedCharts = [];
var observedTicket = [];

function loadObservedChart(ticket, container, group, method) {
	if (observedCharts[container] != undefined && observedCharts[container].current == ticket) {
		return false;
	}
	
	if (!$('#'+container).length) {
		return false;
	}
	
	observedTicket[container] = ticket;
	
	$.get('/'+group+'/json/'+ticket+'/'+method, function(response) {
		var data = [];
		var first, last;
		var items = response.data;
		
		for(var time in items) {
			if (!first) {
				first = time;
			}
			last = time;
			
			data.push({
				y: parseFloat(items[time]),
				x: timeToDate(time)
			});
		}
		
		if (data.length == 1) {
			var x = timeToDate(time);
			x.setMinutes(x.getMinutes()+1);
			data.push({
				y: parseFloat(items[time]),
				x: x
			});
			
			last = x.getFullYear()+'-'+(x.getMonth()+1)+'-'+x.getDay()+' '
				+x.getHours() + ':' + x.getMinutes() + ':' + x.getSeconds();
		}
		
		if (response.close) {
			var close = parseFloat(response.close);
			var closeDate = response.closeDate;
		}
		
		if (observedCharts[container] != undefined) {
			var chart = observedCharts[container].chart;
			
			chart.setTitle({text:ticket});
			
			chart.series[0].setData(data, false);
			
			if (close) {
				chart.series[1].setData([
					{x: timeToDate(first), y: close},
					{x: timeToDate(last), y: close}
				], false);
			}
			
			chart.redraw();
			
			observedCharts[container].current = ticket;
		} else {
			observedCharts[container] = {
				current: ticket,
				chart: createNewChart(container, ticket, first, last, close, closeDate, data)
			}
		}
	});
}

function createNewChart(container, ticket, first, last, close, closeDate, data) {
	var series = [{
		id: 'today',
		data: data, 
		type:'line'
	}];
	
	if (close) {
		series.push({
			id: 'close',
			name: 'close',
			data: [
				{x: timeToDate(first), y: close},
				{x: timeToDate(last), y: close}
			],
			type: 'area'
		});
		
		var tooltipFun = function() {
			if (this.series.name == 'close') {
				return 'Zamknięcie '+closeDate+': <br /><b>' + this.y.toFixed(2) + '</b>';
			}
			
			return Highcharts.dateFormat('%H:%M', this.x) + ': <b>' + this.y.toFixed(2) + '</b>';
		};
	} else {
		var tooltipFun = function() {
			return Highcharts.dateFormat('%d.%m', this.x) + ': <b>' + this.y.toFixed(2) + '</b>';
		};
	}
	
	Highcharts.setOptions({lang:HighStockLangPl});
	
	return new Highcharts.Chart({
		chart: {
			renderTo: container,
			marginLeft: 40, // aby zapobiec animacji poziomej
			marginTop: 15,
			animation: {duration: 300},
			events: {
				click: function() {
					window.location = '/gielda/profil/'+observedTicket[container];
				}
			}
		},
		title: {
			text: ticket,
			floating: true,
			y: 3, x: 13,
			style: {fontSize: '13px'}
		},
		yAxis: {
			id: 'yAxis',
			title: null, 
			labels: { style: {fontSize: '9px'}},
			endOnTick: true,
			startOnTick: false,
			tickPixelInterval: 40
		},
		xAxis: {
			type: 'datetime',
			labels: {
				rotation: 45, y: 17, x: -4, style: {fontSize: '9px'}
			},
			tickPixelInterval: 35
		},
		legend: {enabled: false},
		series: series,
		tooltip: {
			formatter: tooltipFun
		},
		plotOptions: {
			line: {
				animation: false,
				lineWidth: 1,
				marker: {
					enabled: false,
					states: {
						hover: {
							enabled: true,
							symbol: 'circle',
							radius: 5,
							lineWidth: 1
						}
					}
				}
			},
			area: {
				threshold: null,
				animation: false,
				lineWidth: 1,
				fillOpacity: 0.3,
				marker: {
					enabled: false
				}
			}
		}
	});
}

var HighStockLangPl = {
	decimalPoint: ",",
	downloadPNG: "Pobierz jako PNG",
	downloadJPEG: "Pobierz jako JPEG",
	downloadPDF: "pobierz jako PDF",
	downloadSVG: "Pobierz jako SVG",
	exportButtonTitle: "Eksportuj jako obraz",
	loading: "Wczytywanie...",
	months: ["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Paźdzernik","Listopad","Grudzień"],
	printButtonTitle: "Wydrukuj wykres",
	rangeSelectorFrom: "Od",
	rangeSelectorTo: "Do",
	rangeSelectorZoom: "Zakres",
	resetZoom: "Cofnij zbliżenie",
	resetZoomTitle: "Cofnij zbliżenie",
	thousandsSep: " ",
	weekdays: ["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"]
};

function number_format (number, decimals, dec_point, thousands_sep) {
    number = (number + '').replace(/[^0-9+\-Ee.]/g, '');
    var n = !isFinite(+number) ? 0 : +number,
        prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
        sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
        dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
        s = '',
        toFixedFix = function (n, prec) {
            var k = Math.pow(10, prec);
            return '' + Math.round(n * k) / k;
        };
    // Fix for IE parseFloat(0.55).toFixed(0) = 0;
    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
    if (s[0].length > 3) {
        s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
    }
    if ((s[1] || '').length < prec) {
        s[1] = s[1] || '';
        s[1] += new Array(prec - s[1].length + 1).join('0');
    }
    return s.join(dec);
}

function money(value) {
	return number_format(value, 2, ',', ' ')
}

function proc(value, unit) {
	value = Math.round(value*100)/100;
	unit = (unit == undefined ? '%' : unit);
	
	if (value > 0) {
		return '+' + number_format(value, 2, ',', ' ') + unit + ' <img src="public/images/t.gif" alt="&darr;" class="charr-u">';
	}
	
	if (value < 0) {
		return number_format(value, 2, ',', ' ') + unit+ ' <img src="public/images/t.gif" alt="&darr;" class="charr-d">';
	}
	
	return '0.00'+unit;
}

