var SNS = function(){
	var pin_page = false;
	var snsObjList = [];
	var main_url, site_name, subject, content, image_url, link_url, security_link_url;
	var api_url;
	var kakao_loaded = false;
	var kakao_message_template_id;
	var share_type;
	var social = {};
	var additional = {};
	function SnsObjects(){
		this.name = "";
		this.show = true;
		this.order = 0;
		this.iconClass = "";
		this.type = "";
	}
	var loadKakaoApi = function(key){
		// 카카오 이미 호출되어있으면 호출하지 않음 추가
		if(kakao_loaded) return false;
		if(LIMIT_API_LIST.indexOf('kakao_link') === -1){
			try{
				if(key != undefined){
					key = key.trim();
					if(key != '' && Kakao){
						if (!Kakao.isInitialized()) {
							Kakao.init(key);
						}
						kakao_loaded = true;
					}
				}
			}catch(e){
			}
		}
	};
	var init = function(d){
		// 상품&예약 상세페이지 데이터는 고정
		if(pin_page) return false;
		var data = d;
		if (data.kakao_api_key !== undefined){
			loadKakaoApi(data.kakao_api_key);
			kakao_message_template_id = data.kakao_message_template_id;
		}
		main_url = data._main_url;
		site_name = data._site_name;
		subject = data._subject;
		content = data._body === null ? '' : makeShareContent(data._body);
		image_url = data._img;
		link_url = data._post_url;
		security_link_url = data._security_post_url;
		api_url = "https://sns.imweb.me/?url=";
		social = data._social;
		additional = data._additional;
		share_type = data._share_type;
		if(data._pin_page != undefined){
			pin_page = true;
		}
	};
	var makeShareContent = function(s){
		s = removeHtmlTag(s);
		// 공유하기에 보이는 내용에서 치환
		s = s.replace(/ /ig, " ");
		s = s.replace(/</ig, "<");
		s = s.replace(/>/ig, ">");
		//글자수가 너무 길때 처리 - 공유하기 권장 110글자
		var content_max_len = 110;
		s = (s.length > content_max_len)? s.substring(0,content_max_len) : s;
		return s;
	};
	//SNS공유 초기설정
	//var snsInit = function(_main_url, _site_name, _subject, _content, _link_url, _security_link_url, _image){
	//
	//	try{
	//		if(Kakao) Kakao.init('63e1a2ee956b3aa85ca51663ce4caccb');
	//	}catch(e){
	//
	//	}
	//
	//
	//	main_url = _main_url;
	//	site_name = _site_name != "" ? "[" + _site_name + "]" : "";
	//	api_url = "https://sns.imweb.me/?url=";
	//	subject = _subject;
	//	content = _content;
	//	image_url = _image;
	//	link_url = _link_url;
	//	security_link_url = _security_link_url;
	//};
	var setSnsObj = function(){
		snsObjList = [];
		if(SITE_COUNTRY_CODE === KOREA_COUNTRY_CODE){
			if(LIMIT_API_LIST.indexOf('kakao_link') === -1){
				var snsObj = new SnsObjects();
				snsObj.name = LOCALIZE.버튼_카카오톡();
				snsObj.show = true;
				snsObj.order = 1;
				snsObj.iconClass = "kakao";
				snsObj.type = "kakaotalk";
				snsObjList.push(snsObj);
			}
		}
			if(LIMIT_API_LIST.indexOf('line_link') === -1){
				snsObj = new SnsObjects();
				snsObj.name = LOCALIZE.버튼_라인();
				snsObj.show = true;
				snsObj.order = 1;
				snsObj.iconClass = "line";
				snsObj.type = "line";
				snsObjList.push(snsObj);
			}
		if(SITE_COUNTRY_CODE === KOREA_COUNTRY_CODE){
			if(LIMIT_API_LIST.indexOf('band_link') === -1){
				snsObj = new SnsObjects();
				snsObj.name = LOCALIZE.버튼_밴드();
				snsObj.show = true;
				snsObj.order = 1;
				snsObj.iconClass = "band";
				snsObj.type = "band";
				snsObjList.push(snsObj);
			}
			if(LIMIT_API_LIST.indexOf('naver_link') === -1){
				snsObj = new SnsObjects();
				snsObj.name = LOCALIZE.버튼_네이버();
				snsObj.show = true;
				snsObj.order = 1;
				snsObj.iconClass = "naver";
				snsObj.type = 'naver';
				snsObjList.push(snsObj);
			}
		}
		if(LIMIT_API_LIST.indexOf('facebook_link') === -1){
			snsObj = new SnsObjects();
			snsObj.name = LOCALIZE.버튼_페이스북();
			snsObj.show = true;
			snsObj.order = 1;
			snsObj.iconClass = "face";
			snsObj.type = "facebook";
			snsObjList.push(snsObj);
		}
		if(LIMIT_API_LIST.indexOf('twitter_link') === -1){
			snsObj = new SnsObjects();
			snsObj.name = 'X';
			snsObj.show = true;
			snsObj.order = 1;
			snsObj.iconClass = "twitter";
			snsObj.type = "twitter";
			snsObjList.push(snsObj);
		}
		if(LIMIT_API_LIST.indexOf('instagram') === -1){
			snsObj = new SnsObjects();
			snsObj.name = LOCALIZE.버튼_인스타그램();
			snsObj.show = false;
			snsObj.order = 1;
			snsObj.iconClass = "instagram";
			snsObj.type = "instagram";
			snsObjList.push(snsObj);
		}
	};
	var getDefaultHtml = function(){
    const snsList = [];
		for(var index in snsObjList){
			const snsObj = snsObjList[index];
			if(!snsObj.show) continue;
      snsList.push(`
        
          ${snsObj.name}
        
      `)
		}
    const html = `
      
        
    `;
		return html;
	};
	var copyToClipboard = function(){
		$('#sns_copy_url').select();
		document.execCommand("Copy");
		$('#copy_complete').text(LOCALIZE.설명_URL이복사되었습니다());
		$('#copy_complete').addClass('copied');
		setTimeout(function () {
			$('#copy_complete').removeClass('copied');
		},4000);
	};
	var showDefalutSnsShareList = function(){
		//snsInit(_main_domain, _site_name, _subject, _content, _link_url, _security_link_url, _image);
		setSnsObj();
		var html = $(getDefaultHtml());
		$.cocoaDialog.open({type : 'post_social', custom_popup : html});
	};
	var setSnsApi = function(type){
		switch(type){
			case 'kakaotalk':
				shareKakaoTalk();
				break;
			case 'line':
				shareLine();
				break;
			case 'band':
				shareBand();
				break;
			case 'naver':
				shareNaver();
				break;
			case 'facebook':
				shareFacebook();
				break;
			case 'twitter':
				shareTwitter();
				break;
			case 'instagram':
				shareInstagram();
				break;
		}
	};
	/***
	 * 카카오톡 공유하기
	 * https://developers.kakao.com/docs/latest/ko/message/js
	 */
	var shareKakaoTalk = function(){
		if(LIMIT_API_LIST.indexOf('kakao_link') === -1){
      subject = decodeHTMLEntities(subject);
      content = decodeHTMLEntities(content);
			var type = share_type;
			var kakao_link = location.href;
			var kakao_send_data = {
				content: {
					title: subject,
					description: content,
					imageUrl: image_url,
					imageWidth: 300,
					imageHeight: 200,
					link: {
						mobileWebUrl: kakao_link,
						webUrl: kakao_link
					}
				},
				buttons: [
					{
						title: '자세히보기',
						link: {
							mobileWebUrl: kakao_link,
							webUrl: kakao_link
						}
					}
				]
			};
			switch(share_type){
				case 'booking':
					kakao_send_data.buttons[0]['title'] = '예약하기';
					type = 'feed';
					break;
				case 'commerce':
					if(additional == undefined || additional.commerce == undefined || additional.hide_price === 'Y'){
						type = 'feed';
						break;
					}
					kakao_send_data.buttons[0]['title'] = '구매하기';
					kakao_send_data.commerce ={};
					kakao_send_data.commerce.regularPrice = additional.commerce.orig_price;			// 정상가격
					if(additional.commerce.sale_price != undefined) {
						kakao_send_data.commerce.discountPrice = additional.commerce.sale_price;	// 할인가격
						kakao_send_data.commerce.discountRate =
							Math.round((kakao_send_data.commerce.regularPrice - kakao_send_data.commerce.discountPrice) * 100 / kakao_send_data.commerce.regularPrice);
					}
					break;
				case 'feed':
				case 'location':
					if(social){
						kakao_send_data.social = {};
						for(key in social){
							kakao_send_data.social[key] = parseInt(social[key]);
						}
					}
					if(share_type == 'location'){
						if(additional == undefined || additional.location == undefined){
							type = 'feed';
							break;
						}
						kakao_send_data.address = additional.location.address;
						kakao_send_data.addressTitle = subject;
					}
					break;
				default:
					type = 'feed';
					break;
			}
			/**
			 * 커머스의 경우 sendCustom() 을 이용하기 위함.
			 * 커머스이고, 템플릿 ID 가 있는 경우에는 sendCustom()
			 * 커머스이고 템플릿 ID 가 없는 경우에는 sendDefault()
			 *
			 * linkUrl 은 카카오 디벨로퍼 앱의 출처 링크 형식으로 리다이렉트
			 * 출처 링크에 url 쿼리 스트링을 붙여 출처 링크 + path 로 리다이렉트 하도록 함.
			 *
			 * @see https://developers.kakao.com/docs/latest/ko/message/js-link#custom-template-msg
			 */
			var kakao_template_id = parseInt(kakao_message_template_id);
			if (type === 'commerce' && kakao_template_id > 0) {
				kakao_send_data = {
					templateId: kakao_template_id,
					templateArgs: {
						title: subject,
						imageUrl: image_url,
						imageWidth: 300,
						imageHeight: 200,
						btnStr: "구매하기",
						linkUrl: (location.pathname + location.search).slice(1),
						originalPrice: additional.commerce.orig_price,
					},
					installTalk: true
				};
				if (additional.commerce.sale_price !== undefined) {
					kakao_send_data.templateArgs.salePrice = additional.commerce.sale_price; // 할인가격
					kakao_send_data.templateArgs.discountPercent =
						Math.round((kakao_send_data.templateArgs.originalPrice - kakao_send_data.templateArgs.salePrice) * 100 / kakao_send_data.templateArgs.originalPrice); // 할인율
				}
				Kakao.Link.sendCustom(kakao_send_data);
			} else {
				kakao_send_data.objectType = type;
				Kakao.Link.sendDefault(kakao_send_data);
			}
		}else{
			alert(LOCALIZE.설명_사이트관리자설정에의해차단된콘텐츠입니다());
		}
	};
	/***
	 * 라인 공유하기
	 */
	var shareLine = function(){
		if(LIMIT_API_LIST.indexOf('line_link') === -1){
			window.open("http://line.naver.jp/R/msg/text/?" + fixedEncodeURIComponent(subject) + " " + fixedEncodeURIComponent(location.href));
		}else{
			alert(LOCALIZE.설명_사이트관리자설정에의해차단된콘텐츠입니다());
		}
	};
	/***
	 * 밴드 공유하기
	 */
	var shareBand = function(){
		if(LIMIT_API_LIST.indexOf('band_link') === -1){
			var tmp_subject = encodeURIComponent(subject + "\n");
			var body = tmp_subject + fixedEncodeURIComponent(location.href);
			window.open("http://band.us/plugin/share?body=" + body + "&route=" + fixedEncodeURIComponent(location.href));
		}else{
			alert(LOCALIZE.설명_사이트관리자설정에의해차단된콘텐츠입니다());
		}
	};
	function fixedEncodeURIComponent(str) {
		return encodeURIComponent(str).replace(/[\.]/g, function(c) {     return '%' + c.charCodeAt(0).toString(16);   });
	}
	var shareNaver = function(){
		if(LIMIT_API_LIST.indexOf('naver_link') === -1){
			if(content.length == 0){
				if(confirm('네이버 블로그 공유 시 본문 텍스트가 없을 경우 사이트 내용 텍스트를 순차적으로 출력합니다. 그래도 공유하시겠습니까?')){
					shareSnsMetatag('naver');
				}
			}else{
				shareSnsMetatag('naver');
			}
		}else{
			alert(LOCALIZE.설명_사이트관리자설정에의해차단된콘텐츠입니다());
		}
	};
	/***
	 * 페이스북 공유하기
	 */
	var shareFacebook = function(){
		if(LIMIT_API_LIST.indexOf('facebook_link') === -1){
			shareSnsMetatag('facebook');
		}else{
			alert(LOCALIZE.설명_사이트관리자설정에의해차단된콘텐츠입니다());
		}
	};
	/***
	 * 트위터 공유하기
	 */
	var shareTwitter = function(){
		if(LIMIT_API_LIST.indexOf('twitter_link') === -1){
			shareSnsMetatag('twitter');
		}else{
			alert(LOCALIZE.설명_사이트관리자설정에의해차단된콘텐츠입니다());
		}
	};
	/***
	 * 인스타그램 공유하기
	 */
	var shareInstagram = function(){
		if(IS_MOBILE){
		}else{
		}
	};
	var shareSnsMetatag = function(type){
		switch(type){
			case 'naver':
				window.open("https://share.naver.com/web/shareView.nhn?url=" + encodeURI(encodeURIComponent(location.href)) + "&title=" + encodeURIComponent(subject));
				break;
			case 'facebook':
				window.open("http://www.facebook.com/sharer/sharer.php?u=" + encodeURIComponent(location.href));
				break;
			case 'twitter':
				window.open("https://twitter.com/intent/tweet?text=" + encodeURIComponent(subject) + "&url=" + encodeURIComponent(location.href));
				break;
			default:
				alert(LOCALIZE.설명_공유에실패하였습니다());
				break;
		}
	};
	return {
		showDefalutSnsShareList : function(_main_url, _site_name, _subject, _content, _link_url, _security_link_url, _image){
			return showDefalutSnsShareList(_main_url, _site_name, _subject, _content, _link_url, _security_link_url, _image);
		},
		setSnsApi : function(_type){
			return setSnsApi(_type);
		},
		shareKakaoTalk : function(_type){
			return shareKakaoTalk(_type);
		},
		shareLine : function(){
			return shareLine();
		},
		shareBand : function(){
			return shareBand();
		},
		shareNaver : function(){
			return shareNaver();
		},
		shareFacebook : function(){
			return shareFacebook();
		},
		shareTwitter : function(){
			return shareTwitter();
		},
		copyToClipboard : function(text){
			return copyToClipboard(text);
		},
		loadKakaoApi : function(key){
			loadKakaoApi(key);
		},
		init : function(d){
			return init(d);
		}
	};
}();