/**
 * jQuery Update Info Plug-in.
 *
 * @author Matt Dertinger
 * @author Yun Qian
 * @version 1.0.0 $Revision: 2923 $ ($Author: yqian $)
 */

;(function($) {
        
    var version = "1.0.0";
    
    $.fn.updateInfo = function(options) {
        this.form = this[0];
        if (this.form ){
            var opts = $.extend({
            }, $.fn.updateInfo.defaults, options);
                     
            // loop through each matched element
            this.each(function() {
                var $this = $(this);
                
                // Support for the Metadata Plugin.
                var o = $.meta ? $.extend({}, opts, $this.data()) : opts;
                
                if (o.updateOnSubmit) {
                    $(this).bind('submit', {options: o}, handler);
                }
                
                if (o.updateOnChange) {
                    $(':input:not(:submit)', $this).bind('change', {options: o}, handler);
                    $(':input[class="range"]', $this).bind('keyup', {options: o}, function(e){
                          var setBlank=false;
                          e.target.value= e.target.value.replace(/\D/g,'');
                          if( e.target.value==""){
                           setBlank=true;
                          }
                          $(e.target).trigger('blur');
                          e.target.focus();
                          $(e.target).trigger('change');  
                          if($.browser.msie){
                              setTimeout(function(){if(setBlank){
                                    e.target.value="";
                                }},50);
                          }else{
                              if(setBlank){
                                      e.target.value="";
                                  }
                          }
                    } );
                }
            });
        }
        
        return;
        
        // private function for debugging
        function debug($obj) {
            if (window.console && window.console.log) {
                window.console.log($obj);
            }
        }
    };
    
    $.fn.updateInfo.version = function() { return version; };
    
    // default options
    $.fn.updateInfo.defaults = {
        updateOnSubmit: true,
        updateOnChange: true,
        event: {
            success: function(form, element, data, options) {
                var json=data.result;
                if (json.length) {
                    $.each(json, function(i, item) {
                        var dd = $('dl.'+item.field+' dd', form);
                        $(dd).html(item. value);
                    });
                }
                return false;
            },
            reset: function(dls, options) {
                
            }
        }
    };
    
    function handler(event) {
        var form = $(event.target).is('form') ? event.target : event.target.form;
        var element = "";
        
        var data = $(form).serializeArray();
        data[data.length] = { "name": "format", "value": "json" };
        data[data.length] = { "name": "eventType", "value": event.type };
        // data[data.length] = { "name": "_action_Update", "value": "Update" };
        
        $(form).data("eventType", event.type);
        
        switch(event.type) {
            // case 'blur':
            case 'change':
                // element = $(this)[0];
                element = event.target;
            case 'submit': 
        }
        url=form["handle"]?form["handle"].value:form.attr('action');
          
        $.post(url+"?", 
            data,
            function(data) { return event.data.options.event.success(form, element, data, event.data.options); }, 
            'json');
      if(event.type == "submit"){
          return false;
      }
    };

})(jQuery);

