/* 
 * AJAX GET DETAIL
 * @example: $('a').popupDetail({ajaxScript: '/scripts/ajax/example.cfm'})
 * @options:
 * 		- ajaxScript : [optional|string|can be taken from the a href or define separately using this variable. Variable for the server side is define/taken from the a href '?var=1&var2=2']
 * 		- beforeAjax : [optional|function|function to run before running ajax function]
 * 		- afterAjax : [optional|function|function to run after running ajax function]
 * 		- ajaxbox : [string|element where the result will be placed]
 * 		- afterClick : [optional|function|function to run after the link get clicked]
 */


(function($){
	
	$.fn.getDetail = function(options){
		
		var defaults = {
			ajaxScript: null,
			afterClick: function(){},
			beforeAjax: function(){},
			afterAjax: function(){},
			ajaxBox: ''
		};
		
		var options = $.extend({},defaults, options);
		
		return this.each(function(){
			$(this).click(function(){
				var obj = $(this);
				
				/* start script */
				options.afterClick.call(this, obj);
				
				/* setup ajax link & var (?var1=1&var2=2..) */
				var objLink = obj.attr('href');
				var ajaxHref = objLink.split('?')[0];
				var ajaxVar = objLink.split('?')[1];
				var ajaxLink;
				if(options.ajaxScript){
					ajaxLink = options.ajaxScript;	
				} else {
					if(ajaxHref === ''){
						ajaxLink = document.location.href 
					} else {
						ajaxLink = objLink;
					}
				}
				
				/* setup ajax start & stop */
				$(options.ajaxBox).ajaxStart(function(){
					/* function before ajax start */
					options.beforeAjax.call(this);
				}).ajaxStop(function(){
					/* function before ajax start */
					options.afterAjax.call(this);
				});
				
				/* show and hide ajax loader */
				$("#loading").ajaxStart(function(){
					$(this).fadeIn();
				}).ajaxSuccess(function(){
					$(this).fadeOut();
				});
				
				$.ajax({
					type: "GET",
					url: ajaxLink,
					dataType: 'html',
					data: ajaxVar,
					beforeSend: function(){
						$(options.ajaxBox).empty().fadeOut();
					},
					success: function(html){
							$(options.ajaxBox).append(html);
							$(options.ajaxBox).fadeIn('slow');
					}
				});
				return false;
			});	
								
		});
	}
	
})(jQuery);
