/**
 * set a form element's value
 * 
 * @author kevin_li
 */
$.fn.fvalue = function(option){
  return true;
  // if possible, return "this" to not break the chain
};

/**
 * 
 * @param {Object}
 *            mode
 */
$.fn.fchecked = function(){
  if (this.get(0) == null) {
    return 0;
  }  
  if (this.get(0).type == "checkbox" || this.get(0).type == "radio") {
    var elength = 0;
    this.each(function(){
      if (this.checked == true) 
        elength++;
    });
    return elength;
  }
};
/**
 * you can use $("adb").check('on')
 */
$.fn.fcheck = function(mode){
  var mode = mode || 'on'; // if mode is undefined, use 'on' as default
  return this.each(function(){
    switch (mode) {
      case 'on':
        this.checked = true;
        break;
      case 'off':
        this.checked = false;
        break;
      case 'toggle':
        this.checked = !this.checked;
        break;
    }
  });
}

/**
 * 
 */
$.fn.ffocus = function(message){
  if (message != undefined) {
    errormsg += (message + '\n');
  }
  this.focus();
}




  /*
	 * 插件开始
	 */
	$.fn.textedit = function(set){
  
    // 可以设置
	var setting = {
		name: 'select1',
		surl:'',// 返回select列表的地址
		url: '/ajax.php', // 提交的地址,
		type: 'text', // 类型 text, select
		fun:''
	}
		
	$.fn.extend(setting,set);
	if(setting.surl==''){
		setting.surl=setting.url;
	}
		
    // 点击后的操作
	$(this).click(function(){
		if ($(this).attr("class") == undefined) {
			return false;
		}
		
		if ($(this).attr("class").indexOf("edit") == -1) {
			return false;
		};
		
		var origdata = $(this).text();
		
		returnstr=$.fn.textedit.getInputHtml(this,origdata,setting);
		
		if (returnstr == false) {
			return false;
		}
	});
		
	// 数据显示
	$.fn.textedit.getInputHtml=function(em,origdata,setting){	
		if(setting.type=='text'){
			$(em).html('<input type="text" value="' + origdata + '" class="data" style="width:'+($(em).width()-10)+'px">');
			$.fn.textedit.showBtnDiv(em,origdata,setting);
		}
	
		if(setting.type=='textarea'){
			$(em).html('<textarea  class="data" style="width:'+($(em).width()+20)+'px">' + origdata + '</textarea>');
			$.fn.textedit.showBtnDiv(em,origdata,setting);
		}
	
		if(setting.type=='select'){
			value=em.title;
			if(value==''){
				return false;
			}
			$(em).html('');	
		
			text=$(em).text();
			// 如果页面中有这个元素
			sObj=$(".box ." + setting.name);
			if (sObj.size() > 0) {
				// alert("size>0");
				cloneObj=sObj.clone().removeClass(setting.name);
				$(em).append(cloneObj);
				$(em).find(".data").val(value);
				$(em).find(".data").trigger("change");
				$.fn.textedit.showBtnDiv(em,origdata,setting);
			}
			else {
				$.post(setting.surl, {
					data: value
				}, function(data){
					// alert(data);
					sObj=$(data);
					$(em).append(sObj);
					$(em).find(".data").val(value);
					$(".box").append(sObj.clone().addClass(setting.name));
					$.fn.textedit.showBtnDiv(em,origdata,setting);
				});
			}			
		}
	}
	
	$.fn.textedit.showBtnDiv=function(em,origdata,setting){
		sheight=($(em).height());	
		// alert(sheight);
		var handleBtn = '<div class="handlediv"><button  class="save">保存</button><button class="cancel">取消</button></div>';
		// return false;
		$(em).removeClass("edit");
		$(em).append(handleBtn);
		// alert($(this).offset().left);
		$(em).find(".handlediv").css({width:300,position:"absolute",left:($(em).offset().left),top:($(em).offset().top+sheight)}); 
		$(em).find("button")[0].focus();
		$(em).find(".save").click(function(){
			$.fn.textedit.textEditSave(em,setting);
		});
		$(em).find(".cancel").click(function(){		
			$.fn.textedit.textEditCancel($(this).parent().parent(),origdata);
		});
	}
	/*
	 * 保存
	 */
	$.fn.textedit.textEditSave = function(em,setting){
		obj=$(em);			 			
		idx=obj.attr("id").lastIndexOf("_");
		field=obj.attr("id").substr(0,idx);
		key=obj.attr("id").substr((idx+1));
		$.ajax({url:setting.url,
			    data:{click:1,data: $(obj).find(".data").val(),	field:field, key: key},
			    dataType:"json",
			    type:"post",
			    success:function(data){
			      if(data && data.className){
			       if(data.className=='exception'){
			    	  alert(data.message);
			    	  return;
			       }
			       message(data);			       
			      }
		          //
			      if(setting.type=='select'){
			    	  obj.attr("title",$(obj).find(".data").val());
			    	  obj.html($(obj).find("option[selected]").text());
			      }
			      else if(setting.type=='text'){
			    	  obj.text($(obj).find(".data").val());
			      }
			      else if(setting.type=='textarea'){
			    	  // alert($(obj).find(".data").val());
			    	  obj.text($(obj).find(".data").val());
			      }
			      obj.addClass("edit");
			      obj.find(".handlediv").remove();
			      if($.isFunction(setting.fun)){
			    	  setting.fun.call($);
			      }
		       }
		});
	}
    /*
	 * 取消
	 */
     $.fn.textedit.textEditCancel = function(em,origdata){   
		$(em).html(origdata).addClass("edit").find(".handlediv").remove();
	}
  }
