/*
 * jQuery for all BnB Reservations
 * 
 *
 */

// Takes an object and creates a string array
$.fn.serializeObject = function()
{
   var o = {};
   var a = this.serializeArray();
   $.each(a, function() {
       if (o[this.name]) {
           if (!o[this.name].push) {
               o[this.name] = [o[this.name]];
           }
           o[this.name].push(this.value || '');
       } else {
           o[this.name] = this.value || '';
       }
   });
   return o;
};

var oOTDomainURL = "http://www.opentable.com";
var oOTHoverCloseText = "CLOSE";
var oOTDate = new Date(2012, 0, 4, 19, 0, 0, 0);
var oOTDateFormat = "mm/dd/yy";
var oOTDateMonthAfterYear = false;
var oOTDateWeekHeader = "wk";
var oOTDateFirstDay = 0;
var oOTDateDayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
var oOTDateDayNamesMin = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];
var oOTDateDayNamesShort = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
var oOTDateMonthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
var oOTDateMonthNamesShort = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
var oOTDateYearSuffix = "";
var oOTDateClose = "Done";
var oOTDateToday = "Today";
var oOTDatePrev = "Prev";
var oOTDateNext = "Next";
var oOTDateMaxDays = "+90D";
var oOTCookiesChecked = false;
var oOTHover = false;

$(function(){

$("a[rel^='prettyPhoto']").prettyPhoto({theme: 'dark_square', markup:'<div class="pp_pic_holder"> \
	  <div class="ppt">&nbsp;</div> \
	  <div class="pp_top"> \
	   <div class="pp_left"></div> \
	   <div class="pp_middle"></div> \
	   <div class="pp_right"></div> \
	  </div> \
	  <div class="pp_content_container"> \
	   <div class="pp_left"> \
	   <div class="pp_right"> \
	    <div class="pp_content"> \
	     <div class="pp_loaderIcon"></div> \
	     <div class="pp_fade"> \
	      <div class="pp_details clearfix"> \
	       <a class="pp_close" href="#">Close</a> \
	      </div> \
		  <div id="pp_full_res"></div> \
	     </div> \
	    </div> \
	   </div> \
	   </div> \
	  </div> \
	  <div class="pp_bottom"> \
	   <div class="pp_left"></div> \
	   <div class="pp_middle"></div> \
	   <div class="pp_right"></div> \
	  </div> \
	 </div> \
	 <div class="pp_overlay"></div>',
		 keyboard_shortcuts: false,
		 default_width:980,
		 default_height:270,
		 allow_resize:false,
		 show_title: false,
		 show_details: false,
		 horizontal_padding: 10,
		 is_form: true,
		 deeplinking:false,
		 changepicturecallback: function(){
			AllJQueryLoaded();
		 }
	 });
    $("#ot_restaurant").live('click',function(){
		$("#RestaurantID, #rid, #RestaurantReferralID").val($(":selected",this).val());
	});


});



function AllJQueryLoaded()
{
	$("#OT_timeList,#OT_timeListb").hide();
	//reset forms on page load
	$("form").each(function() {
		this.reset(); 
	});

	$("#datepickerb,#datepicker").datepicker({
		minDate: oOTDate, maxDate: oOTDateMaxDays, //don't allow user to go back to past
		dateFormat: oOTDateFormat,
		firstDay: oOTDateFirstDay,
		showMonthAfterYear: oOTDateMonthAfterYear,
		weekHeader: oOTDateWeekHeader,
		dayNames: oOTDateDayNames,
		dayNamesMin: oOTDateDayNamesMin,
		dayNamesShort: oOTDateDayNamesShort,
		monthNames: oOTDateMonthNames,
		monthNamesShort: oOTDateMonthNamesShort,
		yearSuffix: oOTDateYearSuffix,
		//altField: '#startDate', // set the date in the form field.
		hideIfNoPrevNext:true,
		nextText: oOTDateNext,
		prevText: oOTDatePrev,
		closeText: oOTDateClose,
		currentText: oOTDateToday
	});

	// DATEPICKER - onload put current date in input field 
	$("#datepickerb,#datepicker").datepicker("getDate"); //if user doesn't click on a date, get today's date
	$("#datepickerb,#datepicker").datepicker("setDate" , oOTDate); //set the date
		
	//dropdown lists initial state
	$("#OT_timeList li:eq(38) a.OT_navLink,#OT_timeListb li:eq(38) a.OT_navLink").addClass("selected"); // set initial selected state on 7pm
	$("#OT_partyList li:eq(1) a.OT_navLink,#OT_partyListb li:eq(1) a.OT_navLink").addClass("selected"); // set initial selected state on 2 people
	

	//RESERVATION TIME
	var OT_TimeList_show = false;	
	
	$("#ResTime,").mouseup(function (e) {
		$("#OT_timeList").toggle().scrollTo( 'li:eq(37)', 1 );//scroll list to default 7pm. Speed set to 1 so scrolling is instant.

		$("#OT_partyList").hide();
		
		jQuery('#ResTime').click(function(e) {
			e.stopPropagation();
		});
	});
	
	$("#ResTimeb").mouseup(function (e) {
		$("#OT_timeListb").toggle().scrollTo( 'li:eq(37)', 1 );//scroll list to default 7pm. Speed set to 1 so scrolling is instant.

		$("#OT_partyListb").hide();
		
		jQuery('#ResTimeb').click(function(e) {
			e.stopPropagation();
		});
	});
	
		
	//$("#ResTime").blur(function (e) {
	//	if (!OT_TimeList_show) 
	//		$("#OT_timeList").hide();
	//});
	

	
	$(".OT_time .OT_navList").hover(function(e) {OT_TimeList_show = true;}, function(e){OT_TimeList_show = false;});
	$(".OT_time .OT_navList").has("#ResTime").click(function(e) {OT_TimeList_show = false; $("#OT_timeList").hide();});
	$(".OT_time .OT_navList").has("#ResTimeb").click(function(e) {OT_TimeList_show = false; $("#OT_timeListb").hide();});
	

	// PARTYSIZE
	var OT_PartySizeList_show = false;
	$("#PartySizeFake").mouseup(function (e) {
		$("#OT_partyList").toggle().scrollTo( 'li:eq(0)', 1 );
		$("#OT_timeList").hide();
		
		jQuery('#PartySizeFake').click(function(e) {
			e.stopPropagation();
		});
		
	});
	$("#PartySizeFakeb").mouseup(function (e) {
		$("#OT_partyListb").toggle().scrollTo( 'li:eq(0)', 1 );
		$("#OT_timeListb").hide();
		
		jQuery('#PartySizeFakeb').click(function(e) {
			e.stopPropagation();
		});
		
	});
	
	$("#PartySizeFake").blur(function (e) {
		if (!OT_PartySizeList_show) 
			$("#OT_partyList").hide();
	});
	
	$("#PartySizeFakeb").blur(function (e) {
		if (!OT_PartySizeList_show) 
			$("#OT_partyListb").hide();
	});

	$(".OT_party .OT_navList").hover(function(e) {OT_PartySizeList_show = true;}, function(e){OT_PartySizeList_show = false;});
	$(".OT_party .OT_navList").has("#PartySizeFake").click(function(e) {OT_PartySizeList_show = false;$("#OT_partyList").hide();});
	$(".OT_party .OT_navList").has("#PartySizeFakeb").click(function(e) {OT_PartySizeList_show = false;$("#OT_partyListb").hide();});

	$("#OT_timeList .OT_navLink").click(function () {
		$("#OT_partyList").hide();
		$("#OT_timeList").show();
		jQuery('#OT_timeList .OT_navLink').removeClass('selected');
		jQuery(this).addClass('selected');	
	});
	
	$("#OT_timeListb .OT_navLink").click(function () {
		$("#OT_partyListb").hide();
		$("#OT_timeListb").show();
		jQuery('#OT_timeListb .OT_navLink').removeClass('selected');
		jQuery(this).addClass('selected');	
	});
	
	$("#OT_partyList .OT_navLink").click(function () {
		$("#OT_partyList").show();
		$("#OT_timeList").hide();
		jQuery('#OT_partyList .OT_navLink').removeClass('selected');
		jQuery(this).addClass('selected');	
	});
	
	$("#OT_partyListb .OT_navLink").click(function () {
		$("#OT_partyListb").show();
		$("#OT_timeListb").hide();
		jQuery('#OT_partyListb .OT_navLink').removeClass('selected');
		jQuery(this).addClass('selected');	
	});

	$('#OT_Find_a_Table').click(function(){
		if (oOTHover && oOTCookiesChecked)
		{
			HoverSearch();
		}
		else
		{
			var sAction = jQuery('#OT_form').attr('action');
			if (sAction.indexOf('?') > 1)
				sAction = sAction + "&rnd=1";
			else
				sAction = sAction + "?rnd=1";
			jQuery('#OT_form').attr('action', sAction);
			jQuery('#OT_form').submit();
		}
		return false;
	});
	
	$('#OT_Find_a_Tableb').click(function(){
		if (oOTHover && oOTCookiesChecked)
		{
			HoverSearch();
		}
		else
		{
			var sAction = jQuery('#OT_formb').attr('action');
			if (sAction.indexOf('?') > 1)
				sAction = sAction + "&rnd=1";
			else
				sAction = sAction + "?rnd=1";
			jQuery('#OT_formb').attr('action', sAction);
			jQuery('#OT_formb').submit();
		}
		return false;
	});

	// hide the dropdowns when clicking outside of the parent container.
	$(document).bind('click', function(e) {
		var $clicked = jQuery(e.target);
		if (! $clicked.parents().hasClass("OT_list"))
			$("#OT_partyList,#OT_partyListb").hide();
			$("#OT_timeList,#OT_timeListb").hide();
	});

	// hide the party dropdown for IE, after scrolling, then clicking outside...
	$(document).bind('click', function(e) {
	var $clicked = jQuery(e.target);
	if (! $clicked.parents().hasClass("OT_navList"))
		$("#OT_partyList,#OT_partyListb").hide();
	});
	
}
