/*
* rakutenTr_domesticAirPackageSearch.js
*  @namespace
*    rtl.domesticAirPackage.Search
*
*  @require
*    jquery.1.2.6.js
*    rakutenTr_commons.js
*    rakutenTr_commonsDP.js
*    rakutenTr_domesticAirPackageMaster.js
*
*
*/
if (!rtl) var rtl = {};
if (!rtl.domesticAirPackage) rtl.domesticAirPackage = {};
var getHanbaiEndDate = function(){return {};};
(function($) {
rtl.domesticAirPackage.Search = function(o) {
this.init(o);
};
rtl.domesticAirPackage.Search.prototype = {
/*
* init search form
*/
init : function( o ){
this.o = $.extend( true, {}, {
id : {
root : "domesticAirPackageSearchForm",
depDateText : "depDateText",
depYear : "depYear",
depMonth : "depMonth",
depDate : "depDate",
depCalendar : "depCalendar",
retDateText : "retDateText",
retYear : "retYear",
retMonth : "retMonth",
retDate : "retDate",
retCalendar : "retCalendar",
checkInYear : "checkInYear",
checkInMonth : "checkInMonth",
checkInDate : "checkInDate",
checkInCalendar : "checkInCalendar",
checkInDisp : "checkInDisp",
checkOutYear : "checkOutYear",
checkOutMonth : "checkOutMonth",
checkOutDate : "checkOutDate",
checkOutCalendar : "checkOutCalendar",
checkOutDisp : "checkOutDisp",
deptCode : "deptCode",
deplCode : "deplCode",
rettCode : "rettCode",
retlCode : "retlCode",
pref : "pref",
area : "area",
adultNum : "suOtona",
highPreNum : "suSyogakkouKougakunen",
lowPreNum : "suSyogakkouTeigakunen",
infrantMFNum : "suYouziSyokuziFutonTuki",
infrantMNum : "suYouziSyokuziNomi",
infrantFNum : "suYouziFutonNomi",
infrantNum : "suYouziSyokuziFutonFuyou",
babyNum : "suNyuYouzi",
roomNum : "roomNum",
heyaNum : "suTomariHeya",//検索結果画面で部屋数を指定する識別子
narrowCompany : "narrowCompany",
narrowPrefecture : "narrowPrefecture",
narrowLoosePrefecture : "narrowLoosePrefecture",
searchExplainForAirPackage : "searchExplainForAirPackage",
pattern : "pattern",
isTightPrefecture : "isTightPrefecture",
f_date_in_DP : "f_date_in_DP",
f_date_out_DP : "f_date_in_DP"
},
areaSelector: {
active : false,
selector : {
middle : "areaSelectorMiddleDP",
small : "areaSelectorSmallDP"
},
list : {
middle : "areaListPref",
small : "areaListRegion"
}
},
defaultPropertySuffix : "Property",
name : {
narrowCompany : "narrowCompany"
},
switchCondition : {
switchCondition : "switchConditionChild",
switchConditionMember : "switchConditionMemberChild"
},
switchConditionPopup : {
childTotalDP : "childBoxDP",
closeChildBoxDP : "childBoxDP",
closePrtlBk :  "prtlBk"
},
ignore : {},
action : {
ana : "http://package.travel.rakuten.co.jp/front/app/s/gfs100/direction2",
jal : "http://dp.travel.rakuten.co.jp/jal_frt/search/hotelMap"
},
changeAction : true,
preference:"ana",
defaults : {},
init : true,
salesPeriod : {
ana : "2012/11/30",
jal : "2012/10/31"
},
periodFromDeparture : {
ana : true,
jal : true
},
maxHeadCount : 6,
maxBabyHeadCount : 2,
offsetDate : {
ana : 3,
jal : 3
},
buffer : {},
defaultOffsetDate : {
ana : 3,
jal : 3
},
headAirport : {
ana : {
deplCode : "OKA",
rettCode : "OKA"
},
jal : {
deplCode : "",
rettCode : ""
}
},
intervalDate : 1,
narrowCompany : false,
narrowPrefecture : false,
narrowLoosePrefecture : false,
isTightPrefecture : false,
CACHE_AIR_PACKAGE_HISTORY : "CACHE_AIR_PACKAGE_HISTORY",
isNew : false,
updateFuncs : {
depDateText : function(){}
, retDateText : function(){}
, checkInCalendar : function(){}
, checkOutCalendar : function(){}
, checkInDisp : function(){}
, checkOutDisp : function(){}
}
}, o, true);
o = this.o;
o.m = $.extend(true,{},rtm.domesticAirPackage,true);
o.interval = o.intervalDate * 86400000;
var k = null, id;
var ids = o.id;
var dps = o.defaultPropertySuffix;
var dp = [];
var r = $("#" + ids.root);
o.e = {
root : r
};
for (k in ids) {
if (k === "root") continue;
id = ids[k];
o.e[k] = r.find("#" + id);
if(!o.e[k].length) o.e[k] = $("<select></select>").attr("id",id).css("display","none");
dp = (dps) ? r.find("#"+id+dps) : [];
if(dp.length && dp.val()) o.defaults[k] = dp.val();
o.buffer[k] = o.e[k].val();
}
var names = o.name;
o.en = {};
for (k in names) {
o.en[k] = $("input[name='"+names[k]+"']");
}
var cah = r.find("#"+o.CACHE_AIR_PACKAGE_HISTORY);
if(cah.length&&cah.val()) {
var cac = cah.val().split("-");
o.defaults.deptCode = cac[0];
o.defaults.deplCode = cac[1];
o.defaults.rettCode = cac[2];
o.defaults.retlCode = cac[3];
}
if(cah.length){
$(document.body).bind("click",function(){
var v = o.e.deptCode.val()+"-"+o.e.deplCode.val()+"-"+o.e.rettCode.val()+"-"+o.e.retlCode.val();
cah.val(v);
});
}
/**
* Initialize Section
*/
this.initNarrowCompany();
this.narrowPrefecture();
this.initOffsetDate();
this.initSalesPeriod();
this.initHeadCount();
if(this.o.isNew) {
this.initDepDateNew();
this.initRetDateNew();
this.initCheckInDateNew();
this.initCheckOutDateNew();
this.initChkInFocusDisp();
this.initChkOutFocusDisp();
this.initPrefNew();
this.initSwitchConditionNew();
this.setDefaultsNew();
if(this.o.narrowPrefecture){
this.initPrefForPref();
this.initAreaForPref();
this.initDeplCodeForPref();
this.initDeptCodeForPref();
} else if(this.o.narrowLoosePrefecture){
this.initDeptCodeForLoosePref();
this.initDeplCodeForLoosePref();
this.initPref();
this.initArea();
} else {
this.initDeptCode();
this.initDeplCode();
this.initPref();
this.initArea();
}
this.initRettCode();
this.initRetlCode();
this.initSwitchCondition();
this.initCalendar();
} else {
this.initDepDate();
this.initRetDate();
this.initCheckInDate();
this.initCheckOutDate();
if(this.o.narrowPrefecture){
this.initPrefForPref();
this.initAreaForPref();
this.initDeplCodeForPref();
this.initDeptCodeForPref();
} else if(this.o.narrowLoosePrefecture){
this.initDeptCodeForLoosePref();
this.initDeplCodeForLoosePref();
this.initPref();
this.initArea();
} else {
this.initDeptCode();
this.initDeplCode();
this.initPref();
this.initArea();
}
this.initRettCode();
this.initRetlCode();
this.initSwitchCondition();
this.initCalendar();
this.setDefaults();
}
},
/*
* init head count select box
*/
initHeadCount : function(){
var o = this.o;
var that = this;
var mhc = o.maxHeadCount;
var mbhc = o.maxBabyHeadCount;
var an = o.e.adultNum;
var i;
var children = $([
o.e.adultNum[0],
o.e.highPreNum[0],
o.e.lowPreNum[0],
o.e.infrantMFNum[0],
o.e.infrantMNum[0],
o.e.infrantFNum[0],
o.e.infrantNum[0]
]);
children.bind("change.daps",function(){
var oe;
var sum = 0;
for(i=0;i<children.length;i++){
sum += (children[i].value - 0);
}
var max = mhc - sum;
var min = 0;
for(i=0;i<children.length;i++){
oe = children[i];
min = 0;
if(oe===an[0]) min = 1;
that.createNumOptions(min, (oe.value - 0) + max, $(children[i]), children[i].value);
}
});
an.bind("change.daps",function(){
var max = an.val() - 0;
if(mbhc < max) max = mbhc;
that.createNumOptions(0, max, o.e.babyNum, o.e.babyNum.val());
}).trigger("change.daps");
} ,
/*
* init salling period
*/
initSalesPeriod : function(){
var o = this.o;
var sp = o.salesPeriod;
o.spDep = {};
o.spRet = {};
for(c in sp) {
var spd = new Date(sp[c]);
var spDep = new Date();
(function(spd,spDep){
if(o.periodFromDeparture[c]) {
spDep.setTime(spd.getTime());
spd.setTime(spd.getTime() + (86400000*13));
} else {
spDep.setTime(spd.getTime() - o.interval);
}
o.spDep[c] = spDep;
o.spRet[c] = spd;
})(spd,spDep);
}
} ,
/*
* init offset date
*/
initOffsetDate : function(){
var o = this.o;
var od = o.offsetDate;
o.offset = {};
for(c in od){
o.offset[c] = od[c] * 86400000;
}
var dod = o.defaultOffsetDate;
o.defaultOffset = {};
for(c in dod){
o.defaultOffset[c] = dod[c] * 86400000;
}
} ,
/*
* init narrow company
*/
initNarrowCompany : function(){
var o = this.o;
o.narrowCompany = o.narrowCompany || o.defaults.narrowCompany;
var nc =  o.narrowCompany || o.preference;
var enc = o.en.narrowCompany;
if(enc.length) {
var val = (o.en.narrowCompany.filter(":checked").val()||"").split("-");
var c = val[0];
if(o.e.pattern.length){
o.e.pattern.val((val[1]==="rent") ? 1 : 0);
}
nc = (c == "ana" || c == "jal") ? c : nc;
this.switchRootForm(c);
var that = this;
enc.bind("click.daps",function(){
val = $(this).val().split("-");
if(o.e.pattern.length){
o.e.pattern.val((val[1]==="rent") ? 1 : 0);
}
var v = val[0].toLowerCase();
that.switchRootForm(v);
if(v != "ana" && v != "jal") return;
that.narrowCompany(v);
that.initOffsetDate();
that.initSalesPeriod();
that.renderDepYear();
o.e.depYear.change();
if(that.o.narrowPrefecture){
that.renderDeplCodeForPref();
that.renderArea();
} else if(that.o.narrowLoosePrefecture) {
that.renderDeptCodeForLoosePref();
} else {
that.renderDeptCode();
}
that.renderExplain();
});
}
this.narrowCompany(nc.toLowerCase());
this.renderExplain();
} ,
/*
* init calendar
*/
initCalendar : function(){
var o = this.o,
RakutenCalendarDP = window.RakutenCalendarDP
, calendarHoliday = window.calendarHoliday
, key
, scpu = this.o.switchConditionPopup || {}
, that = this;
SHOW_END_DATE = new Date(o.salesPeriod[o.company]);
START_OK_DAY = o.offsetDate[o.company]-1;
RakutenCalendarDP.setHoliday(calendarHoliday);
$(document.body).bind("mousedown",function(event){
var target = $(event.target);
if (target.parents("#rakutenCalendar").length == 0) {
RakutenCalendarDP.closeCalendar();
}
});
RakutenCalendarDP.setStyles({BASE_DIV_STYLE:{"backgroundColor":"#E3F2D7","border":"1px solid #5CA71F"},HEADER_DIV_STYLE:{"backgroundColor":"#5CA71F"}});
o.e.depCalendar.bind("click.daps",function(){
START_OK_DAY = o.offsetDate[o.company]-1;
var sd = o.spDep[o.company];
SHOW_END_DATE = new Date(sd.getFullYear(),sd.getMonth(),sd.getDate());
var _date = new Date( o.e.depYear.val() + "/" +  o.e.depMonth.val() + "/" + o.e.depDate.val() );
var onclickFunc = function(){
o.e.depYear.val(this.getFullYear()).change();
o.e.depMonth.val(this.getMonth()+1).change();
o.e.depDate.val(this.getDate()).change();
if(o.isNew) that.o.updateFuncs.depDateText.apply(that);
RakutenCalendarDP.closeCalendar();
};
var offset = $(this).offset();
RakutenCalendarDP.createFloatCalendar(document.body,{"top":(17 + offset.top) +"px","left":(offset.left-165) + "px"},_date,onclickFunc,null,2,2,"往路出発日を選択してください。",1,_date);
return false;
});
o.e.retCalendar.bind("click.daps",function(){
START_OK_DAY = Math.floor(((new Date(o.e.depYear.val()+"/"+o.e.depMonth.val()+"/"+o.e.depDate.val()).getTime() - new Date().getTime())/86400000) + o.intervalDate);
var sd = o.spRet[o.company];
SHOW_END_DATE = new Date(sd.getFullYear(),sd.getMonth(),sd.getDate());
var _date = new Date(o.e.retYear.val()+"/"+o.e.retMonth.val()+"/"+o.e.retDate.val());
var onclickFunc = function(){
o.e.retYear.val(this.getFullYear()).change();
o.e.retMonth.val(this.getMonth()+1).change();
o.e.retDate.val(this.getDate()).change();
if(o.isNew) that.o.updateFuncs.retDateText.apply(that);
RakutenCalendarDP.closeCalendar();
};
var offset = $(this).offset();
RakutenCalendarDP.createFloatCalendar( document.body,{"top":(17 + offset.top) +"px","left":(offset.left-165) + "px"},_date,onclickFunc,null,2,2,"復路出発日を選択してください。",1,_date );
return false;
});
o.e.checkInCalendar.bind("click.daps",function(){
START_OK_DAY = Math.floor((new Date(o.e.depYear.val()+"/"+o.e.depMonth.val()+"/"+o.e.depDate.val()).getTime() - new Date().getTime())/86400000);
var endDate = new Date();
endDate.setTime(new Date(o.e.retYear.val()+"/"+o.e.retMonth.val()+"/"+o.e.retDate.val()).getTime()-86400000);
SHOW_END_DATE = endDate;
var _date = new Date( o.e.checkInYear.val() + "/" +  o.e.checkInMonth.val() + "/" + o.e.checkInDate.val() );
var onclickFunc = function(){
o.e.checkInYear.val(this.getFullYear()).change();
o.e.checkInMonth.val(this.getMonth()+1).change();
o.e.checkInDate.val(this.getDate()).change();
if(o.isNew) that.o.updateFuncs.checkInCalendar.apply(that);
RakutenCalendarDP.closeCalendar();
};
var offset = $(this).offset();
RakutenCalendarDP.createFloatCalendar(document.body,{"top":(17 + offset.top) +"px","left":(offset.left-165) + "px"},_date,onclickFunc,null,2,2,"チェックイン日を選択してください。",1,_date);
return false;
});
o.e.checkOutCalendar.bind("click.daps",function(){
START_OK_DAY = Math.floor((new Date(o.e.checkInYear.val()+"/"+o.e.checkInMonth.val()+"/"+o.e.checkInDate.val()).getTime() - new Date().getTime())/86400000) + o.intervalDate;
SHOW_END_DATE = new Date(o.e.retYear.val()+"/"+o.e.retMonth.val()+"/"+o.e.retDate.val());
var _date = new Date(o.e.retYear.val()+"/"+o.e.retMonth.val()+"/"+o.e.retDate.val());
var onclickFunc = function(){
var dateText = that.createDateText(this.getFullYear(), (this.getMonth()+1), this.getDate());
o.e.checkOutYear.val(this.getFullYear()).change();
o.e.checkOutMonth.val(this.getMonth()+1).change();
o.e.checkOutDate.val(this.getDate()).change();
if(o.isNew) o.e.checkOutCalendar.val(dateText);
if(o.isNew) that.o.updateFuncs.checkOutCalendar.apply(that);
RakutenCalendarDP.closeCalendar();
};
var offset = $(this).offset();
RakutenCalendarDP.createFloatCalendar( document.body,{"top":(17 + offset.top) +"px","left":(offset.left-165) + "px"},_date,onclickFunc,null,2,2,"チェックアウト日を選択してください。",1,_date );
return false;
});
} ,
/*
* set default value
*/
setDefaults : function(){
var o = this.o,
d = o.defaults,
k,
elem;
if(d.depMonth) d.depMonth = parseInt(d.depMonth,10);
if(d.depDate) d.depDate = parseInt(d.depDate,10);
if(d.retMonth) d.retMonth = parseInt(d.retMonth,10);
if(d.retDate) d.retDate = parseInt(d.retDate,10);
for(k in d){
if( k === "deptCode" ||
k === "deplCode" ||
k === "rettCode" ||
k === "retlCode" ||
k === "pref" ||
k === "area"){
continue;
}
elem = o.e[k];
if(d[k] &&
(( elem[0].tagName.toUpperCase() == "SELECT" && elem.find("option[value='"+d[k]+"']").length ) ||
( elem[0].tagName.toUpperCase() != "SELECT" ))) elem.val(d[k]).change();
}
var list = ["deptCode","deplCode","pref","area","rettCode","retlCode"];
if(o.narrowPrefecture) list = ["pref","deplCode","deptCode","area","rettCode","retlCode"];
if(!d.deptCode && d.deplCode) {
d.deptCode = o.m[o.company].route[d.deplCode][0];
}
var i, key;
for(i=0;i<list.length;i++){
key = list[i];
elem = o.e[key];
if(d[key] &&
(( elem[0].tagName.toUpperCase() == "SELECT" && elem.find("option[value='"+d[key]+"']").length ) ||
( elem[0].tagName.toUpperCase() != "SELECT" ))) elem.val(d[key]).change();
}
},
setDefaultsNew : function() {
var o = this.o
, d = o.defaults
, k
, root = o.e.root
, areaCode
, pm = this.o.m.name.prefecture
, am = this.o.m.name.area
, adm = '選択してください'
, dateDiff
, rsvDate
, depDate
, retDate
, today
, offsetDate = o.offsetDate[o.company]
, ONE_DAY_TIME = 86400000
, elem;
d.area = d.area||$('#research [name=f_shou]').val();
root.find('#pref').val(d.pref);
root.find('#'+o.areaSelector.selector.middle).text(pm[d.pref]||adm);
areaCode = d.area? d.area : "";
root.find('#area').val(areaCode);
root.find('#'+o.areaSelector.selector.small).text(am[d.pref + '-' + areaCode]||adm);
today = new Date((new Date()).getFullYear(), (new Date()).getMonth(), (new Date()).getDate());
rsvDate = new Date(d.depYear, d.depMonth - 1, d.depDate);
dateDiff = parseInt((rsvDate.getTime() - today.getTime()) / ONE_DAY_TIME, 10);
if(dateDiff < offsetDate) {
depDate = new Date(rsvDate.getTime() + ONE_DAY_TIME * (offsetDate - dateDiff));
} else {
depDate = rsvDate;
}
o.e.depYear.val(depDate.getFullYear());
o.e.depMonth.val(depDate.getMonth()+1);
o.e.depDate.val(depDate.getDate());
this.o.updateFuncs.depDateText.apply(this);
retDate = new Date(d.retYear, d.retMonth-1, d.retDate);
if(depDate.getTime() >= retDate.getTime()) {
retDate = new Date(depDate.getTime() + ONE_DAY_TIME);
}
o.e.retYear.val(retDate.getFullYear());
o.e.retMonth.val(retDate.getMonth() + 1);
o.e.retDate.val(retDate.getDate());
this.o.updateFuncs.retDateText.apply(this);
for(k in d){
elem = o.e[k];
if(d[k]
&& ( elem[0].tagName.toUpperCase() == "SELECT"
&& elem.find("option[value='"+d[k]+"']").length )
) elem.val(d[k]).change();
}
},
/*
* init switch element
*/
initSwitchCondition : function() {
var sc = this.o.switchCondition || {}
, r = this.o.e.root
, key = null;
for (key in sc) {
if (sc.hasOwnProperty(key)) {
(function(key,child){
r.find("#" + key).bind("click.daps",function() {
r.find("#"+child).toggle(100);
});
})(key,sc[key]);
}
}
},
initSwitchConditionNew : function() {
var scpu = this.o.switchConditionPopup || {}
, r = this.o.e.root
, key;
for (key in scpu) {
(function(key,child){
r.find("#" + key).bind("click.daps",function() {
r.find("#"+child).toggle(100);
});
})(key,scpu[key]);
}
for (key in scpu) {
(function(key, scpu) {
$(document.body).bind("mousedown",function(event){
var target = $(event.target);
if(scpu[key] == 'prtlBk') {
if (target.parents("#rakutenCalendar").length != 0) {
return;
}
}
if (target.parents("#" + scpu[key]).length == 0) {
$("#" + scpu[key]).hide();
}
});
})(key, scpu);
}
this.initPrtlBkBtn();
this.initChildFormNew();
},
initPrtlBkBtn : function() {
var prtlBkBtn = $('#prtlBkBtn')
, chkFocusMoreList = $('#chkFocusMoreList')
, anmTime = 50;
prtlBkBtn.bind('click.daps', this.prtlBkBtnEvent);
chkFocusMoreList.bind('click.daps', function() {
var chk = $(this).attr('checked');
$('#prtlBk').show(anmTime);
});
},
/**
* 一部日程宿泊のチェックボタンが押されたときのイベント.
*/
prtlBkBtnEvent : function() {
var chk = $(this).attr('checked')
, anmTime = 100;
if(chk) {
$('#prtlBk').show(anmTime);
$('#chkFocusMoreList').show(anmTime);
} else {
$('#prtlBk').hide(anmTime);
$('#chkFocusMoreList').hide(anmTime);
}
},
/*
* init departure date select box
*/
initDepDate : function() {
var o = this.o
, that = this
, dd = new Date();
this.createDepDate();
dd.setTime(dd.getTime() + o.defaultOffset[o.company]);
o.e.depYear.bind("change.daps",function() {
that.renderDepMonth();
that.renderDepDate();
that.renderRetYear();
that.adjustRetYear();
that.renderRetMonth();
that.adjustRetMonth();
that.renderRetDate();
that.adjustRetDate();
that.renderCheckInOut();
});
o.e.depYear.val(dd.getFullYear()).change();
o.e.depMonth.bind("change.daps",function() {
that.renderDepDate();
that.renderRetYear();
that.adjustRetYear();
that.renderRetMonth();
that.adjustRetMonth();
that.renderRetDate();
that.adjustRetDate();
that.renderCheckInOut();
});
o.e.depMonth.val(dd.getMonth()+1).change();
o.e.depDate.bind("change.daps",function() {
that.renderRetYear();
that.adjustRetYear();
that.renderRetMonth();
that.adjustRetMonth();
that.renderRetDate();
that.adjustRetDate();
that.renderCheckInOut();
});
o.e.depDate.val(dd.getDate()).change();
},
/*
* create departure year, month, date
*/
createDepDate : function() {
var o = this.o;
var d = new Date();
d.setTime(d.getTime() + o.offset[o.company]);
var cy = d.getFullYear();
var spDep = o.spDep[o.company];
this.createDateOptions(cy, spDep.getFullYear(), o.e.depYear);
},
/*
* render departure year
*/
renderDepYear : function() {
var o = this.o;
var y = o.e.depYear.val();
var d = new Date();
d.setTime(d.getTime() + o.offset[o.company]);
var dd = new Date();
dd.setTime(dd.getTime() + o.defaultOffset[o.company]);
var cy = d.getFullYear();
var spDep = o.spDep[o.company];
this.createDateOptions(cy, spDep.getFullYear(), o.e.depYear, y||dd.getFullYear());
},
/*
* render departure month
*/
renderDepMonth : function() {
var o = this.o;
var month = o.e.depMonth.val();
var y = o.e.depYear.val();
var d = new Date();
d.setTime(d.getTime() + o.offset[o.company]);
var dd = new Date();
dd.setTime(dd.getTime() + o.defaultOffset[o.company]);
var cy = d.getFullYear();
var cm = d.getMonth() + 1;
var spDep = o.spDep[o.company];
var sy = spDep.getFullYear();
var sm = spDep.getMonth()+1;
var s = cm;
var e = sm;
if (y > cy) s = 1;
if (y < sy) e = 12;
this.createDateOptions(s, e, o.e.depMonth, month||dd.getMonth()+1);
},
/*
* init narrow company
*/
renderDepDate : function() {
var o = this.o;
var spDep = o.spDep[o.company];
var y = o.e.depYear.val();
var m = o.e.depMonth.val();
var date = o.e.depDate.val();
var d = new Date();
d.setTime(d.getTime() + o.offset[o.company]);
var dd = new Date();
dd.setTime(dd.getTime() + o.defaultOffset[o.company]);
var cy = d.getFullYear();
var cm = d.getMonth() + 1;
var cd = d.getDate();
var sy = spDep.getFullYear();
var sm = spDep.getMonth()+1;
var sd = spDep.getDate();
var s = 1;
var e = new Date(y, m, 0).getDate();
if (y == cy && m == cm) s = cd;
if (y == sy && m == sm) e = sd;
this.createDateOptions(s, e, o.e.depDate, date||dd.getDate());
},
/*
* init return date
*/
initRetDate : function() {
var o = this.o;
var that = this;
var dd = new Date();
dd.setTime(dd.getTime() + o.interval + o.defaultOffset[o.company]);
o.e.retYear.bind("change.daps",function() {
that.renderRetMonth();
that.renderRetDate();
that.renderCheckInOut();
});
o.e.retYear.val(dd.getFullYear()).change();
o.e.retMonth.bind("change.daps",function() {
that.renderRetDate();
that.renderCheckInOut();
});
o.e.retMonth.val(dd.getMonth()+1).change();
o.e.retDate.bind("change.daps",function() {
that.renderCheckInOut();
});
o.e.retDate.val(dd.getDate()).change();
},
/*
* render return year
*/
renderRetYear : function() {
var o = this.o;
var date = o.e.depDate.val();
var y = o.e.depYear.val();
var m = o.e.depMonth.val();
var d = new Date(y + "/" + m + "/" + date);
d.setTime(d.getTime() + o.interval);
var cy = d.getFullYear();
var spRet = o.spRet[o.company];
var sy = spRet.getFullYear();
var ry = o.e.retYear.val();
var s = cy;
var e = sy;
this.createDateOptions(s, e, o.e.retYear, ry);
},
/*
* render return month
*/
renderRetMonth : function() {
var o = this.o;
var date = o.e.depDate.val();
var y = o.e.depYear.val();
var m = o.e.depMonth.val();
var d = new Date(y + "/" + m + "/" + date);
d.setTime(d.getTime() + o.interval);
var cy = d.getFullYear();
var cm = d.getMonth() + 1;
var spRet = o.spRet[o.company];
var sy = spRet.getFullYear();
var sm = spRet.getMonth()+1;
var ry = o.e.retYear.val();
var rm = o.e.retMonth.val();
var s = cm;
var e = sm;
if (ry > cy) s = 1;
if (ry < sy) e = 12;
this.createDateOptions(s, e, o.e.retMonth, rm);
},
/*
* render return date
*/
renderRetDate : function() {
var o = this.o;
var y = o.e.depYear.val();
var m = o.e.depMonth.val();
var date = o.e.depDate.val();
var d = new Date(y + "/" + m + "/" + date);
d.setTime(d.getTime() + o.interval);
var cy = d.getFullYear();
var cm = d.getMonth() + 1;
var cd = d.getDate();
var spRet = o.spRet[o.company];
var sy = spRet.getFullYear();
var sm = spRet.getMonth()+1;
var sd = spRet.getDate();
var ry = o.e.retYear.val();
var rm = o.e.retMonth.val();
var rd = o.e.retDate.val();
var s = 1;
var e = new Date(ry, rm, 0).getDate();
if (ry == cy && rm == cm) s = cd;
if (ry == sy && rm == sm) e = sd;
this.createDateOptions(s, e, o.e.retDate, rd);
},
/*
* adjust return year
*/
adjustRetYear : function() {
var o = this.o;
var dt = new Date(o.e.depYear.val() + "/" + o.e.depMonth.val() + "/" + o.e.depDate.val()).getTime();
var os = o.interval;
var d = new Date();
d.setTime(dt + os);
var y = d.getFullYear();
if(o.e.retYear.find("option[value='"+y+"']")) o.e.retYear.val(y);
},
/*
* adjust return month
*/
adjustRetMonth : function() {
var o = this.o;
var dt = new Date(o.e.depYear.val() + "/" + o.e.depMonth.val()
+ "/" + o.e.depDate.val()).getTime();
var os = o.interval;
var d = new Date();
d.setTime(dt + os);
var m = d.getMonth() + 1;
if(o.e.retMonth.find("option[value='"+m+"']")) o.e.retMonth.val(m);
},
/*
* adjust return date
*/
adjustRetDate : function() {
var o = this.o;
var dt = new Date(o.e.depYear.val() + "/" + o.e.depMonth.val()
+ "/" + o.e.depDate.val()).getTime();
var os = o.interval;
var d = new Date();
d.setTime(dt + os);
var date = d.getDate();
if(o.e.retDate.find("option[value='"+date+"']")) o.e.retDate.val(date);
},
/*
* init check in
*/
initCheckInDate : function() {
var o = this.o;
this.renderCheckInYear();
this.renderCheckInMonth();
this.renderCheckInDate();
var that = this;
o.e.checkInYear.bind("change.daps",function() {
that.renderCheckInMonth();
that.renderCheckInDate();
that.renderCheckOutYear();
that.renderCheckOutMonth();
that.renderCheckOutDate();
});
o.e.checkInMonth.bind("change.daps",function() {
that.renderCheckInDate();
that.renderCheckOutYear();
that.renderCheckOutMonth();
that.renderCheckOutDate();
});
o.e.checkInDate.bind("change.daps",function() {
that.renderCheckOutYear();
that.renderCheckOutMonth();
that.renderCheckOutDate();
});
},
/*
* init check out
*/
initCheckOutDate : function() {
var o = this.o;
this.renderCheckOutYear();
this.renderCheckOutMonth();
this.renderCheckOutDate();
var that = this;
o.e.checkOutYear.bind("change.daps",function() {
that.renderCheckOutMonth();
that.renderCheckOutDate();
});
o.e.checkOutMonth.bind("change.daps",function() {
that.renderCheckOutDate();
});
},
/*
* render check in, check out
*/
renderCheckInOut : function() {
this.renderCheckInYear();
this.renderCheckInMonth();
this.renderCheckInDate();
this.renderCheckOutYear();
this.renderCheckOutMonth();
this.renderCheckOutDate();
},
/*
* render check in year
*/
renderCheckInYear : function() {
var o = this.o;
var y = o.e.depYear.val();
var r = new Date(o.e.retYear.val() + "/" + o.e.retMonth.val() + "/"
+ o.e.retDate.val());
r.setTime(r.getTime() - o.interval);
var ry = r.getFullYear();
var s = y;
var e = ry;
this.createDateOptions(s, e, o.e.checkInYear, y);
},
/*
* render check in month
*/
renderCheckInMonth : function() {
var o = this.o;
var y = o.e.depYear.val();
var m = o.e.depMonth.val();
var r = new Date(o.e.retYear.val() + "/" + o.e.retMonth.val() + "/"
+ o.e.retDate.val());
r.setTime(r.getTime() - o.interval);
var ry = r.getFullYear();
var rm = r.getMonth() + 1;
var ciy = o.e.checkInYear.val();
var s = m;
var e = rm;
if (ciy == ry && y < ry) s = 1;
if (ciy < ry  && y < ry) e = 12;
this.createDateOptions(s, e, o.e.checkInMonth, m);
},
/*
* render check in date
*/
renderCheckInDate : function() {
var o = this.o;
var y = o.e.depYear.val();
var m = o.e.depMonth.val();
var d = o.e.depDate.val();
var cy = o.e.checkInYear.val();
var cm = o.e.checkInMonth.val();
var r = new Date(o.e.retYear.val() + "/" + o.e.retMonth.val() + "/"
+ o.e.retDate.val());
r.setTime(r.getTime() - o.interval);
var ry = r.getFullYear();
var rm = r.getMonth() + 1;
var rd = r.getDate();
var s = 1;
var e = new Date(cy, cm, 0).getDate();
if (cy == y && cm == m) s = d;
if (cy == ry && cm == rm) e = rd;
this.createDateOptions(s, e, o.e.checkInDate, d);
},
/*
* render check out year
*/
renderCheckOutYear : function() {
var o = this.o;
var r = new Date(o.e.checkInYear.val() + "/"
+ o.e.checkInMonth.val() + "/" + o.e.checkInDate.val());
r.setTime(r.getTime() + o.interval);
var y = r.getFullYear();
var ry = o.e.retYear.val();
var s = y;
var e = ry;
this.createDateOptions(s, e, o.e.checkOutYear, ry);
},
/*
* render check out month
*/
renderCheckOutMonth : function() {
var o = this.o;
var r = new Date(o.e.checkInYear.val() + "/"
+ o.e.checkInMonth.val() + "/" + o.e.checkInDate.val());
r.setTime(r.getTime() + o.interval);
var ciy = r.getFullYear();
var cim = r.getMonth() + 1;
var coy = o.e.checkOutYear.val();
var ry = o.e.retYear.val();
var rm = o.e.retMonth.val();
var s = cim;
var e = rm;
if(coy == ry && ciy < ry) s = 1;
if(coy < ry  && ciy < ry) e = 12;
this.createDateOptions(s, e, o.e.checkOutMonth, rm);
},
/*
* render check out date
*/
renderCheckOutDate : function() {
var o = this.o;
var r = new Date(o.e.checkInYear.val() + "/"
+ o.e.checkInMonth.val() + "/" + o.e.checkInDate.val());
r.setTime(r.getTime() + o.interval);
var y = r.getFullYear();
var m = r.getMonth() + 1;
var d = r.getDate();
var cy = o.e.checkOutYear.val();
var cm = o.e.checkOutMonth.val();
var ry = o.e.retYear.val();
var rm = o.e.retMonth.val();
var rd = o.e.retDate.val();
var s = 1;
var e = new Date(cy, cm, 0).getDate();
if (cy == y && cm == m) s = d;
if (cy == ry && cm == rm) e = rd;
this.createDateOptions(s, e, o.e.checkOutDate, rd);
},
/*
* create date options
* @param
*   s : star value
*   f : end value
*   e : jquery element
*   d : default value
*/
createDateOptions : function(s, f, e, d) {
var i = 0,
cnt = 0,
index = 0,
t,
values = [],
texts=[];
s = s - 0;
f = f - 0;
d = d - 0;
for (i = s; i <= f; i++) {
values[cnt] = i;
t = (i < 10) ? "0"+i : ""+i;
texts[cnt] = t;
if(i == d) index=cnt;
cnt++;
}
this.createOptions(e, values, texts, index);
},
/*
* create num options
* @param
*   s : star value
*   f : end value
*   e : jquery element
*   d : default value
*/
createNumOptions : function(s, f, e, d) {
var i = 0,
cnt = 0,
index = 0,
values = [],
texts=[];
s = s - 0;
f = f - 0;
d = d - 0;
for (i = s; i <= f; i++) {
values[cnt] = i;
texts[cnt] = i;
if(i == d) index=cnt;
cnt++;
}
this.createOptions(e, values, texts, index);
},
createOptions : function(e, values, texts, index){
var s = e[0];
if( s.tagName.toUpperCase() != "SELECT" ) return;
var os = s.options;
var i;
var d = document;
for(i = os.length;i>values.length;i--){
s.remove(os.length-1);
}
for (i = 0; i <values.length; i++) {
if (os.length  - 1 < i) {
var op = d.createElement("OPTION");
s.add(op, undefined);
}
os[i].value = values[i];
os[i].text  = texts[i];
}
s.selectedIndex = index;
},
/*
* set action
*/
setAction : function(c){
var o = this.o;
if(o.changeAction) this.o.e.root.attr("action",this.o.action[c]);
} ,
/*
* init airport departure-take-off code
*/
initDeptCode : function() {
var o = this.o;
if(o.ignore.deptCode) return;
var that = this;
this.renderDeptCode();
o.e.deptCode.bind("change.daps",function() {
that.renderDeplCode();
});
},
initDeptCodeForPref : function(){
var o = this.o;
if(o.ignore.deptCode) return;
var that = this;
this.renderDeptCodeForPref();
o.e.deptCode.bind("change.daps",function() {
that.renderRettCode();
});
},
initDeptCodeForLoosePref : function(){
var o = this.o;
if(o.ignore.deptCode) return;
var that = this;
this.renderDeptCodeForLoosePref();
o.e.deptCode.bind("change.daps",function() {
that.renderDeplCodeForLoosePref();
});
},
/*
* render airport departure-take-off code
*/
renderDeptCode : function() {
var o = this.o;
if(o.ignore.deptCode) return;
var cl = o.m[o.company].airport;
var e = o.e.deptCode;
this.createCodeOptions(e, cl, e.val());
},
/*
* render airport departure-take-off code for pref
*/
renderDeptCodeForPref : function() {
var o = this.o;
if(o.ignore.deptCode) return;
var dlc = o.e.deplCode.val();
var m  = o.m[o.company];
var cl = m.route[dlc];
var e = o.e.deptCode;
this.createCodeOptions(e, cl, e.val());
},
/*
* render airport departure-take-off code for pref
*/
renderDeptCodeForLoosePref : function() {
var o = this.o;
if(o.ignore.deptCode) return;
var m  = o.m[o.company];
var a  = m.airport;
var dtcs = [];
var cl = [];
var i, j, ac;
var rd = m.redepl;
for(i=0;i<rd.length;i++){
dtcs = dtcs.concat(m.route[rd[i]]);
}
for(i=0;i<a.length;i++){
ac = a[i];
for(j=0;j<dtcs.length;j++){
if(ac===dtcs[j]) {
cl.push(ac);
break;
}
}
}
var e = o.e.deptCode;
var areaCode = o.e.pref.val() + "-" + o.e.area.val();
var da = m.defaultAirport[areaCode];
if (da == "-1") {
cl.unshift("-1");
}
var dtc = (m.route[da]||[])[0] || e.val();
this.createCodeOptions(e, cl, dtc);
},
/*
* init airport departure-landing code
*/
initDeplCode : function() {
var o = this.o;
if(o.ignore.deplCode) return;
var that = this;
this.renderDeplCode();
o.e.deplCode.bind("change.daps",function() {
that.renderPref();
that.renderRettCode();
});
},
/*
* render airport departure-landing code
*/
renderDeplCode : function() {
var o = this.o;
if(o.ignore.deplCode) return;
var dtc = o.e.deptCode.val();
var cl = o.m[o.company].route[dtc];
var e = o.e.deplCode;
var h = o.headAirport[o.company].deplCode;
this.createCodeOptions(e, cl, e.val(),h);
},
/*
* init airport departure-landing code
*/
initDeplCodeForPref : function() {
var o = this.o;
if(o.ignore.deplCode) return;
var p = o.e.pref.val();
var a = o.e.area.val();
var that = this;
this.renderDeplCodeForPref();
o.e.deplCode.bind("change.daps",function() {
that.renderDeptCodeForPref();
});
},
/*
* render airport departure-landing code
*/
renderDeplCodeForPref : function() {
var o = this.o;
if(o.ignore.deplCode) return;
var p = o.e.pref.val()
, a = o.e.area.val()
, areaCode = p+'-'+a
, cl = o.m[o.company].reprefecture[p]
, e = o.e.deplCode
, d = o.m[o.company].defaultAirport[areaCode] || e.val()
, h = o.headAirport[o.company].deplCode;
this.createCodeOptions(e, cl, d,h);
},
/*
* init airport departure-landing code
*/
initDeplCodeForLoosePref : function() {
var o = this.o;
if(o.ignore.deplCode) return;
var that = this;
this.renderDeplCodeForLoosePref();
o.e.deplCode.bind("change.daps",function() {
that.renderPref();
that.renderRettCode();
});
},
/*
* render airport departure-landing code
*/
renderDeplCodeForLoosePref : function() {
var o = this.o;
if(o.ignore.deplCode) return;
var cl = [];
var m = o.m[o.company];
var dtc = o.e.deptCode.val();
var r = m.route[dtc] || [];
var rd = m.redepl;
var i,j,c;
for(i=0;i<r.length;i++){
c = r[i];
for(j=0;j<rd.length;j++){
if(c===rd[j]){
cl.push(c);
break;
}
}
}
var e = o.e.deplCode;
var h = o.headAirport[o.company].deplCode;
var dlc = e.val();
var areaCode = o.e.pref.val() + "-" + o.e.area.val();
dlc = m.defaultAirport[areaCode] || dlc;
if (dlc == "-1") {
cl.unshift("-1");
}
if(dtc == "-1") {
e.attr("disabled", true);
} else {
e.removeAttr("disabled");
}
this.createCodeOptions(e, cl, dlc, h);
},
/*
* init airport return-take-off code
*/
initRettCode : function() {
var o = this.o,
that = this;
if(o.ignore.rettCode) return;
this.renderRettCode();
o.e.rettCode.bind("change.daps",function(){
that.renderRetlCode();
});
},
/*
* render airport return-take-off code
*/
renderRettCode : function() {
var o = this.o;
if(o.ignore.rettCode) return;
var cl = [];
var i, j, ll, kl;
var rtc = o.e.rettCode.val();
var dlc = o.e.deplCode.val();
var rlc = o.e.deptCode.val();
var oj = $.extend( [], o.m[o.company].openjaw[dlc], true);
cl.unshift(dlc);
var l = oj.length;
kl = o.m[o.company].route[rlc] || [];
ll = kl.length;
var oc;
for (i = 0; i < l; i++) {
oc = oj[i];
for (j = 0; j < ll; j++) {
if (kl[j] == oc) {
cl.push(oc);
break;
}
}
}
var h = o.headAirport[o.company].rettCode;
if(dlc == "-1") {
o.e.rettCode.attr("disabled", true);
o.e.retlCode.attr("disabled", true);
} else {
o.e.rettCode.removeAttr("disabled");
o.e.retlCode.removeAttr("disabled");
}
this.createCodeOptions(o.e.rettCode, cl, dlc, h);
},
/*
* init airport return-landing code
*/
initRetlCode : function() {
var o = this.o;
if(o.ignore.retlCode) return;
var that = this;
this.renderRetlCode();
this.o.e.retlCode.bind("change.daps",function(){
});
},
/*
* render airport return-landing code
*/
renderRetlCode : function() {
if(this.o.ignore.retlCode) return;
var o = this.o,
i,
j,
dtc = o.e.deptCode.val(),
rtc = o.e.rettCode.val(),
cl = [ dtc ],
ma = o.m[o.company].multi_airport[dtc],
route = o.m[o.company].route,
d = null,
ncl = [],
list = [],
isOk;
if (ma) {
cl = cl.concat(ma[1]);
d = ma[0];
}
for( i = 0; i < cl.length; i++ ){
list = route[ cl[ i ] ] || [];
isOk = false;
for( j = 0; j < list.length; j++ ){
if( list[ j ] == rtc ) isOk = true;
}
if(isOk) ncl.push( cl[ i ] );
}
if( rtc == "-1" ) ncl = ["-1"];
this.createCodeOptions(o.e.retlCode, ncl, d);
},
/*
* create airport code options
* @param
*   e  : jquery element
*   cl : Array  - airport code list
*   d  : String - default value
*        Array  - default values
*   h  : String -
*/
createCodeOptions : function(e, cl, d, h) {
var o = this.o,
i, c,
values = [],
texts = [],
index = 0,
cnt = 0,
l = cl.length,
already = {},
airport = o.m.name.airport;
cl = cl || [];
for (i = 0; i < l; i++) {
c = cl[i];
if(already[c]) continue;
if(c == d) index = cnt;
if(c == h) {
values.unshift(c);
texts.unshift(airport[c]);
if(h == d) index = 0;
if(already[d]) index++;
} else {
values.push(c);
texts.push(airport[c]);
}
already[c]=true;
cnt++;
}
this.createOptions(e, values, texts, index);
e.change();
},
/*
* init prefecture
*/
initPref : function() {
var o = this.o;
var that = this;
this.renderPref();
o.e.pref.bind("change.daps",function(){
that.renderArea();
});
},
/*
* render prefecture
*/
renderPref : function() {
var o = this.o;
if(o.ignore.pref) return;
var dlc = o.e.deplCode.val();
var pl = o.m[o.company].prefecture[dlc] || [];
if(o.isTightPrefecture) pl = o.m[o.company].tightPrefecture[dlc] || [];
var e = o.e.pref;
if(this.o.isNew) {
this.createPrefListNew(e, pl, o.m.name.prefecture, null);
} else {
this.createRegionOptions(e, pl, o.m.name.prefecture, null);
}
},
/*
* init prefecture
*/
initPrefForPref : function() {
var o = this.o;
var that = this;
o.e.pref.bind("change.daps",function(){
that.renderDeplCodeForPref();
that.renderArea();
});
},
/*
* init area
*/
initArea : function() {
this.renderArea();
},
/*
* init area for pref
*/
initAreaForPref : function() {
var o = this.o
, that = this;
this.renderArea();
o.e.area.bind("change.daps",function(){
that.renderDeplCodeForPref();
});
},
/*
* render area
*/
renderArea : function() {
var o = this.o;
var p = o.e.pref.val();
var pl = o.m[o.company].area[p] || [];
var e = o.e.area;
if(this.o.isNew) {
this.createAreaListNew(e, pl, o.m.name.area, p+"-", e.val());
} else {
this.createRegionOptions(e, pl, o.m.name.area, p+"-", e.val());
}
},
/*
* create prefecture options
* @param
*   e  : jquery element - prefecture element
*   pl : array - prefecture list
*   m  : maser
*   pf : prefix string
*   d  : default value
*/
createRegionOptions : function(e, pl, m, pf, d) {
pl = pl || [];
pf = pf || "";
var i, p;
var values = [];
var texts = [];
var cnt = 0;
var index = 0;
var l = pl.length;
var already = {};
for (i = 0; i < l; i++) {
p = pl[i];
if(already[p]) continue;
values.push(p);
texts.push(m[pf+p]);
if(p == d) index = cnt;
already[p]=true;
cnt++;
}
this.createOptions(e, values, texts, index);
e.change();
},
/*
* narrow company, switch master, switch action
*/
narrowCompany : function(c){
if(c != "ana" && c != "jal") return;
this.o.company = c;
this.setAction(c);
},
/*
* narrow prefecture
*
* redepl          : Array of available prefectures to all depature-landing-code list.
*                   Value : all depature-landing-code list
*
* reprefecture    : Map of available prefecture to depature-landing-code list.
*                   Key   : available prefecture
*                   Value : depature-landing-code list
*
* tightPrefecture : Map of depature-landing-code to available prefecture list.
*                   Key   : depature-landing-code
*                   Value : available prefecture list
*
*/
narrowPrefecture : function(){
var o = this.o;
o.narrowPrefecture = o.narrowPrefecture || o.defaults.narrowPrefecture;
o.narrowLoosePrefecture = o.narrowLoosePrefecture || o.defaults.narrowLoosePrefecture;
o.isTightPrefecture = o.isTightPrefecture || o.defaults.isTightPrefecture;
var np = o.narrowPrefecture || o.narrowLoosePrefecture;
if(!np) return;
var m;
var ps, i, j, h;
var repl, redepl;
var nps = [];
if(o.e.pref.is("select")){
o.e.pref.find("option").each(function(){
nps.push(this.value);
});
} else if(o.isNew) {
$('#areaListPref ul li dd a').each(function() {
nps.push($(this).attr('name'));
});
nps.push(o.e.pref.val());
} else {
nps.push(o.e.pref.val());
}
var n;
var cs = ["ana","jal"];
for(h=0;h<cs.length;h++) {
c = cs[h];
(function(){
m = o.m[c].prefecture;
repl = {};
redepl = [];
var tp = {};
for(k in m) {
ps = m[k];
for(i=0;i<nps.length;i++) {
n = nps[i];
for(j=0;j<ps.length;j++){
if(ps[j] === n) {
if(!repl[n]) repl[n] = [];
repl[n].push(k);
redepl.push(k);
break;
}
}
}
for(j=0;j<ps.length;j++){
n = ps[j];
for(i=0;i<nps.length;i++) {
if(nps[i] === n) {
if(!tp[k]) tp[k] = [];
tp[k].push(n);
break;
}
}
}
}
o.m[c].redepl = redepl;
o.m[c].tightPrefecture = tp;
o.m[c].reprefecture = repl;
})();
}
},
/*
* get date range
* @return { start : Date, end : Date}
*/
getDateRange: function(){
var o = this.o;
var c = o.company;
var sd = new Date();
sd.setTime(sd.getTime() + o.offsetDate[c]*86400000);
var sdm = sd.getMonth()+1;
var sdd = sd.getDate();
var ed = o.salesPeriod[c];
var dates = {
start : sd.getFullYear()+"/"+((sdm < 10) ? "0"+sdm : ""+sdm)+"/"+((sdd < 10) ? "0"+sdd : ""+sdd),
end   : ed
};
return dates;
},
renderExplain : function() {
var o = this.o;
var d = this.getDateRange();
var str="";
var msg = (o.periodFromDeparture[o.company]) ? "出発" : "帰着";
var c = (o.company == "ana") ? "ＡＮＡ" : "ＪＡＬ";
str = [
c+'航空便と宿泊施設を自由に組み合わせて、一緒に予約できます。<br>',
'<span>※現在、<strong><span>'+d.start+' - '+d.end+'</span></strong> '+msg+'の'+c+'楽パックのご予約が可能です。</span>'
].join("");
o.e.searchExplainForAirPackage.html(str);
},
switchRootForm : function(c) {
var e = this.o.e;
var d = $("#distance");
if (c == "ana" || c == "jal") {
e.root.css("display", "block");
if(d.length) d.hide();
} else {
e.root.css("display", "none");
if(d.length) d.show();
}
},
/*
* create date text like 'yyyy/mm/dd'
* @param
*   y  : year
*   m  : month
*   d  : date
*/
createDateText : function(y, m, d) {
var pad = function(target, padLength) {
var padLength = padLength || 2
, i = 0
, balance
, result = String(target);
balance = padLength - result.length;
if(balance > 0) {
for(i; i < balance; i++) {
result = "0" + result;
}
}
return result;
}
return y+"/"+pad(m)+"/"+pad(d)
},
initPrefNew : function(category) {
var that = this
, category = category || "normal"
, o = this.o
, root = this.o.e.root
, middle
, small
, name = this.o.m.name
, prefMaster = name.prefecture
, prefList
, areaMaster = name.area
, aeraList
, arrayBuffer
, ddBuffer
, DEFALT_MSG = '選択してください';
this.category = category;
$("#adjustAreaNrrwDwnDetailDP").append(
'<li class="trnsArea"><a href="javascript:void(0);" id="areaSelectorMiddleDP">'+DEFALT_MSG+'</a></li>'
);
$("#adjustAreaNrrwDwnDetailDP").append(
'<li class="trnsArea"><a href="javascript:void(0);" id="areaSelectorSmallDP">'+DEFALT_MSG+'</a></li>'
);
middle = o.e.root.find('#'+o.areaSelector.selector.middle);
small = o.e.root.find('#'+o.areaSelector.selector.small);
middle.bind('click.daps', function(){
that.open("middle",$(this));
});
small.bind('click.daps', function(){
that.open("small",$(this));
});
$(document.body).bind("mousedown",function(event){
var target = $(event.target)
, areaSelector = that.o.areaSelector;
for(key in areaSelector.list) {
if (areaSelector.list.hasOwnProperty(key)) {
if (target.parents("#"+areaSelector.list[key]).length == 0) {
that.o.e.root.find("#" + areaSelector.list[key]).hide();
areaSelector.active = false;
}
}
}
});
root.find("#areaSelectorMiddlersDP").bind('click.daps', function() {
var name = $(this).text()
, code =  $(this).attr('name')
, areaSelector = that.o.areaSelector;
root.find('#areaSelectorMiddleDP').text(name);
root.find('#areaSelectorSmallDP').text(DEFALT_MSG);
o.e.pref.val(code);
o.e.area.val('');
that.renderArea();
root.find('#areaListPref').hide();
areaSelector.active = false;
if(that.o.narrowPrefecture){
that.renderDeplCodeForPref();
}
});
},
open : function(t,e){
var o = this.o
, trnsAreas = o.e.root.find(".trnsArea")
, areaSelector = this.o.areaSelector;
trnsAreas.removeClass("crrntSlcted");
e.parents("li.trnsArea").addClass("crrntSlcted");
if(areaSelector.active == t) return;
o.e.root.find("#"+areaSelector.list[t]).show();
if(areaSelector.active) {
o.e.root.find("#"+areaSelector.list[t]).hide();
}
areaSelector.active = t;
},
/** make pref master box
* @param
*   e  : jquery element - prefecture element
*   pl : array - prefecture list
*   m  : maser
*   pf : prefix string
*   d  : default value
*/
createPrefListNew : function(e, pl, m, pf, d) {
var root = this.o.e.root
, prefList = root.find('#areaListPref')
, prefMaster = m
, prefs = pl
, that = this
, texts = []
, key
, prefCode
, prefName
, text;
for(key in prefs) {
prefCode = prefs[key];
if(prefCode != -1) {
prefName = prefMaster[prefCode];
text = '<dd><a id="areaSelectorMiddlersDP" name="'+prefCode+'" ';
text += 'href="#">' + prefName + '</a></dd>';
texts.push(text);
}
}
prefList.append('<ul><li><dl>'+texts.join('')+'</dl></li></ul>');
},
/*
* create area list popup
* @param
*   e  : jquery element - prefecture element
*   pl : array - area list
*   m  : maser
*   pf : prefix string
*   d  : default value
*/
createAreaListNew : function(e, pl, m, pf, d) {
var root = this.o.e.root
, areaList = root.find('#areaListRegion')
, that = this
, texts = []
, key
, text
, areaName
, areaCode
, prefCode = pf || ''
, already = {};
areaList.empty();
for(key in pl) {
if(pl[key] == '-1') {
continue;
}
areaCode = pl[key];
areaName = m[prefCode + areaCode];
text = '<li><a id="areaSelectorSmallersDP" name="'+areaCode+'" ';
text += 'href="#">' + areaName + '</a></li>';
texts.push(text);
already[areaCode]=true;
}
areaList.append('<ul>'+texts.join(' | ')+'</ul>');
root.find("#areaSelectorSmallersDP").bind('click.daps', function() {
var name = $(this).text()
, code =  $(this).attr('name')
, areaSelector = that.o.areaSelector;
root.find('#areaSelectorSmallDP').text(name);
that.o.e.area.val(code);
root.find('#areaListRegion').hide();
areaSelector.active = false;
});
},
displayChild : function() {
var total = 0
, e = this.o.e
, childList = [
{e:e.highPreNum, name:'小学校高学年'},
{e:e.lowPreNum, name:'小学校低学年'},
{e:e.infrantMFNum, name:'幼児（食事・布団付）'},
{e:e.infrantMNum, name:'幼児（食事のみ）'},
{e:e.infrantFNum, name:'幼児（布団のみ）'},
{e:e.infrantNum, name:'幼児（食事・布団不要）'},
{e:e.babyNum, name:'乳児'}
]
, childName
, childNum
, i;
for(i in childList) {
total += parseInt(childList[i].e.val());
}
$('#childFocusMoreListDP').empty();
for(i in childList) {
childName = childList[i].name;
childNum = parseInt(childList[i].e.val());
if(childNum > 0) {
$('#childFocusMoreListDP').append(
$('<li></li>').text(childName + childNum + '人')
);
}
}
$('#childTotalDP').text(total);
if(total > 0) {
$('#childFocusMoreListDP').show();
} else {
$('#childFocusMoreListDP').hide();
}
},
initDateTextFormAb : function(func, elemName) {
var that = this;
this.o.updateFuncs[elemName] = func;
this.o.updateFuncs[elemName].apply(that);
},
initDepDateNew : function() {
this.initDateTextFormAb(function() {
var dText
, y
, m
, d
, o = this.o;
this.renderDateText('depYear', 'depMonth', 'depDate', 'depDateText');
dD = new Date(o.e.depYear.val(), o.e.depMonth.val()-1, o.e.depDate.val());
rd = new Date(dD.getTime() + 86400000);
o.e.retYear.val(rd.getFullYear());
o.e.retMonth.val(rd.getMonth()+1);
o.e.retDate.val(rd.getDate());
o.e.checkInYear.val(dD.getFullYear());
o.e.checkInMonth.val(dD.getMonth()+1);
o.e.checkInDate.val(dD.getDate());
if(this.o.updateFuncs.retDateText) this.o.updateFuncs.retDateText.apply(this);
if(this.o.updateFuncs.checkInCalendar) this.o.updateFuncs.checkInCalendar.apply(this);
}, 'depDateText');
},
initRetDateNew : function() {
this.initDateTextFormAb(function() {
var o = this.o;
this.renderDateText('retYear', 'retMonth', 'retDate', 'retDateText');
rd = new Date(o.e.retYear.val(), o.e.retMonth.val()-1, o.e.retDate.val());
o.e.checkOutYear.val(rd.getFullYear());
o.e.checkOutMonth.val(rd.getMonth()+1);
o.e.checkOutDate.val(rd.getDate());
if(this.o.updateFuncs.checkOutCalendar) this.o.updateFuncs.checkOutCalendar.apply(this);
}, 'retDateText');
},
initCheckInDateNew : function() {
this.initDateTextFormAb(function() {
var o = this.o;
this.renderDateText('checkInYear', 'checkInMonth', 'checkInDate', 'checkInCalendar');
dD = new Date(o.e.checkInYear.val(), o.e.checkInMonth.val()-1, o.e.checkInDate.val());
rd = new Date(dD.getTime() + 86400000);
o.e.checkOutYear.val(rd.getFullYear());
o.e.checkOutMonth.val(rd.getMonth()+1);
o.e.checkOutDate.val(rd.getDate());
if(this.o.updateFuncs.checkInDisp) this.o.updateFuncs.checkInDisp.apply(this);
}, 'checkInCalendar');
},
initCheckOutDateNew : function() {
this.initDateTextFormAb(function() {
this.renderDateText('checkOutYear', 'checkOutMonth', 'checkOutDate', 'checkOutCalendar');
if(this.o.updateFuncs.checkOutDisp) this.o.updateFuncs.checkOutDisp.apply(this);
}, 'checkOutCalendar');
},
initChkInFocusDisp : function() {
this.initDateTextFormAb(function() {
this.renderDateText('checkInYear', 'checkInMonth', 'checkInDate', 'checkInDisp');
}, 'checkInDisp');
},
initChkOutFocusDisp : function() {
this.initDateTextFormAb(function() {
this.renderDateText('checkOutYear', 'checkOutMonth', 'checkOutDate', 'checkOutDisp');
}, 'checkOutDisp');
},
initChildFormNew : function() {
var childFormDP = this.o.e.root.find('.childFormDP')
, that = this;
childFormDP.bind("change.daps", function() {
that.displayChild();
});
},
renderDateText : function(yId, mId, dId, dispId) {
var dText = this.createDateText($('#'+yId).val(), $('#'+mId).val(), $('#'+dId).val())
, dispElem = $('#'+dispId);
if(dispElem.is('input')) {
dispElem.val(dText);
} else if(dispElem.is('span')){
dispElem.text(dText);
}
},
/*
* destroy this instance
*/
destroy : function(){
var e = this.o.e;
var en = this.o.en;
var k = null;
for(k in e) {
e[k].unbind(".daps");
}
for(k in en) {
en[k].unbind(".daps");
}
}
};
})(this.jQuery);

