/***********************************************************
 * 予約プロAPI
 * (c)AbilityConsultant.inc
 * 本プログラムは宿泊予約システム予約プロご利用者のみご利用可能です。
 * http://www.489pro.com/
 */
var isLoadedOptions = false;
function printf(){document.write(va_sprintf(printf.arguments));}function sprintf(){return va_sprintf(sprintf.arguments);}function va_sprintf(args){var ch;var value;var longflag;var ljust;var len,llen;var zpad;var p;var output;var format_index,arg_index;var argc,argv;var specin;var format;output='';format_index=0;arg_index=1;argv=args;argc=args.length;format=args[0];while(format_index<format.length){ch=format.substr(format_index++,1);if(ch !='%'||format_index==format.length){output+=ch;}else{ljust=len=zpad=longflag=0;llen=-1;p=format_index;specin=true;while(specin){ch=format.substr(format_index++,1);switch(ch){case '-':ljust=1;continue;case '0':if(len==0)zpad=1;case '1':case '2':case '3':case '4':case '5':case '6':case '7':case '8':case '9':len=len * 10+parseInt(ch);continue;case '.':llen=len;len=0;continue;case '*':if(arg_index<argc)len=parseInt(argv[arg_index++]);elselen=0;if(len<0){ljust=1;len=-len;}continue;case 'l':longflag=1;continue;case 'u':case 'U':if(arg_index<argc){if(longflag){value=parseInt(argv[arg_index++]);}else{value=parseInt(argv[arg_index++]);value %=4294967296;}}else{value=0;}output+=_dopr_fmtnum(value,10,0,ljust,len,zpad);break;case 'o':case 'O':if(arg_index<argc){if(longflag){value=parseInt(argv[arg_index++]);}else{value=parseInt(argv[arg_index++]);value %=4294967296;}}else{value=0;}output+=_dopr_fmtnum(value,8,0,ljust,len,zpad);break;case 'd':case 'D':if(arg_index<argc){if(longflag){value=parseInt(argv[arg_index++]);}else{value=parseInt(argv[arg_index++]);value %=4294967296;}}else{value=0;}output+=_dopr_fmtnum(value,10,1,ljust,len,zpad);break;case 'x':if(arg_index<argc){if(longflag){value=parseInt(argv[arg_index++]);}else{value=parseInt(argv[arg_index++]);value %=4294967296;}}else{value=0;}output+=_dopr_fmtnum(value,16,0,ljust,len,zpad);break;case 'X':if(arg_index<argc){if(longflag){value=parseInt(argv[arg_index++]);}else{value=parseInt(argv[arg_index++]);value %=4294967296;}}else{value=0;}output+=_dopr_fmtnum(value,-16,0,ljust,len,zpad);break;case 's':if(arg_index<argc){value=argv[arg_index++];if(value==null)value="(null)";elsevalue=value+"";}else{value='';}output+=_dopr_fmtstr(value,ljust,len,llen);break;case 'c':if(arg_index<argc){value=parseInt(argv[arg_index++]);}else{value=0;}output+=_dopr_fromCharCode(value);break;case '%':output+='%';break;default:if(p+1==format_index){output+='%';output+=ch;}else{}break;}specin=false;}}}return output;}function _dopr_fmtnum(value,base,dosign,ljust,len,zpad){var signvalue='';var uvalue;var place=0;var padlen;var caps=0;var convert;var output;convert='';output='';if(value>=0)uvalue=value;elseuvalue=(value % 4294967296)+4294967296;if(dosign){if(value<0){signvalue='-';uvalue=-value;}}if(base<0){caps=1;base=-base;}if(uvalue==0){convert='0';place=1;}else{while(uvalue){if(caps)convert='0123456789ABCDEF'.substr(uvalue % base,1)+convert;elseconvert='0123456789abcdef'.substr(uvalue % base,1)+convert;uvalue=parseInt(uvalue/base);place++;}}padlen=len - place;if(padlen<0) padlen=0;if(ljust) padlen=-padlen;if(zpad && padlen>0){if(signvalue){output+=signvalue;--padlen;signvalue=0;}while(padlen>0){output+='0';--padlen;}}while(padlen>0){output+=' ';--padlen;}if(signvalue){output+=signvalue;}output+=convert;while(padlen<0){output+=' ';++padlen;}return output;}function _dopr_fmtstr(value,ljust,field_len,llen){var padlen;var slen,truncstr=0;var output='';slen=value.length;if(llen !=-1){var rlen;rlen=field_len;if(slen>rlen){truncstr=1;slen=rlen;}field_len=llen;}padlen=field_len - slen;if(padlen<0)padlen=0;if(ljust)padlen=-padlen;while(padlen>0){output+=' ';--padlen;}if(truncstr){output+=value.substr(0,slen);}else{output+=value;}while(padlen<0){output+=' ';++padlen;}return output;}var _dopr_fromCharCode_chars=null;function _dopr_fromCharCode(code){if(String.fromCharCode)return String.fromCharCode(code);if(!_dopr_fromCharCode_chars)_dopr_fromCharCode_chars="\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020"+"\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037 !\"#$%&"+"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghi"+"jklmnopqrstuvwxyz{|}~\177\200\201\202\203\204\205\206\207\210\211"+"\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232"+"\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253"+"\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274"+"\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315"+"\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336"+"\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357"+"\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377";if(code<0)return "";if(code<=255)return _dopr_fromCharCode_chars.substr(code,1);return eval(sprintf("\"\\u%04x\"",code));}
if(typeof(yproAPI) == 'undefined') var yproAPI = {};

yproAPI.set = function (json) {
	yproAPI.setting = {};

	if(typeof(json) == 'object') {
		yproAPI.setting = json;
	} else {
		yproAPI.setting.hotels = json;
	}

	// 予約プロ施設判別	※必須
	if(typeof(yproAPI.setting.hotels) == 'undefined' || yproAPI.setting.hotels == '') {
		throw new Error(0,'予約プロ施設IDが見つかりませんでした');
	}
	var Querys = '?id='+yproAPI.setting.hotels;
	// オプション関連の設定
	if(typeof(yproAPI.setting.order) != 'undefined') {
		Querys = (yproAPI.setting.order == true) ? Querys += '&order=1' : Querys += '&order=0';
	}
	if(typeof(yproAPI.setting.num) != 'undefined') {
		Querys = (yproAPI.setting.num > 0) ? Querys += '&num='+yproAPI.setting.num : Querys += '';
	}
	if(typeof(yproAPI.setting.display) != 'undefined') {
		Querys = (yproAPI.setting.display == 'gp') ? Querys += '&display=gp' : Querys += '';
		Querys = (yproAPI.setting.display == 'gpList') ? Querys += '&display=gp_list' : Querys += '';
		Querys = (yproAPI.setting.display == 'Category') ? Querys += '&display=Category' : Querys += '';
	}
	if(typeof(yproAPI.setting.select) != 'undefined') {
		Querys = (yproAPI.setting.select != '') ? Querys += '&select='+yproAPI.setting.select : Querys += '';
	}
	if(typeof(yproAPI.setting.lang) != 'undefined') {
		Querys = (yproAPI.setting.lang == 'eng') ? Querys += '&lng=en' : Querys += '&lng=ja';
	} else {
		Querys += '&lng=ja'
	}
	document.write('<script type="text/javascript" src="http://www.489pro.com/test/api/ypro/v2/ypro_api.asp'+Querys+'" charset="utf-8"></script>')
};


yproAPI.isMyObject = function () {
	 return (typeof(yproObject) == 'undefined') ? false : true;
};

yproAPI.getImage = function (data,obj) {
	if(typeof(data) == 'undefined') return false;
	if(typeof(obj) == 'undefined') {
		var obj = {};
	}

	var options = '';
	// n枚目の画像を選択
	if(data.p_image instanceof Array) {
		if(typeof(obj.img) != 'undefined') {
			var image = (parseInt(obj.img) > 0 && typeof(data.p_image[(parseInt(obj.img) - 1)]) != 'undefined' ) ? data.p_image[(parseInt(obj.img) - 1)] : (typeof(data.p_image[0]) != 'undefined') ? data.p_image[0] : '';
			if(typeof(obj.type) != 'undefined') {
				if(obj.type == 'small') {
					image = (parseInt(obj.img) > 0) ? data.p_image_s[(parseInt(obj.img) - 1)] : data.p_image_s[0];
				}
			}
		} else {
			var image = (typeof(data.p_image[0]) != 'undefined') ? data.p_image[0] : '';
		}
	} else {
		var image = (typeof(data.p_image) != 'undefined') ? data.p_image : '';
		if(typeof(obj.type) != 'undefined') {
			(obj.type == 'small') ? image = data.p_image_s : image;
		}
	}
	
	if(typeof(obj) == 'object') {
		options += (typeof(obj.width) != 'undefined') ? 'width="'+obj.width+'"':'';
		options += (typeof(obj.height) != 'undefined') ? 'height="'+obj.height+'"':'';
		options += (typeof(obj.border) != 'undefined') ? 'border="'+obj.border+'"':'';

	}

	if(this.isMyObject()) return (image != "") ? '<img src="'+image+'" '+options+' />' :  '';
};

yproAPI.getUrl = function (data) {
	if(this.isMyObject()) {
		var common_url = 'http://www.489pro.com/asp/489/menu.asp?id='+this.setting.hotels;
		if(typeof(yproAPI.setting.display) != 'undefined') {
			var url = (yproAPI.setting.display == 'gp' || yproAPI.setting.display == 'Category') ? common_url + '&gp=YES&ty=lim&group=' : common_url+'&ty=lim&plan=';
		}
		else
		{
			var url = common_url+'&ty=lim&plan=';
		}
		return (data.p_id != "") ? url + data.p_id : '';
	}
};

yproAPI.getPlanId = function (data) {
	if(this.isMyObject()) return (data.p_id != "") ? data.p_id:'';
};

yproAPI.getPlanName = function (data) {
	if(this.isMyObject()) return (data.p_name != "") ? data.p_name:'';
};

yproAPI.getPlanCopy = function (data) {
	if(this.isMyObject()) return (data.p_copy != "") ? data.p_copy:'';
};

yproAPI.getPlanText = function (data,max) {
	var text = new String(data.p_description);
	text = text.replace(/(<.*?>)|(\r\n)|(\r)/gi,"");
	if(max != "" && max > 0) {
		if(text.length > max) {
			text = text.substring(0,(text.length - (text.length - max)));
			text += '…';
		}
	}
	if(this.isMyObject()) return (text != "") ? text:'';
};

yproAPI.getPrice = function (data) {
	if(this.isMyObject()) return (data.p_price != "") ? data.p_price : "";
};

yproAPI.getRoomId = function (data) {
	if(this.isMyObject()) return (data.r_id != "") ? data.r_id : '';
};

yproAPI.getRoomName = function (data) {
	if(this.isMyObject()) return (data.r_name != "") ? data.r_name : '';
};

yproAPI.addHtml = function (callback) {
	if(this.isMyObject()) {
		for(var nCnt=0; nCnt<yproObject.plan.length; nCnt++) {
			$yproCB(callback(yproObject.plan[nCnt]));
		}
	}
};

yproAPI.getDate = function (data,format) {
	format = format.replace("Y","%s");
	format = format.replace("M","%s");
	format = format.replace("D","%s");
	format = format.replace("Y","%s");
	format = format.replace("M","%s");
	format = format.replace("D","%s");

	var objSd = (data.p_s_date != "") ? new Date(data.p_s_date) : "";
	var objEd = (data.p_e_date != "") ? new Date(data.p_e_date) : "";
	return sprintf(format,objSd.getFullYear(),objSd.getMonth()+1,objSd.getDate(),objEd.getFullYear(),objEd.getMonth()+1,objEd.getDate());

};

yproAPI.getCreation = function (data,compere) {
	if(this.isMyObject()) var pub_date = (data.pub_date != "") ? new Date(data.pub_date) : "";
	if(compere != "" && pub_date != "") {
		compere = (typeof(compere) == 'date') ? compere : new Date(compere);
		var diff = compere - pub_date;
		var diffDay = Math.floor(diff / 86400000);
		return diffDay;
	} else {
		return pub_date;
	}
};

yproAPI.addHtml.Room = function (callback) {
	if(this.isMyObject()) {
		for(var nCnt=0; nCnt<yproObject.room.length; nCnt++) {
			$yproCB(callback(yproObject.room[nCnt]));
		}
	}
};
// callback method
function $yproCB(fn) {
	return (typeof(fn) == 'function') ? fn : Function ('a','return '+fn);
}

yproAPI.onload = function(fnc){
	var ua = navigator.userAgent.toLowerCase();
	var saf_v = (ua.match(/.*version\/(\d+)\.(\d+)/)||[]);
	var isUsableDCL = ( /firefox|chrome/.test(ua)|| parseFloat((ua.match(/.*opera[\/\s]([\d.]+)/)||[])[1])>=9 || (/safari/.test(ua)&&parseInt(saf_v[1]+saf_v[2]) >= 31));
	if(/*@cc_on!@*/false) {
		document.onreadystatechange = function(){
			if(document.readyState=="complete" || document.readyState=="loaded") fnc();
		}
	} else if(isUsableDCL) {
		document.addEventListener('DOMContentLoaded',fnc,false);
	} else if(window.addEventListener) {
		window.addEventListener('load',fnc,false);
	} else {
		window.onload = fnc;
	}
};

//==========================================================
// APIオプション関連
yproAPI.CreateOptions = function (obj) {
	isLoadedOptions = false;
	if(typeof(obj.hotels) == undefined) {
		return false;
	}
	var Querys = "?yado_id="+obj.hotels;
	document.write('<script type="text/javascript" src="http://www.489pro.com/test/api/ypro/v2/ypro_options.asp'+Querys+'" charset="utf-8"></script>')
};
// 部屋のプルダウンの作成
yproAPI.CreateRoomForm = function (argSetting) {
	var tmpHtml = '';
	for(var nCnt=0; nCnt<ypro.options.room.length; nCnt++) {
		var data = ypro.options.room[nCnt];
		tmpHtml += '<option value="'+data.r_id+'">'+data.r_name+'</option>';
	}
	document.getElementById(argSetting.id).innerHTML = tmpHtml;
};
//==========================================================
// 組合モジュールの読み込み
yproAPI.ModKumiai = function (obj) {
	if(typeof(obj.kid) == 'undefined') {
		return false;
	}
	var q = "?kid="+obj.kid;
	document.write('<script type="text/javascript" src="http://www.489pro.com/test/api/ypro/v2/ypro_kumi.asp'+q+'" charset="utf-8"></script>')
};
yproAPI.CreateKumiRoomForm = function (argSetting) {
	var tmpHtml = '';
	if(typeof(argSetting.hotel) == 'undefined' || argSetting.hotel == '') {
		document.getElementById(argSetting.id).innerHTML = '';
		return false;
	}
	var select = ypro.kumi[argSetting.hotel].room;
	for(var nCnt=0; nCnt<select.length; nCnt++) {
		var data = select[nCnt];
		tmpHtml += '<option value="'+data.r_id+'">'+data.r_name+'</option>';
	}
	document.getElementById(argSetting.id).innerHTML = tmpHtml;
};
yproAPI.CreateKumiPlanForm = function (argSetting) {
	var tmpHtml = '';
	if(typeof(argSetting.hotel) == 'undefined' || argSetting.hotel == '') {
		document.getElementById(argSetting.id).innerHTML = '';
		return false;
	}
	var select = ypro.kumi[argSetting.hotel].plan;
	for(var nCnt=0; nCnt<select.length; nCnt++) {
		var data = select[nCnt];
		tmpHtml += '<option value="'+data.p_id+'">'+data.p_name+'</option>';
	}
	document.getElementById(argSetting.id).innerHTML = tmpHtml;
};
