var year=2011;
Ext.chart.Chart.CHART_URL = 'ext-3.2.1/resources/charts.swf';

//var d = new Date(year, month (zero based, day, hours, minutes, seconds, milliseconds);
var deadline = new Date(year, 4, 2, 0, 0, 0, 0);
var agelimit = new Date(year-15, 4, 8, 0, 0, 0, 0);
var tilmelding = new Array();
var deltagere = new Array();
var tabitems = new Array();
var ruteinfos = new Array();

function krformat(v){
  v = (Math.round((v-0)*100))/100;
  v = (v == Math.floor(v)) ? v + ".00" : ((v*10 == Math.floor(v*10)) ? v + "0" : v);
  v = String(v);
  var ps = v.split('.'),
  whole = ps[0],
  sub = ps[1] ? ','+ ps[1] : ',-',
  r = /(\d+)(\d{3})/;
  while (r.test(whole)) {
    whole = whole.replace(r, '$1' + '.' + '$2');
  }
  v = whole + sub;
  return "kr. " +  v;
}



var createGiftsStore = function(y){
  return new Ext.data.JsonStore({
    // store configs
    autoDestroy: true,
    url: 'php/giftsjsoncreate.php?year='+y,
    remoteSort: true,
    sortInfo: {
      field: 'startnumber',
      direction: 'ASC'
    },
    storeId: 'storegifts'+y,

    // reader configs
    idProperty: 'startnumber',
    root: 'data',
    totalProperty: 'total',
    fields: [{
      name: 'startnumber',
      type: 'int'
    },{
      name: 'fullname'
    },{
      name: 'Postby'
    },{
      name: 'item'
    }]
  })
};

var createGiftsGrid = function(store){
  return new Ext.grid.GridPanel({
    border: false,
    store: store,
    colModel: colModelGifts,
    loadMask: true,
    height: 300,
    viewConfig: {
      forceFit: true
    },
    listeners: {
      render: {
        fn: function(){
          store.load({
            params: {
              start: 0,
              limit: 15
            }
          });
        }
      }
    },
    bbar: new Ext.PagingToolbar({
      store: store,
      pageSize: 15,
      displayInfo: true,
      autoWidth: true
    })
  })
};

var createDeltagerStore = function(d,y){
  return new Ext.data.JsonStore({
    // store configs
    autoDestroy: true,
    url: 'php/grid-filter.php?distance='+d+'&year='+y,
    remoteSort: true,
    sortInfo: {
      field: 'startnumber',
      direction: 'ASC'
    },
    storeId: 'participant'+y+d,

    // reader configs
    idProperty: 'startnumber',
    root: 'data',
    totalProperty: 'total',
    fields: [{
      name: 'distance',
      type: 'int'
    },{
      name: 'startnumber',
      type: 'int'
    }, {
      name: 'fullname'
    }, {
      name: 'postby'
    }, {
      name: 'team'
    }, {
      name: 'tid'
    }]
  });
}

var createDeltagerGrid = function(store){
  return new Ext.grid.GridPanel({
    border: false,
    store: store,
    colModel: deltagerColModel,
    loadMask: true,
    height: 380,
    viewConfig: {
      forceFit: true
    },
    listeners: {
      render: {
        fn: function(){
          store.load({
            params: {
              start: 0,
              limit: 15
            }
          });
        }
      }
    },
    bbar: new Ext.PagingToolbar({
      store: store,
      pageSize: 15,
      displayInfo: true
    })
  })
};

var createHoldStatusStore = function(y){
  return new Ext.data.JsonStore({
    // store configs
    autoDestroy: true,
    url: 'php/holdstatusjasonfilter.php?year='+y,
    remoteSort: true,
    sortInfo: {
      field: 'antal',
      direction: 'DESC'
    },
    storeId: 'storeholdstatus'+y,

    // reader configs
    idProperty: 'team',
    root: 'data',
    totalProperty: 'total',
    fields: [{
      name: 'antal',
      type: 'int'
    },{
      name: 'team'
    }]
  })
};

var createHoldStatusGrid = function(store){
  return new Ext.grid.GridPanel({
    border: false,
    store: store,
    colModel: colModelHoldStatus,
    loadMask: true,
    height: 300,
    viewConfig: {
      forceFit: true
    },
    listeners: {
      render: {
        fn: function(){
          store.load({
            params: {
              start: 0,
              limit: 15
            }
          });
        }
      }
    },
    bbar: new Ext.PagingToolbar({
      store: store,
      pageSize: 15,
      displayInfo: true,
      autoWidth: true
    })
  })
};

var createHoldStatusTabPanel = function(grid,storegrafik){
  return new Ext.TabPanel({
    activeTab: 0,
    defaults:{
      autoScroll: true,
      layout: 'fit'
    },
    items:[{
      title: 'Hold Tabel',
      items: grid
    },{
      loaded:false,
      title: 'Hold Grafik',
      items: {
        store: storegrafik,
        xtype: 'piechart',
        dataField: 'antal',
        categoryField: 'team',
        //extra styles get applied to the chart defaults
        extraStyle:
        {
          legend:
          {
            display: 'left',
            padding: 5,
            font:
            {
              family: 'Tahoma',
              size: 10
            }
          }
        }
      },
      listeners: {
        activate:{
          fn: function(p){
            if(!p.loaded){
              p.get(0).store.load();
              p.loaded=true;
            }
          }
        }
      }
    }]
  })
};

var createDistanceStatusTabPanel = function(grid,storegrafik){
  return new Ext.TabPanel({
    activeTab: 0,
    defaults:{
      autoScroll: true,
      layout: 'fit'
    },
    items:[{
      title: 'Distance Tabel',
      items: grid
    },{
      loaded:false,
      title: 'Distance Grafik',
      items: {
        store: storegrafik,
        xtype: 'piechart',
        dataField: 'antal',
        categoryField: 'Beskrivelse',
        //extra styles get applied to the chart defaults
        extraStyle:
        {
          legend:
          {
            display: 'left',
            padding: 5,
            font:
            {
              family: 'Tahoma',
              size: 10
            }
          }
        }
      },
      listeners: {
        activate:{
          fn: function(p){
            if(!p.loaded){
              p.get(0).store.load();
              p.loaded=true;
            }
          }
        }
      }
    }]
  })
};

var createHoldStatusGrafikStore = function(y){
  return new Ext.data.JsonStore({
    // store configs
    autoDestroy: true,
    url: 'php/holdstatusgrafikjason.php?year='+y,
    remoteSort: true,
    sortInfo: {
      field: 'antal',
      direction: 'DESC'
    },
    storeId: 'storeholdstatusgrafik'+y,

    // reader configs
    idProperty: 'team',
    root: 'data',
    totalProperty: 'total',
    fields: [{
      name: 'antal',
      type: 'int'
    },{
      name: 'team'
    }]
  })
};

var createDistanceStatusStore = function(y){
  return new Ext.data.JsonStore({
    // store configs
    autoDestroy: true,
    url: 'php/distancejasoncreate.php?year='+y,
    remoteSort: true,
    sortInfo: {
      field: 'Beskrivelse',
      direction: 'ASC'
    },
    storeId: 'storedistancestatus'+y,

    // reader configs
    idProperty: 'Beskrivelse',
    root: 'data',
    totalProperty: 'total',
    fields: [{
      name: 'antal',
      type: 'int'
    },{
      name: 'Beskrivelse'
    }]
  })
};

var createDistanceStatusGrid = function(store){
  return new Ext.grid.GridPanel({
    border: false,
    store: store,
    colModel: colModelDistanceStatus,
    loadMask: true,
    viewConfig: {
      forceFit: true
    },
    listeners: {
      render: {
        fn: function(){
          store.load({
            });
        }
      }
    }
  })
};

var createDistanceStatusGrafikStore = function(y){
  return new Ext.data.JsonStore({
    // store configs
    autoDestroy: true,
    url: 'php/distancegrafikjasoncreate.php?year='+y,
    remoteSort: true,
    sortInfo: {
      field: 'Beskrivelse',
      direction: 'ASC'
    },
    storeId: 'storedistancestatusgrafik'+y,

    // reader configs
    idProperty: 'Beskrivelse',
    root: 'data',
    totalProperty: 'total',
    fields: [{
      name: 'antal',
      type: 'int'
    },{
      name: 'Beskrivelse'
    }]
  })
};

var createHoldPanel=function(holdstatus,year){
  return new Ext.Panel({
    title: 'Hold statistik '+year,
    iconCls: 'icon-grid',
    margins: '0 5 0 5',
    height: 470,
    collapsible: true,   // make collapsible
    titleCollapse: true,
    cmargins: '0 5 0 5', // adjust top margin when collapsed
    id: 'holdstatuspanel'+year,
    layout: 'fit',
    unstyled: false,
    items: holdstatus
  })
};

var createDistancePanel=function(distancestatus, year){
  return new Ext.Panel({
    title: 'Distance statistik '+year,
    iconCls: 'icon-grid',
    margins: '0 5 0 5',
    height: 300,
    collapsible: true,   // make collapsible
    titleCollapse: true,
    cmargins: '0 5 0 5', // adjust top margin when collapsed
    id: 'distancestatuspanel'+year,
    layout: 'fit',
    unstyled: false,
    items: distancestatus
  })
};

function reloadStoresAfterSubmit(){
  storeholdstatus[year-2006].reload();
  storeholdstatusGrafik[year-2006].reload();
  storedistancestatus[year-2006].reload();
  storedistancestatusGrafik[year-2006].reload();
  storeHoldTilmelding.reload();
}

function findGebyr(tc)
{
  var tv = tc.getValue();
  return tv==''?20:tc.getStore().getById(tv).get('gebyr')==1?20:0;
}
