/* configurations */
var JQUERY_UI_JS_PATH='/Scripts/NewWidget/js/jquery-ui-1.6.custom.min.js';
var CAL_ICON_PATH='/Scripts/NewWidget/images/buttons/calendar.gif';
var TAB_ARROW_PATH='/Scripts/NewWidget/images/tabs/arrow_down.gif';
/* end configurations */

/* book online form starts */
function tabs(){
var tabsEle=$('.wg-tabs');
var arrSeed=$('<img class="tabArrow"/>').attr('src',TAB_ARROW_PATH);
var arrW=7;  /* arrow's width */
var allTabsLeft=tabsEle.position().left;

if(tabsEle.length==0) return;
tabsEle.tabs();

$('.wg-panel').removeClass('wg-panel') /* .wg-panel is only for no js */
/*.each(function(){
var id='#'+$(this).attr('id');
var tab=tabsEle.find('a[href='+id+']').parent('li');
var tabLeft=tab.position().left;
var midOff=Math.round((tab.outerWidth()-arrW)/2);
arrSeed.clone(true).prependTo($(this))*/
/* center-align tab arrow to it's tab */
/*.css('left', tabLeft+allTabsLeft+midOff+'px');
id=tab=tabLeft=midOff=null;
});*/
arrSeed=arrW=tabsEle=allTabsLeft=null;

/* Ignore clicks on current or inactive tabs */
$('.static-tabs-nav').find('.ui-tabs-selected a').click(function(e){
e.preventDefault();
});
/* to fix the relative positioning issue on IE6 */
setTimeout(function (){
$('.ui-tabs-panel').css('zoom','1');
}, 0);
}

function datePicker(){
var calFields=$('input:text.hasCal');
var setMinDate=function(input){
var clsMark='minDate_';
var inp=$(input);
var myD=inp.datepicker('getDate');
var cls=inp.attr('class');
var lowBound;
if(!inp.is('.hasMinDate')){ return {}; }
if(cls.indexOf(clsMark)==-1) { return {}; }
cls=cls.substr(cls.indexOf(clsMark)+clsMark.length);  /* cut head */
if(cls.indexOf(' ')!=-1){
cls=cls.substr(0,cls.indexOf(' '));  /* cut tail */
}
lowBound=$('#'+cls).datepicker('getDate');
if(lowBound==null) { return {}; }
if( (myD != null) && (myD < lowBound) ){
inp.val('');  /* reset field if my date is earlier than lower bound */
}
return { minDate: lowBound };
};
var afterSelect=function(dateText, inst){
var clsMark='minDate_';
var inp=inst.input;
var myD=inp.datepicker('getDate');
var reInp=$('input.'+clsMark+inp.attr('id'));
var rd;/* return date */
inp.trigger('change'); /* for #form_hotels */
if(reInp.length==0){ return; }
rd=reInp.datepicker('getDate');
if(rd==null) { return; }
if(myD > rd) { reInp.val(''); } /* reset the other field if my date is later than its date */
clsMark=inp=myD=reInp=rd=null;
};

if(calFields.length==0) return;
calFields.attr('readonly','readonly')
.datepicker({
showOn: 'both', /* triggers by both on the field and the button */
buttonImage: CAL_ICON_PATH,
buttonImageOnly: true,
buttonText: 'Choose a Date',
showAnim: 'slideDown',

/* use text to display month and year */
changeMonth: false,
changeYear: false,

prevText: '<',
nextText: '>',

/* restrictions on date range */
minDate: 0,
maxDate: '+1Y -1D',  /* one year */

beforeShow: setMinDate,
onSelect: afterSelect,

dateFormat: 'dd/mm/yy',  /* eg: 23/06/2009 */
firstDay: 6, /* weeks start on Saturdays */
changeFirstDay: false,  /* day of week unclickable */

numberOfMonths: 1,
showButtonPanel: true


});
}


/* event handlers on book online forms */
function bookOnlineControls(){
(function (){
var f=$('#form_flights');
var rd=f.find('#col_ReturnDate');
f.find('input[name="UC_QuickSearch:JT"]').click(function(){ /* radio buttons */
switch($(this).val()){
case 'UC_QuickSearch_RB_Flight_Return' :
rd.css('visibility', 'visible');
break;
case 'UC_QuickSearch_RB_Flight_OneWay' :
rd.css('visibility', 'hidden')
.find('input:text').val('');  /* reset value */
break;
}
}).filter('[checked]').trigger('click');
f=null;
})();

(function (){
var f=$('#form_hotels');
var inDate=f.find('#UC_QuickSearch_TB_QS_Hotels_CheckInDate'); /* date text field */
var outDate=f.find('#UC_QuickSearch_TB_QS_Hotels_CheckOutDate'); /* date text field */
var nights=f.find('#UC_QuickSearch_TB_QS_Noofnights'); /* text field */
var dateDiff=function(date1, date2){
if( !(date1 instanceof Date) || !(date2 instanceof Date) ) {return null;}
else {return Math.round((date1-date2)/86400000);}/* 86400000=numder of millseconds in one day=1000*60*60*24 */
};
/* DaysDiff and GetCheckoutDate are copied from current site */
var DaysDiff=function(){ /* Date Objects, with similar times */
var FromDateTB=document.getElementById("UC_QuickSearch_TB_QS_Hotels_CheckInDate");
var ToDateTB=document.getElementById("UC_QuickSearch_TB_QS_Hotels_CheckOutDate");
var DurationTB=document.getElementById("UC_QuickSearch_TB_QS_Noofnights");
if( FromDateTB != null && ToDateTB != null && DurationTB != null) {
var arrToDate=ToDateTB.value.split('/');
var arrFromDate=FromDateTB.value.split('/');
var ISOToDate=new Date(arrToDate[2], arrToDate[1]-1,arrToDate[0]);
var ISOFromDate=new Date(arrFromDate[2],arrFromDate[1]-1, arrFromDate[0]);
var Duration=Math.round((ISOToDate-ISOFromDate)/864e5);
if(isNaN(Duration)==true){
Duration=0;
}
else if(Duration<0){
Duration='';
}
DurationTB.value=((FromDateTB.value=="") || (ToDateTB.value=="")) ? "" : Duration; /* avoid displaying 0 if check-in / check-out date is empty */
}
}
var GetCheckoutDate=function(){
var FromDateTB=document.getElementById("UC_QuickSearch_TB_QS_Hotels_CheckInDate");
var ToDateTB=document.getElementById("UC_QuickSearch_TB_QS_Hotels_CheckOutDate");
var DurationTB=document.getElementById("UC_QuickSearch_TB_QS_Noofnights");
if( FromDateTB != null && ToDateTB != null && DurationTB != null) {
var Duration=DurationTB.value;
 if(isNaN(Duration)==true){
/* alert('Enter valid value.'); */
}
else{
var arrFromDate=FromDateTB.value.split('/');
var ISOFromDate=new Date(arrFromDate[2],arrFromDate[1]-1, arrFromDate[0]);
var ISOToDate=new Date();
if(isNaN(ISOFromDate.valueOf()))return;/* avoid erroneous output */
ISOToDate.setDate(ISOFromDate.getDate());
ISOToDate.setMonth(ISOFromDate.getMonth());
ISOToDate.setFullYear(ISOFromDate.getFullYear());
if(parseInt(Duration, 10) > 0) ISOToDate.setDate(ISOFromDate.getDate()+parseInt(Duration, 10));
else ISOToDate.setDate(ISOFromDate.getDate()+0);
var ToDate="";
if(ISOToDate.getDate() < 10) ToDate="0"+ISOToDate.getDate()+"/";
else ToDate=ToDate+ISOToDate.getDate()+"/";
if(ISOToDate.getMonth() < 9) ToDate=ToDate+"0"+(ISOToDate.getMonth()+1)+"/";
else ToDate=ToDate+(ISOToDate.getMonth()+1)+"/";
ToDate=ToDate+ISOToDate.getFullYear()
ToDateTB.value=ToDate;
}
}
};

inDate.add(outDate).add(nights).change(function(){
switch ($(this).attr('id')) {
case inDate.attr('id') :
case outDate.attr('id') :
DaysDiff();
break;
case nights.attr('id') :
GetCheckoutDate();
break;
}
});
f=null;
})();

(function (){
var f=$('#form_insurance');
var sto=f.find('#singleTripOptions');
var amto=f.find('#annualMultiTripOptions');
f.find('#DDL_CoverPeriod').change(function(){ /* select */
displaySingleTripPrice();
}).trigger('change');

f.find('input[name="RB_TripQuote"]').click(function(){ /* radio buttons */
displaySingleTripPrice();
}).filter('[checked]').trigger('click');

f.find('input[name="RB_TripType"]').click(function(){ /* radio buttons */
switch($(this).val()){
case 'SingleTrip':
sto.removeClass('hideWithJs');
amto.addClass('hideWithJs');
break;
case 'AnnualMultiTrip':
sto.addClass('hideWithJs');
amto.removeClass('hideWithJs');
break;
}
}).filter('[checked]').trigger('click');

f=null;
})();

(function (){
var f=$('#form_meet');
var label=f.find('label[for=UC_QuickSearch_TB_Marhaba_TravelDate]');
var labelMap={'Default':'Travel Date', 'AR':'Arrival Date', 'DP':'Departure Date'};
f.find('#UC_QuickSearch_DDL_Service_Type').change(function(){ /* select */
var v=$(this).val();
if(v=='') v='Default';
label.text(labelMap[v]);
v=null;
}).trigger('change');
f=null;
})();

/* no events on car rental form */

/* no events on packages form */
}

$('.bookOnline').ready(function(){
bookOnlineControls();
if(typeof $.ui=='undefined') {
jQuery.getScript(JQUERY_UI_JS_PATH, function(){
tabs();
datePicker();
});
} else {
tabs();
datePicker();
}
});
/* book online form ends */
