/*

 * Ext JS Library 1.1.1

 * Copyright(c) 2006-2007, Ext JS, LLC.

 * licensing@extjs.com

 * 

 * http://www.extjs.com/license

 */
 
 

Ext.onReady(function(){

	

	Ext.QuickTips.init();


        var eventTopn = 0;

	var eventrecord = null;

	var chartLoaded = false;

        var currentSiteName = '';



	function HeaderBox(htmlstring){

		return '<div style="width:470px;"><div class="x-box-tl"><div class="x-box-tr"><div class="x-box-tc"></div></div></div>' +

		'<div class="x-box-ml"><div class="x-box-mr"><div class="x-box-mc">' +

		htmlstring + '</div></div></div><div class="x-box-bl"><div class="x-box-br"><div class="x-box-bc"></div></div></div></div>';

	}



	

	var resultsdisplay = 0;

	

	var json_proxy = new Ext.data.HttpProxy({ url: 'leaderboard.php?season=' + seasonid + '&eventid=last'});



	var result_reader = new Ext.data.JsonReader({

			root: 'results' 

		},[

			{name: 'rank', mapping: 'rank', tpye: 'int', sortType: 'asInt'},

			{name: 'nick', mapping: 'nick', sortType: 'asUCText'},

			{name: 'starts', mapping: 'starts', tpye: 'int', sortType: 'asInt'},

			{name: 'payout', mapping: 'payout', tpye: 'float', sortType: 'asFloat'},

			{name: 'score', mapping: 'score', tpye: 'int', sortType: 'asInt'},

			{name: 'uid', mapping: 'uid'},

			{name: 'totalprizepool'}

	]);



	var event_reader = new Ext.data.JsonReader({

			root: 'events' 

		},[

			{name: 'id', mapping: 'id'}, 

			{name: 'siteid', mapping: 'siteid'},

			{name: 'date', mapping: 'date'},

			{name: 'buyin'},

			{name: 'fee'},

			{name: 'time'},

			{name: 'paid'},

			{name: 'duration'},

			{name: 'added'},

			{mapping: 'link'}

	]);



	var site_reader = new Ext.data.JsonReader({

			root: 'sites' 

		},[

			{name: 'id', mapping: 'id'},

			{name: 'name', mapping: 'name'},

			{name: 'tablename', mapping: 'tablename'},

			{name: 'th-image', mapping: 'th-image'},

			{name: 'th-text', mapping: 'th-text'},

			{name: 'link', mapping: 'link'},

			{name: 'sitepp', tpye: 'int'},

			{name: 'sitetopn', tpye: 'int'}

	]);



	

	var user_reader = new Ext.data.JsonReader({

			root: 'results' 

		},[

			{name: 'eventid', mapping: 'eventid'},

			{name: 'siteid', mapping: 'siteid'},

			{name: 'finish', mapping: 'finish'},

			{name: 'payout', mapping: 'payout'},

			{name: 'participants', mapping: 'participants'},

			{name: 'buyin', mapping: 'buyin'},

			{name: 'score', mapping: 'score'},

			{name: 'avatar', mapping: 'avatar'}

	]);



	var event_store = new Ext.data.Store({

		proxy: new Ext.data.HttpProxy({ url: 'leaderboard.php?season=' + seasonid + '&getevents=true' }),

		reader: event_reader		

	});



	var user_store = new Ext.data.Store({

		proxy: new Ext.data.HttpProxy({ url: 'leaderboard.php?season=' + seasonid + '&userid' }),

		reader: user_reader

	});



	function siterender(value){
            currentSiteName = '';
            site_store.each(
                function(rec){
                    if(rec.get('id') == value){
                        currentSiteName = rec.get('name');
                        return false;
                    }
                });
            return currentSiteName;
	}



	var TopGroup = 0;



	function renderAll(value, meta, record){

		if(record.get('rank') <= TopGroup){
                	return '<span style="color:red">' + value + "</span>";
                }
        	else if(seasonid == 2 && TopGroup < 1 && record.get('rank') <= 10){
			return '<span style="color:blue">' + value + "</span>";
		}
                else if(seasonid > 2 && TopGroup < 1 && record.get('rank') <= eventTopn){
        		return '<span style="color:blue">' + value + "</span>";
                }

		return value;	

	}



    function renderMoney(value, meta, record){

		if(value){

	        return renderAll(Ext.util.Format.usMoney(value), meta, record);

		}

    	return;

	}

	

    var user_cm = new Ext.grid.ColumnModel([

		{header: 'Turnier', width: 45, dataIndex: 'eventid', resizable: false, sortable: false},

		{header: 'Platzierung', width: 60, dataIndex: 'finish', resizable: false, sortable: false},

		{header: 'Raum', width:80, dataIndex: 'siteid', resizable: false, sortable: false, renderer: siterender},

		{header: 'Teilnehmer', width: 60, dataIndex: 'participants', resizable: false, sortable: false},

		{header: 'Preisgeld', width: 60, dataIndex: 'payout', resizable: false, sortable: false, renderer: renderMoney},

		{header: 'Punkte', width: 55, dataIndex: 'score' , resizable: false, sortable: true}

	]);



    var user_grid = new Ext.grid.Grid('user-grid', {

        ds: user_store,

        cm: user_cm,

        loadMask: true

    });



    var result_store = new Ext.data.Store({

        proxy: json_proxy,

        reader: result_reader

    });



    var cm = new Ext.grid.ColumnModel([

		{header: '', width: 30, dataIndex: 'rank', resizable: false, sortable: true, renderer: renderAll},

	    {header: 'Spieler', width: 115, dataIndex: 'nick', resizable: false, sortable: true, renderer: renderAll},

		{header: 'Turniere', width: 60, dataIndex: 'starts', resizable: false, sortable: true, renderer: renderAll},

		{header: 'Preisgeld', width: 65, dataIndex: 'payout', resizable: false, sortable: true, renderer: renderMoney},

		{header: 'Punkte', width: 55, dataIndex: 'score', resizable: false, sortable: true, renderer: renderAll}

	]);



    // create the grid

    var grid = new Ext.grid.Grid('grid', {

        ds: result_store,

        cm: cm,

        loadMask: true

    });



    var layout = Ext.BorderLayout.create({

		north: {

	        initialSize: 180,

	        minSize: 180,

	        maxSize: 180,

	        titlebar: false,

	        collapsible: false,

			resizable: false,

			autoScroll: false

		},

        center: {

			initialSize: 350,

	        minSize: 350,

	        maxSize: 350,

            titlebar: false,

			resizable: false,

			fitToFrame: false,

			autoScroll: true,

			panels: [new Ext.GridPanel(grid)]

	    },

		east: {

			initialSize: 385,

	        minSize: 385,

	        maxSize: 385,

            titlebar: true,

			resizable: false,

			fitToFrame: false,

			autoScroll: true,

	        collapsible: false,

			title: 'Spielerstatistiken'

	    }	

	}, 'layout');

	

	var usergridlayout = Ext.BorderLayout.create({

        center: {

	/*		initialSize: 250,

	        minSize: 250,

	        maxSize: 250,*/

            titlebar: false,

            panels: [new Ext.GridPanel(user_grid)],

			resizable: false,

			fitToFrame: false

	    }

	

	}, 'usergrid-panel');



	layout.beginUpdate();

   	layout.add('north', new Ext.ContentPanel('north'));   	

	layout.add('east', new Ext.ContentPanel('userinfointro'));

	layout.endUpdate();



	user_grid.render();

	grid.render();



	var site_store = new Ext.data.Store({

		proxy: new Ext.data.HttpProxy({ url: 'leaderboard.php?season=' + seasonid + '&getsites=true' }),

		reader: site_reader		

	});



	site_store.load({callback: function(){

		event_store.load();

		}

	});



    var site_combo = new Ext.form.ComboBox({

        store: site_store,

        displayField:'tablename',

		valueField:'id',

        typeAhead: true,

        mode: 'local',

        triggerAction: 'all',

        emptyText:'Wählen Sie eine Tabelle',

        selectOnFocus:true,

        resizable:true

    });

    if(document.getElementById('site_combobox')){
        site_combo.applyTo('site_combobox');
    }

	site_combo.on('select', function(combo,record,index){

		grid.getColumnModel().setHidden(2,false);



		var tableHTML = "";

		var value = Number(site_combo.getValue());

		if(record.get('id') == '-1'){

			result_store.proxy = new Ext.data.HttpProxy({ url: 'leaderboard.php?season=' + seasonid + '&' });

		}

		else{

			result_store.proxy = new Ext.data.HttpProxy({ url: 'leaderboard.php?season=' + seasonid + '&siteid=' + record.get('id') });

		}

		htmlstring = '<div align="left"><h2 style="margin-bottom:5px;">' + record.get('th-text') + '</h3><a href="http://' + record.get('link') + '" target="_blank"><img src="' + 

		record.get('th-image') + '"></a>' +

		"<br>Die besten " + record.get('sitetopn') + " Spieler qualifizieren sich für das DPT-MainEvent. " +  "<br>(Die aktuellen Top-" + record.get('sitetopn') + " sind farblich hervorgehoben)<br>" + 

		'<table border=0><tr><td><img src="http://www.deutschepokertour.com/preisgeld.gif"></td><td>' + '<div style="font-size:10pt">&nbsp;Bisher ausgeschüttetes Preisgeld';

		if(record.get('id') == '-1'){

			htmlstring = htmlstring + " der DPT";

		}

		else{

			htmlstring = htmlstring + ' bei ' + record.get('name');

			

		}



		htmlstring = htmlstring  + ': <span id="totalprizepool"></span></div></td></tr></table></div>';



		tableHTML = HeaderBox(htmlstring);



		TopGroup =  Number(record.get('sitetopn'));

		resultsdisplay = record.get('id'); 

		document.getElementById('tableheader').innerHTML = tableHTML;

		result_store.load();

		//event_combo.reset();

	});

	

    var event_combo = new Ext.form.ComboBox({

        store: event_store,

        displayField:'link',

		valueField:'id',

        typeAhead: true,

        mode: 'local',

        triggerAction: 'all',

        emptyText:'Wählen Sie ein Turnier',

        selectOnFocus:true,

        resizable:true

    });
    
    if(document.getElementById('event_combobox')){
        event_combo.applyTo('event_combobox');
    }

	event_combo.on('select', function(combo,record,index){

		grid.getColumnModel().setHidden(2,true);

		eventrecord = record;


		result_store.proxy = new Ext.data.HttpProxy({ url: 'leaderboard.php?season=' + seasonid + '&eventid=' + event_combo.getValue() });

		TopGroup = 0;

		resultsdisplay = record.get('siteid');

                siterecord = site_store.query('id', record.get('siteid')).first()

                eventTopn = Number(siterecord.get('sitetopn'));

		htmlstring = 
                '<a href="http://' + siterecord.get('link') + '" target="_blank"><img src="' + siterecord.get('th-image') + '"></a>' +
                '<div align="left">' +
                '<h2 style="margin-bottom:5px;">';


		var parts = record.get('id').split(".");

		if(parts[1] == '0'){

			htmlstring = htmlstring + parts[0];

		}

		else{

			htmlstring = htmlstring + record.get('id');

		}		

		htmlstring = htmlstring + '. DPT-Turnier bei ' +

                siterecord.get('name') + ' / ' +

		record.get('date') + ' um ' + record.get('time') + ' Uhr</h2><hr>' +

		'<table border=0 width=400><tr><td width=200><div style="font-size:10pt">' +

		'Teilnehmende Spieler: <span id="runners"></span>' +

		'<br>Bezahlte Plätze: ' + record.get('paid') +

		'<br>Preispool: <span id="prizepool"></span>';

		if(record.get('added') > 0){

			htmlstring = htmlstring + " + " + Ext.util.Format.usMoney(record.get('added'));

		}

		htmlstring = htmlstring + '</div></td><td width=200><div style="font-size:10pt">Turnierart: NL Holdem<br>Buy-In: ' + 

		Ext.util.Format.usMoney(record.get('buyin')) + " + " + 	Ext.util.Format.usMoney(record.get('fee')) + 

		"<br>Turnierdauer: " + record.get('duration') +
                
		"</div></td></tr></table></div>";



		tableHTML = HeaderBox(htmlstring);



		document.getElementById('tableheader').innerHTML = tableHTML;

		result_store.load();

		site_combo.reset();

	});

	

	grid.getSelectionModel().on('rowselect', function(){

		if(layout.getRegion('east').hasPanel('userinfointro')){

			layout.getRegion('east').remove('userinfointro');

			layout.add('east', new Ext.ContentPanel('userinfo'));

		}

		user_store.proxy = new Ext.data.HttpProxy({ url: 'leaderboard.php?season=' + seasonid + '&userid=' + grid.getSelectionModel().getSelected().get('uid')});

		var nickName = grid.getSelectionModel().getSelected().get('nick');

		if(grid.getSelectionModel().getSelected().get('uid') < 0){

			nickName = nickName + '&nbsp;<img src="resources/images/default/form/exclamation.gif" align=top ext:width=100 ext:qtip=\'Bitte Usernamen im Profil eintragen\'>';

		}

		document.getElementById('username').innerHTML = nickName;



		// Check which table is displayed and check checkboxes accordingly



		if(resultsdisplay == '-1'){

			check_box1.setValue(true);

			check_box2.setValue(true);

			check_box3.setValue(true);

			check_box4.setValue(true);

		}

		else if(resultsdisplay == site_store.getAt(1).get('id')){

			check_box1.setValue(true);

			check_box2.setValue(false);

			check_box3.setValue(false);

			check_box4.setValue(false);

		}

		else if(resultsdisplay == site_store.getAt(2).get('id')){

			check_box2.setValue(true);

			check_box1.setValue(false);

			check_box3.setValue(false);

			check_box4.setValue(false);

		}

		else if(resultsdisplay == site_store.getAt(3).get('id')){

			check_box3.setValue(true);

			check_box2.setValue(false);

			check_box1.setValue(false);

			check_box4.setValue(false);

		}			

		else if(resultsdisplay == site_store.getAt(4).get('id')){

			check_box4.setValue(true);

			check_box2.setValue(false);

			check_box3.setValue(false);

			check_box1.setValue(false);

		}		



		user_store.load();

	});

	

	result_store.on('load', function(){

		if(document.getElementById('runners')){

			document.getElementById('runners').innerHTML = result_store.getCount();

		}

		if(eventrecord && document.getElementById('prizepool')){

			document.getElementById('prizepool').innerHTML = Ext.util.Format.usMoney(result_store.getCount()*eventrecord.get('buyin'));

		}

		if(document.getElementById('totalprizepool')){

			if(result_store.getCount() > 0){

				document.getElementById('totalprizepool').innerHTML = "$" + result_store.getAt(0).get('totalprizepool');

			}

			else{

				document.getElementById('totalprizepool').innerHTML = "$0";

			}

		}

	});



	site_store.on('load', function(){

            if(site_store.getAt('1'))
		check_box1.boxLabel = site_store.getAt('1').get('name');
            if(site_store.getAt('2'))
		check_box2.boxLabel = site_store.getAt('2').get('name');
            if(site_store.getAt('3'))
		check_box3.boxLabel = site_store.getAt('3').get('name');
            if(site_store.getAt('4'))
		check_box4.boxLabel = site_store.getAt('4').get('name');


            if(document.getElementById('cb1'))
                check_box1.applyTo('cb1');
            if(document.getElementById('cb2'))
		check_box2.applyTo('cb2');
            if(document.getElementById('cb3'))
		check_box3.applyTo('cb3');
            if(document.getElementById('cb4'))
		check_box4.applyTo('cb4');

	});

	

	user_store.on('load', function(){

		// Calculate user statistics

		var t0= 0, t1=0, t2=0, t3=0, t4=0, t5=0;

		var percent = 0;

		var averageFinish = 0;

		var victories = 0;

		var finalTables = 0;

		var payout = 0;

		var buyin = 0;

		var score = 0;

		var itm = 0;

		var starts = 0;

		var cb_id = "";

		user_store.each(function(rec){

                        
                    if((document.getElementById('cb1') && ((rec.get('siteid') == site_store.getAt(1).get('id') && check_box1.getValue()) ||

			    (rec.get('siteid') == site_store.getAt(2).get('id') && check_box2.getValue()) ||

				(rec.get('siteid') == site_store.getAt(3).get('id') && check_box3.getValue()) ||

				(rec.get('siteid') == site_store.getAt(4).get('id') && check_box4.getValue()))) ||
                             !document.getElementById('cb1')
                		){

                        	payout = payout + Number(rec.get('payout'));

                            score = score + Number(rec.get('score'));

                            buyin = buyin + Number(rec.get('buyin'));
                        
			if(rec.get('finish') == '1'){

				victories++;

			}

			if(Number(rec.get('finish')) <= 10){

				finalTables++;

			}

			if(rec.get('payout') > 0){

				itm++;

			}

			percent = rec.get('finish') / rec.get('participants');

			averageFinish = averageFinish + percent;

			if(percent <= 0.1){	// Late

				t4++;

			}

			else if(percent <= 0.3){ // Late-Middle

				t3++;

			}

			else if(percent <= 0.7){ // Middle

				t2++;

			}

//			else if(percent <= 0.9) // Early-Middle

//				t1++;

			else{

				t0++;

			}

			starts++;

		}});



		var userstatsHTML = 

		"Siege: " + victories + " von " + starts + "<br>" + 

		"Finaltische: " + finalTables + " von " + starts + " (" + Number(finalTables*100/starts).toFixed(2)  + "%)<br>" +

		'<span ext:qtip=\'ITM (engl): In The Money<br>Erreichen der Preisränge\'>ITM: ' + itm + " von " + starts + " (" + Number(itm*100/starts).toFixed(2)  + "%)</span><br>" +

		"Gewinne: " + Ext.util.Format.usMoney(payout) + "<br>Punkte: " + score + "<br>" +

		"&Oslash Gewinn: " + Ext.util.Format.usMoney(payout/starts) + "<br>" +

		"&Oslash Punkte: " + Number(score/starts).toFixed(2) + "<br>" +

		"&Oslash Platzierung: " + Number(Number(averageFinish = averageFinish/starts).toFixed(2)*100).toFixed(0) + "/100"; 

		/* + "<br><span ext:qtip=\'ROI (engl): Return On Investment\'>ROI: ";

		if(payout < buyin)

			userstatsHTML = userstatsHTML + '<span style="color: red">';

		else

			userstatsHTML = userstatsHTML + '<span>';

		userstatsHTML = userstatsHTML + Number((payout - buyin)*100/buyin).toFixed(2) + "%</span></span>";

		*/

		

		document.getElementById('userstats').innerHTML = userstatsHTML;

		

		var userpicHTML = '';



		if(user_store.getAt(0).get('avatar')){

			userpicHTML =  '<img src="' + user_store.getAt(0).get('avatar').replace(/\\/g, "") + '">';

		}

		else{

			userpicHTML = '<img src="http://www.deutschepokertour.com/no_avatar.jpg">';

		}

		if(grid.getSelectionModel().getSelected().get('uid') > 0){

			userpicHTML = '<a href="http://www.deutschepokertour.com/intern/index.php?action=profile;u=' + grid.getSelectionModel().getSelected().get('uid') + '" target="_blank">' + 

			userpicHTML + '</a>';

		}	

	

		document.getElementById('userstats').innerHTML = userstatsHTML;

		document.getElementById('userpic').innerHTML = userpicHTML;



		var strXML = "<graph pieRadius='75' showNames='1' showValues='0' decimalPrecision='0'>";

		if(t0 > 0){

			strXML = strXML + "<set name='Früh' value='" + t0 + "' color='FF0000' hoverText='" + t0 + " von " + starts + "'/>";

		}

//		if(t1 > 0)

//			strXML = strXML + "<set name='Früh-Mittel' value='" + t1 + "' color='AFD8F8' hoverText='" + t1 + " von " + starts + "'/>";

		if(t2 > 0){

			strXML = strXML + "<set name='Mittel' value='" + t2 + "' color='FF6600' hoverText='" + t2 + " von " + starts + "'/>";

		}

		if(t3 > 0){

			strXML = strXML + "<set name='Spät' value='" + t3 + "' color='F6BD0F' hoverText='" + t3 + " von " + starts + "'/>";

		}

		if(t4 > 0){

			strXML = strXML + "<set name='Sehr spät' value='" + t4 + "' color='006F00' hoverText='" + t4 + " von " + starts + "'/>";

		}

		strXML = strXML + "</graph>";

		updateChartXML('chart1Id', strXML);

	});



	var chart1;

 	chart1 = new FusionCharts("charts/FCF_Pie3D.swf", "chart1Id", "300", "125", "0", "0");		   			

	chart1.setDataXML("<graph></graph>");

	chart1.render("chart1div");



	var check_box1 = new Ext.form.Checkbox({

		checked: false

   	});

	var check_box2 = new Ext.form.Checkbox({

		checked: false

   	});

	var check_box3 = new Ext.form.Checkbox({

		checked: false

  	});

	var check_box4 = new Ext.form.Checkbox({

		checked: false

    });

	

	check_box1.on('change', function(){user_store.load();});

	check_box2.on('change', function(){user_store.load();});

	check_box3.on('change', function(){user_store.load();});

	check_box4.on('change', function(){user_store.load();});



	event_store.on('load', function(){

		var link = "";

		event_store.each(function(rec){

			var parts = rec.get('id').split(".");

			if(parts[1] == '0'){

				link = "# " + parts[0];

			}

			else{

				link = "# " + rec.get('id');

			}			

			link = link + " " + site_store.query('id', rec.get('siteid')).first().get('name') + " / " + rec.get('date');

			rec.set('link', link);

		});

                 
                if(document.getElementById('site_combobox')){
                    site_combo.select(0);
                    site_combo.fireEvent('select', site_combo, site_store.getAt( site_combo.selectedIndex ), site_combo.selectedIndex);
                }
                else{
                    site_combo.fireEvent('select', site_combo, site_store.getAt( 0 ), 0);
                }

           });
           //event_store.load();

           var buttonHandler = function(button,event){
                site_combo.fireEvent('select', site_combo, site_store.getAt( 0 ), 0)
           };

           if(document.getElementById('scoreboardbutton')){
                buttonObject = new Ext.Button('scoreboardbutton', {text:'Gesamttabelle anzeigen', handler:buttonHandler});           
           }
           
});

