//###############################################################
//#																#
//#		Copyright: 2009 episode49, LLC.							#
//#		Url: http://www.episode49.com							#
//#		Author: Paul Anderson <panderson@e49.com>				#
//#		Created: 6.26.2009										#
//#		Version: 4												#
//#		Keywords: ajax, php, json, jquery, javascript			#
//#		Section: Start Global Variables	 						#
//#																#
//###############################################################
 
function clear_form_elements(ele)
{
	$(ele).find(':input').each(function() {
		switch(this.type)
		{
			case 'password':
			case 'select-multiple':
			case 'select-one':
			case 'text':
			case 'textarea':
				$(this).val('');
				break;
			
			case 'checkbox':
				this.checked = false;
		}
	});
}

//###############################################################
//#																#
//#		Section: End Global Variables 							#
//#		Section: Start Display Grids							#
//#																#
//###############################################################

function RenderAdvancedPaging(click_function, total_rows, current_page)
{
	var padding = 7; //odd numbers only
	var start = 1;
	var end = 1;

	if((total_rows - current_page) < padding){			
		var diff = total_rows - current_page;
		if(total_rows >= ((padding * 2) + 1)){
			start = (total_rows - (padding * 2)) - diff; 
			end = total_rows;
		}
		else{
			start = 1; 
			end = total_rows;
		}
	}
	else if(current_page > padding){
		start = current_page - padding;
		end = current_page + padding;
	}
	else if(current_page <= padding) {
		if(total_rows >= ((padding * 2) + 1)){
			start = 1;
			end = (padding * 2) + 1;
		}
		else{
			start = 1; 
			end = total_rows;
		}			
	}		
	
	var delimiter = '&nbsp;';
	var links = '';

	for (var i=start; i <= end; i++){
		if(current_page > 1 && i==start && total_rows > ((padding * 2)+1)){
			var link_page_start = 'javascript:' + click_function + '(1);';				
			var goBack = 1;
			if(current_page-1 > 0) {
				goBack = current_page-1;
			}
			var link_page_bk = 'javascript:' + click_function + '(' + goBack + ');';
			links += "<a href='" + link_page_start + "'><<</a>" + delimiter;
			links += "<a href='" + link_page_bk + "'><</a>" + delimiter;
		}			
		if(i == current_page){
			links += '<b>' + i + '</b>' + delimiter;
		}
		else{
			var link_page = 'javascript:' + click_function + "(" + i + ");";
			links += "<a href='" + link_page + "'>" + i + "</a>" + delimiter;
		}
		if(current_page < total_rows && i==end && total_rows > ((padding * 2)+1)){
			var link_page_end = 'javascript:' + click_function + '(' + total_rows + ');';				
			var goNext = total_rows;
			if(current_page+1 < total_rows) {
				goNext = current_page+1;
			}
			var link_page_nx = 'javascript:' + click_function + '(' + goNext + ');';				
			links += "<a href='" + link_page_nx + "'>></a>" + delimiter;
			links += "<a href='" + link_page_end + "'>>></a>" + delimiter;				
		}
	}

	return links;	
}

function MakeStateExpenditureSummary(data)
{
	var out = '';
	var total = data.summary.total;
	
	var graph = '<div id="summaryGraph" style="width: 250px; height:100px"></div>';
	
	out += '<table width="100%"><tr><td colspan="4">State Expenditure Results</td><td rowspan="2">' + graph + '</td></tr>';
	out += '<tr>';
	
	out += '<td>' + total.numAgency + '<br />Number of Agencies</td>';
	out += '<td>' + total.cnt + '<br />Number of Expenses</td>';
	out += '<td>' + total.fiscalYear + '<br />Years Included</td>';
	out += '<td>$' + total.totalAmount + '<br />Total Amount</td>';
	
	out += '</tr></table>';
	
	return out;
}

function _makeSimpleValue(value, dataLog)
{
	var units = {
		0: '',
		3: 'k',
		6: 'm',
		9: 'b'
	};
	
	return '$' + (Math.pow(10, -dataLog) * value) + units[dataLog];
}

function CurrencyFormat(value)
{
	var s = new String(value);
	var a = s.split('.', 2);
	var l = a[0].length;
	
	var out = '';
	
	for(var x = l - 3; x > 0; x -= 3)
	{
		out = ',' + a[0].slice(x) + out;
		a[0] = a[0].slice(0, x);
	}
	
	out = a[0] + out + '.';
	
	if(a[1] == undefined)
		a[1] = 0;
	else
		a[1] = parseFloat('.' + a[1]);
	
	var dec = Math.floor(100 * a[1]);
	if(dec < 10)
		out += '0' + dec;
	else
		out += dec;
	
	return out;
}

function RenderStateSummary(data)
{
	$('#DataSummary').html(MakeStateExpenditureSummary(data));
	
	var gd = [];
	var ticks = [];
	var minYear = 0;
	var maxYear = 0;
	var minValue = 0;
	var maxValue = 0;
	
	for(k in data.summary)
		if(k != 'total')
		{
			var v = data.summary[k];
			
			gd.push([ v.totalAmount, v.fiscalYear ]);
			ticks.push([v.fiscalYear, 'FY ' + v.fiscalYear]);
			
			if(!minYear || minYear > v.fiscalYear)
				minYear = v.fiscalYear;
			
			if(!maxYear || maxYear < v.fiscalYear)
				maxYear = v.fiscalYear;
			
			if(!minValue || minValue > v.totalAmount)
				minValue = v.totalAmount;
			
			if(!maxValue || maxValue < v.totalAmount)
				maxValue = v.totalAmount;
		}
		
	var dataLog = Math.log(maxValue) / Math.log(10);
	dataLog = Math.floor(dataLog / 3) * 3;
	
	var graphData = {
		data: gd,
		color: 'rgb(82, 129, 187)'
	};
	
	var graphConfig = {
		series: {
			bars: {
				show: true,
				horizontal: true
			},
			
			lines: {show: false}
		},
		
		yaxis: {
			ticks: ticks,
			min: minYear
		},
		
		xaxis: {
			min: 0,
			tickFormatter: function(value) {
				return _makeSimpleValue(value, dataLog);
			}
		},
		
		grid: {
			hoverable: true,
			backgroundColor: 'white',
			color: 'black'			
		}
	};
	
	var graphShowTooltip = function(x, y, contents) {
		var dollars = '$'  + CurrencyFormat(contents);
		
		$('<div id="tooltip">' + dollars + '</div>').css( {
			'position': 'absolute',
			'display': 'none',
			'top': y + 5,
			'left': x + 5,
			'border': '1px solid rgb(130, 193, 251)',
			'padding': '2px',
			'color': 'black',
			'background-color': 'rgb(130, 193, 251)',
			'opacity': 0.80
		}).appendTo('body').fadeIn(200);
	}


	$.plot($('#summaryGraph'), [ graphData ], graphConfig);
	var previousPoint = null;
	$('#summaryGraph').bind('plothover', function(event, pos, item) {
		if(item)
		{
			if(previousPoint != item.datapoint)
			{
				previousPoint = item.datapoint;
				
				$('#tooltip').remove();
				
				graphShowTooltip(item.pageX, item.pageY, item.datapoint[0]);
			}
		}
		else
		{
			$('#tooltip').remove();
			previousPoint = null;
		}
	});
}

function RenderStateGrid(field, data, sortFunc, pagingFunc)
{
	var gridhtml = '';
	
	//No Results
	if(data == null || data.results == null)
	{
		gridhtml = "<p>" + noResultMessage + "</p>";
		$(field).html(gridhtml);
	}
	else
	{
		gridhtml += '<table border=\"1\" width=\"100%\">';
		gridhtml += '<tr>';
		gridhtml += '<th><a href=\"javascript:' + sortFunc + '(\'stateAgency\');\">Agency</a></th>';
		gridhtml += '<th><a href=\"javascript:' + sortFunc + '(\'stateBudgetUnit\');\">Budget Unit</a></th>';
		gridhtml += '<th><a href=\"javascript:' + sortFunc + '(\'stateFund\');\">Fund</a></th>';
		gridhtml += '<th><a href=\"javascript:' + sortFunc + '(\'stateCategory\');\">Category</a></th>';
		gridhtml += '<th><a href=\"javascript:' + sortFunc + '(\'stateSubCategory\');\">Sub-Category</a></th>';
		gridhtml += '<th><a href=\"javascript:' + sortFunc + '(\'stateExpense\');\">Expense</a></th>';
		gridhtml += '<th><a href=\"javascript:' + sortFunc + '(\'stateFiscalYear\');\">Fiscal Year</a></th>';
		gridhtml += '<th><a href=\"javascript:' + sortFunc + '(\'stateMonthValue\');\">Month</a></th>';		
		gridhtml += '<th><a href=\"javascript:' + sortFunc + '(\'stateAmount\');\">Amount</a></th>';
		gridhtml += '</tr>';
		
		var rowFormat = '<tr>';
		rowFormat += '<td>{0}</td>';
		rowFormat += '<td>{1}</td>';
		rowFormat += '<td>{2}</td>';
		rowFormat += '<td>{3}</td>';
		rowFormat += '<td>{4}</td>';
		rowFormat += '<td>{5}</td>';
		rowFormat += '<td>{6}</td>';
		rowFormat += '<td>{7}</td>';
		rowFormat += '<td>{8}</td>';
		rowFormat += '</tr>';
		
		rowCount = data.totalRows;
		var results = data.results;
		
		for (var i = 0; i < results.length; i++)
		{
			var obj = results[i];
			var agency =  obj["Agency"];
			var budgetUnit = obj["BudgetUnit"];
			var fund = obj["Fund"];
			var expObject = obj["Category"];
			var expSummary = obj["SubCategory"];
			var expSubObject = obj["Expense"];
			var fiscalYear = obj["FiscalYear"];
			var month = obj["MonthValue"];
			var amount = obj["Amount"];
			
			if(agency == null || agency.length == 0){
				agency = 'Empty';
			}
			if(budgetUnit == null || budgetUnit.length == 0){
				budgetUnit = 'Empty';
			}
			if(fund == null || fund.length == 0){
				fund = 'Empty';
			}
			if(expObject == null || expObject.length == 0){
				expObject = 'Empty';
			}
			if(expSummary == null || expSummary.length == 0){
				expSummary = 'Empty';
			}
			if(expSubObject == null || expSubObject.length == 0){
				expSubObject = 'Empty';
			}
			if(fiscalYear == null || fiscalYear.length == 0){
				fiscalYear = 'Empty';
			}
			if(month == null || month.length == 0){
				month = 'Empty';
			}
			if(amount == null || amount.length == 0){
				amount = 'Empty';
			}
			
			gridhtml += format(rowFormat, agency, budgetUnit, fund, expObject, expSummary, expSubObject, fiscalYear, month, amount);
		}
		
		gridhtml += '</table>';
		
		gridhtml += '<p style=\"width:100%;word-wrap:break-word;\">';
		
		var totalPages = Math.ceil(rowCount / pageSize);
		gridhtml += RenderAdvancedPaging(pagingFunc, totalPages, currentPage);
		gridhtml += '</p>';
		
		$(field).html(gridhtml);
		
		if(data.summary)
			RenderStateSummary(data);
	}
	
	$.unblockUI();		
}	

function RenderSalaryGrid(field, data, sortFunc, pagingFunc) {

	var gridhtml = '';

	gridhtml += '<table border=\"1\" width=\"100%\">';
	gridhtml += '<tr>';
	
	gridhtml += '<th><a href=\"javascript:' + sortFunc + '(\'Location\');\">Location</a></th>';
	gridhtml += '<th><a href=\"javascript:' + sortFunc + '(\'Department\');\">Department</a></th>';
	gridhtml += '<th><a href=\"javascript:' + sortFunc + '(\'EmployeeName\');\">Employee Name</a></th>';
	gridhtml += '<th><a href=\"javascript:' + sortFunc + '(\'Title\');\">Title</a></th>';
	gridhtml += '<th><a href=\"javascript:' + sortFunc + '(\'PayPeriod\');\">Pay Period</a></th>';
	gridhtml += '<th><a href=\"javascript:' + sortFunc + '(\'PayRate\');\">Pay Rate</a></th>';
	gridhtml += '<th><a href=\"javascript:' + sortFunc + '(\'DATARECEIVEDON\');\">Data Received On</a></th>';
	gridhtml += '</tr>';

	var rowFormat = '<tr>';
	rowFormat += '<td>{0}</td>';
	rowFormat += '<td>{1}</td>';
	rowFormat += '<td>{2}</td>';
	rowFormat += '<td>{3}</td>';
	rowFormat += '<td>{4}</td>';
	rowFormat += '<td>{5}</td>';
	rowFormat += '<td>{6}</td>';
	rowFormat += '</tr>';
		
	if(data!=null){
	    for (var i = 0; i < data.length; i++) {
			
			var obj = data[i];
			var location =  obj["Location"];
			var department =  obj["Department"];
			var employeeName = obj["EmployeeName"]; 
			var title = obj["Title"];
			var payPeriod = obj["PayPeriod"];
			var payRate = obj["PayRate"];
			var dataReceivedOn = obj["DataReceivedOn"];
			
			//Paging variable...
			rowCount = obj["TotalRows"];				
			
			if(location == null || location.length == 0){
				location = 'Empty';
			}
			if(department == null || department.length == 0){
				department = 'Empty';
			}
			if(employeeName == null || employeeName.length == 0){
				employeeName = 'Empty';
			}
			if(title == null || title.length == 0){
				title = 'Empty';
			}
			if(payPeriod == null || payPeriod.length == 0){
				payPeriod = 'Empty';
			}
			if(payRate == null || payRate.length == 0){
				payRate = 'Empty';
			}
			if(dataReceivedOn == null || dataReceivedOn.length == 0){
				dataReceivedOn = 'Empty';
			}
			
			gridhtml += format(rowFormat, location, department, employeeName, title, payPeriod, payRate, dataReceivedOn);
		}
	}
	
	gridhtml += '</table>';
	
	gridhtml += '<p style=\"width:100%;word-wrap:break-word;\">';
	var totalPages = Math.ceil(rowCount / pageSize);
	gridhtml += RenderAdvancedPaging(pagingFunc, totalPages, currentPage);
	gridhtml += '</p>';
	
	//No Results
	if(data==null){
		gridhtml = "<p>" + noResultMessage + "</p>";
	}		
	
        $(field).html(gridhtml);
	$.unblockUI();		
    }

//###############################################################
//#																#
//#		Section: End Display Grids	 							#
//#		Section: Start Quick Search	 							#
//#																#
//###############################################################

function LoadQuickSearch(columnvalue){	
	var table = $('#ddlQuickTable').val();
	var column = (columnvalue != null) ? columnvalue : $('#ddlQuickColumn').val();
	var keyword = $('#txtQuickSearch').val();
	QuickSearch(table, column, keyword);
}	

function QuickSearchSort(value){
	if(columnDirection == 'asc'){
		columnDirection = 'desc';
	}
	else {
		columnDirection = 'asc';
	}		
	columnSort = value;	
	LoadQuickSearch(null);				
}

function QuickSearchPaging(value){
	currentPage = value;
	LoadQuickSearch(null);
}	

function LoadQuickColumn(type,setvalue){		
	if(type == "Salary"){			
		LoadSalaryDistinctLocation('#ddlQuickColumn',setvalue);			
	}
	else if (type == 'State')
		LoadStateFieldData('stateAgency', {}, 'ddlQuickColumn', setvalue, 'All Agencies');
}	

function QuickSearch(table, column, keyword){
	$.blockUI({ message: '<p><br /><b>Loading...</b><br />&nbsp;</p>', overlayCSS: { backgroundColor: '#fff' }});
	
	var skip = 0;
	var take = pageSize;
	if(currentPage < 1){
		currentPage = 1;
	}
	else if(currentPage > 1){
		skip = (pageSize * (currentPage-1));
	}
	
	if(table == 'State')
	{
		var queryParams = {
			'stateAgency': column,
			'stateKeyword': keyword
		};
		
		StateSearchAdvanced(queryParams, 'QuickSearchSort', 'QuickSearchPaging');
	}
	else if(table == 'Salary')
	{
		$.get('/data.php?Method=QuickSearch&v1=' + urlencode(table) + '&v2=' + urlencode(column) + '&v3=' + urlencode(keyword) + '&v4=' + urlencode(columnSort + ' ' + columnDirection) + '&v5=' + urlencode(skip) + '&v6=' + urlencode(take), function(data) {
			var obj = GetObject(data);		
			RenderSalaryGrid('#DataGrid', obj, 'QuickSearchSort', 'QuickSearchPaging');
		});
	}
}

//ddlQuickTable selectedindex Change
$(function(){
	$("#ddlQuickTable").change(function () {
		ClearGrid();
		LoadQuickColumn($(this).val(),null);
	});
});

//ddlQuickColumn selectedindex Change
$(function(){
	$("#ddlQuickColumn").change(function () {
		ClearGrid();
	});
});

//txtQuickSearch text change
$(function(){
	$("#txtQuickSearch").change(function () {
		ClearGrid();
	});
});	

//###############################################################
//#																#
//#		Section: End Quick Search	 							#
//#		Section: Start Advanced State Search					#
//#																#
//###############################################################	

function StateSearchAdvancedSort(value){
	if(columnDirection == 'asc'){
		columnDirection = 'desc';
	}
	else {
		columnDirection = 'asc';
	}		
	columnSort = value;	
	LoadStateSearchAdvanced();				
}

function StateSearchAdvancedPaging(value){
	currentPage = value;
	LoadStateSearchAdvanced();
}

function StateSearchAdvanced(queryParams, sortFunc, pagingFunc)
{
	$.blockUI({ message: '<p><br /><b>Loading...</b><br />&nbsp;</p>', overlayCSS: { backgroundColor: '#fff' }});
			
	var skip = 0;
	var take = pageSize;
	if(currentPage < 1)
		currentPage = 1;
	else if(currentPage > 1)
		skip = (pageSize * (currentPage-1));
	
	var query = {
		'Method': 'stateSearchAdvanced',
		'sort': columnSort,
		'sortOrder': columnDirection,
		'skip': skip,
		'take': take,
		'searchParams': $.compactJSON(queryParams)
	};
	
	$.post('/data.php', query, function(data) {
		RenderStateGrid('#DataGrid', data, sortFunc, pagingFunc);
	}, 'json');
}

//field name => [ field type, form field id ]
var StateAdvancedFields = {
	'stateAgency': ['menu', 'ddlStateAgency'],
	'stateBudgetUnit': ['menu', 'ddlStateBudgetUnit'],
	'stateFund': ['menu', 'ddlStateFund'],
	'stateCategory': ['menu', 'ddlStateCategory'],
	'stateSubCategory': ['menu', 'ddlStateSubCategory'],
	'stateExpense': ['menu', 'ddlStateExpense'],
	'stateFiscalYear': ['menu', 'ddlStateFiscalYear'],
	'stateKeyword': ['text', 'txtStateKeyword']
};

function LoadStateSearchAdvanced()
{
	var fields = StateAdvancedFields;
	var queryFields = {};
	
	for(var field in fields)
	{
		var data = fields[field];
		var fn = '#' + data[1];
		var type = data[0];
		
		var val = $(fn).val();
		if(val == null || val.length == 0)
			val = '';
		
		queryFields[field] = val;
	}
	
	StateSearchAdvanced(queryFields, 'StateSearchAdvancedSort', 'StateSearchAdvancedPaging');
}

function LoadStateFieldData(fieldName, queryParams, formID, currentValue, defaultValue)
{
	var query = {
		'Method': 'stateFieldQuery',
		'fieldName': fieldName,
		'searchParams': $.compactJSON(queryParams)
	};
	
	if(defaultValue == null)
		defaultValue = 'All';
	
	$.post('/data.php', query, function(data) {
		LoadDropDownListWithDefault('#' + formID, data, 'value', 'key', currentValue, defaultValue);
	}, 'json');
}

function LoadStateSearchAdvancedDropdowns(resetAll, selectedField)
{
	var fields = StateAdvancedFields;
	var queryFields = {};
	
	if(resetAll)
	{
		for(var field in fields)
		{
			var data = fields[field];
			var type = data[0];
			
			if(type == 'menu')
				LoadDropDownList('#' + data[1], null, null, null, null);
			else if(type == 'text')
				$('#' + data[1]).val('');
		}
	}
	
	for(var field in fields)
	{
		var data = fields[field];
		var fn = '#' + data[1];
		var type = data[0];
		
		if(type == 'menu')
		{
			$(fn).attr('disabled', (resetAll || field != selectedField));
			
			var val = $(fn).val();
			if(val == null || val.length == 0)
				val = '';
			
			queryFields[field] = val;
		}
	}
	
	for(var field in fields)
	{
		if(resetAll || field != selectedField)
		{
			var data = fields[field];
			var type = data[0];
			
			if(type == 'menu')
				LoadStateFieldData(field, queryFields, data[1], queryFields[field]);
		}
	}
}

function _ResetStateSearchboxOnChange(field)
{
	var data = StateAdvancedFields[field];
	var type = data[0];
	
	$('#' + data[1]).change(function() {
		ClearGrid();

		if(type == 'menu')
			LoadStateSearchAdvancedDropdowns(false, field);
	});
}

function ResetStateSearchboxOnChange()
{
	for(var field in StateAdvancedFields)
		_ResetStateSearchboxOnChange(field);
}

//###############################################################
//#																#
//#		Section: End Advanced State Search						#
//#		Section: Start Employee Search							#
//#																#
//###############################################################

function LoadSalaryDistinctLocation(dropdown, setvalue){
	$.get('/data.php?Method=SalaryDistinctLocation', function(data) {		
		var obj = $.evalJSON(data);
		LoadDropDownListWithDefault(dropdown, obj, 'Key', 'Value', setvalue, "All Locations");	
	});
}

function SalarySearchEmployeeNameSort(value){
	if(columnDirection == 'asc'){
		columnDirection = 'desc';
	}
	else {
		columnDirection = 'asc';
	}		
	columnSort = value;	
	LoadSalarySearchEmployeeName();				
}

function SalarySearchEmployeeNamePaging(value){
	currentPage = value;
	LoadSalarySearchEmployeeName();
}

function SalarySearchEmployeeName(location, department, employeeName){		
	$.blockUI({ message: '<p><br /><b>Loading...</b><br />&nbsp;</p>', overlayCSS: { backgroundColor: '#fff' }});
			
	var skip = 0;
	var take = pageSize;
	if(currentPage < 1){
		currentPage = 1;
	}
	else if(currentPage > 1){
		skip = (pageSize * (currentPage-1));
	}	

	$.get('/data.php?Method=SalarySearchEmployeeName&v1=' + urlencode(department) + '&v2=' + urlencode(location) + '&v3=' + urlencode(employeeName) + '&v4=' + urlencode(columnSort + ' ' + columnDirection) + '&v5=' + urlencode(skip) + '&v6=' + urlencode(take), function(data) {
		var obj = GetObject(data);		
		RenderSalaryGrid('#DataGrid', obj, 'SalarySearchEmployeeNameSort', 'SalarySearchEmployeeNamePaging');		
	});
}

function SalaryDistinctDepartment(location)
{
	$.get('/data.php?Method=SalaryDistinctDepartment&v1=' + urlencode(location), function(data) {
		var obj = GetObject(data);
		LoadDropDownList('#ddlEmployeeDepartment', obj, 'Key', 'Value', null);		
	});
}

function LoadSalarySearchEmployeeName(){
	
	var location = $('#ddlEmployeeLocation').val();
	var department = $('#ddlEmployeeDepartment').val();
	var employeeName = $('#txtEmployeeName').val(); 
	
	if(location == null || location == 0){
		location = '';
	}
	if(department == null || department == 0){
		department = '';
	}
	if(employeeName == null || employeeName == 0){
		employeeName = '';
	}
	
	SalarySearchEmployeeName(location,department,employeeName);
}	

//ddlEmployeeLocation Selectedindex Change
$(function(){
	$("#ddlEmployeeLocation").change(function () {
		ClearGrid();
		LoadDropDownList('#ddlEmployeeDepartment', null, null, null, null);	
		var val = $(this).val();
		if(val !=null && val.length > 0){
			SalaryDistinctDepartment(val);
		}			
	});
});

//ddlEmployeeDepartment Selectedindex Change
$(function(){
	$("#ddlEmployeeDepartment").change(function () {
		ClearGrid();
	});
});		

//txtEmployeeName text change
$(function(){
	$("#txtEmployeeName").change(function () {
		ClearGrid();
	});
});

//###############################################################
//#																#
//#		Section: End Employee Search							#
//#		Section: Start Miscellaneous							#
//#																#
//###############################################################

function CorrectPageSorting(table)
{		
	var isOkay = false;
	if(table=="State"){
		for (i=0;i<stateColumnArray.length; i++){
			if(columnSort == stateColumnArray[i][0]){
				isOkay = true;
			}
		}
		
		if(!isOkay)
			columnSort = 'stateAgency';
	}
	else if (table=="Salary"){
		for (i=0;i<salaryColumnArray.length; i++){
			if(columnSort == salaryColumnArray[i][0]){
				isOkay = true;
			}
		}
		if(isOkay==false){
			columnSort = "Location";
		}	
	}
} 

function searchFormSubmitHandler(dataForm)
{
	ClearGrid();
	var value = $("input[@name='SearchType']:checked").val();
	if(value=="1"){
		CorrectPageSorting($('#ddlQuickTable').val());
		LoadQuickSearch(null);
	}
	else if(value=="2"){
		CorrectPageSorting("Salary");
		LoadSalarySearchEmployeeName();
	}
	else if(value=="3"){
		CorrectPageSorting("State");
		LoadStateSearchAdvanced();
	}

	return false;
}

$(function(){
	$("#btnReset").click(function () {
		ClearGrid();							
		LoadStateSearchAdvancedDropdowns(true);
	});
});

function BootstrapQuickSearch()
{
	var SearchType = urldecode($.jqURL.get('SearchType'));
	var SearchField = urldecode($.jqURL.get('SearchField'));
	var SearchText = urldecode($.jqURL.get('SearchText'));
	
	if(SearchType.length > 0 && SearchField != null)
	{
		$('#ddlQuickTable').val(SearchType);
		$('#txtQuickSearch').val(SearchText);
		CorrectPageSorting($('#ddlQuickTable').val());
		LoadQuickColumn($('#ddlQuickTable').val(),SearchField)
		LoadQuickSearch(SearchField);		
	}
	else
		LoadQuickColumn($('#ddlQuickTable').val(), null)
	
	$('#btnReset').show();
}

function BootstrapEmployeeSearch()
{
	LoadDropDownList('#ddlEmployeeLocation', null, null, null, null);
	LoadDropDownList('#ddlEmployeeDepartment', null, null, null, null);
	LoadSalaryDistinctLocation('#ddlEmployeeLocation', null);
}

function BootstrapStateSearch()
{
	ResetStateSearchboxOnChange();
	
	LoadStateSearchAdvancedDropdowns(true);
}

var searchInited = {};
function ToggleVisibleSearch(value)
{
	var searchTypes = {
		'1': ['QuickSearch', BootstrapQuickSearch],
		'2': ['EmployeeSearch', BootstrapEmployeeSearch],
		'3': ['StateSearchAdvanced', BootstrapStateSearch]
	};
	var show;
	
	for(x in searchTypes)
	{
		var data = searchTypes[x];
		
		if(x == value)
			show = data;
		else
			$('#' + data[0]).hide();
	}
	
	if(show != null)
	{
		$('#' + show[0]).show();
		
		if(searchInited[value] == null)
		{
			show[1]();
			searchInited[value] = true;
		}
	}
	
	$('#btnReset').show();
}

//Radio button change
$(function(){
	$("input:radio[@name=SearchType]").click(function () {
		ClearGrid();
		ToggleVisibleSearch($(this).val());
	});
});

//###############################################################
//#
//#		Section: End Miscellaneous
//#		Section: Begin Bootstrap
//#
//###############################################################

$(function(){
	ToggleVisibleSearch(1);
});
