(function($){
  $.fn.extend({
    isEmpty: function(_str){
      var tmp_str = jQuery.trim(_str);
      return tmp_str.length == 0;
    },
    isNumeric: function (_str){
      var ValidChars = "0123456789.";
      var IsNumber=true;
      var Char;
      for (i = 0; i < _str.length && IsNumber == true; i++){
        Char = _str.charAt(i);
        if (ValidChars.indexOf(Char) == -1){
          IsNumber = false;
        }
      }
      return IsNumber;
    },
    isEmail: function(_str){
      return /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(_str);
    },
    link: function(_url){
        msg = '您所點選的連結：\n\n' +_url +'\n\n是一個連外的連結，可能會有惡意的病毒或程式\n\n請問您要繼續嗎?';
        if(confirm(msg))
        {
            window.open(_url , '_blank');
            //window.location.href = _url;
        }
    },
    isTaiwanUserID: function(idStr){
	  var letters = new Array('A', 'B', 'C', 'D','E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V','X', 'Y', 'W', 'Z', 'I', 'O');
	  var multiply = new Array(1, 9, 8, 7, 6, 5, 4, 3, 2, 1);
	  var nums = new Array(2);
	  var firstChar;
	  var firstNum;
	  var lastNum;
	  var total = 0;
	  var regExpID=/^[a-z](1|2)\d{8}$/i;
	  if (idStr.search(regExpID)==-1) {
        return false;
      }else {
        firstChar = idStr.charAt(0).toUpperCase();
        lastNum = idStr.charAt(9);
      }	  
      for (var i=0; i<26; i++) {
        if (firstChar == letters[i]) {
          firstNum = i + 10;
          nums[0] = Math.floor(firstNum / 10);
          nums[1] = firstNum - (nums[0] * 10);
          break;
        }
      }    
      for(var i=0; i<multiply.length; i++){
        if (i<2) {
          total += nums[i] * multiply[i];
        } else {
          total += parseInt(idStr.charAt(i-1)) * multiply[i];
        }
      }    
      if (lastNum == 0 && (total % 10) != lastNum ){return false;}
	  if (lastNum != 0 && (10 - (total % 10))!= lastNum){return false;}
	  return true;
    },
    cubeRound: function (objnum,decimal){
	    var tNum = 0;
	    tNum = Math.round(objnum*Math.pow(10,decimal)) / Math.pow(10,decimal);
	    return  tNum;
	  }
  });
})(jQuery);

$.fn.resetForm = function() {
  return this.each(function() {
    if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType)){
      this.reset();
    }
  });
};

(function($){
	$.fn.alphanumeric = function(p) { 
		p = $.extend({
			ichars: "!@#$%^&*()+=[]\\\';,/{}|\":<>?~`.- ",
			nchars: "",
			allow: ""
		  }, p);
		return this.each
		(
			function() 
			{
				if (p.nocaps) p.nchars += "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
				if (p.allcaps) p.nchars += "abcdefghijklmnopqrstuvwxyz";
				
				s = p.allow.split('');
				for (i=0;i<s.length;i++)
				{
				  if (p.ichars.indexOf(s[i]) != -1)
				  {
				    s[i] = "\\" + s[i];
				  }
				}
				p.allow = s.join('|');					
				var reg = new RegExp(p.allow,'gi');
				var ch = p.ichars + p.nchars;
				ch = ch.replace(reg,'');

				$(this).keypress
				(
				  function (e)
				  {
				    if (!e.charCode)
				    {
				      k = String.fromCharCode(e.which);
				    }
				    else
				    {
				      k = String.fromCharCode(e.charCode);
				    }				    
				    if (ch.indexOf(k) != -1) e.preventDefault();
				    if (e.ctrlKey && k=='v')
				    {
				      e.preventDefault();
				      return false;
				    }
					}								
				);						
				$(this).bind('contextmenu',function () {return false});			
			}
		);
	};

	$.fn.numeric = function(p) {
		var az = "abcdefghijklmnopqrstuvwxyz";
		az += az.toUpperCase();
		p = $.extend(
		{
			nchars: az
		}, p
		);
		  	
		return this.each (
		function()
		{
			$(this).alphanumeric(p);
		}
	  );
  };
	
	$.fn.alpha = function(p)
  {
    var nm = "1234567890";
    p = $.extend(
    {
      nchars: nm
    }, p);

		return this.each (function()
		{
			$(this).alphanumeric(p);
		}
	  );
  };	
})(jQuery);