try {
	var Application_Abstract = Class.create();
	Application_Abstract.prototype = {
		version : '1.0',
		debug : false,
		components : new Array(),
		current_pub_id : 0,
		current_nomination_id : 0,
		selected_pub_id : 0,
		selected_all_pub_id : 0,
		selected_nomination_id : 0,
		selected_nomination_manager_id : 0,
		fetching_data : false,
		all_pubs_grid : null,
		initialize : function() {
		}
	};

	var App = new Application_Abstract();

	App.com = function(name) {
		if (!this.isRegisteredComponent(name)) {
			alert('Component '+name+' is not registered.');
			return;
		}
		this.components.each(function(item) { if (item.name == name) { App.current_component = item.object;}});
		return App.current_component;
	};

	App.registerComponent = function(namespace, component) {
		var obj = {name : namespace, object : component};
		if (this.isRegisteredComponent(namespace)) {
			alert('Unable to register '+namespace+', component has already been registered.');
			return;
		}
		this.components.push(obj);
	};	
	
	App.isRegisteredComponent = function (component) {
		var isRegistered = false;
		this.components.each(function(item) { if (item.name == component) { isRegistered = true;}});
		return isRegistered;
	};
	
	
	App.getPubs = function() {
		
		
		var pub_name = $('pub_name').value;
		var pub_postcode = $('pub_postcode').value;
		
		if (!pub_postcode && pub_name.length < 3) {
			alert('Invalid Name or Postcode');
			$('goBtn').enable();
			$('pub_name').focus();
			return;
		}
		
		$('search').submit();
		return;
		
	};
	
	App.addPub = function() {
		
		var name = $('new_pub_name').value;
		var postcode = $('new_pub_postcode').value;
		var address = $('new_pub_address').value;
		
		if (!name || !address) {
			alert('Too few details submitted.');
			return;
		}
		
		$('new_pub_nomination').submit();
		
	};
	
	App.checkNominationDetails = function() {
		var e = $('nomination_email');
		var rx = new RegExp("^[\+a-zA-Z0-9._-]+@[\+a-zA-Z0-9.-]+\.[\+a-zA-Z]{2,4}$","i");
 		if (!e.value.match(rx)) {
			alert("Invalid Email");
			e.focus();
			return;
		};
		
		var r = $('nomination_reason').value;
		if (r.length < 4) {
			alert('Please give a reason.');
			return;
		}
		
		$('submit_nomination_btn').value = "Please wait...";
		$('submit_nomination_btn').disable();
		
		$('nominate_pub_form').submit();

	}
	
	App.getMap = function(location) {
		
		if (GBrowserIsCompatible()) {
			
			var map = new GMap2($('pub_map'));
			map.addControl(new GSmallMapControl()); 
			map.enableDoubleClickZoom();
			
			var icon = new GIcon();
		
			icon.image = "/public/images/h-home_h1.gif";
			icon.iconSize = new GSize(48, 48);
			icon.iconAnchor = new GPoint(0, 48);
			icon.infoWindowAnchor = new GPoint(0, 48); 

			var g = new GClientGeocoder();
			g.getLatLng(location, function(result){
				if (result) {
					map.setCenter(result, 15);
					var marker =  new GMarker(result, icon);
					map.addOverlay(marker);
				} else {
					$('pub_map').innerHTML='Map not available for this location.';
				}
			});
		}
	}
	
	App.adminInit = function() {
		this.admin_getPubsGrid(true);
		this.admin_getNominationsGrid();
		this.admin_getPubsGrid(false);
		this.admin_getNominationsForManagerGrid();
	}
	
	App.admin_getPubsGrid = function(getAll) {
		
		if (getAll) $("pub_list_grid_details").hide();
			else $("pub_details").hide();
		
		//	create ActiveWidgets data model - XML-based table
		var table = new AW.XML.Table;
		//	provide data URL
		if (getAll) table.setURL("/admin/get-all-pubs");
			else table.setURL("/admin/get-pubs-to-approve");
			
		//	start asynchronous data retrieval
		table.request();
		//	define column labels
		var columns = ["Id", "Postcode", "Name", "Address"];
		//	create ActiveWidgets Grid javascript object
		var obj = new AW.UI.Grid;
		//	assign unique id for the grid element
		if (getAll) obj.setId("pub_list_grid");
			else obj.setId("pubs_grid");
		//	set number of columns
		obj.setColumnCount(4);
		//	provide column labels
		obj.setHeaderText(columns);
		//	enable row selectors
		obj.setSelectorVisible(true);
		obj.setSelectorText(function(i){return this.getRowPosition(i)+1});
		
		obj.onSelectedRowsChanged  = function(value) {
			if (!App.fetching_data) {
				if (getAll) {
					App.selected_all_pub_id = obj.getCellText(0, value);
			    	App.admin_getPubDetails(App.selected_all_pub_id);
				} else {
					App.selected_pub_id = obj.getCellText(0, value);
			    	App.admin_getPubAndNomination(App.selected_pub_id);
				}
		    	App.fetching_data = true;
			}
		}
		
		obj.setSelectorWidth(25);
		//	set row selection
		obj.setSelectionMode("single-row");
		//	define data formats
		var str = new AW.Formats.String;
		var num = new AW.Formats.Number;
		obj.setCellFormat([num, str, str, str]);
		//	provide external model as a grid data source
		obj.setCellModel(table);
		//	assign to HTML element
		if (getAll) {
			$("pub_list_grid").innerHTML = obj;
			this.all_pubs_grid = obj;
		}
		else $("pubs_grid").innerHTML = obj;
	}

	
	App.admin_getNominationsGrid = function() {
		
		$("nomination_details").hide();
		
		//	create ActiveWidgets data model - XML-based table
		var table = new AW.XML.Table;
		//	provide data URL
		table.setURL("/admin/get-nominations-to-approve");
		//	start asynchronous data retrieval
		table.request();
		//	define column labels
		var columns = ["Id", "Pub Id", "Pub Name", "Email", "Created"];
		//	create ActiveWidgets Grid javascript object
		var obj = new AW.UI.Grid;
		//	assign unique id for the grid element
		obj.setId("nominations_grid");
		//	set number of columns
		obj.setColumnCount(5);
		//	provide column labels
		obj.setHeaderText(columns);
		//	enable row selectors
		obj.setSelectorVisible(true);
		obj.setSelectorText(function(i){return this.getRowPosition(i)+1});
		
		obj.onSelectedRowsChanged  = function(value) {
			if (!App.fetching_data) {
				App.selected_nomination_id = obj.getCellText(0, value);
		    	App.admin_getNominationToApprove(App.selected_nomination_id);
		    	App.fetching_data = true;
			}
		}
		
		obj.setSelectorWidth(25);
		//	set row selection
		obj.setSelectionMode("single-row");
		//	define data formats
		var str = new AW.Formats.String;
		var num = new AW.Formats.Number;
		obj.setCellFormat([num, num, str, str]);
		//	provide external model as a grid data source
		obj.setCellModel(table);
		//	assign to HTML element
		$("nominations_grid").innerHTML = obj;
	}
	
	App.admin_getNominationsForManagerGrid = function() {
		
		$("nomination_details_manager").hide();
		
		//	create ActiveWidgets data model - XML-based table
		var table = new AW.XML.Table;
		//	provide data URL
		table.setURL("/admin/get-nominations");
		//	start asynchronous data retrieval
		table.request();
		//	define column labels
		var columns = ["Id", "Pub Id", "Email", "Reason","Created"];
		//	create ActiveWidgets Grid javascript object
		var obj = new AW.UI.Grid;
		//	assign unique id for the grid element
		obj.setId("nominations_manager_grid");
		//	set number of columns
		obj.setColumnCount(5);
		//	provide column labels
		obj.setHeaderText(columns);
		//	enable row selectors
		obj.setSelectorVisible(true);
		obj.setSelectorText(function(i){return this.getRowPosition(i)+1});
		
		obj.onSelectedRowsChanged  = function(value) {
			if (!App.fetching_data) {
				App.selected_nomination_manager_id = obj.getCellText(0, value);
		    	App.admin_getNominationDetails(App.selected_nomination_manager_id);
		    	App.fetching_data = true;
			}
		}
		
		obj.setSelectorWidth(25);
		//	set row selection
		obj.setSelectionMode("single-row");
		//	define data formats
		var str = new AW.Formats.String;
		var num = new AW.Formats.Number;
		obj.setCellFormat([num, num, str, str]);
		//	provide external model as a grid data source
		obj.setCellModel(table);
		//	assign to HTML element
		$("nominations_manager_grid").innerHTML = obj;
	}
	
	App.admin_getPubAndNomination = function(pub_id) {
		
		$('apan_button').disable();
		$('dpan_button').disable();
		
		if (!pub_id) {
			alert('Pub not selected');
			return;
		}
		
		var org = $("pub_details").innerHTML;
		$("pub_details").innerHTML = "Please wait";
				
		var url = '/admin/get-pub-and-nomination-details';
		new Ajax.Request(url, {
		
		method: 'post',
		parameters: $H({pub_id: pub_id}).toQueryString(),
		onSuccess: function(transport) {
			$("pub_details").innerHTML = org;
			$("pub_details").hide();
			Effect.toggle("pub_details", "appear", {duration:0.7});
			try {
				
				var d = transport.responseText.evalJSON(true);
				
				$('pub_id').value = pub_id;
				$('pub_postcode').value = d['p'].postcode;
				$('pub_address').value = d['p'].address;
				$('pub_name').value = d['p'].name;
				
				App.current_nomination_id = 0;
				$('nomination_id').value = '';
				$('nomination_email').value = '';
				$('nomination_reason').value = '';
				
				if (d['n'].id > 0) {
					App.current_nomination_id = d['n'].id;
					$('nomination_id').value = d['n'].id;
					$('nomination_email').value = d['n'].email;
					$('nomination_reason').value = d['n'].reason;
					
					$('dpan_button').enable();
					
					if (d['n'].approved < 1) {
						$('apan_button').enable();
					}
					
				} 
				
				$('nomination_view_photo').innerHTML = "";
				if (d['n'].photo) {
					$('nomination_view_photo').innerHTML = "<a href='/public/pubs/"+d['n'].photo+"' target='_blank'><img src='thumb.php?file=public/pubs/"+d['n'].photo+"&size=100' style='border:1px solid silver'></a>";
				}
				
				App.fetching_data = false;
				
			} catch (e) {
				$("pub_details").hide();
				alert("Error occured");
				App.fetching_data = false;
			}
		},
		onFailure: function() {
			$("pub_details").hide();
			App.fetching_data = false;
		}
		});
		
	};
	
	App.admin_getPubDetails = function(pub_id) {
		
		if (!pub_id) {
			alert('Pub not selected');
			return;
		}
		
		var org = $("pub_list_grid_details").innerHTML;
		$("pub_list_grid_details").innerHTML = "Please wait";
				
		var url = '/admin/get-pub-details';
		new Ajax.Request(url, {
		
		method: 'post',
		parameters: $H({pub_id: pub_id}).toQueryString(),
		onSuccess: function(transport) {
			$("pub_list_grid_details").innerHTML = org;
			$("pub_list_grid_details").hide();
			Effect.toggle("pub_list_grid_details", "appear", {duration:0.7});
			try {
				var d = transport.responseText.evalJSON(true);
				$('div_3_pub_id').value = pub_id;
				$('div_3_pub_postcode').value = d['p'].postcode;
				$('div_3_pub_address').value = d['p'].address;
				$('div_3_pub_name').value = d['p'].name;
				$('div_3_pub_approved').value = d['p'].approved;
				$('div_3_pub_nc').innerHTML = d['p'].n_count ? d['p'].n_count : 0;
				App.fetching_data = false;
				
			} catch (e) {
				$("pub_list_grid_details").hide();
				alert("Error occured");
				App.fetching_data = false;
			}
		},
		onFailure: function() {
			$("pub_list_grid_details").hide();
			App.fetching_data = false;
		}
		});
	}
	
	App.admin_getNominationToApprove = function(nomination_id) {
		
		if (!nomination_id) {
			alert('Nomination not selected');
			return;
		}
		
		var org = $("nomination_details").innerHTML;
		$("nomination_details").innerHTML = "Please wait";
		$("nomination_details").show();
				
		var url = '/admin/get-nomination-details';
		new Ajax.Request(url, {
		
		method: 'post',
		parameters: $H({nomination_id: nomination_id}).toQueryString(),
		onSuccess: function(transport) {
			$("nomination_details").hide();
			$("nomination_details").innerHTML = org;
			Effect.toggle("nomination_details", "appear", {duration:0.7});
			try {
				var d = transport.responseText.evalJSON(true);
				App.current_pub_id = d.pub_id;
				$('div_2_nomination_id').value = nomination_id;
				$('div_2_nomination_pub_id').value = d.pub_id;
				$('div_2_nomination_email').value = d.email;
				$('div_2_nomination_reason').value = d.reason;
				$('div_2_nomination_pub_name').value = d.pub_name;
				$('div_2_nomination_view_photo').innerHTML = "";
				if (d.photo) {
					$('div_2_nomination_view_photo').innerHTML = "<a href='/public/pubs/"+d.photo+"' target='_blank'><img src='thumb.php?file=public/pubs/"+d.photo+"&size=100' border='0' style='border:1px solid silver'></a>";
				}
				
				App.fetching_data = false;
				
			} catch (e) {
				$("nomination_details").hide();
				alert("Error occured");
				App.fetching_data = false;
			}
		},
		onFailure: function() {
			$("nomination_details").hide();
			App.fetching_data = false;
		}
		});
		
	};
	
	App.admin_approvePub = function() {
		var pub_id = this.selected_pub_id;
		if (!pub_id) {
			alert('Pub not selected');
			return;
		}
		var name = $("pub_name").value;
		var postcode = $("pub_postcode").value;
		var address = $("pub_address").value;
		
		var url = '/admin/approve-pub';
		new Ajax.Request(url, {
		
		method: 'post',
		parameters: $H({pub_id: pub_id, name:name, postcode:postcode, address:address}).toQueryString(),
		onSuccess: function(transport) {
			try {
				var d = transport.responseText.evalJSON(true);
				if (d.r == false) {
					alert('Error occured');
				} else { 
					$("pub_details").show();
					Effect.toggle("pub_details", "appear", {duration:0.7});
					alert('Approved');
					App.admin_getPubsGrid(false);
					App.admin_getPubsGrid(true);
				}
			} catch (e) {
				alert('Error occured');
			}
		},
		onFailure: function() {
			alert('Error occured');
		}
		});
	}

	App.admin_approveNomination = function() {
		var nomination_id = this.selected_nomination_id;
		if (!nomination_id) {
			alert('Nomination not selected');
			return;
		}
		var pub_id = this.current_pub_id;
		var email = $("div_2_nomination_email").value;
		var reason = $("div_2_nomination_reason").value;
		
		var url = '/admin/approve-nomination';
		new Ajax.Request(url, {
		
		method: 'post',
		parameters: $H({pub_id: pub_id, nomination_id:nomination_id, email:email, reason:reason}).toQueryString(),
		onSuccess: function(transport) {
			try {
				var d = transport.responseText.evalJSON(true);
				if (d.r == false) {
					alert('Error occured');
				} else { 
					$("nomination_details").show();
					Effect.toggle("nomination_details", "appear", {duration:0.7});
					alert('Approved');
					App.admin_getNominationsGrid();
					App.admin_getNominationsForManagerGrid();
				}
			} catch (e) {
				alert('Error occured');
			}
		},
		onFailure: function() {
			alert('Error occured');
		}
		});
	}
	
	
	App.admin_approvePubAndNomination = function() {
		var pub_id = this.selected_pub_id;
		if (!pub_id) {
			alert('Pub not selected');
			return;
		}
		var name = $("pub_name").value;
		var postcode = $("pub_postcode").value;
		var address = $("pub_address").value;
		
		var nomination_id = this.current_nomination_id;
		var email = $("nomination_email").value;
		var reason = $("nomination_reason").value;
		
		var url = '/admin/approve-pub-and-nomination';
		new Ajax.Request(url, {
		
		method: 'post',
		parameters: $H({pub_id: pub_id, name:name, postcode:postcode, address:address, nomination_id:nomination_id, email:email, reason:reason}).toQueryString(),
		onSuccess: function(transport) {
			try {
				var d = transport.responseText.evalJSON(true);
				if (d.r == false) {
					alert('Error occured');
				} else { 
					$("pub_details").show();
					Effect.toggle("pub_details", "appear", {duration:0.7});
					alert('Approved');
					App.admin_getPubsGrid(false);
					App.admin_getPubsGrid(true);
					App.admin_getNominationsGrid();
					App.admin_getNominationsForManagerGrid();
				}
			} catch (e) {
				alert('Error occured');
			}
		},
		onFailure: function() {
			alert('Error occured');
		}
		});
	}
	
	App.admin_deletePub = function() {
		
		if (!confirm('Are you sure you want to delete this pub ???')) {
			return;
		}
		
		var pub_id = this.selected_pub_id;
		if (!pub_id) {
			alert('Pub not selected');
			return;
		}
		var url = '/admin/delete-pub';
		new Ajax.Request(url, {
		
		method: 'post',
		parameters: $H({pub_id: pub_id}).toQueryString(),
		onSuccess: function(transport) {
			try {
				var d = transport.responseText.evalJSON(true);
				if (d.r == false) {
					alert('Error occured');
				} else { 
					$("pub_details").show();
					Effect.toggle("pub_details", "appear", {duration:0.7});
					alert('Deleted');
					App.admin_getPubsGrid(false);
					App.admin_getPubsGrid(true);
				}
			} catch (e) {
				alert('Error occured');
			}
		},
		onFailure: function() {
			alert('Error occured');
		}
		});
	}
	
	App.admin_managerDeletePub = function() {
		if (!confirm('Are you sure you want to delete this pub ???')) {
			return;
		}
		
		var pub_id = this.selected_all_pub_id;
		if (!pub_id) {
			alert('Pub not selected');
			return;
		}
		var url = '/admin/delete-pub';
		new Ajax.Request(url, {
		
		method: 'post',
		parameters: $H({pub_id: pub_id}).toQueryString(),
		onSuccess: function(transport) {
			try {
				var d = transport.responseText.evalJSON(true);
				if (d.r == false) {
					alert('Error occured');
				} else { 
					$("pub_list_grid_details").show();
					Effect.toggle("pub_list_grid_details", "appear", {duration:0.7});
					alert('Deleted');
					App.admin_getPubsGrid(false);
					App.admin_getPubsGrid(true);
				}
			} catch (e) {
				alert('Error occured');
			}
		},
		onFailure: function() {
			alert('Error occured');
		}
		});
	}
	
	App.admin_managerSavePub = function() {
		var pub_id = this.selected_all_pub_id;
		if (!pub_id) {
			alert('Pub not selected');
			return;
		}
		var name = $("div_3_pub_name").value;
		var postcode = $("div_3_pub_postcode").value;
		var address = $("div_3_pub_address").value;
		var approved = $("div_3_pub_approved").value;
		
		var url = '/admin/save-pub';
		new Ajax.Request(url, {
		
		method: 'post',
		parameters: $H({pub_id: pub_id, name:name, postcode:postcode, address:address, approved:approved}).toQueryString(),
		onSuccess: function(transport) {
			try {
				var d = transport.responseText.evalJSON(true);
				if (d.r == false) {
					alert('Error occured');
				} else { 
					$("pub_list_grid_details").show();
					Effect.toggle("pub_list_grid_details", "appear", {duration:0.7});
					alert('Saved');
					App.admin_getPubsGrid(false);
					App.admin_getPubsGrid(true);
				}
			} catch (e) {
				alert('Error occured');
			}
		},
		onFailure: function() {
			alert('Error occured');
		}
		});
	}
	
	App.admin_deleteNomination = function() {
		
		if (!confirm('Are you sure you want to delete this nomination ???')) {
			return;
		}
		
		var nomination_id = this.selected_nomination_id;
		if (!nomination_id) {
			alert('Nomination not selected');
			return;
		}
		var url = '/admin/delete-nomination';
		new Ajax.Request(url, {
		
		method: 'post',
		parameters: $H({nomination_id: nomination_id}).toQueryString(),
		onSuccess: function(transport) {
			try {
				var d = transport.responseText.evalJSON(true);
				if (d.r == false) {
					alert('Error occured');
				} else { 
					$("nomination_details").show();
					Effect.toggle("nomination_details", "appear", {duration:0.7});
					alert('Deleted');
					App.admin_getNominationsGrid();
				}
			} catch (e) {
				alert('Error occured');
			}
		},
		onFailure: function() {
			alert('Error occured');
		}
		});
	}
	
	App.admin_deletePubAndNomination = function() {
		
		if (!confirm('Are you sure you want to delete this pub and its nomination ???')) {
			return;
		}
		
		var pub_id = this.selected_pub_id;
		
		if (!pub_id) {
			alert('Pub not selected');
			return;
		}
		
		var nomination_id = this.current_nomination_id;
		var url = '/admin/delete-pub-and-nomination';
		new Ajax.Request(url, {
		
		method: 'post',
		parameters: $H({pub_id: pub_id, nomination_id:nomination_id}).toQueryString(),
		onSuccess: function(transport) {
			try {
				var d = transport.responseText.evalJSON(true);
				if (d.r == false) {
					alert('Error occured');
				} else { 
					$("pub_details").show();
					Effect.toggle("pub_details", "appear", {duration:0.7});
					alert('Deleted');
					App.admin_getPubsGrid();
					App.admin_getNominationsGrid();
				}
			} catch (e) {
				alert('Error occured');
			}
		},
		onFailure: function() {
			alert('Error occured');
		}
		});
	}
	
	App.admin_searchPub = function() {
		
		$('searchGrid').value = "Please wait...";
		$('searchGrid').disable();
		
		var keyword = $('s_keyword').value;
		if (keyword) {
		    var i, rows = [], max = this.all_pubs_grid.getRowCount();
		    
		    //var rx = new RegExp(keyword+".*","i");
		    var rx = new RegExp("^"+keyword+".*","i");
		    
		    for (i=0; i<max; i++) {
		    	var cell_data_postcode = this.all_pubs_grid.getCellText(1, i);
		    	var cell_data_name = this.all_pubs_grid.getCellText(2, i);
		    	var cell_data_address = this.all_pubs_grid.getCellText(3, i);
		    	if (cell_data_postcode.match(rx) || cell_data_name.match(rx) || cell_data_address.match(rx)) {
		            rows.push(i);
		        }
		    }
		    
	    	this.all_pubs_grid.setRowCount(rows.length);
	    	
	    	if (!rows.length) {
	    		this.admin_getPubsGrid(true);
	    		alert('No results found.');
	    	} else {
	    		this.all_pubs_grid.setRowIndices(rows);
	    	}
	    	this.all_pubs_grid.refresh();
		} else {
			this.admin_getPubsGrid(true);
		}
		
		$('searchGrid').value = "Go";
		$('searchGrid').enable();
		
	}
	
	App.admin_assignAndApprove = function() {
		$('assign_and_approve').hide();
		Effect.toggle("assign_and_approve", "appear", {duration:0.7});
	}
	
	App.admin_findPub = function() {
		
		$('assignToPub').disable();
		$('assignToPub').length = 0;
		$('findGo').value="Please wait";
		$('findGo').disable();
		
		var postcode = $('search_pub_postcode').value;
		var name = $('search_pub_name').value;
		
		if (!name && !postcode) {
			alert('Invalid Keywords.');
			$('search_pub_postcode').focus();
			$('findGo').enable();
			$('findGo').value="Go";
			return;
		}
		
		var url = '/admin/search-pubs';
		new Ajax.Request(url, {
		
		method: 'post',
		parameters: $H({pub_name: name, pub_postcode:postcode}).toQueryString(),
		onSuccess: function(transport) {
			try {
				$('assignToPub').enable();
				
				var d = transport.responseText.evalJSON(true);
				d.each(function(i){
					$('assignToPub').options.add(new Option(i.name+', '+i.address, i.id));
				});
				
			} catch (e) {
				alert('Error occured');
			}
			
			$('findGo').enable();
			$('findGo').value="Go";
		},
		onFailure: function() {
			alert('Error occured');
			$('findGo').enable();
			$('findGo').value="Go";
		}
		});
		
	}
	
	App.admin_assignToPub = function() {
		
		var pub_id = $('assignToPub').value;
		if (!pub_id) {
			alert('Invalid Pub');
			return;
		}
		
		var nomination_id = this.selected_nomination_id;
		if (!nomination_id) {
			alert('Nomination not selected');
			return;
		}
		
		$('doAssign').value = "Please wait";
		$('doAssign').disable();
		
		var email = $("div_2_nomination_email").value;
		var reason = $("div_2_nomination_reason").value;
		
		var url = '/admin/approve-nomination';
		new Ajax.Request(url, {
		
		method: 'post',
		parameters: $H({pub_id: pub_id, nomination_id:nomination_id, email:email, reason:reason}).toQueryString(),
		onSuccess: function(transport) {
			Effect.toggle('assign_and_approve', 'appear', {duration:0.7});
			try {
				var d = transport.responseText.evalJSON(true);
				if (d.r == false) {
					alert('Error occured');
				} else { 
					$("nomination_details").show();
					Effect.toggle("nomination_details", "appear", {duration:0.7});
					alert('Approved');
					App.admin_getNominationsGrid();
					App.admin_getNominationsForManagerGrid();
				}
			} catch (e) {
				alert('Error occured');
			}
			$('doAssign').value = "Assign";
			$('doAssign').enable();
			
		},
		onFailure: function() {
			alert('Error occured');
			$('doAssign').value = "Assign";
			$('doAssign').enable();
		}
		});

	}
	
	App.admin_getNominationDetails = function(nomination_id) {
		if (!nomination_id) {
			alert('Nomination not selected');
			return;
		}
		
		var org = $("nomination_details_manager").innerHTML;
		$("nomination_details_manager").innerHTML = "Please wait";
		$("nomination_details_manager").show();
				
		var url = '/admin/get-nomination-details';
		new Ajax.Request(url, {
		
		method: 'post',
		parameters: $H({nomination_id: nomination_id}).toQueryString(),
		onSuccess: function(transport) {
			$("nomination_details_manager").hide();
			$("nomination_details_manager").innerHTML = org;
			Effect.toggle("nomination_details_manager", "appear", {duration:0.7});
			try {
				var d = transport.responseText.evalJSON(true);
				$('div_4_nomination_approved').value = d.approved;
				App.fetching_data = false;
				
			} catch (e) {
				$("nomination_details_manager").hide();
				alert("Error occured");
				App.fetching_data = false;
			}
		},
		onFailure: function() {
			$("nomination_details_manager").hide();
			App.fetching_data = false;
		}
		});
		
	}
	
	App.admin_managerChangeNominationStatus = function() {
		var nomination_id = this.selected_nomination_manager_id;
		if (!nomination_id) {
			alert('Invalid Nomination');
			return;
		}
		var approved = $('div_4_nomination_approved').value;
		
		var url = '/admin/change-nominations-status';
		new Ajax.Request(url, {
		
		method: 'post',
		parameters: $H({nomination_id: nomination_id, approved:approved}).toQueryString(),
		onSuccess: function(transport) {
			try {
				var d = transport.responseText.evalJSON(true);
				if (d.r == false) {
					alert('Error occured');
				} else { 
					alert('Status Changed');
					App.admin_getNominationsGrid();
					App.admin_getNominationsForManagerGrid();
				}
			} catch (e) {
				alert("Error occured");
				App.fetching_data = false;
			}
		},
		onFailure: function() {
			$("nomination_details_manager").hide();
			App.fetching_data = false;
		}
		});
		
	}
	
	

} catch (e) {
	alert('Application not initialized.');
}
