﻿/*******************************************************************************
The MIT License (MIT)

Copyright (c) 2014 VBChunguk

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*******************************************************************************/

var constHelper;

if (!constHelper) {

constHelper = {

ships: {},
shipGraphPair: {},

_rareShips: [ // Get >=H
	20, 50, 80, 81, 91, 111, 116, 131, 139, 143, 153, 156, 157, 171, 181, 182, 184, 185
],
_localizedNames: {
/*
	'ko': {
		'saying': {
156: {
	'defmsg': "다이호改",
	1: "안녕하십니까! 개장을 끝마친 다이호입니다! 갑판장갑도 강화! 방어력도 상승!<br>제독을 위해, 함재기들을 밖에 꺼내놓아서 함재기 수도 충실합니다!",
	2: "제독, 제 허리케인 보우, 그렇게 신경쓰이나요?",
	3: "그렇습니다. 대공화기도 최신식이에요. 팍팍 덤벼보라구요!",
	4: "미귀환기… 라는 말은 싫은 말이네요.<br>가능하면 나오지 말았으면 하지만, 전쟁이니까요.",
	7: "함대가 주둔지에 귀환합니다. 수고하셨습니다!",
	8: "제독, 보고서를 읽으시겠습니까?",
	9: "이 장비, 좋네요!",
	10: "기분이 좋아지네요.",
	11: "항공기 연료가 넘치는 걸 조심해야겠네요.",
	12: "좋아요. 가끔씩은 길게 목욕하겠습니다!",
	13: "자아, 다이호 나갑니다! 타우이타우이의 모두들도 건강할까나?",
	14: "제1 기동부대 기함 다이호, 출격합니다!",
	15: "자아, 합니다! 제601항공대, 이함 시작!",
	16: "제1차 공격대, 전기 이함!",
	17: "장갑갑판은 장식이 아니야. 제2차 공격대, 이함!",
	18: "전 함대 돌격! 남은 적을 쓸어버립시다!",
	19: "핫! 포, 폭발!? 연료창고는? 연료는 괜찮아?",
	20: "이 정도로, 이 다이호는 꿈쩍도 하지 않습니다!",
	21: "아아앗! 여, 연료가! 불붙지 않도록 조심해야!",
	22: "어떤 장갑이라도… 가라앉을 때는 가라앉는구나….<br>그래도… 이번에는 많이 날뛰어봤죠…? 전… 만족…합니다….",
	23: "제독, 어떤가요? 이게 다이호의, 그리고 우리들 기동부대의 진짜 힘입니다!",
	27: "만전의 보급과 훈련이 있으면, 칠면조라는 말은 듣지 않아요!",
	// 방치
	29: "제독! 이 다이호를 기다리게 하시다니… 라던가 말하지 않아요.<br>훈련과 전략은 소중하죠. 충분히 준비한 뒤 출격하지요?",
	// 시보
	30: "심야 0시입니다. 오늘은 이 다이호가, 제독께 시간을 알려드리겠습니다.",
}
		} // saying
	} // ko
},
_sayingLength: {
156: {
	1: 13704,
	2: 6408,
	3: 5160,
	4: 9000,
	5: 2280,
	6: 1728,
	7: 3408,
	8: 3288,
	9: 2544,
	10: 3264,
	11: 2784,
	12: 3552,
	13: 5952,
	14: 4512,
	15: 5928,
	16: 3384,
	17: 5448,
	18: 4032,
	19: 5976,
	20: 4344,
	21: 4560,
	22: 17352,
	23: 8424,
	24: 18912,
	25: 19080,
	26: 1344,
	27: 4776,
	28: 10728,
	29: 12624,
	30: 6360,
}
*/
},

getDB: function(scope, lang) {
	var tlang = lang;
	if (!tlang) tlang = chrome.i18n.getMessage("lang");
	if (!scope) return;
	if (!tlang) return;
	
	if (this._localizedNames[tlang] && this._localizedNames[tlang][scope]) return;
	
	console.log("scope: "+scope+" lang: "+tlang);
	teitokuNet.get("/kcsbase/get.php", { scope: scope, lang: tlang }, (function(data) {
		if (!this._localizedNames[tlang]) this._localizedNames[tlang] = {};
		this._localizedNames[tlang][scope] = data;
	}).bind(this));
},
getLocalized: function(scope, id, def, lang) {
	var tlang = lang;
	if (!tlang) tlang = chrome.i18n.getMessage("lang");
	if (!tlang) return def;
	if (!this._localizedNames[tlang]) return def;
	if (!this._localizedNames[tlang][scope]) return def;
	if (typeof(id) !== "object") id = [id]; // to array
	var len = id.length;
	var cpos = this._localizedNames[tlang][scope];
	for (var i = 0; i < len; i++) {
		if (!cpos[id[i]+""]) return def;
		cpos = cpos[id[i]+""];
	}
	if (typeof(cpos) === "object" && cpos.defmsg) return cpos.defmsg;
	return cpos;
},
getSayingLength: function(id, sid) {
	return this._sayingLength[id+""][sid+""];
},
isShipRare: function(id, callback) {
	if (this._rareShips.indexOf(id) != -1) {
		if (callback) callback(true);
	}
	chrome.storage.sync.get("twitter_submarine_is_rare", (function(obj) {
		if (obj['twitter_submarine_is_rare'] !== undefined && !obj['twitter_submarine_is_rare']) return;
		switch (this.ships[id].generalData.api_stype) {
		case 13:
		case 14:
		case 17:
		case 20:
			if (callback) callback(true);
			break;
		default:
			if (callback) callback(false);
		}
	}).bind(this));
}

};

}