
Ext.BLANK_IMAGE_URL = '/ext-1.0/resources/images/default/s.gif';

//load google code without hanging browser.

Ext.onReady(function(){
	// *********************
	// * Global Variables
	// *********************
	var ds; // Datasource
	var cm; // Column Model
	var sm; // Row Selection Model
	var grid; // Grid Control
	var farmPanel;
	var map;
	var geocoder = null;
	
		ds = new Ext.data.Store({
	       proxy: new Ext.data.HttpProxy({
		    url: '/ajax/getproducerlist.php'
		}),
	
	       reader: new Ext.data.JsonReader({
		    root: "rows",
		    totalProperty: "totalCount",
		    id: "kid"
		}, [
		    {name: 'rowid', mapping: 'rowid'},
		    {name: 'farmname', mapping: 'farmname'},
		    {name: 'description', mapping: 'description'},
		    {name: 'products', mapping: 'products'},
		    {name: 'address', mapping: 'address'},
		    {name: 'city', mapping: 'city'},
		    {name: 'state', mapping: 'state'},
		    {name: 'zip', mapping: 'zip'}
		])
	
		
	    });

		cm = new Ext.grid.ColumnModel([
			{header: "Farm/Ranch", width: 500, dataIndex: 'farmname', renderer: renderFarm,css: 'white-space:normal;'},
			{header: "Products", width: 250, dataIndex: 'products',renderer: renderProducts,css: 'white-space:normal;'}
		]);
	
	sm= new Ext.grid.RowSelectionModel({singleSelect: true});
	sm.on('rowselect',gridSelectCmd);
	
	grid = new Ext.grid.Grid('admin-grid', {
		ds: ds,
		cm: cm,
		sm: sm,
		loadMask: true
	    });
	    
	grid.render();
	//ds.load();
	showFeatured();
	
	farmPanel = new Ext.ContentPanel('farmDlgPanel',{
		url: '/ajax/farmDetail.php'});
	//farmPanel.refresh();
	
	//*************** Start Category Chooser Code
	 var categoryChooserStore = new Ext.data.Store({
			 proxy: new Ext.data.HttpProxy({
			 url: '/ajax/getgoodslist.php'
			 }),

       
			 reader: new Ext.data.JsonReader({
			 root: "rows",
			 totalProperty: "totalCount"}, [
			 {name: 'name', mapping: 'name'}])
	    });
	    categoryChooserStore.load();
	    var categoryChooser = new Ext.form.ComboBox({
		store: categoryChooserStore,
		displayField:'name',
		valueField:'name',
		typeAhead: false,
		editable: false,
		mode: 'local',
		fitToFrame:true, 
		autoScroll:true,
		triggerAction: 'all',
		emptyText:'Product',
		selectOnFocus:true,
		width:185
	    });
	    
	   // categoryChooser.on("select",changeEstimateChooserCmd);
	//*************** End Category Chooser Code
	//*************** Start City Chooser Code
	 var cityChooserStore = new Ext.data.Store({
			 proxy: new Ext.data.HttpProxy({
			 url: '/ajax/getcitylist.php'
			 }),

       
			 reader: new Ext.data.JsonReader({
			 root: "rows",
			 totalProperty: "totalCount"}, [
			 {name: 'city', mapping: 'city'}])
	    });
	    cityChooserStore.load();
	    var cityChooser = new Ext.form.ComboBox({
		store: cityChooserStore,
		displayField:'city',
		valueField:'city',
		typeAhead: false,
		editable: false,
		mode: 'local',
		fitToFrame:true, 
		autoScroll:true,
		triggerAction: 'all',
		emptyText:'City',
		selectOnFocus:true,
		width:155
	    });
	    
	   // categoryChooser.on("select",changeEstimateChooserCmd);
	//*************** End City Chooser Code
	 var zipCode = new Ext.form.TextField({
		width:65,
		emptyText: 'Zip'
	    });
	//*************** Start Construct Upper Toolbar
	var gridHead = grid.getView().getHeaderPanel(true);
	var toolBarHead = new Ext.Toolbar(gridHead);
	toolBarHead.add(new Ext.Toolbar.TextItem("Search for "));
	toolBarHead.add(categoryChooser);
	toolBarHead.add(new Ext.Toolbar.TextItem("&nbsp;&nbsp;in&nbsp;&nbsp;"));
	toolBarHead.add(cityChooser);
	toolBarHead.add(new Ext.Toolbar.TextItem("&nbsp;&nbsp;or&nbsp;&nbsp;"));
	toolBarHead.add(zipCode);
	 toolBarHead.add(new Ext.Toolbar.Separator());
	toolBarHead.add(new Ext.Toolbar.Button({
		    text: "Search",
			handler: searchProductsCmd
		}));
	toolBarHead.add(new Ext.Toolbar.Button({
		    text: "Show All",
			handler: showAllProductsCmd
		}));
	toolBarHead.add(new Ext.Toolbar.Button({
		    text: "Clear All",
			handler: clearAllProductsCmd
		}));
	//*************** End Construct Upper Toolbar
	
	var farmDialog;
	function farmsDialogCmd(btn)
	{
			// PRADO JSON Method
			//farmsForm.load({success: showFarmDlg,params:{rowid:assemblyChooser.value},url:'/index.php?json=assemblyFarm',waitMsg:'Loading Farm...'});
			// Dustin AJAX method
			farmsForm.load({success: showFarmDlg,params:{rowid:assemblyChooser.value},url:'/protected/ajax/assemblyFarm.php',waitMsg:'Loading Farm...'});
	}
	
	function showFarmDlg()
	{
		if(!farmDialog){
				farmDialog = new Ext.BasicDialog("farm-dlg", { 
					autoTabs:false,
					width:600,
					height:250,
					shadow:true,
					minWidth:500,
					minHeight:200,
					proxyDrag: true,
					y: 500
				});
				farmDialog.addButton('Print', printFarmInfo, farmDialog);
				farmDialog.addButton('Email', sendFarmInfo, farmDialog);
				farmDialog.addButton('Ok', farmDialog.hide, farmDialog);
			}
			//farmPanel.setUrl('/ajax/farmDetail.php?rowid=' + sm.getSelected().get('rowid'));
			
				
			farmPanel.load({callback:finishShowFarmDlg,params:{rowid:sm.getSelected().get('rowid')},url: '/ajax/farmDetail.php'});
				
			
	}
	
	function printFarmInfo()
	{
		window.open("/printDetail.php?rowid="+ sm.getSelected().get('rowid'),"printFarm","WIDTH=760,HEIGHT=600");
	}
	
	function sendFarmInfo()
	{
		window.open("/sendDetail.php?rowid="+ sm.getSelected().get('rowid'),"sendFarm","WIDTH=360,HEIGHT=200");
	}
	
	function finishShowFarmDlg()
	{
// 		if (GBrowserIsCompatible()) {
// 				
// 				map = new GMap2(document.getElementById("map"));
// 				map.setCenter(new GLatLng(37.4419, -122.1419), 13);
// 				geocoder = new GClientGeocoder();
// 				showAddress(sm.getSelected().get('address') + ' ' + sm.getSelected().get('city') + ', ' + sm.getSelected().get('state') + ' ' + sm.getSelected().get('zip'));
// 			}
// 			 if(BrowserDetect.browser =='Explorer')
// 			 {
// 				document.getElementById('maplink').style.display='block';
// 				document.getElementById('mapwrapper').style.display='none';
// 			 }
			 document.getElementById('maplink').style.display='block';
			 document.getElementById('mapwrapper').style.display='none';
			 farmDialog.show();
	}
	
	function showAddress(address) {
	      if (geocoder) {
		geocoder.getLatLng(
		  address,
		  function(point) {
		    if (!point) {
		      // Do nothing if not found
		      document.getElementById("mapwrapper").style.display ='none';
		    } else {
		      map.setCenter(point, 13);
		      var marker = new GMarker(point);
		      map.addOverlay(marker);
		      marker.openInfoWindowHtml(address);
		    }
		  }
		);
	      }
	    }
	
	function hideFarmDlg()
	{
		farmDialog.hide();
	}
	
	// ** Renderers
	 function renderFarm(value, p, record){
		return String.format('<b>{0}</b><br/>{1}', value, String.format(record.data['description']).substring(0,100) + '. . .');
	   }
	 function renderProducts(value, p, record){
		return String.format('{0}', String.format(value).replace('|','<br/>') );
	   }  
	// ** End Renderers
	
	
	//*** Event Handlers
	function gridSelectCmd()
	{
		showFarmDlg();
	}
	
	function searchProductsCmd()
	{
		cm.setColumnHeader(0,'Farm/Ranch');
		ds.load({params:{category:categoryChooser.value,city:cityChooser.value,zip:zipCode.getValue()}});
	}
	function showAllProductsCmd()
	{
		cm.setColumnHeader(0,'Farm/Ranch');
		ds.load();
	}
	function clearAllProductsCmd()
	{
		categoryChooser.setValue('');
		cityChooser.setValue('');
		zipCode.setValue('');
		cm.setColumnHeader(0,'Featured Farm/Ranch');
		ds.load({params:{rowid:theRowid}});
	}
	function showFeatured()
	{
		cm.setColumnHeader(0,'Featured Farm/Ranch');
		ds.load({params:{rowid:theRowid}});
	}
	//*** End Event Handlers
});
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();
