/**
 * @author jd@podomani.com
 */

function podoToolBox(){
	var _loadingImg = 'lib/images/thickbox-loading.gif';
	
	this.submitForm = _submitForm;
	this.loadForm = _loadForm;
	this.updateContainer = _updateContainer;
	this.parseInput = _parseJQInput;
	this.loadMemberInfo = _loadMemberInfo;
	this.searchAgain = _searchAgain;	
	
	function _searchAgain(){
		var c = $('#search-panel-canvas');
		
		c.slideUp('slow', function(){
			_loadForm(c);
		});
	}
	
	function _submitForm(){
		var isValid = true;
		var _data = {};
		var _url = 'ajax.services/getMembers.service.php';
		var c = $('#search-panel-canvas');
		
		// validate the fields have been filled in
		if(!$('#search_certnumber').val() && (!$('#search_fname').val() || !$('#search_lname').val())){
			alert('Please enter either the persons first and last names,\nor their CBRPA certificate number.');
			if(!$('#search_fname').val()) $('#search_fname').get(0).focus();
			else if(!$('#search_lname').val()) $('#search_lname').get(0).focus();
			else if(!$('#search_certnumber').val()) $('#search_certnumber').get(0).focus();
			isValid = false;
		}
		
		// BUILD THE DATA OBJECT
		$('#search-form input').each(function(){
			if(this.name){
				eval('_data.' + this.name + '=\'' + this.value.replace(/[\u2018\u2019\u201A\u201B\u2032\u2035']/g, "\\$&") + '\'');
			}
		});
		
		if(isValid){
			// SET THE PANEL TO THE LOADING MESSAGE
			c.slideUp('slow', function(){
				_setLoading(c,'searching members database'); 
				c.fadeIn('slow', function(){ 
					$.ajax({
						url: _url,
						type: 'POST',
						dataType: 'html',
						data: _data,
						error: function(){ alert('AJAX call failed.'); },
						success: function(res){ 
							c.fadeOut('slow', function(){
								c.css('text-align','left');
								_updateContainer(c,res);
								c.slideDown('slow');
							});
						}
					})
				}); 
			});			
		}
	}
	
	function _loadMemberInfo(mid){
		var _url = 'ajax.services/getMember.service.php';
		var _data = { memberid:mid };
		var c = $('#search-panel-canvas');
		
		c.slideUp('slow', function(){
			_setLoading(c, 'Loading member info');
			
			$.ajax({
				url: _url,
				type: 'POST',
				dataType: 'html',
				data: _data,
				error: function(){
					alert('AJAX call failed.'); 
				},
				success: function(res){
					c.fadeOut('slow',function(){
						c.css('text-align','left');
						_updateContainer(c,res);
						c.slideDown('slow');
					});
				}
			})
		})
	}
	
	function _loadForm(canvas){
		var _url = 'ajax.services/loadForm.service.php'
		var c = $(canvas);
		
		_setLoading(canvas, 'Loading form...');
		
		c.fadeOut('slow',function(){
			
			c.css('text-align','left');
			
			$.ajax({
				url: _url,
				type: 'POST',
				dataType: 'html',
				timeout: 1000,
				error: function(){ alert('AJAX call failed.'); },
				success: function(res){
					_updateContainer(c,res);
					c.slideDown('slow');
				}
			})
		});
	}
	
	/*
	 * PRIVATE UTILITY FUNCTIONS
	 */
	
	function _setLoading(canvas,msg){
		var myHTML = '';
		myHTML += '<br/>';
		myHTML += '<img src="' + _loadingImg + '" alt="Loading..." />';
		myHTML += '<br/><br/>';
		myHTML += msg;
		
		$(_parseJQInput(canvas)).css('text-align','center');
		_updateContainer(canvas,myHTML);
		$(_parseJQInput(canvas)).fadeIn('slow');		
	}
	
	function _updateContainer(container, content){
		var myContent = '';
		
		myContent += content;		
		container = _parseJQInput(container);		
		$(container).html(myContent);
	}
	
	
	function _parseJQInput(input){
		var output = '';
		
		if(typeof(input) == 'string' && !input.match(/^#\w+/)) output = '#' + input;
		else output = input;
		
		return(output)
	}
}

var $podo = new podoToolBox();