window.addEvent('domready',function(){	
	var tpage = 0;
	var highlight = '';
	var tips = new Tips();
	var tips2 = new Tips({className : 'tip2', fixed : true, offset: {x: -140}});
	var tips3 = new Tips('input[type=button]');
	var tTable = $('trackerTable');
	var combat = Array('total','attack','defence','strength','constitution','ranged','magic','prayer','summoning','slayer', 'dungeoneering');
	var p2p = Array("fletching","herblore","agility","thieving","slayer","farming","hunter","construction","summoning");
	var skillCount = 26;
	var skillswitch = false;
	var p2pswitch = true;


	var scroll = new Scroller('pcontainer');
	$('pagination').addEvent('mouseenter',scroll.start.bind(scroll));
	$('pagination').addEvent('mouseleave',scroll.stop.bind(scroll));

	var updateStats = function() {	
		
		window.location.hash = '!/' + rsn + '/' + tpage + ((highlight) ? '/' + highlight : '');
		
		new Request.JSON({url: 'api.php', method: 'get', async : false,
			onRequest : function(){
				$('reloadBtn')
				.setStyle('backgroundImage','url(./assets/reload.gif)');
			},
			onSuccess: function(json, text){
				if(json == null){
					setStatsRow(null);
					setPagination(null);
					return;
				}
				
				
				if(json['stats'] != null)
					setStatsRow(json['stats']);
				if(json['data'] != null) {
					setUserActivity(json['data']);

					setPagination(json['data']['PAGINATION']);
				}
				
				
			},
			onComplete: function(){
				(function(){
				$('reloadBtn')
				.setStyle('backgroundImage','url(./assets/reload.png)');}).delay(500);
			}
		}).send('mode=userStats&username=' + rsn);
	};

	var updateTable = function(page) {
		new Request.JSON({url: 'api.php', method: 'get', async : false,
			onRequest: function(){
				$('reloadBtn').setProperty('disabled','disabled');
				
				if($('tableul'))
				{
					p = $('tableul').getCoordinates();
					$('tableLoader').setStyles({
						display: 'block',
						width: p.width,
						height: p.height,
						top: p.top,
						left: p.left
					}).setOpacity('0.5');
				}
				else
				$('tableLoader').setStyles({
					display: 'block',
					width: '100%',
					height: '100%',
					top: 0,
					left: 0
				}).setOpacity('0.5');
			},
			onSuccess: function(json, text){
				
				if($('nouserspan'))
					$('nouserspan').dispose();

				if(json['stats'] != null)
					setStatsTable(json['stats']);
					else
						setStatsTable(null);
				
				if(page) {
					updatePagination(page);
					setPage(page);
				}
				switchp2p();	
				(function(){$('tableLoader').setStyle('display','none');
				 $('reloadBtn').removeProperty('disabled');}).delay(500);	
				
			},
			onFailure: function(){
				if(!tTable.getElement('#nouserspan'))
				span = new Element('div',{'id' : 'nouserspan', 'class' : 'nouser', 'html' : 'A felhasználó még nem szerepel az adatbázisban!<br />Az tracker folyamba bejelentkezett felhasználó az Aktív kapcsoló elmozdításával kerülhet be.<br />Új folyamkezdés esetén az adatok csak másnap reggeltől jelennek meg.'})
				.inject(tTable);
				setStatsTable(null);
				setUserActivity(false, true);
				(function(){$('tableLoader').setStyle('display','none');
				 $('reloadBtn').removeProperty('disabled');}).delay(500);
			}
		}).send('mode=userTable&username=' + rsn + '&page=' + page);
	};	


	var setPagination = function(pagi){
		var	pagination = $('pagination');
		pagination.empty();
		
		
		if(pagi != null) {
			var selp = 0;
			JSON.decode(pagi).each(function(item, index){
				if(item == 'this') {
					selp = index;
				}	

				ttitle = Date.parse(item['date'][0]).format('%y. %b %d., %a.');
				if(item['date'][1])
					ttitle += ' - '  + Date.parse(item['date'][1]).format('%y. %b %d., %a.');
				a = new Element('a',{'text':(index + 1), 'href' : '#' + item['page']})
				.store('tip:title',ttitle)
				.store('tip:text','')
				.inject(pagination);	
				tips2.attach(a);
				a.addEvent('click',function(e){
					e.stop();
					highlight = '';
					p = this.get('href').substring(1);
					updateTable(p);
					
					
				});
			
				
				
			});
			updatePagination(selp);
			pagination.getParent('.ucp-main').fade('in');
		}
		else{
			pagination.getParent('.ucp-main').fade('out');
		}

		
	}
	
	var updatePagination = function(p){
		$$('#pagination a').each(function(elem,index){
			num = elem.get('href').substring(1);
			
			if(num != p){
				elem.removeClass('pagiSelected');
			}
			else{
				elem.addClass('pagiSelected');
			}
			
		});
	}
	
	var setUserActivity = function(json, table) {
		tonoff = $('trackerOnOff');

		if($('nouserspan'))	{
			$('skillSwitch').setProperty('disabled','true');
			$('p2pSwitch').setProperty('disabled','true');
		}	else
		{
			$('skillSwitch').removeProperty('disabled');
			$('p2pSwitch').removeProperty('disabled');			
		}

		if(table)
			return;
		
		if(json == false){
			$('trackerOnOff').store('tonoff',false);
			tonoff.addClass('skillswitch3');
			tonoff.setProperty('disabled','true');
			return;
		}
		
		$('trackerOnOff').store('tonoff',json['U_ACTIVE']);
				
		if(json['U_ACTIVE']){
			tonoff.removeClass('skillswitch3');
		}
		else {
			tonoff.addClass('skillswitch3');
		}
		
		if(json['S_SELF']) {
			tonoff.removeProperty('disabled');
		}
		else {
			tonoff.setProperty('disabled','true');
		}
		
		
	}

	var updateRSN = function(){
		var title = 'RsHun.hu &bull; |&acute;trakər|';
		rsnspan = $$('.activetab')[0].getChildren('a')[0].getChildren('span')[0];

		if(rsn.length) {
			rsnspan.set('html',rsnspan.get('html').substring(0,9) + '&nbsp;&bull;&nbsp;' + rsn.replace(/%20/g,' '));
			
			$$('#tabs a').each(function(elem){
				uri = new URI(elem.get('href'));
				uri.set('fragment','!/' + rsn);
				elem.set('href', uri.toString());
			});
			
			d = new Element('div',{'html' : (title + ' &bull; ' + rsn.replace(/%20/g,' '))});
			
			document.title = d.get('text');
			d.dispose();
		}
		else {
			rsnspan.set('html',rsnspan.get('html').substring(0,9),' ');
			$$('#tabs a').each(function(elem){
				uri = new URI(elem.get('href'));
				uri.set('fragment','');
				elem.set('href',uri.toString());
			});
			d = new Element('div',{'html' : title });
			
			document.title = d.get('text');
			d.dispose();			
			
		}
				
	}
	
	var setPage = function(page){
		tpage = page;
		window.location.hash = '!/' + rsn + '/' + tpage + ((highlight) ? '/' + highlight : '');
	}
	
	function setStatsTable(json){
		if($('tableul'))
			$('tableul').dispose();
			
		if($type(json) != 'array')
			return false;

		var sksum = Array();
		
				
		ul = new Element('ul',{'class' : 'topiclist cplist', 'id' : 'tableul'});
		var bg = 2;
		json.each(function(item){

			if(bg == 2)
				bg = 1;
			else
				bg = 2;
				
			li = new Element('li',{'class' : 'row bg' + bg + ' trTable' + ((item['date'] == highlight) ? ' highlight' : '')}).inject(ul);
			dl = new Element('dl').inject(li);

			if(item['today'])
				rowdate = 'ma';
			else
				rowdate = Date.parse(item['date']).format('%y. %b %d., %a.');//.timeDiffInWords();

			dd = new Element('dd',{'class' : 'daycolsml', 'text' : rowdate});			
			
			var info = new Element('div',{'class' : 'infoico'});
			
			
			dd
			.addEvent('mouseleave',function(){
				info.fade('out');
			})
			.addEvent('mouseenter',function(){
				info.fade('in');
			})
			.inject(dl);
			
			info
			.fade('hide')
			.inject(dd);
			
			var statsforday = '<div class="skillsforday"><ul>';
			var ii = 0;
			$H(item['todaystats']).each(function(item,skill){
				if(ii % 2 == 0)
					statsforday += '</ul><ul>';
				statsforday += '<li><dl style="background-image: url(./assets/skills/' + skill + '_small.png);" title="' + skill.capitalize() + '">' + skill.capitalize() + '</dl><dd>' + item['lvl'] + '</dd></li>';
				
				ii++;
			});
			statsforday += '</ul></div><br style="clear: both;" />';
			info.store('tip:title','Szintek<br />' + Date.parse(item['date']).format('%y. %b %d, %a.'));
			info.store('tip:text',statsforday);
			tips.attach(info);
			
			item['stats'].each(function(skill,index){
				if($type(sksum[index]) != 'array'){
					sksum[index] = Array();
					sksum[index]['xp'] = 0;
					sksum[index]['name'] = skill['name'];
				}

				sksum[index]['xp'] += (skill['xp']).toString().replace(/ /g,'').toInt();

				dd = new Element('dd',{'class' : 'skillXP', 'text' : skill['xp']}).inject(dl);	
				
				if($type(item['lvlups'][skill['name']]) == 'array')
				{	
					var lvlups = '<ul>';
					item['lvlups'][skill['name']].each(function(item){
						lvlups += '<li>' + item + '</li>';
					});
					lvlups += '</ul>';
					span = new Element('span',{'class' : 'lvlupim'}).inject(dd);
					span
					.store('tip:title', 'Szintlépés')
					.store('tip:text',lvlups);
					tips.attach(span);
									
				}

				if(combat.contains(skill['name']))
					dd.addClass('cmbSkWidth');
				if(skillswitch){
				 	if(combat.contains(skill['name']))	
						dd.addClass('hideskill');
				}
				else {
					if(!combat.contains(skill['name']))
						dd.addClass('hideskill');
				}

				if(p2p.contains(skill['name']))
					dd.store('2pstatus','p2p');

				if(!p2pswitch){
				 	if(p2p.contains(skill['name']))	
						dd.addClass('p2phide');
					else
						dd.addClass('f2pshow');
				}
				
				
			});
		});
		
		if(bg == 2)
			bg = 1;
		else
			bg = 2;
			
		li = new Element('li',{'class' : 'row bg2 trTable'}).inject(ul);
		dl = new Element('dl').inject(li);
		dd = new Element('dd',{'class' : 'daycolsml', 'html' : 'összesen&nbsp;&sum;'}).setStyle('font-weight','bold').inject(dl);

		sksum.each(function(value){

			dd = new Element('dd',{'class' : 'skillXP', 'text' : numberFormat(value['xp'], 0, '', ' ')}).setStyle('font-weight','bold').inject(dl);

			if(combat.contains(value['name']))
				dd.addClass('cmbSkWidth');
			if(skillswitch){
			 	if(combat.contains(value['name']))	
					dd.addClass('hideskill');
			}
			else {
				if(!combat.contains(value['name']))
					dd.addClass('hideskill');
			}
			
			
			if(p2p.contains(value['name']))
				dd.store('2pstatus','p2p');
							
			if(!p2pswitch){
			 	if(p2p.contains(value['name']))	
					dd.addClass('p2phide');
				else
					dd.addClass('f2pshow');
			}

		});

		ul.inject(tTable,'bottom');
		

	}


	
	function setStatsRow(json){
		if($('statsul'))
			$('statsul').dispose();
		
		var p2pskills = false;	
			
		if($type(json) != 'array')
			return false;

		ul = new Element('ul',{'class' : 'topiclist cplist', 'id' : 'statsul'});

		li = new Element('li',{'class' : 'row bg2'}).inject(ul);
		dl = new Element('dl').inject(li);
		dd = new Element('dd',{'class' : 'daycol', 'text' : 'nap'}).inject(dl);

		json.each(function(item){

			var ttext = 'Xp: ' + item['xp'];
			if(item['nextLvl'] && item['nextLvl'] != 0)
				ttext += '<br />Köv.Lvl: ' + item['nextLvl'];
			if(item['xpLeft'] && item['xpLeft'] != 0)
				ttext += '<br />Maradék: ' + item['xpLeft']
			if(item['rank'] && item['rank'] != 0)
				ttext += '<br />Helyezés: ' + item['rank'];

			dd = new Element('dd',{'class' : 'skillIcon'})
			.setStyle('background-image','url(./assets/' + item['name'] + '.gif)')
			.store('tip:title', item['name'].capitalize() + ': ' + item['level'] + ((item['level2'] && item['level'] != item['level2']) ? ' <sup>(' + item['level2'] + ')</sup>' : ''))
			.store('tip:text',ttext)
			.inject(dl);

			if(combat.contains(item['name']))
				dd.addClass('cmbSkWidth');
			if(skillswitch){
			 	if(combat.contains(item['name']))	
					dd.addClass('hideskill');
			}
			else {
				if(!combat.contains(item['name']))
					dd.addClass('hideskill');
			}
			if(p2p.contains(item['name']))
				dd.store('2pstatus','p2p');
							
			if(!p2pswitch){
			 	if(p2p.contains(item['name']))	
					dd.addClass('p2phide');
				else
					dd.addClass('f2pshow');
			}
			tips.attach(dd);
			
			if(p2p.contains(item['name']) && !p2pskills && item['level'] != 1)
				p2pskills = true;
			
		});
		
		p2pswitch = p2pskills;
		ul.inject(tTable,'top');

	}
	
	var autorsn = new Autocompleter.Ajax.Json('fe-searchuser', './api.php?mode=search', {
  		'postVar': 'searchRSN',
		'minLength': 2,
		'autoSubmit': true,
		'selectMode' : 'type-ahead',
		onRequest: function(){
			$('fe-searchuser').toggleClass('sbarspinner');	
		},
		onComplete: function(){
			(function(){ $('fe-searchuser').toggleClass('sbarspinner'); }).delay(500);
		}
  });
	
	var switchp2p = function(){
		el = $('p2pSwitch');
		
		if(p2pswitch)
			el.removeClass('p2pswitch2');
		else
			el.addClass('p2pswitch2');
		
		
		$$('dd.skillIcon','dd.skillXP').each(function(el){
			if(el.retrieve('2pstatus','') == 'p2p'){
				if(p2pswitch)
					el.removeClass('p2phide');
				else
					el.addClass('p2phide');
			}
			else {
				if(p2pswitch)
					el.removeClass('f2pshow');
				else
					el.addClass('f2pshow');				
			}
		});		
	}
	
	$('skillSwitch').addEvent('click',function(e){
		e.stop();
		skillswitch = !skillswitch;
		
		this.toggleClass('skillswitch2');
		$$('dd.skillIcon','dd.skillXP').each(function(el){
			el.toggleClass('hideskill');
		});
	});

	$('p2pSwitch').addEvent('click',function(e){
		e.stop();
		p2pswitch = !p2pswitch;
		switchp2p();
	});
	
	
	$('trackerOnOff').addEvent('click',function(e){
		e.stop();
		
		var tonoff = $('trackerOnOff').retrieve('tonoff',false);
		
		if(tonoff)
			tcontext = 'Biztos hogy <b>inaktív</b> állapotba helyezed a tracker folyamod?';
		else
			tcontext = 'Biztos hogy <b>aktív</b> állapotba helyezed a tracker folyamod?';
		
		Sexy.confirm(tcontext,{
			textBoxBtnOk: 'Igen',
			textBoxBtnCancel: 'Nem',
			onComplete: function(returnvalue) {
				if(returnvalue)
				{
					new Request({url :'./api.php',method: 'get',
						onSuccess: function(){
							if(tonoff) {
								$('trackerOnOff').toggleClass('skillswitch3');
								$('trackerOnOff').store('tonoff',false);
							}
							else
							{
								$('trackerOnOff').toggleClass('skillswitch3');
								$('trackerOnOff').store('tonoff',true);						
							}							
						}
					})
					.send('mode=switchactive&username=' + rsn);
					

				}
			} 
		});
					
		
	});
	
	$('searchRSN').addEvent('submit',function(e){
		e.stop();
		
		
		if($('fe-searchuser').get('value').length < 3)
			return false;
		rsn = $('fe-searchuser').get('value');	
		autorsn.hideChoices();
		tpage = 0;
		highlight = '';
		updateRSN();
		updateStats();
		updateTable(tpage);

		
	});
	
	$('reloadBtn').addEvent('click',function(){
		tips3.hide();
		updateTable();
		updateStats();	
		
	});

	
	new OverText($('fe-searchuser'));

	if(window.location.hash)
	{
		var hashstring = window.location.hash.substring(3);
		hasharray = hashstring.split('/');
		rsn = (hasharray[0]) ? hasharray[0] : '';
		tpage = (hasharray[1]) ? hasharray[1] : tpage;
		highlight = (hasharray[2]) ? hasharray[2] : '';
		updateRSN();
	}
	
	if(rsn.length)
	{
		updateStats();
		updateTable(tpage);

	}


});

	

