
(function($){
	
var opts;

//-----------------------------------------------
$.fn.ajaxlink = function(options)
{
// build main options
opts = $.extend({}, $.fn.ajaxlink.defaults, options);

return this.each(function()
  {
  var target=opts.target; 	
  var inserttype=opts.inserttype; 	
  var data=opts.data; 	
  var ajaxtype=opts.ajaxtype; 	
  var beforepost=opts.beforepost; 	
  var afterpost=opts.afterpost; 
  
  var href=$(this).attr('href');
  
  //Bind------
  $(this).unbind('click.ajaxlink');
  
  $(this).bind('click.ajaxlink', function(event) 
	{
  	event.preventDefault();
	
	beforepost();
	
	$.ajax({
		type: ajaxtype,
		url: href,
		data: data,
		dataType: "html",
		success: function(result)
			{
			switch(inserttype)
				{
				case 'innerhtml' : $(target).html(result); break;
				case 'append' : $(target).append(result); break;	
				case 'replace' : $(target).replaceWith(result); break;	
				case 'after' : $(target).after(result); break;	
				case 'before' : $(target).before(result); break;	
				}
				
			afterpost(result);
			}
		});	
	
	});
  
  });
  
};
//-----------------------------------------------
$.fn.ajaxlink.defaults = 
{
target		: 'body',
inserttype	: 'innerhtml', // [innerhtml, append, replace, after, before]
ajaxtype	: 'POST', //[GET, POST]
data		: {},
beforepost		: function () {},
afterpost		: function () {}
};
	
	
})(jQuery);



//-----------------------------------------------
(function($){
	
var opts;

/**
 * ajaxdataform Jquery object
 * @param {Object} options
 * 
 * json response
 * {
 * errors	: { 'email' : '', 'username' : '' },
 * data		: { 'data1' : 'xy' },
 * msg		: 'message text',
 * success	: 1  
 * }
 * 
 */
$.fn.ajaxdataform = function(options)
{
// build main options
opts = $.extend({}, $.fn.ajaxdataform.defaults, options);

return this.each(function()
  {
  var mainform=this;
  
	
  var target=opts.target; 	
  var inserttype=opts.inserttype; 	
  //var data=opts.data; 	
  var ajaxtype=opts.ajaxtype; 	
  var datatype=opts.datatype; 	
  var buttonselector=opts.buttonselector; 	
  var buttoncontainer=opts.buttoncontainer; 	
  var beforepost=opts.beforepost; 	
  var afterpost=opts.afterpost; 	
  

  var button=$(this).find(buttoncontainer+' '+buttonselector);
  var buttoncontainer=$(this).find(buttoncontainer);
  
  var action=$(mainform).attr('action');
  
  //Bind------
  $(button).unbind('click.ajaxdataform');
  
  $(button).bind('click.ajaxdataform', function(event) 
	{
  	event.preventDefault();
	
	beforepost();
	
	//$(mainform).find('.rght').removeClass('error');
	$(mainform).find('[id^=cnt_]').removeClass('error');
	
	
	$(buttoncontainer).addClass('sending');
	$(buttoncontainer).find('.msg').html( '' );	
		
	
	$.ajax({
		type: ajaxtype,
		url: action,
		data: $(mainform).serialize(),
		dataType: datatype,
		success: function(result)
			{				
			if( inserttype!='' && datatype=='html' )	
				{
				switch(inserttype)
					{
					case 'innerhtml' : $(target).html(result); break;
					case 'append' : $(target).append(result); break;	
					case 'replace' : $(target).replaceWith(result); break;	
					case 'after' : $(target).after(result); break;	
					case 'before' : $(target).before(result); break;	
					}
				}
			
			if(datatype=='json')
				{					
				if(result.success==0)
					{
					for (idx in result.errors)
    					{
						var value=result.errors[idx];
						
						$(mainform).find('#cnt_'+idx+' .errormsg').html(value);												
						$(mainform).find('#cnt_'+idx).addClass('error');
						}
					}
				
				$(buttoncontainer).find('.msg').html( result.msg );					
				}
				
			afterpost(result);
					
			$(buttoncontainer).removeClass('sending');	
			}
		});	
	
	});
  
  });
  
};
//-----------------------------------------------
$.fn.ajaxdataform.defaults = 
{
target			: '',
inserttype		: '', // [innerhtml, append, replace, after, before]
ajaxtype		: 'POST', //[GET, POST]
datatype		: 'html', // [html, json]
//data			: {},
buttonselector	: '.button',
buttoncontainer	: '.cnt_button',
beforepost		: function () {},
afterpost		: function () {}
};
	
	
})(jQuery);






//-----------------------------------------------
/** @projectDescription jQuery Serialize Anything - Serialize anything (and not just forms!)
* @author Bramus! (Bram Van Damme)
* @version 1.0
* @website: http://www.bram.us/
* @license : BSD
*/
 
(function($) {
          
    $.fn.serializeAnything = function(type) {
        
        var toReturn    = [];
        var els         = $(this).find(':input').get();
        
        $.each(els, function() {
            if (this.name && !this.disabled && (this.checked || /select|textarea/i.test(this.nodeName) || /text|hidden|password/i.test(this.type))) 
			{
                var val = $(this).val();
				
				if( type=='string' )   
                toReturn.push( encodeURIComponent(this.name) + "=" + encodeURIComponent( val ) );
				
				else if( type=='array' )
					{
					var iobj={ name : this.name, value :  val  }
					toReturn.push( iobj );	
					}
            }
        });   
           
		if( type=='string' )     
        	return toReturn.join("&").replace(/%20/g, "+");
		if( type=='array' )			
			return toReturn;	
			
        
    }
 
})(jQuery); 
