 $(function(){
	window.players = 0;
	window.slots = 0;
	statRange = 'daily';
	statRangeText = '1 day';
	window.drawGraph = function(){};
	var online = jQuery('td.cell_name').size();
	
	var playerarray = jQuery('td.cell_players');
	jQuery.each(playerarray, function(i,data){
		var field = jQuery(data).html()							  
		var playercount = field.split('/');
		window.players = window.players + parseInt(playercount[0]);
		window.slots = window.slots + parseInt(playercount[1]);
									  
	});

	/*
	$('.cell_name').each(function(){
						 
			var host = $(this).children().attr('href');
			var ip = host.split('=');
			var row = $(this).parent();	
			//$('<td class="cell_stats"><input type="button" id="'+ip[1]+'" value="Stats" /></td>').insertAfter($(this));
			$('<td class="cell_stats"><input type="button" id="'+ip[1]+'" value="Stats" /></td>').appendTo(row);
			
						 
							 
	});
	
	
	$('<td class="cell_ping"></td>').insertBefore('.cell_stats');
	*/
	
	
	/*
	$.ajax({
		type: 'GET', 
		url: 'stats.php',
		data: 'json=1&stat=rank',
		dataType: 'json',
		
		success: function(data){
			ranks = eval(data);
			$('.cell_stats').each(function(){
				 
				var host = $(this).children().attr('id').replace(':','.');
				var row = $(this).parent();
				var rank = ranks['ranklist'][host];
				row.children('.cell_ping').html(rank);
				var detailsID = host.replace('.','_');
				$('<tr><td colspan="7"><table class="details"></table></td></tr>').insertAfter(row);
				
				
			});
			$("table").trigger("update"); 
			
			
		}
	}); 
	
	
			
	$('.cell_stats input').click(function(){
				var host = $(this).attr("id");
				var servername = $('[href*='+host+']').html();
			
				
				$('#servername').html(servername);
				
				$('.cell_stats input').removeClass('catActive');
				$('#statsbox input').removeClass('catActive');
				$(this).addClass('catActive');
				$('#chart').html('');
				$('#chart2').html('');
				$('#chart3').html('');
				window.drawGraph = function(){
					$.ajax({
							type: 'GET', 
							url: 'stats.php',
							data: 'json=1&rank=1&range='+statRange+'&host='+host,
							dataType: 'json',
							success: function(data){
								$('#chart').css('height','200px');
								$('#chart2').css('height','250px');
								$('#chart3').css('height','400px');
								var chartData = eval(data);
								$('#serverinfo').html('Server IP: '+host+'<br />Traffic Rank: '+ chartData['server']['info']['weekrank'] +' (Week) / '+ chartData['server']['info']['monthrank'] +' (Month)<br /><a href="'+chartData['server']['info']['website']+'" title="Server&rsquo;s Website">Visit Website</a>');
						
								$.jqplot('chart', chartData['server']['players'],
									{
										legend:{show:true,location:'nw'},
										 series:[
											{
												label: 'Slot Availability',
												lineWidth:1.5
											},
											{
												label: 'Online Players',
												lineWidth:1.0,
												fill:true,
												fillAlpha: 0.7,
												renderer:$.jqplot.hermiteSplineRenderer,
 												rendererOptions:{steps: 60, tension: 0.6}
											}
										],
										title:{text:'Online Players ('+statRangeText+')'},
										grid:{
											background:'rgba(255,255,255,0.1)',
											borderColor:'#999999',
											borderWidth:0,
											gridLineColor:'rgba(255,255,255,0.2)',
											gridLineWidth: 1
										},
										seriesDefaults:{
											fill:false,
											fillAlpha: 0.8,
											markerOptions:{show: false}
										},
										axes:{
											xaxis:{
												pad: 1,
												
												ticks: chartData['players']['labels'],
												tickOptions:{
													showLabel: true
												},
												
											},
											yaxis:{
												numberTicks:5,
												min:0,
												max:32
											}
										}
										
								});
								$.jqplot('chart2', [chartData['server']['time']],{
									axes:{
										xaxis:{
											min:0,
											label: 'Time Played (Hours)',
										},
										yaxis:{renderer:$.jqplot.CategoryAxisRenderer}
									},
									legend:{show:false},
									title:{text:'10 Most Frequent Players ('+statRangeText+')'},
									grid:{
										background:'rgba(255,255,255,0.1)',
										borderColor:'#999999',
										borderWidth:0,
										gridLineColor:'rgba(255,255,255,0.2)',
										gridLineWidth: 1
									},
									seriesDefaults:{
										renderer:$.jqplot.BarRenderer,
										rendererOptions:{barDirection:'horizontal', barPadding:1,barMargin:4}
									}
								});
								
								$.jqplot('chart3', [chartData['server']['maps']],
									{
										legend:{show:true,location: 'nw'},
										grid:{
											background:'rgba(255,255,255,0.1)',
											borderColor:'#999999',
											borderWidth:0,
											gridLineColor:'rgba(255,255,255,0.2)',
											gridLineWidth: 1
										},
										title:{text:'Server Rotation Stats ('+statRangeText+')'},
										seriesDefaults:{renderer:$.jqplot.PieRenderer}
									}
								);
								
							}
					});
				};
				window.drawGraph();
	});
	*/
	/*
	$('#statsbox input').click(function(){
				var id = $(this).attr("id");
				$('#statsbox input').removeClass('catActive');
				$(this).addClass('catActive');
				
				$('#chart').html('');
				$('#chart2').html('');
				$('#chart2').css('height','0px');
				$('#serverinfo').html('');
				$('#servername').html('All Servers (Global)');
				if(id=="counts"){
					
					window.drawGraph = function(){
						$.ajax({
							type: 'GET', 
							url: 'stats.php',
							data: 'json=1&obj=players&range='+statRange,
							dataType: 'json',
							success: function(data){
								$('#chart').css('height','180px');
								$('#chart2').css('height','180px');
								var chartData = eval(data);
								
								$.jqplot('chart', [chartData["global"]["count"]["total"],chartData["global"]["count"]["authentic"]],{
										legend:{show:true,location: 'nw'},
										title:{text:'Online Players ('+statRangeText+')'},
										grid:{
											background:'rgba(255,255,255,0.1)',
											borderColor:'#999999',
											borderWidth:0,
											gridLineColor:'rgba(255,255,255,0.2)',
											gridLineWidth: 1
										},
										series:[{
											label: 'Total Players',
											lineWidth:2
										}
										
										{
											label: 'Authentic Mode',
											lineWidth:1.5,
											fill:true,
											fillAlpha: 0.6,
										}],
										axes:{
											xaxis:{
												pad: 1,
												ticks: chartData['global']['labels'],
												tickOptions:{
													showLabel: true
												}
												
												
											},
											yaxis:{
												min:0,
												max:225
											}
										},
										seriesDefaults:{
											fill:false,
											fillAlpha: 0.8,
											markerOptions:{
												show: false
											}
											
										}
									});
							
									$.jqplot('chart2', [chartData["global"]["count"]["america"],chartData["global"]["count"]["europe"],chartData["global"]["count"]["australia"],chartData["global"]["count"]["asia"]],
								{
									legend:{show:true,location: 'nw'},
									series:[
									{
										label: 'American',
										lineWidth:1.5
									},
									{
										label: 'European',
										lineWidth:1.5
									},
									{
										label: 'Australia/Pacific',
										lineWidth:1.5
									},
									{
										label: 'Russia/Asia/Middle-East',
										lineWidth:1.5
									}],
									grid:{
										background:'rgba(255,255,255,0.1)',
										borderColor:'#999999',
										borderWidth:0,
										gridLineColor:'rgba(255,255,255,0.2)',
										gridLineWidth: 1
									},
									title:{text:'Geographical Server Activity ('+statRangeText+')'},
									axes:{
										xaxis:{
											pad: 1,
											ticks: chartData['global']['labels'],
											tickOptions:{
												showLabel: true
											}
											
											
										},
										yaxis:{
											min:0,
											max:150
										}
									},
									seriesDefaults:{
										fill:false,
										fillAlpha: 0.8,
										markerOptions:{show: false}
									}
										
								});
								
								
							}
						});
					};
					window.drawGraph();
					
					
					
				}
				
				if(id=="map"){
					window.drawGraph = function(){
						$.ajax({
							type: 'GET', 
							url: 'stats.php',
							data: 'json=1&obj=maps&range='+statRange,
							dataType: 'json',
							success: function(data){
								$('#chart').css('height','500px');
								var chartData = eval(data);
								
								$.jqplot('chart', [chartData["global"]["usage"]],{
									legend:{show:true,location: 'nw'},
									title:{text:'Maps - Player Time ('+statRangeText+')'},
									grid:{
										background:'rgba(255,255,255,0.1)',
										borderColor:'#999999',
										borderWidth:0,
										gridLineColor:'rgba(255,255,255,0.2)',
										gridLineWidth: 1
									},
									seriesDefaults:{
										renderer:$.jqplot.PieRenderer,
										rendererOptions:{
											lineLabels: false,
											lineLabelsLineColor: '#CCCCCC'
										}
									}
								});
								
							}
						});
					};
					window.drawGraph();
					
					
									   
					
					
				}
				
				if(id=="demand"){
					window.drawGraph = function(){
						$.ajax({
							type: 'GET', 
							url: 'stats.php',
							data: 'json=1&range='+statRange+'&demand=1',
							dataType: 'json',
							success: function(data){
								var chartData = eval(data);;
								$('#chart').css('height','750px');
								$.jqplot('chart', [chartData],{
									axes:{
										xaxis:{
											min:0,
											label: '% of Player Time Utilized',
										},
										yaxis:{renderer:$.jqplot.CategoryAxisRenderer}
									},
									legend:{show:false},
									title:{text:'Maps - Supply/Demand ('+statRangeText+')'},
									grid:{
										background:'rgba(255,255,255,0.1)',
										borderColor:'#999999',
										borderWidth:0,
										gridLineColor:'rgba(255,255,255,0.2)',
										gridLineWidth: 1
									},
									seriesDefaults:{
										renderer:$.jqplot.BarRenderer,
										rendererOptions:{barDirection:'horizontal', barPadding:1,barMargin:4}
									}
								});
								
								
							}
						});		
					};
					window.drawGraph();
					
									   
					
					
				}
					
									  
							   
	});					 
					 
*/
	
	jQuery('#onlineStat').html('Servers: '+online+' - Players: '+window.players);
	
	
	$('.cell_misc:contains("Authentic")').css("color","#F5FF9F");
	
	window.drawGraph = function(){
		$.ajax({
			type: 'GET', 
			url: 'stats.php',
			data: 'json=1&obj=players&range='+statRange,
			dataType: 'json',
			success: function(data){
				$('#chart').css('height','180px');
				$('#chart2').css('height','180px');
				var chartData = eval(data);
				
				$.jqplot('chart', [chartData["global"]["count"]["total"],chartData["global"]["count"]["authentic"]],{
						legend:{show:true,location: 'nw'},
						title:{text:'Online Players ('+statRangeText+')'},
						grid:{
							background:'rgba(255,255,255,0.1)',
							borderColor:'#999999',
							borderWidth:0,
							gridLineColor:'rgba(255,255,255,0.2)',
							gridLineWidth: 1
						},
						series:[{
							label: 'Total Players',
							lineWidth:2
						},
						/*{
							label: 'Open Mode',
							lineWidth:1
						},*/
						{
							label: 'Authentic Mode',
							lineWidth:1.5,
							fill:true,
							fillAlpha: 0.6,
						}],
						axes:{
							xaxis:{
								pad: 1,
								ticks: chartData['global']['labels'],
								tickOptions:{
									showLabel: true
								}
								
								
							},
							yaxis:{
								min:0,
								max:225
							}
						},
						seriesDefaults:{
							fill:false,
							fillAlpha: 0.8,
							markerOptions:{
								show: false
							}
							
						}
					});
			
					$.jqplot('chart2', [chartData["global"]["count"]["america"],chartData["global"]["count"]["europe"],chartData["global"]["count"]["australia"],chartData["global"]["count"]["asia"]],
				{
					legend:{show:true,location: 'nw'},
					series:[
					{
						label: 'American',
						lineWidth:1.5
					},
					{
						label: 'European',
						lineWidth:1.5
					},
					{
						label: 'Australia/Pacific',
						lineWidth:1.5
					},
					{
						label: 'Russia/Asia/Middle-East',
						lineWidth:1.5
					}],
					grid:{
						background:'rgba(255,255,255,0.1)',
						borderColor:'#999999',
						borderWidth:0,
						gridLineColor:'rgba(255,255,255,0.2)',
						gridLineWidth: 1
					},
					title:{text:'Geographical Server Activity ('+statRangeText+')'},
					axes:{
						xaxis:{
							pad: 1,
							ticks: chartData['global']['labels'],
							tickOptions:{
								showLabel: true
							}
							
							
						},
						yaxis:{
							min:0,
							max:150
						}
					},
					seriesDefaults:{
						fill:false,
						fillAlpha: 0.8,
						markerOptions:{show: false}
					}
						
				});
				
				
			}
		});
	};
	
	$('.cell_name a').click(function(){
		var queryURL = $(this).attr('href');
		var ip = queryURL.split('=');
		var host = ip[1].replace(':','.');
		var detailsID = host.replace('.','_');
		var cell = $(this).parent();
		var row = $(cell).parent();
		var details = $(row).next();
		//alert(cell);
		//$(this).attr('href','/servers#');
		
		//var _table = $('#'+ip[1]);
		if(!$(this).hasClass("current")){
		
			$(this).addClass("current");
			$(cell).css('background-color','rgba(255,255,255,0.5');
			$.ajax({
				type: 'GET', 
				url: 'stats.php',
				data: 'json=1&obj=server&ip='+ip[1],
				//dataType: 'text',
				success: function(data){
					//var serverData = '<tr><td>Inserted Text</td></tr>';
					var serverData = data;
					//alert(serverData);
					$(details).find('table').fadeIn('slow',function(){
						$(details).find('table').html(serverData);
					});
						
					
				}
			});
		
		}
		else{
			$(this).removeClass("current");
			$(cell).css('background-color','rgba(255,255,255,0.03');
			$(details).find('table').html('');	
			
		}
									 
		return false;							 
									 
	});
	window.drawGraph();
	$('.range').click(function(){
		statRange = $(this).attr("id");
		if(statRange == 'weekly') statRangeText = '7 days';
		else if(statRange == 'daily') statRangeText = '1 day';
		else if(statRange == 'monthly') statRangeText = '1 Month';
		$('#rangebox input').removeClass('catActive');
		$(this).addClass('catActive');
		$('#chart').html('');
		$('#chart2').html('');
		window.drawGraph();								  
										  
	});
	
	$.tablesorter.addParser({ 
        // set a unique id 
        id: 'servername', 
        is: function(s) { 
            // return false so this parser is not auto detected 
            return false; 
        }, 
        format: function(s) {
			var tag = 'span';
			var strip= new RegExp('<'+tag+'[^><]*>|<.'+tag+'[^><]*>','g')
            // format your data for normalization
			var data = s.replace(strip,'');
            return data.toLowerCase(); 
        }, 
        // set type, either numeric or text 
        type: 'text' 
    });
	$.tablesorter.addParser({ 
        // set a unique id 
        id: 'players', 
        is: function(s) { 
            // return false so this parser is not auto detected 
            return false; 
        }, 
        format: function(s) {
			var players = s.split('/');
            // format your data for normalization
			// var data = s.replace(strip,'');
            return parseInt(players[0]); 
        }, 
        // set type, either numeric or text 
        type: 'numeric' 
    }); 
	
	$('#serverList').tablesorter({
		headers: {
			0: {
				sorter:'servername'
			},
			1: {
				sorter:'players'
			}
		
			
		},
		sortList: [[1,1]] 	
						   
						   
						   
	});
	
				
});
