// small jquery plugins and prototype functions

function var_dump(v,level){
  var dt="";
  var lp="";
  if(!level) level=0;
  for(var j=0;j<level+1;j++) lp+="  ";
  if(typeof(v)=='object'){
    for(var item in v) if(typeof(v[item])=='object') dt+=lp+"'"+item+ "'...\n"+dump(v[item],level+1); else dt+=lp+"'"+item+"' => \""+v[item]+"\"\n";
  }else dt=v+" ("+typeof(v)+")";
  return dt;
}

String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,'');} 
String.prototype.empty=function(){return this.length==0?true:false;} 
String.prototype.blank=function(){return this.trim().length==0?true:false;} 
String.prototype.removeWhiteSpace=function(){return this.replace(/\s*/g,"");}
String.prototype.removeBlankLines=function(){return this.replace(/(\s*?[\r\n])+/g,"\n");}
String.prototype.eval=function(){ var d; eval("d="+this); return d; }  

Array.prototype.findByKey=function(x){
  var i;
  var key;
  var result=[];
  var h;
  for(i=0;i<this.length;i++){
    h=1;
    for(key in x) if(!this[i][key] || this[i][key]!=x[key]){ h=0; break; }    
    if(h==1) result.push(this[i]);
  }
  return result;
}

Array.prototype.in_array=function(x){
  for(var i=0;i<this.length;i++) if(this[i]==x) return true;
  return false;
}

Array.prototype.unsetValue=function(x){
  var i;
  var h=0;
  for(i=0;i<this.length;i++) if(this[i]==x) h++; else this[i-h]=this[i];
  this.length=this.length-h;
  return this;
}

jQuery(function(){

  // fillForm
  // usage: $(form).kFillForm(datas)
  jQuery.fn.kFillForm=function(x){
    $("input,select,textarea",this).each(function(){
      var name=$(this).attr("name");
      if(name!=undefined && x[name]!=undefined){ 
        $(this).val(x[name]);
      }
    });
    return $(this);
  }

  jQuery.fn.kGetForm=function(){
    var x={};
    $("input,select,textarea",this).each(function(){
      var name=$(this).attr("name"); 
      if(name!=undefined) x[name]=$(this).val();
    });
    return x;
  }
  
  jQuery.fn.formError=function(attr,action){
    var id=$(this).attr("id")+"_"+attr;
    if(action=="show"){
      if($(this).siblings("#"+id).size()==0) $(this).before("<div class='formError' id='"+id+"'>"+$(this).attr(attr)+"</div>");    
    }else if(action=="hide"){
      $(this).siblings("#"+id).remove();
    }
  }
  
  jQuery.fn.optionNums=function(begin,end){
    var i;
    var html="";
    for(i=begin;i<=end;i++) html+="<option value='"+i+"'>"+i+"</option>";
    $(this).append(html);
  }  



});



