/*
By: Mikko Lampikoski (mikko@impro.fi)

Requests:
jQuery.create.js (dom creator)

Required elements:
form
Required classes:
form-item
form-text
form-input
*/

(function($){
 $.fn.form = function(options) {

  var defaults = {
    template: '<form><table border="0"><thead></thead><tbody class="form-item"><tr><td class="form-text"></td><td class="form-input"></td></tr></tbody></table></form>'
   ,form: {'method':'post'}
   ,fields: [ ]
   ,buttons: '<input type="submit" />'
  };
  var options = $.extend(defaults, options);

    return this.each(function() {
    var form = $.create('div',{},[]);
    $(form).html(options.template);
    $('form', form).attr(options.form[0]);
// form[1] jutut tänne    

    item = $('.form-item :first', form).clone();
    $('.form-item', form).empty();
 
    jQuery.each(options.fields, function() {
/*    
       validate = '$(this).parent(".form-error").replaceWith( $(this) );';
       jQuery.each(this[2].validator.split(" "), function(){
           switch(String(this)){
             case "number":
               validate += "if (this.value.match(/^\d+$/) == null) { $(body).data('form-error', 1); $(this).wrap('<div class=\"form-error\"></div>').append('Virhe<br />') }";
               alert(validate)
               break;
           }
       });
       input = $.create(this[0], $.extend(this[1], {'onChange':validate}), []);
*/
       input = $.create(this[0], this[2], []); //luodaan formielementti
       if(this[3]){                            //jos selecti tms missä sisältöä
         jQuery.each(this[3], function(k,v) {
           $(input).append( $.create('option', {'value':k}, [v]) );
         });
         $(input).val([this[2].value]);
       }
       $(input).data('validate',this[1].validator); //validaattoria varten dataan tieto

       if(this[2].type != "hidden"){
         $('.form-text', item).html(this[1].title); //teksti
         $('.form-input', item).html( input ); //input paikoilleen

         klooni = $(item).clone();
         $('select', klooni).val( $('select', item).val() ); //jQuery clone bug

         $('.form-item', form).append( klooni ); //
       } else {
         $('form', form).prepend( input ); //hidden input paikoilleen
       }


       return true; // will stop running on false
    }); 

    $('form', form).append( options.buttons ); 

//    alert( $('form', form).html() );

    $(this).append(form);
    
        
    });
 };
})(jQuery);
