/**
 * 案件ページの各種設定・定数定義を行ないます
 */

/**
 * 定数
 */
var FILE_INQUIRY			= "inquiry.php";
var URLROOT_HTTP			= "http://d.ienakama.com/";
var URLROOT					= "https://www.ienakama.com/d/";
var HOSTFILE_PROJECT		= URLROOT+"project/project_connector.php";
var HOSTFILE_WORK			= URLROOT+"work/work_connector.php";
var HOSTFILE_PROFILE		= URLROOT+"profile/profile_connector.php";
var HOSTFILE_TIPS			= URLROOT+"tips/tipsEditConnector.php";
var URL_PROJECT				= URLROOT+"project/";
var URL_LOGIN				= URLROOT+"login/";
var URLROOT_DEALER_PROFILE	= "http://d.ienakama.com/";
var MAXPROJECTLISTROWS = 10;							//案件リストに表示される最大行数
var MAXTIPSLISTROWS = 10;								//TIPS広告リストに表示される最大行数
var MAXWORKLISTROWS = 5;								//作業記録リストに表示される最大行数
var MAXWORKPRIORITYCOUNT = 10;							//作業記録公開制限数
var PICTURE_WINDOW_WIDTH = 420;							//画像アップロードウィンドウの幅
var PICTURE_WINDOW_HEIGHT = 250;						//画像アップロードウィンドウの高さ
var GUIDE_WINDOW_WIDTH = 900;
var GUIDE_WINDOW_HEIGHT = 656;
var LOGIN_DEMO_WINDOW_WIDTH = 420;
var LOGIN_DEMO_WINDOW_HEIGHT = 320;

/**
 * イベント
 */
var EVT_COMMAND_START = "commandstart";			//ajax通信コマンド開始
var EVT_COMMAND_END = "commandend";				//ajax通信コマンド終了

var EVT_PROFILECHANGED = "profileChanged";		//プロフィール（単体）更新イベント
var EVT_PROFILESCHANGED = "profilesChanged";	//プロフィールリスト更新イベント
var EVT_PROFILESELECTED = "profileSelected";	//プロフィール選択イベント

var EVT_PROJECTSCHANGED	= "projectsChanged";	//案件リスト更新イベント
var EVT_PROJECTSELECTED	= "projectSelected";	//案件選択イベント
var EVT_PROJECTMODECHANGED		= "modechanged";		//モード変更

var EVT_WORKSCHANGED	= "worksChanged";	//作業記録リスト更新イベント
var EVT_WORKSELECTED	= "workSelected";	//作業記録選択イベント
var EVT_WORKMODECHANGED	= "modechanged";	//モード変更

var EVT_TIPSLOADED  = "tipsLoaded";		//TIPS広告読み込み完了イベント
var EVT_TIPSCHANGED = "tipsChanged";	//TIPS広告リスト更新イベント
var EVT_TIPSSELECTED = "tipsSelected";	//TIPS広告選択イベント
var EVT_TIPSCONTENTSLOADED = "tipsContentsLoaded";		//TIPS広告コンテンツ読み込み完了イベント
var EVT_TIPSCONTENTSELECTED = "tipsContentSelected";	//TIPS広告コンテント選択イベント
var EVT_TIPSCONTENTCHANGED = "tipsContentChanged";	//TIPS広告コンテントリスト更新イベント

/**
 * 画面モード
 */
var MODE_PROJECT_EDIT = "projectedit";
var MODE_PROJECT_MEMBER_MESSAGE = "membermessage";
var MODE_PROJECT_ADDMEMBER_FORM = "addmemberform";
var MODE_PROJECT_ADDMEMBER_CONFIRM = "addmemberconfirm";
var MODE_PROJECT_ADDMEMBER_CONFIRM_NEW = "addmemberconfirmnew";
var MODE_PROJECT_ADDMEMBER_COMPLETE = "addmembercomplete";

var MODE_WORK_EDIT = "workedit";

/**
 * クッキー名
 */
var COOKIE_LOGIN_DEMO_EMAIL = "demoem";		//デモ用メールアドレス
var COOKIE_LOGIN_DEMO_PASSWORD = "demopw";	//デモ用パスワード
var COOKIE_LINK_PID = "linkpid";	//作業記録->案件ページ遷移用

/**
 * テキスト
 */
var STR_PROJECT_ADDMEMBER_CONFIRM = "以下のメールアドレスにメンバー招待状をお送りしますがよろしいですか？";
var STR_PROJECT_ADDMEMBER_CONFIRM_NEW = "以下のメールアドレスは現在登録されておりません。<br />家仲間コムへの招待状と合わせてメンバー招待しますがよろしいですか？";

/**
 * 共通で利用できるユーティリティ関数
 */
function my_nl2br(str){
	var b = '<br />';
    return str.replace(/\r\n/ig,b).replace(/\r/ig,b).replace(/\n/ig,b);
	return str;
}

/**
 * アンエスケープされた改行タグのみを改行タグに戻します
 * @access public
 * @param String str
 * @return String
 */
function unescapeBR(str) {
	return str.replace(/(?:&lt;br \/&gt;|&lt;br&gt;)/ig, '<br />');
}

function getScrollXY() {
	var scrOfX = 0, scrOfY = 0;
	if( typeof( window.pageYOffset ) == 'number' ) {
		//Netscape compliant
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		//DOM compliant
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
	}
	return [ scrOfX, scrOfY ];
}


/**
 * 文字列を数値文字参照に変換
 * @access public
 * @param string s 文字列
 * @param digit d 桁数をそろえる場合の桁数。足りない部分は0で埋めます(オプション）
 */
function toNCR(){
	var s = arguments[0];
	var u = Math.pow(10, Number(arguments[1]));
    return s.replace(/.|\n/g, function(c){return "&#" + String(u+c.charCodeAt(0)).substr(1) + ";";});
}

/**
 * 番号をゼロフィル付きの文字列で返す
 * @access public
 * @param Number n 数字
 * @param Number d 欲しい桁数
 * @return String
 */
function n2zeroFill(n, d) {
	if (String(n).length > d || d == 1) return String(n);
	var s = String(Math.pow(10, d) + n);
	return s.substr(1, s.length);
}
	
/**
 * ienakamaToolBOXのメニュー画像の初期化
 * マウスオーバー、マウスアウトで画像が入れ替わるようにします。
 * @access public
 */
function initMenuImage() {
	var elems = $$("#navi-menu a img");
	for(var i=0; i<elems.length; i++) {
		var elem = elems[i];
		Event.observe(elem,"mouseover",function(evt){
			var elem = Event.element(evt);
			if (elem.src) elem.src = elem.src.replace(/normal/,"over");
		});
		Event.observe(elem,"mouseout",function(evt){
			var elem = Event.element(evt);
			if (elem.src) elem.src = elem.src.replace(/over/,"normal");
		});
	}
}

/**
 * 体験版用ログインアカウントウィンドウを開く
 * @access public
 * @param Object イベントオブジェクト
 */
this.openLoginDemoWindow = function(ref) {
	window.open(URLROOT+"login/demo/", "logindemo", "width="+LOGIN_DEMO_WINDOW_WIDTH+",height="+LOGIN_DEMO_WINDOW_HEIGHT);
}

/**
 * ガイドアニメーションウィンドウを開きます
 * @access public
 * @param String swf
 */
function openGuideAnimWindow(swf) {
	window.open(swf, "animation", "width="+GUIDE_WINDOW_WIDTH+",height="+GUIDE_WINDOW_HEIGHT);
}

/**
 * ブラウザ判定クラス
 * 発行元：http://www.quirksmode.org/js/detect.html
 */
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();


/**
 * 処理
 */

//SSL領域の場合は環境チェック
if (location.protocol == 'https:') {
	//クッキーが設定されていなければ警告ページへ
	if (!navigator.cookieEnabled) {
		document.location = URLROOT_HTTP + "alert/?cookie";
	}
	
	//ブラウザが動作環境以外であれば警告ページへ
	var brError = true;
	switch (BrowserDetect.browser) {
		case "Explorer":
			if (BrowserDetect.version >= 6) brError = false;
			break;
		case "Firefox":
			brError = false;
			break;
		case "Safari":
			if (BrowserDetect.version >= 412) brError = false;
			break;
		case "Chrome":
			brError = false;
			break;
	}
	if (brError) document.location = URLROOT_HTTP + "alert/?browser";
}