﻿grd = null;

Ext.ns('eni.grdProducts');



eni.grdProducts = Ext.extend(Ext.grid.GridPanel,{

	height: 510,

	colspan: 2,

	border:false,

	columnLines: true,

	loadMask : true,

	product_type: 1,

	viewConfig: {forceFit: true},

	bb: null,

	btnViewImage: null,

	btnViewPdf: null,
	img_renderer: null,
	pdf_renderer: null,

	initComponent: function(){

		this.btnViewImage = new Ext.Button({text: 'Pregled Slika', iconCls: 'view_imgs'});

		this.btnViewImage.on('click', this.OnViewImageClick, this);

		this.btnViewPdf = new Ext.Button({text: 'Preuzmi PDF', iconCls: 'view_pdf'});

		this.btnViewPdf.on('click', this.OnViewPdfClick, this);

		this.img_renderer = function(value){
			if (value>0)
				return '<div class="image_icon"></div>';
			else
				return '<div class="no_image_icon"></div>';
		};
		this.pdf_renderer = function(value){
			if (value !== '')
				return '<div class="view_pdf"></div>';
			else
				return '<div class="no_image_icon"></div>';
		};

		var rst = Ext.data.Record.create([

            {name: 'product_id', type: 'int', mapping: 'product_id'},

			{name: 'product_type', type: 'int', mapping: 'product_type'},

            {name: 'catalog_id', type: 'string', mapping: 'catalog_id'},

			{name: 'product_name', type: 'string', mapping: 'product_name'},

            {name: 'package_pcs', type: 'int', mapping: 'package_pcs'},

            {name: 'pdf_doc', type: 'string', mapping: 'pdf_doc'},

			{name: 'num_of_imgs', type: 'int', mapping: 'num_of_imgs'}

		]);

		var rdr = new Ext.data.JsonReader(

			{root: 'results',totalProperty: 'total', id: 'product_id'},

			rst);

		var str = new Ext.data.Store({

			proxy: new Ext.data.HttpProxy({

				url: 'eni.grdProducts.php',

				method: 'POST'

			}),

			baseParams:{task: 'LISTING'},

			reader: rdr

		});

		var clm = new Ext.grid.ColumnModel([

			{header: 'Kataloški br.',dataIndex: 'catalog_id',width: 70, sortable:true},

	//		{header: 'Grupa', dataIndex: 'product_type', width: 50, sortable: true},

			{header: 'Naziv', dataIndex: 'product_name', width: 300, sortable: true},

			{header: 'Slika', dataIndex: 'num_of_imgs', width: 25, sortable: true, renderer: this.img_renderer},
			{header: 'PDF', dataIndex: 'pdf_doc', width: 25, sortable: true, renderer: this.pdf_renderer}

		]);

		var selm = new Ext.grid.RowSelectionModel({singleSelect:true});

		this.bb = new Ext.PagingToolbar({

                pageSize: 18,

				store: str,

                displayInfo: true,

                displayMsg: 'Prikazane stavke {0} - {1} od {2}',

                emptyMsg: 'Nema stavki za prikaz',

				beforePageText: 'Strana',

				afterPageText: 'od {0}'

            });

		this.bb.on('beforechange', this.OnBeforeChange, this);

	//	var tb = new Ext.Toolbar({items: [this.btnViewImage,'-',this.btnViewPdf]});

		var tb = new Ext.Toolbar({items: [this.btnViewImage, this.btnViewPdf]});

		var config = {

			store: str,

			selModel: selm,

			cm: clm,

			bbar: this.bb,

			tbar: tb

		}
		this.on('cellclick', this.CellClick, this);
		Ext.apply(this, Ext.apply(this.initialConfig, config));

		eni.grdProducts.superclass.initComponent.apply(this, arguments);

	},

	onShow: function(){
		Ext.getDom('p'+this.product_type+'000').className = 'selected';
		this.bb.changePage(1);

		//this.store.load({params: {start:0, limit: 20, product_type: this.product_type}});

	},

	OnViewImageClick: function(){

		var selection = this.selModel.getSelected();

		if(typeof(selection)=="undefined"){

			Ext.MessageBox.alert('Info','Ništa nije označeno.');

			return;

		};

        if(selection.get('num_of_imgs')==0){

			Ext.MessageBox.alert('Info', 'Za izabrani proizvod ne postoji ni jedna slika.');

			return;

		};

		var f = new eni.frmViewImage({product_id: selection.get('product_id')});

		f.show();

	},

    OnViewPdfClick: function(){

		var selection = this.selModel.getSelected();

		if(typeof(selection)=="undefined"){

			Ext.MessageBox.alert('Info','Ništa nije označeno.');

			return;

		};
		if(selection.get('pdf_doc')==''){

			Ext.MessageBox.alert('Info', 'Za izabrani proizvod ne postoji PDF dokument.');

			return;

		};

		window.open('eni.viewpdf.php?product_id='+selection.get('product_id'), 'pdf_preview');

        

	},

	OnBeforeChange: function(){

		this.store.baseParams = {task: 'LISTING', product_type: this.product_type}

	},

	ChangeGroup: function(p_product_type){
		Ext.getDom('p'+this.product_type+'000').className = '';
		this.product_type = p_product_type;
        Ext.getDom('p'+this.product_type+'000').className = 'selected';
		this.bb.changePage(1);

		//this.store.load({params: {start:0, limit: 20, product_type:this.product_type}});

	},
	
	CellClick: function(grid, rowIndex, columnIndex, e){	
		var record = grid.getStore().getAt(rowIndex);
		var fieldName = grid.getColumnModel().getDataIndex(columnIndex);
		if (fieldName == 'pdf_doc'){
			if(record.get('pdf_doc')==''){
				Ext.MessageBox.alert('Info', 'Za izabrani proizvod ne postoji PDF dokument.');
				return;
			};
			window.open('eni.viewpdf.php?product_id='+record.get('product_id'), 'pdf_preview');
		}else if (fieldName == 'num_of_imgs'){
        	if(record.get('num_of_imgs')==0){
				Ext.MessageBox.alert('Info', 'Za izabrani proizvod ne postoji ni jedna slika.');
				return;
			};
			Ext.Ajax.request({
				url: 'eni.frmViewImage.php',
				params: {product_id: record.get('product_id')},
				method: 'POST',
				scope: this,
				success: function(response){
					Ext.getDom('images_holder').innerHTML = response.responseText;
					Ext.ux.Lightbox.register('a.lightbox-enabled', true);
					Ext.ux.Lightbox.open(Ext.getDom('try_me'), 'a.lightbox-enabled', true)
				},
				failure: function(response){
					Ext.MessageBox.alert('Greška', 'Došlo je do greške prilikom učitavanja podataka');
				}
			});
		}
	}

});



Ext.onReady(function() {

	grd = new eni.grdProducts({product_type: p_product_type});

	grd.render('grdProducts');

	grd.onShow();

});






