﻿// JsLint Global Objects
/*jslint evil: false, devel: true, browser: true, unparam: true, sloppy: true, white: true, nomen: true, maxerr: 50, indent: 2, bitwise: true */
/*global window, alert, document, Ext, AV  */
Ext.namespace('AV.assn_POP_lookup');
AV.assn_POP_lookup =
{
	store: null,
	bLoaded: false,
	grid: null,

	search: function () {
		var searchPhrase = Ext.getDom('find_assn_name').value;

		if (searchPhrase.length < 3) {
			Ext.Msg.alert('Invalid Search Phrase', 'Please enter 3 or more characters before attempting to search',
				function () { Ext.get("find_assn_name").focus(); });
			return;
		}

		if (this.bLoaded) {
			this.store.reload({ params: { find_assn_name: searchPhrase} });
		}
		else {
			Ext.get('divListViewCont').applyStyles({ 'background-color': '#ffffff' }).boxWrap();
			//Ext.get('divListView').applyStyles({ 'border-top': '1px solid #D0D0D0', 'border-right': '1px solid #D0D0D0' });

			this.grid = new Ext.grid.GridPanel(
			{
				store: AV.assn_POP_lookup.getStore(),
				sm: new Ext.grid.RowSelectionModel(
				{
					singleSelect: true,
					listeners:
					{
						rowselect: function (sm, rowIdx, rec) {
							if (rec.data.site_type_id === 3 && rec.data.type_sum === 0) {
								Ext.Msg.alert('Community Pending', 'Neither Payments nor Account Information are currently available for this community.<br/><br/>Please check back in a couple of days.');
							}
							else {
								var url = rec.data.assn_domain,
								sR = '';
								if (url.split('.').length > 2) {
									sR = String.format('http://{0}{1}?assn_id={2}', url, rec.data.payment_link, rec.data.assn_id);
								}
								else {
									sR = String.format('http://www.{0}{1}?assn_id={2}', url, rec.data.payment_link, rec.data.assn_id);
								}
								window.location = sR;
							}
						}
					}
				}),
				cm: new Ext.grid.ColumnModel(
				{
					defaults: { sortable: true, menuDisabled: true },
					emptyText: 'No Communities were found',
					columns:
					[
						{
							id: 'col_display_name',
							header: "Community Name",
							dataIndex: 'display_name',
							renderer: function (value, metaData, record, rowIndex, colIndex, store) {
								metaData.css = (record.site_type_id !== 3 && record.type_sum !== 0) ? 'assn-enabled' : 'assn-disabled';
								return '<span style="padding-left:8px">' + value + '</span>';
							}
						},
						{
							header: "Account Information",
							dataIndex: 'site_type_id',
							width: 150,
							renderer: function (value, metaData, record, rowIndex, colIndex, store) {
								switch (value) {
									case 3: return 'Not Available';
									case 4: case 2: return 'Balance Only';
									default: return 'Balance and Transactions';
								}
							}
						},
						{
							header: "Online Payments",
							dataIndex: 'type_sum',
							width: 150,
							renderer: function (value, metaData, record, rowIndex, colIndex, store) {
								var sOut = '';
								if ((1 & value) === 1) { sOut = 'Credit Cards'; }
								if (value === 3) { sOut += ', '; }
								if ((2 & value) === 2) { sOut += 'E-Checks'; }
								if (value === 0) { sOut = 'Not Available'; }
								return sOut;
							}
						}
					]
				}),
				autoExpandColumn: 'col_display_name',
				autoExpandMin: 125,
				columnLines: true,
				autoHeight: true,
				renderTo: 'divListView'
			});

			this.store.load({ params: { find_assn_name: searchPhrase} });
			this.bLoaded = true;
		}
	},

	getStore: function () {
		if (!this.store) {
			this.store = new Ext.data.Store(
				{
					url: 'assn_POP_lookup.asp',
					reader: new Ext.data.XmlReader(
						{
							record: 'assn'
						},
						[
							{ name: 'assn_id', type: 'int', mapping: '@assn_id' },
							{ name: 'display_name', type: 'string', mapping: '@display_name' },
							{ name: 'site_type_id', type: 'int', mapping: '@site_type_id' },
							{ name: 'assn_domain', type: 'string', mapping: '@assn_domain' },
							{ name: 'payment_link', type: 'string', mapping: '@payment_link' },
							{ name: 'type_sum', type: 'int', mapping: '@type_sum' }
						]
					),
					sortInfo: { field: 'display_name', direction: 'ASC' },
					listeners:
					{
						load: function (store, arRecs, oOpts) {
							var str = String.format('{0} record(s) returned. Please select your community below to make a payment.', arRecs.length);
							Ext.get('divListViewInstr').update(str);
						}
					}
				});
		}

		return this.store;
	},

	// Search field functions
	clearDefault: function (el) {
		if (el.defaultValue === el.value && el.className === 'clsSearchInput') { el.value = ""; }
		el.className = 'clsSearchInputOnFocus';
	},

	getDefaultValue: function (el) {
		if (el.value === '') {
			el.value = el.defaultValue;
			el.className = 'clsSearchInput';
		}
	}
};

