/* ****************************************************************************
従来のライブラリをjQuery対応にしたもの

Ver.0.01
・jQuery.fn.str 以下にString拡張していたメソッドを追加。
**************************************************************************** */

if(jQuery){;
	jQuery.fn.str = new Object();
	jQuery.fn.str.ver = "0.01";
	
	// Trim
	jQuery.fn.str.trim = function(str){return str.replace(/^\s+|\s+$/g,'');}
	// 全角対応Trim
	jQuery.fn.str.trim2 = function(str){return str.replace(/^[\s　]+|[\s　]+$/g,'');}
	// 全角＆タブ＆改行対応Trim
	jQuery.fn.str.trim3 = function(str){return str.replace(/^[\s\n\t　]+|[\s\n\t　]+$/g,'');}
	// Escape HTML
	jQuery.fn.str.escapeHtml = function(str){var i,e={'&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;'},t=str; for(i in e) t=t.replace(new RegExp(i,'g'),e[i]); return t;}
	// UnEscape HTML
	jQuery.fn.str.unescapeHtml = function(str){ var i,e={'&lt;':'<','&gt;':'>','&amp;':'&','&quot;':'"'},t=str; for(i in e) t=t.replace(new RegExp(i,'g'),e[i]); return t;}
	// URL Encode
	jQuery.fn.str.urlEncode = function(str){ return encodeURIComponent(str); }
	// URL Decode
	jQuery.fn.str.urlDecode = function(str){ return decodeURIComponent(str); }
	// emailかどうかの確認
	jQuery.fn.str.isEmail = function(str) { var rx = new RegExp("\\w+([-+.\’]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*"); var matches = rx.exec(str); return (matches != null && str == matches[0]); }
	// URLかどうかの確認
	jQuery.fn.str.isUrl = function(str) { var rx = new RegExp("http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w-\\+ ./?%:&=#\\[\\]]*)?"); var matches = rx.exec(str); return (matches != null && str == matches[0]); }
	// 正規表現ではない置換
	jQuery.fn.str.strReplace = function(search, replace, str){
		var i = 0;
		var tmp = str.split(search);
		var tmp = tmp.join(replace);
		return tmp;
	}
	// 正規表現記号のエスケープ
	jQuery.fn.str.escapeReg = function(str){
		var str1 = Array('/', '.', '\\', '+', '*', '?', '[', '^', ']', '$', '(', ')', '{', '}', '=', '!', '<', '>', '|', ':');
		var l = str1.length;
		var i = 0;
		for(i=0;i<l;i++){
			str = str.strReplace(str1[i], '\\'+str1[i]);
		}
		return str;
	}
	
	jQuery.fn.str._zen = function(){
		var zen = Array('０','１','２','３','４','５','６','７','８','９','ａ','ｂ','ｃ','ｄ','ｅ','ｆ','ｇ','ｈ','ｉ','ｊ','ｋ','ｌ','ｍ','ｎ','ｏ','ｐ','ｑ','ｒ','ｓ','ｔ','ｕ','ｖ','ｗ','ｘ','ｙ','ｚ','Ａ','Ｂ','Ｃ','Ｄ','Ｅ','Ｆ','Ｇ','Ｈ','Ｉ','Ｊ','Ｋ','Ｌ','Ｍ','Ｎ','Ｏ','Ｐ','Ｑ','Ｒ','Ｓ','Ｔ','Ｕ','Ｖ','Ｗ','Ｘ','Ｙ','Ｚ','－','ー','ア','イ','ウ','エ','オ','カ','キ','ク','ケ','コ','サ','シ','ス','セ','ソ','タ','チ','ツ','テ','ト','ナ','ニ','ヌ','ネ','ノ','ハ','ヒ','フ','ヘ','ホ','マ','ミ','ム','メ','モ','ヤ','ユ','ヨ','ラ','リ','ル','レ','ロ','ワ','ヲ','ン','ァ','ィ','ゥ','ェ','ォ','ャ','ュ','ョ','ガ','ギ','グ','ゲ','ゴ','ザ','ジ','ズ','ゼ','ゾ','ダ','ヂ','ヅ','デ','ド','バ','ビ','ブ','ベ','ボ','パ','ピ','プ','ペ','ポ','、','。','ー','－','＾','￥','＠','［','；','：','］','，','．','／','！','”','＃','＄','％','＆','’','（','）','＝','￣','｜','‘','｛','＋','＊','｝','＜','＞','？','＿');
		return zen;
	}
	jQuery.fn.str._zenkana = function(){
		var zen = Array('ガ','ギ','グ','ゲ','ゴ','ザ','ジ','ズ','ゼ','ゾ','ダ','ヂ','ヅ','デ','ド','バ','ビ','ブ','ベ','ボ','パ','ピ','プ','ペ','ポ','ー','ア','イ','ウ','エ','オ','カ','キ','ク','ケ','コ','サ','シ','ス','セ','ソ','タ','チ','ツ','テ','ト','ナ','ニ','ヌ','ネ','ノ','ハ','ヒ','フ','ヘ','ホ','マ','ミ','ム','メ','モ','ヤ','ユ','ヨ','ラ','リ','ル','レ','ロ','ワ','ヲ','ン','ァ','ィ','ゥ','ェ','ォ','ャ','ュ','ョ','、','。','ー');
		return zen;
	}
	jQuery.fn.str._han = function(){
		var han = Array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','-','ｰ','ｱ','ｲ','ｳ','ｴ','ｵ','ｶ','ｷ','ｸ','ｹ','ｺ','ｻ','ｼ','ｽ','ｾ','ｿ','ﾀ','ﾁ','ﾂ','ﾃ','ﾄ','ﾅ','ﾆ','ﾇ','ﾈ','ﾉ','ﾊ','ﾋ','ﾌ','ﾍ','ﾎ','ﾏ','ﾐ','ﾑ','ﾒ','ﾓ','ﾔ','ﾕ','ﾖ','ﾗ','ﾘ','ﾙ','ﾚ','ﾛ','ﾜ','ｦ','ﾝ','ｧ','ｨ','ｩ','ｪ','ｫ','ｬ','ｭ','ｮ','ｶﾞ','ｷﾞ','ｸﾞ','ｹﾞ','ｺﾞ','ｻﾞ','ｼﾞ','ｽﾞ','ｾﾞ','ｿﾞ','ﾀﾞ','ﾁﾞ','ﾂﾞ','ﾃﾞ','ﾄﾞ','ﾊﾞ','ﾋﾞ','ﾌﾞ','ﾍﾞ','ﾎﾞ','ﾊﾟ','ﾋﾟ','ﾌﾟ','ﾍﾟ','ﾎﾟ','､','｡','ｰ','-','^','\\','@','[',';',':',']',',','.','/','!','"','#','$','%','&',"'",'(',')','=','~','|','`','{','+','*','}','<','>','?','_');
		return han;
	}
	jQuery.fn.str._hankana = function(){
		var han = Array('ｶﾞ','ｷﾞ','ｸﾞ','ｹﾞ','ｺﾞ','ｻﾞ','ｼﾞ','ｽﾞ','ｾﾞ','ｿﾞ','ﾀﾞ','ﾁﾞ','ﾂﾞ','ﾃﾞ','ﾄﾞ','ﾊﾞ','ﾋﾞ','ﾌﾞ','ﾍﾞ','ﾎﾞ','ﾊﾟ','ﾋﾟ','ﾌﾟ','ﾍﾟ','ﾎﾟ','ｰ','ｱ','ｲ','ｳ','ｴ','ｵ','ｶ','ｷ','ｸ','ｹ','ｺ','ｻ','ｼ','ｽ','ｾ','ｿ','ﾀ','ﾁ','ﾂ','ﾃ','ﾄ','ﾅ','ﾆ','ﾇ','ﾈ','ﾉ','ﾊ','ﾋ','ﾌ','ﾍ','ﾎ','ﾏ','ﾐ','ﾑ','ﾒ','ﾓ','ﾔ','ﾕ','ﾖ','ﾗ','ﾘ','ﾙ','ﾚ','ﾛ','ﾜ','ｦ','ﾝ','ｧ','ｨ','ｩ','ｪ','ｫ','ｬ','ｭ','ｮ','､','｡','ｰ');
		return han;
	}
	// 全角→半角
	jQuery.fn.str.toHankaku = function(str){
		var ret = str;
		var zen = jQuery.fn.str._zen();
		var han = jQuery.fn.str._han();
		var i = 0;
		var l = zen.length;
		var tmp = '';
		for(i=0;i<l;i++){
			tmp = ret.split(zen[i]);
			ret = tmp.join(han[i]);
		}
		return ret;
	}
	// 全角カナ→半角カナ
	jQuery.fn.str.toHankakukana = function(str){
		var ret = str;
		var zen = jQuery.fn.str._zenkana();
		var han = jQuery.fn.str._hankana();
		var i = 0;
		var l = zen.length;
		var tmp = '';
		for(i=0;i<l;i++){
			tmp = ret.split(zen[i]);
			ret = tmp.join(han[i]);
		}
		return ret;
	}
	// 半角→全角
	jQuery.fn.str.toZenkaku = function(str){
		var ret = str;
		var zen = jQuery.fn.str._zen();
		var han = jQuery.fn.str._han();
		var i = 0;
		var l = zen.length;
		var tmp = '';
		for(i=0;i<l;i++){
			tmp = ret.split(han[i]);
			ret = tmp.join(zen[i]);
		}
		return ret;
	}
	// 半角カナ→全角カナ
	jQuery.fn.str.toZenkakukana = function(str){
		var ret = str;
		var zen = jQuery.fn.str._zenkana();
		var han = jQuery.fn.str._hankana();
		var i = 0;
		var l = zen.length;
		var tmp = '';
		for(i=0;i<l;i++){
			tmp = ret.split(han[i]);
			ret = tmp.join(zen[i]);
		}
		return ret;
	}
}
