﻿
function LoadingImage(config) {
  this.construct(config);
};

LoadingImage.prototype = {
	//コンストラクタ
	construct: function(config) {
		//パラメーターのデフォルト値
		var defaults = {
						"filter_id": "filter_for_operation_prohibition",
						"img_id": "loding_img",
						"loader_inner_tag": '<div class="ball-pulse"><div></div><div></div><div></div></div>',
						"url" : "",
						"width" : "80",
						"height" : "50",
						};
		this.config = jQuery.extend(defaults, config);
		
		if( this.config["width"]=="" ){
			alert("LoadingImageのwidthが指定されていません。");
			return;
		}
		if( this.config["height"]=="" ){
			alert("LoadingImageのheightが指定されていません。");
			return;
		}
		
		
		//BODYの一番後ろに操作禁止フィルターの追加
		jQuery("body").append('<div id="' + this.config["filter_id"] + '"><div class="loader" id="' + this.config["img_id"] + '">' + this.config["loader_inner_tag"] + '</div></div>');
		
		//操作禁止フィルターの初期化
		var filter_obj = jQuery("#" + this.config["filter_id"]);
		filter_obj.css("width","0");
		filter_obj.css("height","0");
		filter_obj.css("background","rgba(255, 255, 255, 0.0)");
		filter_obj.css("opacity",this.config["filter_opacity"]);
		filter_obj.css("position","fixed");
		filter_obj.css("top","0");
		filter_obj.css("left","0");
		filter_obj.css("z-index","0");
		filter_obj.css("visibility","hidden");
		filter_obj.css("user-select","none");
		filter_obj.css("-moz-user-select","none");
		filter_obj.css("-khtml-user-select","none");
		filter_obj.css("-webkit-user-select","none");
		
		//ロード画像の初期化
		jQuery("#" + this.config["img_id"]).css("position", "fixed");
		jQuery("#" + this.config["img_id"]).css("visibility","hidden");
		
	},
	//ローディング画像を表示するメソッド
	show: function() {
		
		
		//ローディング画像の座標修正
		var width = jQuery(window).width()>768 ? this.config["width"] : this.config["width"]/1.5;
		var height = jQuery(window).width()>768 ? this.config["height"] : this.config["height"]/1.5;
		jQuery("#" + this.config["img_id"]).css({
											"width" : width + "px",
											"height" : height + "px",
											"left": "calc(50% - " + (width / 2) + "px)",
											"top": "calc(50% - " + (height / 2) + "px)",
											});
		
		//ローディング画像のエレメントを表示
		jQuery("#" + this.config["img_id"]).css("visibility","visible");
		
		//操作禁止フィルターのセット
		var body_obj = jQuery("body");
		body_obj.css("user-select","none");
		body_obj.css("-moz-user-select","none");
		body_obj.css("-khtml-user-select","none");
		body_obj.css("-webkit-user-select","none");
		var filter_obj = jQuery("#" + this.config["filter_id"]);
		filter_obj.css("width","100%");
		filter_obj.css("height","100%");
		filter_obj.css("z-index","100000");
		filter_obj.css("visibility","visible");
	},
	//ローディング画像を隠すメソッド
	hide: function() {
		//操作禁止フィルターの解除
		var filter_obj = jQuery("#" + this.config["filter_id"]);
		filter_obj.css("width","0");
		filter_obj.css("height","0");
		filter_obj.css("z-index","0");
		filter_obj.css("visibility","hidden");
		var body_obj = jQuery("body");
		body_obj.css("user-select","text");
		body_obj.css("-moz-user-select","text");
		body_obj.css("-khtml-user-select","text");
		body_obj.css("-webkit-user-select","text");
		
		//ローディング画像のエレメントを非表示
		jQuery("#" + this.config["img_id"]).css("visibility","hidden");
	},
	
};

