

/*	
	ビルトインクラスを拡張
*/
(
	function() {
		
		/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
			配列にシャッフル機能を追加
		ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
		Array.prototype.shuffle = function() {
			var i = this.length;
			while(i){
				var j = Math.floor(Math.random()*i);
				var t = this[--i];
				this[i] = this[j];
				this[j] = t;
			}
			return this;
		}
		
		/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
			配列にユニーク機能を追加
		ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
		Array.prototype.unique = function() {
			var storage = {};
			var uniqueArray = [];
			var i,value,l;
			for ( i=0, l = this.length; i<l; i++) {
				value = this[i];
				if (!(value in storage)) {
					storage[value] = true;
					uniqueArray.push(value);
				}
			}
			return uniqueArray;

		}
		
		/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
			配列にユニーク機能を追加
		ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
		Array.prototype.asort = function(key) {
			
			var ary = this.concat();
			ary.sort(function (b1, b2) {
				return b1[key] > b2[key] ? 1 : -1;
			});
	
			return ary;
		
		}
		
		
		
		/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
		　全部置換
		ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
		String.prototype.replaceAll = function(find, newstr) {
			
			var str = this + "";
			if(String(str).indexOf(find) == -1) return str;
			var tmp = str.split(find);
			var str = tmp.join(newstr);
			return str;
		}
		
		/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
		　	HTMLに吐き出すときのエスケープ処理を入れよう
		ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
		String.prototype.htmlEscape = function() {
			
			var str = this + "";
			
			str = str.replaceAll("</script>", "");
			str = str.replaceAll("<", "&lt;");
			str = str.replaceAll(">", "&gt;");
			str = str.replaceAll("\"", "&quot;");
			str = str.replaceAll("\\", "&#39;");
			
			
			return str;
		}
		
		/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
		　	エスケープしてから改行を変換だ
		ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
		String.prototype.htmlEscapeAndStrToHTML = function() {
			var str = this + "";
			str = str.htmlEscape();
			str = str.strToHTML();
			return str;
		}

		/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
			HTMLにテキストを出力する場合のフィルタ
		ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
		String.prototype.strToHTML = function() {
			
			var str = this + "";
			str = str.replace(/[\r\n|\r|\n]/gi, '<br>');
			
			//str = this.replaceAll('&lt;', '<', str);
			//str = this.replaceAll('&gt;', '>', str);
			
			return str;
		}
			
		/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
			HTMLからテキストを取得する場合のフィルタ
		ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
		String.prototype.strFromHTML = function() {
			
			var str = this + "";
			str = str.replace(/<br>/gi, '\n');
			return str;
		}
		

		
		/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
			jQueryプロトタイプを拡張
		ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
		$.fn.extend({
			
			
			
			
			/*――――――――――――――――――――――――――――――――――
				cssのwidthをナンバーとして取得
			―――――――――――――――――――――――――――――――――― */
			widthNum : function(){
				
				return parseInt($(this).css("width").replace("px", ""),10);
			},
			
			/*――――――――――――――――――――――――――――――――――
				cssのwidthをナンバーとして取得
			―――――――――――――――――――――――――――――――――― */
			heightNum : function(){
				return parseInt($(this).css("height").replace("px", ""),10);
			},
			
			/*――――――――――――――――――――――――――――――――――
				translate3dでセットした値を数値としてとりだす
			―――――――――――――――――――――――――――――――――― */
			getTRS3DVal : function(){
				
				
				var str = $(this).get(0).style.webkitTransform;
				
				str = str.replace(/^.*translate3d\((.+?)\)/, "$1");
				var tmp = str.split(",");
				var ary = [];
				for(var i=0; i < tmp.length; i++) {
					var val = tmp[i];
					val = val.replace("px", "");//pxを削除
					val = val.replace(/(^\s+)|(\s+$)/g, "");//trim
					ary.push(val);
				}
				var obj = {};
				obj.x = parseInt(ary[0],10);
				obj.y = parseInt(ary[1],10);
				obj.z = parseInt(ary[2],10);
				
				return obj;
			},	
			
			/*――――――――――――――――――――――――――――――――――
				translate3dをセット
			―――――――――――――――――――――――――――――――――― */
			setTRS3DVal : function(x,y,z){
				
				if(!x) x = 0;
				if(!y) y = 0;
				if(!z) z = 0;
				
				var str = $(this).get(0).style.webkitTransform;
				
				$(this).get(0).style.webkitTransform = 'translate3d(' + x + 'px, ' + y + 'px,'+z+'px)';
			},
			
			/*――――――――――――――――――――――――――――――――――
				座標変更メソッド（webkitはtranslate3dを使用）
			―――――――――――――――――――――――――――――――――― */
			setMyPos : function(x,y){
				
				if($.vendor == "webkit"){
					this.setTRS3DVal(x,y,0);
				} else {
					if(x != undefined && x != null && y != undefined && y != null){
						$(this).css("left", x).css("top", y);
					} else if(x != undefined && x != null){
						$(this).css("left", x);
					} else if(y != undefined && y != null){
						$(this).css("top", y);
					}
				}
				
			},
			
			/*――――――――――――――――――――――――――――――――――
				座標取得メソッド（webkitはtranslate3dを使用）
			―――――――――――――――――――――――――――――――――― */
			getMyPos : function(){
				
				var obj = {};
				if($.vendor == "webkit"){
					obj = this.getTRS3DVal();
				} else {
					obj.x = parseInt($(this).css("left").replace("px", ""),10);
					obj.y = parseInt($(this).css("top").replace("px", ""),10);
				}
				
				return obj;
			}

		});//jQueryプロトタイプを拡張
		
		/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
			jQueryを拡張
		ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */	
		$.extend({
			
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
				デバッグか
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			isDebug : function(){
				var flg = false;
				if(document.URL.indexOf("debug") != -1) flg = true;
				return flg;
			},
			
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
				PIVOTか
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			isPivot : function(){
				var flg = false;
				if(document.URL.indexOf("pivot") != -1) flg = true;
				return flg;
			},
			
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
				オブジェクトをコピー
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			cloneObj : function(obj, deep){
				
				if(deep){
					return $.extend(true,{},obj);
				} else {
					return $.extend({},obj);
				}
			},			
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
				dump
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			dump : function(data) {
				var str = "";
				for(var item in data) {
					str += item+"："+data[item]+"\n";
				}
				alert(str);
			},
			
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
				isLocal
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			isLocal : function() {
				var flg = false;
				if(document.URL.indexOf("toshick.com") == -1) flg = true;
				return flg;
			}
		
		});//jQueryを拡張

	}
)();

/*	
	ユーティリティベースクラス
*/
(
	function() {		
		
		$.superUtil = function(){}
		
		$.superUtil.prototype = {
			
			
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
				delKaigyoBR
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			delKaigyoBR: function(str){
				var str = this.delKaigyo(str);
				str = this.delBR(str);
				return str;
			},
			
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
				delKaigyo
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			delKaigyo: function(str){
				var str = str.split("\n").join("");
				return str;
			},
			
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
				delBR
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			delBR: function(str){
				var str = str.split("<br>").join("");
				str = str.split("<br />").join("");
				return str;
			},
		
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
				getUnixTime
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			getUnixTime : function() {
				return ~~(new Date/1000);
			},
		 
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
				getYobi_JP
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			getYobi_JP : function(num) {
				var yobiNameList = ["日", "月", "火", "水", "木", "金", "土"];
				return yobiNameList[num];
			},
		
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
				basename
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			basename: function(url){
				var tmp = url.split("/");
				var name = tmp[tmp.length-1];
				return name;
			},
			
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
				dirname
				//なんかうごかない
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			dirname: function(url){
				
				var name = url.replace(/(.+)\/.+/, "\1");
				return name;
			},
			
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
				dump
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			dump: function(data){
				var str = "";
				for(var item in data) {
					str += item+"："+data[item]+"\n";
				}
				alert(str);
			},
		
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
				今日のストリングを取得
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			getTodayStr: function(splitstr){
				if(!splitstr) splitstr = "";
				var d = new Date();
				var datestr = d.getFullYear()+splitstr+this.keta(d.getMonth()+1, 2)+splitstr+this.keta(d.getDate(),2);
				return datestr;
			},
			
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
				日付のストリングから日付のナンバーを取得
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			getDateNumFromDateStr: function(str){
				
				return this.replaceAll("/", "", str);
			},
			
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
				日付のストリング　ドットタイプ
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			getDateStr_typeDot: function(str){
				
				var str = this.replaceAll("/", ".", str);
				str = this.replaceAll("_", ".", str);
				return str
			},
			
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
				日付のストリング　指定ストリングで分割
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			getDateStrWithSplit: function(datestr, split){
				
				if(!split) split = "";
				var str = datestr.replace("[^0-9]", "");
				str = datestr.slice(0,4)+split+datestr.slice(4,6)+split+datestr.slice(6,8);
				return str
			},

		
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
				strToHTML
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			strToHTML: function(str) {
				
				if(str) str = str.split("\n").join("<br />");
				
				//txt = txt.split("&amp;lt;").join("<");
				//txt = txt.split("&amp;gt;").join(">");
		
		
				return str;
			},
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
				strFromHTML
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			strFromHTML: function(str) {
				
				var txt = "";
				if(str.indexOf("<br />") != -1) {
					txt = str.split("<br />").join("\n");
		
				} else if(str.indexOf("<br>") != -1) {
					txt = str.split("<br>").join("\n");
		
				} else {
					txt = str;
				}
				
				//txt = txt.split("<").join("&amp;lt;");
				//txt = txt.split(">").join("&amp;gt;");
				
				return txt;
			},
		
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
				ソート
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			asort: function(ary, key){
		
				ary.sort(function (b1, b2) {
					return b1[key] > b2[key] ? 1 : -1;
				});
		
				return ary;
			},
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
				桁をそろえる
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			keta: function(num, ketanum) {
				
				var n = String(num);
				while(n.length < ketanum){
					n = "0"+n;
				}
				return n;
			},
			
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
				トリム
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			trim: function(str) {
				
				var newstr = str.replace(/(^\s+)|(\s+$)/g, "");
				return newstr;
			},
			

						
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
			　ブラウザを取得（IE以外はノーマル）
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			getBlowser : function(){
				var str = "";
				if (typeof document.documentElement.style.msInterpolationMode != "undefined") {
					// IE 7 or newer
					if (navigator.userAgent.indexOf("MSIE 8")!=-1 && navigator.userAgent.indexOf("Trident/4.0")!=-1){
						str = "IE8";
					} else if (navigator.userAgent.indexOf("MSIE 7")!=-1 && navigator.userAgent.indexOf("Trident/4.0")!=-1){
						str = "IE8gokan";
						
					} else if (navigator.userAgent.indexOf("MSIE 7")!=-1){
						str = "IE7";
					}
				} else if (navigator.userAgent.indexOf("MSIE")!=-1 ){
					str = "oldIE";
				} else {
					str = "normal";
				}
				return str;
			},
			
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
			　デイトピッカ
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			setDatePicker : function(node) {
				
				//カレンダー
				$(".datepicker").datepicker({
					inline: true,
					showOn: 'button',
					buttonImage: 'images/calendar.gif',
					buttonImageOnly: true,
					dateFormat: "yy/mm/dd"
		
				});
				
				$("#ui-datepicker-div").css("z-index", 100);
				$("img.ui-datepicker-trigger").css("margin-left", 5);
				
			},
			
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
			　IEかな
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			IsIE : function() {
				IE='\v'=='v';
				return IE;
			},
			
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
			　ゲッコーかな
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			IsGecko : function(){
				if(navigator){
					if(navigator.userAgent){
						if(navigator.userAgent.indexOf("Gecko/") != -1){
							return true;
						}
					}
				}
				return false;
			},
			
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
			　リロード
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			reload : function() {
				location.reload();
			},
		
		
			
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
			　アイフォンかな
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			isIPhone : function(){
				
				var flg = false;
				if (navigator.userAgent.indexOf('iPhone') != -1){
					flg = true;
				}
				
				return flg;
				
			},
				
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
			　クエリーをオブジェクトとして取得
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			getQueryObj : function(){
			
				var obj = {};
				var query = document.URL.split("?")[1];
				if(!query) return obj;
				
				if(query.indexOf("&") == -1) {
					var tmp = query.split("=");
					obj[tmp[0]] = tmp[1];
				} else {
				
					var ary = query.split("&");
					
					for(var i=0; i < ary.length; i++){
						var tmp = ary[i].split("=");
						var key = tmp[0];
						var value = tmp[1];
						obj[key] = value;
					}
							
				}
				return obj;
			},
			
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
			　全部置換
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			replaceAll : function(find, newstr, targetstr){
				
				if(String(targetstr).indexOf(find) == -1) return targetstr;
				var tmp = targetstr.split(find);
				var str = tmp.join(newstr);
				return str;
			},
			
			
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
			　アクセス解析を非表示
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			hideAdTimer : null,
			hideKaiseki : function(){
				var me = this;
				me.hideAdTimer = setInterval(function() {		
					
					var node = $('#ninja_p3_ad').parent();
					var d = node.html();
					if(d){
						clearInterval(me.hideAdTimer);
						node.hide();
					}
				}, 100);
			
			},
			
			
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
				通知開始
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			startInform : function(str){
				
				$("#compeleteInform").stop().remove();
				$("body").append("<div id='compeleteInform'>"+str+"</div>");
				$("#compeleteInform").css("top", "-30px").css("opacity", 0).animate({ opacity:1 , top:"0px"}, {duration: "slow", easing: "easeOutCubic", complete:function(){
					$("#compeleteInform").animate({ opacity:1 }, {duration: 1000, easing: "swing", complete:function(){
						
					}});
				}});
			},
			
			
			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
				通知完了
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			finishInform : function(callback){
				
				$("#compeleteInform").animate({ top:"-30px" }, {duration: "fast", easing: "easeInCubic", complete:function(){
					$("#compeleteInform").remove();
					if(callback) callback();
				}});
			},



			/* ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
				完了通知
			ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー */
			onComplete : function(str, callback){
				
				$("#compeleteInform").stop().remove();
				$("body").append("<div id='compeleteInform'>"+str+"</div>");
				$("#compeleteInform").css("top", "-30px").css("opacity", 0).animate({ opacity:1 , top:"0px"}, {duration: "slow", easing: "easeOutCubic", complete:function(){
					$("#compeleteInform").animate({ opacity:1 }, {duration: 1000, easing: "swing", complete:function(){
						$("#compeleteInform").animate({ top:"-30px" }, {duration: "fast", easing: "easeInCubic", complete:function(){
							$("#compeleteInform").remove();
							if(callback) callback();
						}});
					}});
				}});
			}
		
			
			
			
			
		}//superUtil

		
		
	}
)();

	


