try {
	var Application_Abstract = Class.create();
	Application_Abstract.prototype = {
		version : '1.0',
		debug : false,
		components : new Array(),
		current_mood : '',
		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.changeMood = function() {
		var url = '/ajax/change-mood';
		var mood = $('my_mood').value;
		
		if (!mood) {
			alert('No mood selected...');
			return;
		}
		
		$('my_mood').disable();
		
		new Ajax.Request(url, {
		
		method: 'post',
		parameters: $H({mood: mood}).toQueryString(),
		onSuccess: function(transport) {
			if (transport.responseText == "true") {
				$('status_msg').innerHTML = "<p><font color='green'>Mood has been changed.</font></p>";	
			} else {
				$('status_msg').innerHTML = "<p><font color='red'>Mood has NOT been changed.</font></p>";	
			}
			$('my_mood').enable();
		}});
	};
	

	/******************************
		Delete test functions 
	*******************************/
	App.testAjax = function (){
		var url = '/test/testajax';
		
		
	new Ajax.Request(url, {
	
	method: 'post',

	onFailure : function() {
		alert("Action Flailed...");
	},
	
	onSuccess : function(transport) {
		$('test_panel').innerHTML =  transport.responseText;	
	}});
	
	}
	/******************************
		Delete test functions 
	*******************************/	
	
	App.deleteListing = function (button){
	
		//return confirm('Are you SURE? \n This will permanantly delete this page \n'); 
		
		var sure = confirm('Are you sure you want to delete this listing? \n'); 
		
		if(sure){
		var url = '/test/deletelisting';
		
		var obj = button.id;	
		
		var first_respose = "";
		
		new Ajax.Request(url, {
	
		method: 'post',
		parameters: $H({button: obj}).toQueryString(),
		onFailure : function() {
			alert("Action Flailed...");
		},
		
		onSuccess : function(transport) {
			//$('user message').innerHTML =  transport.responseText;	
			first_respose = transport.responseText;
			App.updateTable(first_respose);
		}});
		}
	}		
	
	App.updateTable = function (first_respose){
		url = '/test/refreshtable';
		
		// Refresh the div with the updated information
		var keyword, category, locate;
		keyword = $('keyword').value;
		category =  $('category').value;
		locate =  $('location').value;
		
		//alert(keyword + " - " + category + " - " + locate);
		
	  	$('user message').innerHTML = 'Please wait...';
		
		new Ajax.Request(url, {
		
		method: 'post',
		parameters: $H({ keyword: keyword, category: category, location : locate }).toQueryString(),
	
		onFailure : function() {
			alert("Couldn't retrieve users list...");
		},
		
		onSuccess : function(transport) {
			if(first_respose !=null){
				$('user message').innerHTML = first_respose;
			}
			$('cms_main_content').innerHTML = "";
			$('cms_main_content').innerHTML = transport.responseText
			
			
		}});			
	}
	
	
	App.updateListing = function (chk){
	
		var url = '/test/updatelisting';
		
		var obj = chk.id;
			
		var chked = chk.checked;	
		
		var first_respose = "";
		
		new Ajax.Request(url, {
	
		method: 'post',
		parameters: $H({field: obj, checked: chked }).toQueryString(),
		onFailure : function() {
			alert("Action Failed...");
		},
		
		onSuccess : function(transport) {
			first_respose = transport.responseText;
			App.updateTable(first_respose);
		}});
	}	
	

		
	App.uploadImage = function (listingID){
		
		var url = '/test/uploadimages';
		
		//alert("Upload for listing : " + listingID);
		
		new Ajax.Request(url, {
	
		method: 'post',
		parameters: $H({field: listingID }).toQueryString(),
		onFailure : function() {
			alert("Action Failed...");
		},
		
		onSuccess : function(transport) {
			first_respose = transport.responseText;
			alert(first_respose);
		}});		
		
	}	
	
	App.setscrollposition = function (){
		
		var url = '/index/setscroll';
		
		var pos = document.body.scrollTop;
		
		new Ajax.Request(url, {
	
		method: 'post',
		parameters: $H({position: pos}).toQueryString(),
		onFailure : function() {
			alert("Action Failed...");
		},
		
		onSuccess : function(transport) {
			//alert(transport.responseText + " - what?");
		}});
		
	}		
	
	App.removeFromMyItinerary = function (listing_id){
		
		var url = '/index/remove-from-users-itinerary';
		
		var id = listing_id;

		new Ajax.Request(url, {
	
		method: 'post',
		parameters: $H({listing: id}).toQueryString(),
		onFailure : function() {
			alert("Action Failed...");
		},
		
		onSuccess : function(transport) {
			//alert(transport.responseText);
			App.updateItinerary();
		}});
		
	}	
	
	App.updateItinerary = function (){
		url = '/index/refreshuseritinerary';
		
		// Refresh the div with the updated information
		
	  	$('your_itinerary').innerHTML = '<p>Please wait...</p>';
		
		new Ajax.Request(url, {
		
		method: 'post',
	
		onFailure : function() {
			alert("Couldn't retrieve users list...");
		},
		
		onSuccess : function(transport) {
			$('your_itinerary').innerHTML = transport.responseText;
		}});			
	}	
		
	App.addToMyItinerary = function (listing_id){
		
		var url = '/index/add-to-users-itinerary';

		var id = listing_id;
		
		new Ajax.Request(url, {
	
		method: 'post',
		parameters: $H({listing: id}).toQueryString(),
		onFailure : function() {
			alert("Action Failed...");
		},
		
		onSuccess : function(transport) {
			//alert(transport.responseText);
			$('number_of_items').innerHTML = transport.responseText;
		}});
		
	}
	
	App.countClick = function (){
		
		var url = '/index/count-clicks';

		new Ajax.Request(url, {
	
		onFailure : function() {
			alert("Action Failed...");
		},
		
		onSuccess : function(transport) {
			//alert(transport.responseText);
		}});
		
	}
	
	App.updateEnabled = function (check){
	
		var url = '/test/update-enabled';
		var id = check.value;
		
		new Ajax.Request(url, {
		
		parameters: $H({skyscraper_id: id}).toQueryString(),
		onFailure : function() {
			alert("Action Failed...");
		},
		
		onSuccess : function(transport) {
			//alert(transport.responseText);
		}});
		
	}	
	
	
	
			
	
	
		
	
} catch (e) {
	alert('Application not initialized.');
}
