﻿/// <reference path="../../scripts/jquery.vsdoc.1.2.6.js" />
/// <reference path="../../Scripts/AjaxDataBuilder.js" />
/// <reference path="../../Scripts/CommandInvoker.js" />
/// <reference path="../../Scripts/AjaxGetCommand.js" />

var ShowTimetableUrl;
var monthChangeLink;
var vMonth, vYear, vFrom, vTo;
var vStartDate, vEndDate;
var selectedCheapestFlight;

$(document).ready(function(){InitHandlers()});


function InitHandlers() {   
   
    $(".tabBody").hover(
        function() { $(this).css('cursor', 'pointer'); },
        function() { $(this).css('cursor', ''); }
     );

    $("#NextMonth").unbind("click").click(
    function() {
    ShowMonth(1);
    return false;
    }).hover(
    function() 
    { $(this).css('cursor', 'pointer'); }, function() { $(this).css('cursor', ''); });



    $("a.cheapestOutboundFlightPrice").unbind("click").click(
    function() {
        selectedCheapestFlight = $(this);
        ShowSpecificMonth();
        return false;
    });

    EnablePreviousMonth();

    $("td.available").unbind("click").click(function() {
        var idSplit = $(this).children("a").attr("id").split("|")
        SetCalendarDates(idSplit[0], idSplit[1]);
        ShowTimesPopup($(this));
        return false;
    });

    $("td.available").unbind("hover").hover(function() { }, function() { HideTimesPopup($(this)); });

}



function ShowTimesPopup(sender) {
    $(".timetablePopup").hide();
    $("td.available").removeClass("selected");
    sender.addClass("selected");

    var pos = sender.offset();
    var wrapperPos = $("#pageWrap").offset();

    var timesDiv = sender.children(".timetablePopup");

    var senderWidth = sender.outerWidth();
    var senderHeight = sender.outerHeight();
    var timesDivWidth = timesDiv.outerWidth();
    //td2015 removed -wrapperPos.left this was offsetting the popup way to the left...
    var left = (pos.left - 20) + "px";
    var top = (pos.top - wrapperPos.top + senderHeight - 5) + "px";

    timesDiv.css({
        position: 'absolute',
        zIndex: 5000,
        left: left,
        top: top
    });
    timesDiv.show();
}

function HideTimesPopup(sender) {
    sender.children(".timetablePopup").hide();
}


function EnablePreviousMonth() {

    $("#PrevMonth").unbind("click").show().click(
         function() {
            ShowMonth(-1);
            return false;
         }).hover(
         function() { $(this).css('cursor', 'pointer'); },
         function() {
             $(this).css('cursor', '');
         });
         
}
function SetCalendarDates(day, monyear) {
    var date = Date.fromEjDayMonthYearString(day, monyear);
    // get day month for out bound from pod.
    $("#oDate").val(Date.toddMMyyyyFormattedString(date));
    $("#rDate").val(Date.toddMMyyyyFormattedString(date));
}

function BuildStandardRequestData(month, year, from, to, startdate, enddate)
{
	var requestDataBuilder = new AjaxDataBuilder(false);
	requestDataBuilder.Add("month", month);
	requestDataBuilder.Add("year", year);
	requestDataBuilder.Add("fromCode", from);
	requestDataBuilder.Add("toCode", to);
	requestDataBuilder.Add("startdate", startdate);
	requestDataBuilder.Add("enddate",  enddate);

	return requestDataBuilder;
}

function ShowMonth(increment) {
    ShowUpdatingCalendar();
    var url = monthChangeLink.replace("ShowNothing", "ShowMonthIncrement")

    var builder = BuildStandardRequestData(vMonth, vYear, vFrom, vTo, vStartDate, vEndDate);
    builder.Add("increment", increment);

    DoTimetableRefresh(url, builder);
}

function ShowSpecificMonth() {

    var month, year;
    year = selectedCheapestFlight.children("#flightDate").val().split("-")[0];   
    month = selectedCheapestFlight.children("#flightDate").val().split("-")[1];
    var url = monthChangeLink.replace("ShowNothing", "ShowMonthSpecific")

    var builder = BuildStandardRequestData(month, year, vFrom, vTo, vStartDate, vEndDate);
    
    DoTimetableRefresh(url, builder);
    vMonth = month;
    vYear = year;

}

function DoTimetableRefresh(url, requestDataBuilder)
{
	var successCallback = function(html)
	{
		if (IsError(html))
		{
			ShowError(html, function(errors)
			{
				alert("is error " + html);
			});
		}
		else
		{
			updatePanel(html, "TimetableContainer");
		}
	};

	var errorCallback = function(XMLHttpRequest, textStatus, errorThrown)
	{
		alert("Error viewing timetable");
		//alert(XMLHttpRequest.responseText);
	};

	var command = new AjaxGetCommand(url, requestDataBuilder, successCallback, errorCallback, AjaxPostCommand.DefaultTimeout);

	CommandInvoker.getInstance().QueueCommand(command);
}



function updatePanel(html, panelName) {
    $("#" + panelName).html(html);
    InitHandlers();
}





function HandleAjaxError(XMLHttpRequest, textStatus, errorThrown) {
    alert("Error in Publishing Timetable");
    //alert(XMLHttpRequest.responseText);
}

function ShowUpdatingCalendar() {
   
    var html = '<div class="fareUpdate"><div class="content"><p>';
    html += '<img src="' + AjaxLoadingImageUrl + '" alt="loading" width="24" height="24" /></p>';
    html += '<p>' + updatingFlightsMessage + '&#8230;</p></div></div>';
    html += '<div class="tab-content-foot"></div>'

    $(".publishing-tab-content").html(html);
}


