if (typeof(BB) == 'undefined') {
	BB = new Object();
}

;(function(BB){
	BB.makeMonthlyDate = function (aDay){
		var mDay = new Object();
		mDay.openRoomNum = aDay.d1;
		mDay.paidRoomNum = aDay.d2;
		mDay.unpaidRoomNum = aDay.d3;
		mDay.price = aDay.d4;
		mDay.reservedRoomNum = aDay.d5;
		mDay.availableRoomNum = aDay.d1-aDay.d2-aDay.d3-aDay.d5;
		return mDay;
	}
	
	BB.makeDatePicker = function (id, isFromTomorrow){
		var aDay = null;
		if (isFromTomorrow) {
			var aDay = new Date();
			aDay.setDate(aDay.getDate() + 1);	//set default to tomorrow
		}
		$(id).datepicker({
						  dayNames: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
						  ,dayNamesMin: ['日', '一', '二', '三', '四', '五', '六']
						  ,monthNames: ['一月','二月','三月', '四月', '五月', '六月','七月','八月','九月','十月','十一月','十二月']
						  ,nextText: '下個月'
						  ,prevText: '上個月'
						  ,currentText: '今天'
						  , closeText: '關閉' 
						  ,dateFormat: 'yy-m-dd'
						  ,mandatory: true
						  ,constrainInput: true
						  ,yearRange: '-0:+5'
						  ,defaultDate: aDay
						  ,minDate: aDay
						  ,showOtherMonths: true
						  } );
	}
	
	BB.clearInputFile = function (id){
		//clear input file field
		if ($.browser['msie']){
			$(id).select();
			document.execCommand('Delete');								
			var v = $('<div>').append( $(id).eq(0).clone() ).html();
			$(id).replaceWith(v);
		}
		else {
			$(id).val("");
		}
	}

	BB.showWarningConfirm = function(msgTitle, msgContent, str_y, str_n, cbFn_yes, cbFn_no) {
		$.blockUI({ message:'<div class="warningDiv"><h1>'+msgTitle+'</h1><p>'+msgContent+'</p><button id="BBWarningBtnXD9_y">'+str_y+'</button><button id="BBWarningBtnXD9_n">'+str_n+'</button></div>'})
		var onDo = function() {
					var fn = $(this).data('fn')
					if (null != fn) { fn(); }
					$.unblockUI();
		}
		
		$('#BBWarningBtnXD9_y').data('fn', cbFn_yes);
		$('#BBWarningBtnXD9_n').data('fn', cbFn_no);
		$('#BBWarningBtnXD9_y').click(onDo);
		$('#BBWarningBtnXD9_n').click(onDo);
	}	
	
	BB.showMsg = function(msg, delay){
		$.blockUI({
			message: msg, 
		    overlayCSS:  {  
				backgroundColor:'#000',
				opacity:        '0.0'  
			}, 
			css: {
			border: 'none', 
			padding: '15px', 
			backgroundColor: '#000', 
			'-webkit-border-radius': '10px', 
			'-moz-border-radius': '10px', 
			opacity: '.6', 
			color: '#fff' 
		} }); 
		
		setTimeout($.unblockUI, delay);
		$('.blockOverlay').click($.unblockUI);
		
	}
	
	BB.showBusy = function(){		
		$.blockUI({
			message: '處理中請稍候', 
		    overlayCSS:  {  
				backgroundColor:'#000',
				opacity:        '0.0'  
			}, 
			css: { 
			border: 'none', 
			padding: '15px', 
			backgroundColor: '#000', 
			'-webkit-border-radius': '10px', 
			'-moz-border-radius': '10px', 
			opacity: '.6', 
			color: '#fff' 
		} }); 
	}

	BB.stopBusy = function(){
		 $.unblockUI();
	}
	
	BB.toSubmitForm = function(formId, actionUrl, afterFunc, isUpdateForm, successMsg, errorMsg){
		BB.showBusy();
		$(formId).attr({action:actionUrl});
		$(formId).ajaxSubmit({
			type: 'post',
			error: function(XMLHttpRequest, statusTex) {
				if (null != afterFunc)
					afterFunc();
				if (null == errorMsg)
					errorMsg = "有些資料不正確，麻煩請更改。";
				if (false != isUpdateForm)
					$(formId).replaceWith(XMLHttpRequest.responseText);
				BB.showMsg(errorMsg, 1500);
            }, 
			success: function(responseText, statusText){
				if (null != afterFunc)
					afterFunc();
				if (null == successMsg)
					successMsg = "處理完畢";
				if (false != isUpdateForm)
					$(formId).replaceWith(responseText);
				BB.showMsg(successMsg, 600);
			}
		});
	}
	
	BB.checkCookie = function(keys) {
		var result = true;
		var len = keys.length;
		for (var i=0; i<len; i++) {
			if (null == $.cookie(keys[i])) {
				result = false;
				break;
			}
		}
		return result;
	}
		
	BB.addOption = function(seleEl, text, value, isSelected) {
		var objOptionM = seleEl.appendChild(document.createElement("option"));
		objOptionM.text = text; 
		objOptionM.value = value;
		objOptionM.selected = isSelected;
	}
	
	BB.buildNumOptions = function(seleEl, from, to, interval, defaultSel){
		if (from < to){
			for (var i=from; i<=to; i++){
				BB.addOption(seleEl, i, i, (i==defaultSel));
			}
		}	
	}	

	BB.buildNumOptions2 = function(seleId, from, to, interval, defaultSel){
		var seleEl = document.createElement("select");
		$(seleEl).attr('id', seleId);
		if (from < to){
			for (var i=from; i<=to; i++){
				BB.addOption(seleEl, i, i, (i==defaultSel));
			}
		}
		return seleEl;
	}		
	
	BB.formatDate = function(oDate){
		return oDate.getFullYear() + '-' + (oDate.getMonth()+1) + "-" + oDate.getDate();
	}
	
	BB.formatDateTime = function(oDate){
		return oDate.getFullYear() + '-' + (oDate.getMonth()+1) + "-" + oDate.getDate() + ' ' + oDate.getHours() + ':' + oDate.getMinutes();
	}
	
	BB.SQLDateToJsDate = function(sqlDateTimeStr) {
		   try {
				//sql date format "yyyy-mm-dd 12:00:00" to JS date object
				var sqlDateStr = sqlDateTimeStr.substr(0,10);
				var tokenArr = sqlDateStr.split('-');       		
				var timeTokenArr = [0,0,0];
				if (sqlDateTimeStr.length >= 16)
				{
					var sqlTimeStr = sqlDateTimeStr.substr(11,sqlDateTimeStr.length);
					timeTokenArr = sqlTimeStr.split(':');
				}
				return new Date(tokenArr[0], tokenArr[1]-1, tokenArr[2], timeTokenArr[0], timeTokenArr[1], timeTokenArr[2]);
		   }
		   catch(e) { return null; }      
	}
	
	BB.clickEl = function (el) {
		if (document.createEvent)
		{
			var evObj = document.createEvent('MouseEvents')
			evObj.initEvent( 'click', true, false );
			el.dispatchEvent(evObj);
		}
		else if (document.createEventObject)
		{
			el.fireEvent('onclick');
		}		
	}
	
	BB.getOrderStatusArr = function(){
		return new Array('無狀態', '未入帳', '已入帳', '保留中', '已入住', '已取消');
	}

	BB.getOrderStatusStr = function(statusCode){
		var arr = BB.getOrderStatusArr();
		return arr[statusCode];
	}
	BB.getOrderStatus = BB.getOrderStatusStr; //old function name
	
	BB.chkOrderToCancel = function(oldId){
		var obj = null;
		if (oldId == 1) {
			obj = {success:false, msg:'目前訂單狀態是【'+BB.getOrderStatusStr(1)+'】，確定刪除訂單嗎?'}
		}else if (oldId == 5) { 
			obj = {success:false, msg:'目前訂單狀態已經是【'+BB.getOrderStatusStr(oldId)+'】，你確定要在強制重設訂單一次嗎?' }
		}
		else {
			obj = {success:false, msg:'目前訂單狀態是【'+BB.getOrderStatusStr(oldId)+'】，客戶已付款，確定刪除訂單嗎? (請執行退款作業)' }
		}
		return obj;
	}

	BB.chkOrderToCheckin = function(oldId){
		var obj = null;
		if (oldId == 2) {
			obj = {success:true, msg:''}
		}else if (oldId == 4) { 
			obj = {success:false, msg:'目前訂單狀態已經是【'+BB.getOrderStatusStr(oldId)+'】，你確定要在強制重設訂單一次嗎?' }
		}
		else { //如果原狀態不是已入帳
			obj = {success:false, msg:'目前訂單狀態是【'+BB.getOrderStatusStr(oldId)+'】，不是【'+BB.getOrderStatusStr(2)+'】，你確定要強制把訂單狀態轉換成【'+BB.getOrderStatusStr(4)+'】嗎?' }
		}
		return obj;
	}

	//Check Payment////////////////////////////////////////////
	BB.getPayments = function() {
		return {'NONE':'未決定', 'CCARD':'信用卡','VISA':'Visa','MASTERCARD':'Master Card','JCB':'JCB','ATM':'ATM虛擬帳號轉帳','WEBATM':'WebATM','CASH':'現金','ON_DESK':'臨櫃處理/其他','IBON':'7-11 ibon','ECOIN':'玉山eCoin','CSTORE':'便利商店代收'};
	}
	BB.isOnDesk = function(payment){
		return ('ON_DESK' == payment.toUpperCase());
	}
	BB.isCash = function(payment){
		return ('CASH' == payment.toUpperCase());
	}
	BB.isATM = function(payment){
		return ('ATM' == payment.toUpperCase());
	}
	BB.isCreaditCard = function(payment){
		payment = payment.toUpperCase();
		return ('ATM' == payment 
				|| 'MASTERCARD' == payment
				|| 'JCB' == payment);
	}	
	
})(BB)