(function($) {

	// get an array filled with the values of the query string
	// TODO: replace with jquery utility for accessing URL
	function buildQuery() {
		var qsParam = new Array();
		var rawQuery = window.location.search.replace(/\+/g, '%20');
		var params = rawQuery.split(/\?|&/);
		for (var i=0; i<params.length; i++) {
			params[i] = decodeURIComponent(params[i]);
		}
	
		for (var i=0; i<params.length; i++) {
			var pos = params[i].indexOf('=');
			if (pos > 0) {
				var key = params[i].substring(0,pos);
				var val = params[i].substring(pos+1);
			if (qsParam[key]) {
				qsParam[key] = qsParam[key] + ', ' + val;
			} else {
				qsParam[key] = val;
				}
			}
		}
		return qsParam;
	};
	
	//Populate the Journey Search form from the the query string when the page loads 
	$.fn.popluateJourneySearchForm = function() {
		var form = document.forms['journeyForm'];
		var qsParam = buildQuery();
		var fromStreet = qsParam['fromStreet'] ? qsParam['fromStreet'] : '';
		var toStreet = qsParam['toStreet'] ? qsParam['toStreet'] : '';
		var fromLoc = qsParam['fromLoc'] ? qsParam['fromLoc'] : '';
		var toLoc = qsParam['toLoc'] ? qsParam['toLoc'] : '';
		
		var time = qsParam['time'] ? qsParam['time'] : $().getDateString();
		var date = qsParam['date'] ? qsParam['date'] : $().getTimeString();		
		
		setInput(form.fromStreet, fromStreet);
		setInput(form.toStreet, toStreet);
		setInput(form.fromLoc, fromLoc);
		setInput(form.toLoc, toLoc);				
		setInput(form.date, date);
		setInput(form.time, time );			
	};
	
	$.fn.getTimeString = function(){
		var now = new Date();
		var nowAmPm = (now.getHours() - 12 ) < 0 ? 'am' : 'pm';
		var nowHour = now.getHours() < 13 ? now.getHours(): now.getHours() - 12; // hours ranges from 0 to 23)
		var nowMinutes =  now.getMinutes() < 10 ? '0' + now.getMinutes() :  now.getMinutes();
		if (nowHour == 0){ nowHour = 12};
		
		var time = nowHour + ':' + nowMinutes + nowAmPm; 
		return time;
	};
	
	$.fn.getDateString = function(){
	
		var now = new Date();
		var nowMonth = now.getMonth() + 1;
		var nowMonth = nowMonth < 10 ?  '0' + nowMonth : nowMonth;
		var date = now.getDate() + '/' + nowMonth + '/' + now.getFullYear();
		return date;
	};
	
	//TODO: turn into a generic function
	$.fn.initJourneySearchFormAjax = function() {
		var fromStreetList = new Autocomplete('fromStreet', 'fromLoc', 'fromStreetList', '/iptis/ajax/locations.asp', [{param:'is', value:false}]);
		var toStreetList = new Autocomplete('toStreet', 'toLoc', 'toStreetList', '/iptis/ajax/locations.asp', [{param:'is', value:false}]);
	}
	
	//TODO: remove and replace with jquery
	function setInput(input, value) {
		if (value) {
			input.value=value;
		}
	}
})(jQuery);