var common_lib = {
	announce :0,
	//=====================================================//
	// Ajax
	//=====================================================//
//	HOST: "",
	getHOST : function(){
		var path = location.pathname;
		if(path.match(/\/nanbu\//)!=null){
			return location.protocol + "//" + location.host + "/nanbu/order/ajax_host.php"
		}else{
			return location.protocol + "//" + location.host + "/order/ajax_host.php"
		}
	},
	ajaxGetData : function(parameter, complete, failure, exeption, asynchronous) {
		parameter = parameter.escapeHTML() + "&token=" + common_lib.getMyToken();
		var option = {
			method: 'get',
			parameters: parameter,
			asynchronous: asynchronous,
			onComplete : complete,
			onFailure : failure,
			onException : exeption
		};
		new Ajax.Request(this.getHOST(), option);
	},
	ajaxPostData : function(data, complete, failure, exeption, asynchronous) {
 		data = data + "&token=" + common_lib.getMyToken();
		var option = {
			method: 'post',
			postBody : data,
			asynchronous: asynchronous,
			onComplete : complete,
			onFailure : failure,
			onException : exeption
		};
		return new Ajax.Request(this.getHOST(), option);
	},
	ajaxUpdate : function(method, data, element, complete, failure, exeption){
 		data = data + "&token=" + common_lib.getMyToken();
 		var option = {
			method: method,
			onComplete : complete,
			onFailure : failure,
			onException : exeption
		};
		if(method.toUpperCase == "POST") {
			option.postBody = data;
		} else {
			option.parameters = data;
		}
		new Ajax.Updater({success:element}, this.getHOST(), option);
	},
	failure : function(){},
	exeption : function(){},
	//=====================================================//
	// ログアウト
	//=====================================================//
	logoutCheck : function() { 
		var parameter = "api=logout_check";
		common_lib.ajaxPostData(parameter, this.completeLogoutCheck.bindAsEventListener(this), this.failure, this.exeption,true);
	},
	completeLogoutCheck : function(request){
		var res = request.responseText;
		if(res.match(/[0-9]+/)){
			myLightWindow.activateWindow({
				href : "logoutMsgWin.php?kai=" + res,
				title: "",
				width:600,
				height:280
			});
			return;
		}
		location.href = "logout.php";
	},
	//=====================================================//
	// メソッド名： changeTxtEnabled
	// 引数：id - txtfieldのid
	//	   bool - Boolean
	// 戻り値：なし
	// 機能：テキストフィールドの使用／不使用の変更
	//=====================================================//
	changeTxtEnabled : function(id,bool){
		$(id).disabled = !bool;
		if($(id).disabled==true){
			$(id).style.backgroundColor = "#CCCCCC";
		}else{
			$(id).style.backgroundColor = "#FFFFFF";
			$(id).focus();
		}
	},
	//=====================================================//
	// メソッド名： getMyCookie
	// 引数：sKey - キー
	// 戻り値：値（該当無い場合-1）
	// 機能： クッキーから値を取得
	//=====================================================//
	getMyCookie : function(sKey) {
	    var i, index, arr;
	    arr = document.cookie.split(";");
	    for(i = 0; i < arr.length; i++) {
	        index = arr[i].indexOf("=");
	        if(arr[i].substring(0, index) == sKey || arr[i].substring(0, index) == " " + sKey)
	            return arr[i].substring(index + 1);
	    }
	    return -1;
	},
	//=====================================================//
	// メソッド名： getMyToken
	// 引数：なし
	// 戻り値：値（該当無い場合-1）
	// 機能：
	//=====================================================//
	getMyToken : function(sKey) {
		var path = location.pathname;
		if(path.match(/\/nanbu\//)!=null){
			return this.getMyCookie("PHPSESSID_NANBU");
		}else{
			return this.getMyCookie("PHPSESSID_TOHTO");
		}
	},
	//=====================================================//
	// メソッド名： isCookieDisabled
	// 引数：なし
	// 戻り値：boolean
	// 機能： クッキー無効検出
	//=====================================================//
	isCookieDisabled : function(){
		if (!navigator.cookieEnabled){
			return true;
		}
		//IEでnavigator.cookieEnabled が常に true になる対策
		var path = location.pathname;
		if(path.match(/\/nanbu\//)!=null){
			if(this.getMyCookie("PHPSESSID_NANBU")==-1){
				return false;
			}
		}else{
			if(this.getMyCookie("PHPSESSID_TOHTO")==-1){
				return false;
			}
		}
	    arr = document.cookie.split(";");
	    for(i = 0; i < arr.length; i++) {
	        if(this.trim(arr[i]).substring(0, 9) == "PHPSESSID"){
	            return false;
	        }
	    }
		return true;
	},
	//=====================================================//
	// メソッド名： setMapArray
	// 引数：data - key=val,key=val,key=val...
	// 戻り値： 連想配列
	// 機能：
	//=====================================================//
	setMapArray : function(data){
		var aRet = new Array();
		var aRow = data.split(",");
		for(var i = 0;i < aRow.length;i++){
			aCol = aRow[i].split("=");
			aRet[aCol[0]]= aCol[1].replace("\n","");
		}
		return aRet;
	},
	//=====================================================//
	// メソッド名： trim
	// 引数：str - 文字列
	// 戻り値： 文字列
	// 機能：トリム
	//=====================================================//
	trim :function(str){
		return str.replace(/^[\s　]+|[\s　]+$/g, "");
	},
	//=====================================================//
	// メソッド名：setUnselectable
	// 引数：elem - Element
	// 戻り値： なし
	// 機能： 要素を選択不可に設定する
	//=====================================================//
	setUnselectable : function(elem){
		elem.unselectable = "on";
		elem.tabIndex = -1;
		Element.setStyle(elem, {
			"-moz-user-select": "none",
			"-khtml-user-select": "none",
			"user-select": "none"
		});
	},
	//=====================================================//
	// メソッド名：isValidDate
	// 引数：text 日付文字列 /区切り
	// 戻り値： boolean
	// 機能： カレンダーに存在する日付かチェックする
	//=====================================================//
	isValidDate : function(text) {
	    if (text.length == 0 || text== "") {
	        return false;
	    }
	    var arrDate = text.split("/");
	    if(arrDate.length == 3) {
	        var date = new Date(Number(arrDate[0]) , Number(arrDate[1]) - 1 ,Number(arrDate[2]));
	        if(date.getFullYear() == arrDate[0] &&
	          (date.getMonth() == arrDate[1] - 1) &&
	           date.getDate() == arrDate[2]) {
	            return true;
	        }
	    }
	    return false;
	},
	//=====================================================//
	// メソッド名：chkZenHiragana
	// 引数：text ひらがな文字列
	// 戻り値： boolean
	// 機能： 全角ひらがな以外の文字列が使われていないかチェックする
	//=====================================================//
	chkZenHiragana : function(str) {
		if (str.match(/^[\u3040-\u309F]+$/)) {
		    return true;
		} else {
		    return false;
		}
	},
	//=====================================================//
	// BackScrollイベント処理
	//=====================================================//
	 doBackScroll : function() {
	    var pos = common_lib.getScrollPosition();
	    window.scrollTo(Math.max(Math.floor(pos.x / 2),0), Math.max(Math.floor(pos.y -(pos.y / 5)),0));
	    if (pos.x > 0 || pos.y > 0) {
	        window.setTimeout("common_lib.doBackScroll()", 5);
	        return false;
	    }
	},
	//=====================================================//
	// スクロール量を取得し、オブジェクトとして返す
	//=====================================================//
	getScrollPosition : function() {
	    var obj = new Object();
	    obj.x = document.body.scrollLeft || document.documentElement.scrollLeft;
	    obj.y = document.body.scrollTop || document.documentElement.scrollTop;
	    return obj;
	},
	//=====================================================//
	// 位取り
	//=====================================================//
	numberFormat : function(num){
		num = parseInt(num,10);
		num =	num.toString().replace(/([\d]+?)(?=(?:\d{3})+$)/g, function(t){ return t + ','; })
		return num;
	},
	//=====================================================//
	// 数値変換
	//=====================================================//
	toNumber : function(str){
		var ret = "";
		str = str.toString();
		for(var i=0;i < str.length;i++){
			if(str.charAt(i).match(/[0-9]+/)){
				ret = ret + str.charAt(i);
			}
		}
		if(ret!=""){
			ret = parseInt(ret,10);
		}
		return ret;
	},
	//=====================================================//
	// ウィンドウ座標
	//=====================================================//
	pagePosition : {
		x : null,
		y : null
	},
	pageDimensions : {
		height : null,
		width : null
	},
	windowSize : {
		height : null,
		width : null
	},
	overlay : {
		opacity : 0.7,
		image : '/img/lightwindow/black.png',
		presetImage : '/img/lightwindow/black-70.png',
		indicator : '/img/indicator.gif'
	},
	getScroll : function(){
		if(typeof(window.pageYOffset) == 'number') {
			this.pagePosition.x = window.pageXOffset;
			this.pagePosition.y = window.pageYOffset;
		} else if(document.body && (document.body.scrollLeft || document.body.scrollTop)) {
			this.pagePosition.x = document.body.scrollLeft;
			this.pagePosition.y = document.body.scrollTop;
		} else if(document.documentElement) {
			this.pagePosition.x = document.documentElement.scrollLeft;
			this.pagePosition.y = document.documentElement.scrollTop;
		}
	},
	getPageDimensions : function() {
		var xScroll, yScroll;
		if (window.innerHeight && window.scrollMaxY) {
			xScroll = document.body.scrollWidth;
			yScroll = window.innerHeight + window.scrollMaxY;
		} else if (document.body.scrollHeight > document.body.offsetHeight){
			xScroll = document.body.scrollWidth;
			yScroll = document.body.scrollHeight;
		} else {
			xScroll = document.body.offsetWidth;
			yScroll = document.body.offsetHeight;
		}

		var windowWidth, windowHeight;
		if (self.innerHeight) {
			this.windowSize.width = self.innerWidth;
			this.windowSize.height = self.innerHeight;
		} else if (document.documentElement && document.documentElement.clientHeight) {
			this.windowSize.width = document.documentElement.clientWidth;
			this.windowSize.height = document.documentElement.clientHeight;
		} else if (document.body) {
			this.windowSize.width = document.body.clientWidth;
			this.windowSize.height = document.body.clientHeight;
		}

		if(yScroll < windowHeight){
			this.pageDimensions.height = this.windowSize.height;
		} else {
			this.pageDimensions.height = yScroll;
		}

		if(xScroll < windowWidth){
			this.pageDimensions.width = this.windowSize.width;
		} else {
			this.pageDimensions.width = xScroll;
		}
	},
	//=====================================================//
	// モーダルレイヤー
	//=====================================================//
	initWaitOverlay : function() {
		this.getScroll();
		this.getPageDimensions();

		var img = new Image();
		img.src = this.overlay.indicator;

		var overlay = Element.extend(document.createElement('div'));
		overlay.setAttribute('id', 'wait_overlay');
		var elemImg = Element.extend(document.createElement('img'));
		elemImg.src = this.overlay.indicator;
		var mid = this.windowSize.height / 2 - 64;
		elemImg.style.margin = mid + "px";
		overlay.appendChild(elemImg);
		var body = document.getElementsByTagName('body')[0];
		body.appendChild(overlay);
		this.displayWaitOverlay("none");//"block" or "none"


	},
	setWaitOverlaySize : function(e){
		this.getScroll();
		this.getPageDimensions();
		if (Prototype.Browser.Gecko) {
			$("wait_overlay").setStyle({
				backgroundImage: 'url('+this.overlay.presetImage+')',
				backgroundRepeat: 'repeat',
				height: this.pageDimensions.height+'px',
				width: this.pageDimensions.width+'px',
				position : 'absolute',
				top : this.pagePosition.y + 'px',
				left : this.pagePosition.x + 'px'
			});
		} else {
			$("wait_overlay").setStyle({
				opacity: this.overlay.opacity,
				backgroundImage: 'url('+this.overlay.image+')',
				backgroundRepeat: 'repeat',
				height: this.pageDimensions.height+'px',
				width: this.pageDimensions.width+'px',
				position : 'absolute',
				top : this.pagePosition.y + 'px',
				left : this.pagePosition.x + 'px'
			});
		}
	},
	displayWaitOverlay : function(display) {
		this.setWaitOverlaySize();
		$('wait_overlay').style.display = display;
		if(display!="none"){
			Event.observe(window, 'resize', this.setWaitOverlaySize.bindAsEventListener(this), false);
		}else{
			Event.stopObserving(window, 'resize', this.setWaitOverlaySize.bindAsEventListener(this), false);
		}
	},
	//=====================================================//
	// メソッド名：getDocumentOffset
	// 引数：elem - element参照
	// 戻り値：VMPointインスタンス
	// 機能：document上のオフセット取得
	//=====================================================//
	getDocumentOffset : function(elem) {
		var oPos = new Array();
		oPos.x = elem.offsetLeft;
		oPos.y = elem.offsetTop;
		while(elem.offsetParent) {
			elem = elem.offsetParent;
		    oPos.x += elem.offsetLeft;
		    oPos.y += elem.offsetTop;
		}
		return oPos;
	 },
	 //=====================================================//
	 // メソッド名：getWindowOffset
	 // 引数：elem - element参照
	 // 戻り値：Pointインスタンス
	 // 機能：画面上のオフセット取得
	 //（docオフセットからスクロールを差し引いたオフセット）
	 //=====================================================//
	 getWindowOffset : function(elem){
	 	var oPos = new Array();
	  	var scrolllOffset = String(Position.realOffset(elem));
	  	var aScroll = scrolllOffset.split(",");
		oPos.x = oPos.x - aScroll[0];
		oPos.y = oPos.y - aScroll[1];
		return oPos;
	 },
	 //=====================================================//
	 // メソッド名：getOnMapOffset
	 // 引数：inst - VMapインスタンス参照
	 //  pointerX  -  Event.pointerX(e)
	 //  pointerY  -  Event.pointerY(e)
	 // 戻り値：Pointインスタンス
	 // 機能：地図上のオフセット取得
	 //=====================================================//
	 getOnMapOffset : function(inst,pointerX,pointerY){
	  	var out_point = new Array();
	  	var x = pointerX - out_point.x;
	  	var y = pointerY - out_point.y;
	  	return new VMPoint(x,y);
	 },
	 //=====================================================//
	 // メソッド名：getOnElemOffset
	 // 引数：elem - element参照
	 //  pointerX  -  Event.pointerX(e)
	 //  pointerY  -  Event.pointerY(e)
	 // 戻り値：Pointインスタンス
	 // 機能：イベントが発生したエレメント上のオフセット取得
	 //=====================================================//
	 getOnElemOffset : function(elem,pointerX,pointerY){
		var out_point = new Array();
	  	var x = pointerX - out_point.x;
	  	var y = pointerY - out_point.y;
	  	return new VMPoint(x,y);
	 }
}

//=====================================================//
// Time Limit Announce
//=====================================================//
Event.observe(window, 'load', function() {
	if(common_lib.announce>0){
		myLightWindow.activateWindow({
		href : "timeLimitMsgWin.php?n=" + common_lib.announce,
		title: "",
		width:600,
		height:280
		})
	};
}, false);

