
(function($){$.fn.highlight=function(start_color,end_color){if(typeof(start_color)=='undefined')
var start_color='#ffffcc';if(typeof(end_color)=='undefined')
var end_color='#ffffff';this.animate({backgroundColor:start_color},1).animate({backgroundColor:end_color},1500,function(){$(this).css('background-color',end_color);});return this;};$.fn.limit=function(chars){var element_id=$(this).attr('id');var counter=$('#'+element_id+'_counter');$(this).bind('focus blur keydown keypress keyup',function(){limitChars(this,chars,counter);});$(this).keyup().blur();return this;};$.fn.placeholder=function(overClass){if(typeof(overClass)=='undefined')overClass='placeholder';return this.each(function(){var label=jQuery(this);var f=label.attr('for');if(f){var input=jQuery('#'+f);this.init=function(){label.css('opacity',0.42);}
this.hide=function(){label.css({textIndent:-10000,opacity:1.0})}
this.show=function(){if(input.val()=='')label.css({textIndent:0,opacity:1.0})}
input.focus(this.init);input.bind('keypress keyup keydown',this.hide);input.blur(this.show);label.addClass(overClass).click(function(){input.focus()});if(input.val()!='')this.hide();if(label.is(':hidden'))label.show();}});};$.fn.spinner=function(options,init){return this.each(function(){var element=this;var wrapper=$("<span>").css({"position":"relative"}).addClass('spinner-wrapper');this._toggle=function(){if($(element).hasClass('spinning')){this._hide();}else{this._show();}}
this._show=function(){$(element).css({visibility:'hidden',display:'inline'}).addClass('spinning').parent().css({"background":"url("+static_image_url+"/indicators/spinner.gif) no-repeat center center"});}
this._hide=function(){$(element).parent().fadeOut(250,function(){$(this).css('background','none').show();$(element).removeAttr('style').removeClass('spinning');if(typeof(options.complete)=='function')
options.complete();});}
if(!$(element).parent().hasClass('spinner-wrapper'))
$(element).wrap(wrapper);if(typeof(init)=='boolean'&&init){this._toggle();}else if($(element).hasClass('spinning')){this._hide();}else{$(element).click(this._toggle);}});}
$.fn.validates_length_of=function(options){var opt=$.extend({minimum:0,maximum:1000,msg:"Your text must be between 0 and 1000 characters",field_alert:false,alert_color:'#cf3737',start_color:'#ffffcc',end_color:'#ffffff',focus:false},options);if(this.val().length<opt.minimum||this.val().length>opt.maximum){handle_error(opt.msg);if(opt.field_alert){this.css('background-color',opt.alert_color);}
if(opt.flash&&$().highlight)
this.highlight(opt.start_color,opt.end_color);if(opt.focus)
this.focus();$validation_errors=true;}else{$validation_errors=false;}
return this;};$.fn.register_form=function(options){var element=this;var opt=$.extend({spinner_hide:'visibility',dataType:'json',beforeSubmit:function(xhr){},error:function(error_message){},success:function(xhr){},cancel:null},options);var spinner_id;$(element).submit(function(){return false;});$(element).ajaxForm({dataType:opt.dataType,beforeSubmit:function(xhr){if(opt.beforeSubmit)
opt.beforeSubmit(xhr,element);spinner_id=form_spinner(element,element.attr('id'),opt.spinner_hide);},error:function(xhr,error_type){var error_message=throw_error(error_type,xhr);$(spinner_id).fadeOut(250,function(){form_spinner_callback(element,spinner_id);handle_error(error_message);});},success:function(xhr){$(spinner_id).fadeOut(250,function(){form_spinner_callback(element,spinner_id);if(opt.success)
opt.success(xhr,element);});}});if(typeof(opt.cancel)=='function'){$('.cancel',element).click(function(){opt.cancel(element);return false;});}
return this;};})(jQuery);