var options; 

$(document).ready(function() {

   /* stripe it */
   $('dl dt:odd, dl dd:odd').addClass('alt');
      
   /* textarea limited chars */
   $('textarea.limited').limitChars({
      limit: 120
   });

   /* delete handler */
	$('a.delete').livequery('click', function () {
	   var $a = $(this);
	   
	   remove = function (xml) {
	      var message;
	      $a.parents('.deletable:first').remove();
	      if(xml) {
   	      //message = $('root message', xml).text();
   	      if($('root > success', xml).length > 0) {
   	         message = $('root > success > message', xml).text();

               // todo
   	         var id = $('root > success > id', xml).text();
   	         $('#' + id).remove();
   	         
            } else {
               message = $('root > error > message', xml).text();
      	   }
   	   } else {
   	      message = 'Excluído.';
   	   }
     		io.display(message);
	   };
	   
	   if(confirm(this.title)) {
	      if(/\#$/.test(this.href)) {
	         remove();
	      } else {
	         $.get(this.href + '.xml', remove);
         }   				      
	   }
		return false;
	});
	
	/* default options */
	options = {
	   shadowbox: {
	      loadingImage: '/labore/img/loader.gif',
         keysClose: ['c', 27],
         animate: false,
         text: {
            cancel:     'Cancelar',
            loading:    'carregando',
            close:      '<span class="shortcut">F</span>echar',
            next:       '<span class="shortcut">P</span>róxima',
            prev:       '<span class="shortcut">A</span>nterior',
            errors:     {
               single: 'You must install the <a href="{0}">{1}</a> browser plugin to view this content.',
               shared: 'You must install both the <a href="{0}">{1}</a> and <a href="{2}">{3}</a> browser plugins to view this content.',
               either: 'You must install either the <a href="{0}">{1}</a> or the <a href="{2}">{3}</a> browser plugin to view this content.'
            }
         }
      }
   };
   
   //Shadowbox.init(options.shadowbox);
   
});

(function($) {
   
   /**
    * Limit chars plugin
    */
   $.fn.limitChars = function (options) {
   
      var settings = {
         limit: 120,
         counterClass: 'counter',
         counter: '<div>{$limit}</div>'
		};
       
      return this.each(function () 
      {         
         var $this = $(this);
         settings = $.extend(settings, options);
         
         var $counter = $(settings.counter).addClass(settings.counterClass);
         $counter.text($counter.text().replace('\{$limit\}', settings.limit));
         $this.after($counter);
         $this.keyup(function () {
         //$this.keydown(function () {
            var text = $(this).val();//.replace(new RegExp('\\n', 'g'), '');
            var length = text.length;
            //var length = text.length + 1;

            var $counter = $('.' + settings.counterClass);

            if(length > settings.limit) {
               $(this).val(text.substring(0, settings.limit));
               //$(this).val(text.substring(0, settings.limit - 1));
            } else {
               $counter.text(settings.limit - length);
            }
         });
      });
   
   };

   /**
    * upper case first
    */
   String.prototype.ucfirst = function () {
      return this.substr(0, 1).toUpperCase() + this.substr(1, this.length).toLowerCase();      
   };
   
   /**
    * Ajax form
    */
   $.fn.form = function (options) {
   
      var settings = {
         beforeSubmit: function (data, form, options) {
            return form.validate().form();
         },
         success: function (xml) {
            var message = $('root > success > message', xml).text();
            io.display(message);
         },
         error: function (xml) {
            var message = $('root > error > message', xml).text();
            io.display(message);
         }
		};
       
      return this.each(function () 
      {         
         var $this = $(this);
         settings = $.extend(settings, options);

         $this.ajaxForm({
            dataType: 'xml',
            //resetForm: true,
            url: $this.attr('action') + '.xml',
            /*
            beforeSubmit: function (data, form, options) {
               return form.validate().form();
            },
            */
            beforeSubmit: settings.beforeSubmit,
            success: function (xml) {
               if($('root > success', xml).length > 0) {
                  settings.success(xml);
                  $this.resetForm();
               } else {
                  settings.error(xml);
               }
               if($('.dialog').length > 0) {
                  $('.dialog').dialog('close');
               }   
            }
         });
      });
   
   };
   
})(jQuery);
