/*
 * @author Erik Anders aka --=GT-O=--Hellfire
 */

// reference local blank image
Ext.BLANK_IMAGE_URL = 'images/spacer.gif';
 
// create namespace
Ext.namespace('gto');
 
// create application
gto.g_member = function() {
    // do NOT access DOM from here; elements don't exist yet
 
    // private variables
		
    // private functions
 
    // public space
    return {
		// public properties, e.g. strings to translate		
		fmMember: 0,
		bmMember: 0,
		
		// public methods
		init: function()
		{   
			Ext.QuickTips.init();
			
			this.loadGuild('fm');
			this.loadGuild('bm');
		
		},
		
		loadGuild: function(realm)
		{	
			gto.g_member.tmpTotal = 0;
			
			var ds = new Ext.data.Store({
				proxy: new Ext.data.HttpProxy({url: './xml/g_member_'+realm+'.xml'}),
				realm: realm,
				reader: new Ext.data.XmlReader({
					record: 'character',
					totalRecords: '@total'
				}, [
					{name: "name", mapping:"@name"},
					{name: "race", mapping:"@race"},
					{name: "className", mapping:"@classId"},
					{name: "level", mapping:"@level"},
					{name: "rank", mapping:"@rank"},
					{name: "classId", mapping:"@classId"},
					{name: "raceId", mapping:"@raceId"},
					{name: "genderId", mapping:"@genderId"},
					{name: "url", mapping:"@url"}
				])
			});  
			ds.setDefaultSort('rank', 'ASC'); 
			ds.on('load', function(s, r, o)
			{
				eval('gto.g_member.'+s.realm+'Member = '+s.getCount());
				Ext.get(s.realm+'Member').dom.innerHTML = s.getCount();
			});
			
			
			var cm = [
				{header: "Name", width: 125, dataIndex: 'name', sortable: true},
				{header: "Level", width: 50, dataIndex: 'level', sortable: true},
				{header: "", width: 25, dataIndex: 'raceId', sortable: false, renderer: this.getRacePic},
				{header: "Volk", width: 125, dataIndex: 'race', sortable: true},
				{header: "", width: 25, dataIndex: 'classId', sortable: false, renderer: this.getClassPic},
				{header: "Klasse", width: 125, dataIndex: 'className', sortable: true, renderer: this.getClassName},
				{header: "Gildenrang", width: 100, dataIndex: 'rank', sortable: true, renderer: function(i) { return gto.g_member.getGuildRank(i, realm); } },
				{header: " ", width: 25, dataIndex: 'url', sortable: false, renderer: this.getArmoryLink}
			];   
			
			
			cm.defaultSortable = true;   
			
			var tBar = new Ext.Toolbar({
				id: realm+'_tBar',
				height: 20,
				width: '100%'
			});
			
			var grid = new Ext.grid.GridPanel({
			    store: ds,
			    columns: cm,
				stripeRows: true,
			    viewConfig: {
			        forceFit: true
			    },
			    disableSelection: true,
			    width:600,
			    height:500,
			    frame:false,
			    title:'Gildenmitglieder - Grex Tetricorum Oraculum - [EU] '+((realm == 'fm') ? 'Frostmourne' : 'Blackmoore'),
			    //iconCls:'icon-grid',
				renderTo: 'gm-grid-ct-'+realm,
				trackMouseOver: false,
				style: 'vertical-align: middle',
				bbar: tBar
			});
			
			grid.getView().getRowClass = function (record,index,rowParams,store)
			{
				
				var rs = '';
				if (record.data.rank == 0)
				{
					rs = 'gm-leader';
				}
				
				if (record.data.rank == 1)
				{
					rs = 'gm-officer';
				}
				return rs;
			}
			
			tBar.addText('Zuletzt gecached: '+eval(realm+'Cached')+', <span id="'+realm+'Member"></span> Mitglieder insgesamt');
			ds.load();
			
		},
		
		getClassName: function(i, p, r)
		{			
			if (r.data.genderId == 0)
			{
				var n = new Array
				(
					'',
					'Krieger', //1
					'Paladin', //2
					'J&auml;ger', //3
					'Schurke', //4
					'Priester', //5
					'',
					'Schamane', //7
					'Magier', //8
					'Hexenmeister', //9
					'',
					'Druide' //11
				);
			}
			else
			{
				var n = new Array
				(
					'',
					'Kriegerin',
					'Paladina',
					'J&auml;gerin',
					'Schurkin',
					'Priesterin',
					'',
					'Schamanin',
					'Magierin',
					'Hexenmeisterin',
					'',
					'Druidin'
				);
			}
			
			return n[i];
		},
		
		getGuildRank: function(i, r)
		{
			if (r == 'fm')
			{
				var r = new Array
				(
					'Gildenmeister',
					'Offizier',
					'Gardist',
					'Veteran',
					'Mitglied',
					'Initiand',
					'Inaktiv',
					'Lager'
				);
			}
			else
			{
				var r = new Array
				(
					'Gildenmeister',
					'Offizier',
					'Thralls Gardist',
					'Azerothlegende',
					'Drachent&ouml;ter',
					'Hordechampion',
					'Schlachtrufer',
					'Waffentr&auml;ger',
					'Knappe',
					'Novize'
				);
			}
			
			return r[i];
		},
		
		getRacePic: function(a, b, c)
		{
			return '<img src="images/guild/rc_'+a+'_'+c.get('genderId')+'.gif" alt="'+a+'" />';
		},
		
		getClassPic: function(a, b, c)
		{
			return '<img src="images/guild/cls_'+a+'.gif" alt="'+a+'" />';
		},
		
		getArmoryLink: function(u, a, b)
		{
			return '<a href="http://eu.wowarmory.com/character-sheet.xml?'+u+'" target="_blank" ext:qtip="Armory-Seite von '+b.get('name')+' &ouml;ffnen">&raquo;</a>';
		}
	}
}(); // end of app
 
// end of file
