﻿
var PriceGrid = new 
function () {



  var me = this;
  var _managerObj = null;
  var PageNo = 1;
  var aDealType = new Array("", "Flight", "Hotel", "FlightAndHotel");
  var sDefaultAirport = '1_-1';
  var sGblParams = "";
  var sGblURL = "";

  this.init = function (managerServerID) {
    //        var managerClientID = jQuery('span[id$=' + managerServerID + ']').attr('id');
    //        alert(managerClientID);
    //        _managerObj = $find(managerClientID);
  }


  this.RefreshPrices = function () {

    me.AddLoadingImage();
    var sDealType = jQuery('#ddDeal_Type').val();
    //        var iCountryID = jQuery('#hidDeal_CountryID').val();
    //        var sDestinationCode = jQuery('#hidDeal_DestinationID').val();
    //        var iResortID = jQuery('#hidDeal_ResortID').val();
    var iDuration = jQuery('#ddDeal_Duration').val();
    var iStarRating = jQuery('#ddDeal_StarRating').val();
    //var sDepAirport = (sDealType !== undefined && sDealType != '2') ? jQuery('#ddDeal_AirportID').val() : sDefaultAirport;
    var sDepAirport = (sDealType != '2') ? jQuery('#ddDeal_AirportID').val() : sDefaultAirport;
    var iBoardBasisID = me.GetSelectedBoardBasisID();

    var criteriaQueryStrings = me.GenerateCriteriaQueryStrings(sDealType, iDuration, iStarRating, sDepAirport, iBoardBasisID, sDealType);
    me.CallHandlerOfferGridData(criteriaQueryStrings);
  }
  this.GenerateCriteriaQueryStrings = function (sDealType, iDuration, iStarRating, sDepAirport, iBoardBasisID, sDealType) {
    var strQueryString = '';
    switch (pageType) {
      case "0":
        // home page
        sDealType = 3;
        break;
      case "1":
        strQueryString += Constants.QS_PAGE_PARAM + '=' + aQueryStringObj[Constants.QSKeyCountryCode] + '&';
        break;
      case "2":
        strQueryString += Constants.QS_PAGE_PARAM + '=' + aQueryStringObj[Constants.QSKeyCityCode] + '&';
        break;
      case "3":
        strQueryString += Constants.QS_PAGE_PARAM + '=' + aQueryStringObj[Constants.QSKeyResortCode] + '&';
        break;
    }
    strQueryString += Constants.QS_PAGE_ID + '=' + pageType + '&' + Constants.QS_BOARDBASIS + '=' + iBoardBasisID + '&' + Constants.QS_DEP_AIRPORT + '=' + sDepAirport + '&' + Constants.QS_DURATION + '=' + iDuration + '&' + Constants.QS_STAR_RATING + '=' + iStarRating + '&' + Constants.QS_DEALTYPE + '=' + sDealType + '&' + Constants.QS_PAGENUMBER + '=' + PageNo + '&' + Constants.QS_NO_OF_COL + '=' + noOfColumns;
    return strQueryString;
  }
  this.GetSelectedBoardBasisID = function () {

    var iBoardBasisID = 0;
    var aBoardBasis = jQuery('.' + cssClassBoardBasis + ' a.ActiveTab');
    if (aBoardBasis.length > 0) {
      iBoardBasisID = aBoardBasis[0].id.split('_')[1] + '_' + aBoardBasis[0].id.split('_')[2];
    }
    return iBoardBasisID;

  }

  this.BoardBasisSelect = function (sender) {
    //reset page no
    PageNo = 1;
    var iBoardBasisID = sender.id.split('_')[1] + '_' + sender.id.split('_')[2];
    var iCurrentlySelectedBoardBasisID = me.GetSelectedBoardBasisID();

    if (iBoardBasisID != iCurrentlySelectedBoardBasisID) {
      jQuery('#aDealBT_' + iCurrentlySelectedBoardBasisID).removeClass('ActiveTab');
      //jQuery('#aDealBT_' + iCurrentlySelectedBoardBasisID).addClass('InactiveTab');
      //  jQuery('#aDealBT_' + iBoardBasisID).removeClass('InactiveTab');
      jQuery('#aDealBT_' + iBoardBasisID).addClass('ActiveTab');
      me.RefreshPrices();
    }
  }

  this.DealTypeSelect = function (sender) {
    //reset page no
    PageNo = 1;
    if (sender.value != Constants.DealTypeIDHotel) {
      jQuery('#ddDeal_AirportID').show();
    }
    else {
      jQuery('#ddDeal_AirportID').hide();
    }
    me.RefreshPrices();
  }

  //backa
  this.Back = function (iCurrentPanel) {
    jQuery('#divPricePanel' + iCurrentPanel).hide();
    jQuery('#divPricePanel' + (iCurrentPanel - 1)).show();
    //reset page no
    PageNo = (iCurrentPanel - 1);
    me.RefreshPrices();

  }
  //forward
  this.Forward = function (iCurrentPanel) {
    jQuery('#divPricePanel' + iCurrentPanel).hide();
    jQuery('#divPricePanel' + (iCurrentPanel + 1)).show();
    PageNo = (iCurrentPanel + 1);
    me.RefreshPrices();
  }

  this.SearchDeal = function (sender) {
    //alert(sender.id);
    //WaitMessege.ShowWaitMessage();
    WaitMessege.ShowHoldingPage("SearchDeal");
    var Url = host;

    var sDealType = jQuery('#ddDeal_Type').val();
    var sDepAirport = (sDealType !== undefined && sDealType != '2') ? jQuery('#ddDeal_AirportID').val() : sDefaultAirport;

    var aBits = sender.id.split('_');
    var sPageType = aBits[1];
    var selectedBoardBasisID = me.GetSelectedBoardBasisID();
    switch (sPageType) {
      case "place":

        var sCountryCode = aBits[2];
        var sDestinationCode = aBits[3];
        var sResortCode = aBits[4];
        var sHotelcode = aBits[5];
        var sCheckInDate = aBits[6];
        var sFlightCacheID = aBits[7];

        var sParamaters = jQuery.query.REMOVE(Constants.QSKeyHotelCode).set(Constants.QSKeyHotelCode, sHotelcode)
                                            .REMOVE(Constants.QSKeyCountryCode).set(Constants.QSKeyCountryCode, sCountryCode)
                                            .REMOVE(Constants.QSKeyDestinationCode).set(Constants.QSKeyDestinationCode, sDestinationCode)
                                            .REMOVE(Constants.QSKeyLocationCode).set(Constants.QSKeyLocationCode, sResortCode)
                                            .REMOVE(Constants.QSKeyCheckInDate).set(Constants.QSKeyCheckInDate, sCheckInDate)
																						.REMOVE(Constants.QSKeyDepartureDate).set(Constants.QSKeyDepartureDate, sCheckInDate)
                                            .REMOVE(Constants.QSKeyDuration).set(Constants.QSKeyDuration, jQuery('#ddDeal_Duration').val().split('_')[0])
                                            .REMOVE(Constants.QSKeyStarRating).set(Constants.QSKeyStarRating, jQuery('#ddDeal_StarRating').val().split('_')[0])
                                            .REMOVE(Constants.QSKeyBoardBasisID).set(Constants.QSKeyBoardBasisID, selectedBoardBasisID.split('_')[0])
                                            .REMOVE(Constants.QSKeyRoomsRequired).set(Constants.QSKeyRoomsRequired, Constants.DefaultNumbersOfRooms)
                                            .REMOVE(Constants.QSKeyAdults).set(Constants.QSKeyAdults, Constants.DefaultNumberOfAdults)
                                            .REMOVE(Constants.QSKeyChildren).set(Constants.QSKeyChildren, Constants.DefaultNumberOfChildren)
                                            .REMOVE(Constants.QSKeyOccupancyStatus).set(Constants.QSKeyOccupancyStatus, Constants.DefaultOccupancyStatus)
																						.REMOVE(Constants.QSKeyDepartureCode).set(Constants.QSKeyDepartureCode, sDepAirport.split('_')[0] === "1" ? "" : sDepAirport.split('_')[0])
																						.REMOVE(Constants.QSKeyDepartureGroupID).set(Constants.QSKeyDepartureGroupID, sDepAirport.split('_')[0] === "1" ? sDepAirport.split('_')[0] : "")
                                            .REMOVE(Constants.QSKeyVariance).set(Constants.QSKeyVariance, "0")
                                                    .REMOVE(Constants.QSTabName);
      


        //				if (aDealType[jQuery('#ddDeal_Type').val()] == Constants.DealTypeFlightAndHotel && sFlightCacheID != "0") {
        //					sParamaters += "&" + Constants.QSKeyFlightID + "=" + sFlightCacheID + "&" + Constants.QSKeySearchFor + "=" + Constants.DealTypeFlightAndHotel;
        //				}
        //				else {
        //					sParamaters += "&" + Constants.QSKeySearchFor + "=" + Constants.DealTypeHotel;
        //				}
        if (aDealType[jQuery('#ddDeal_Type').val()] == Constants.DealTypeFlightAndHotel) {
          Url += Constants.PageNameFlightSearchResults;
          sParamaters += "&" + Constants.QSKeySearchFor + "=" + Constants.DealTypeFlightAndHotel;
        }
        else {
          Url += Constants.PageNameHotelSearchResults;
          sParamaters += "&" + Constants.QSKeySearchFor + "=" + Constants.DealTypeHotel;
        }
        break;

      case "hotDeal":
        Url += Constants.PageNameFlightSearchResults;
        var sCountryCode = aBits[2];
        var sDestinationCode = aBits[3];
        var sResortCode = aBits[4];
        var sHotelcode = aBits[5];
        var sCheckInDate = aBits[6];
        var sFlightCacheID = aBits[7];

        var sParamaters = jQuery.query.REMOVE(Constants.QSKeyHotelCode).set(Constants.QSKeyHotelCode, sHotelcode)
                                            .REMOVE(Constants.QSKeyCountryCode).set(Constants.QSKeyCountryCode, sCountryCode)
                                            .REMOVE(Constants.QSKeyDestinationCode).set(Constants.QSKeyDestinationCode, sDestinationCode)
                                            .REMOVE(Constants.QSKeyLocationCode).set(Constants.QSKeyLocationCode, sResortCode)
                                            .REMOVE(Constants.QSKeyCheckInDate).set(Constants.QSKeyCheckInDate, sCheckInDate)
																					  .REMOVE(Constants.QSKeyDepartureDate).set(Constants.QSKeyDepartureDate, sCheckInDate)
                                            .REMOVE(Constants.QSKeyDuration).set(Constants.QSKeyDuration, jQuery('#ddDeal_Duration').val().split('_')[0])
                                            .REMOVE(Constants.QSKeyStarRating).set(Constants.QSKeyStarRating, jQuery('#ddDeal_StarRating').val().split('_')[0])
                                            .REMOVE(Constants.QSKeyBoardBasisID).set(Constants.QSKeyBoardBasisID, selectedBoardBasisID.split('_')[0])
                                            .REMOVE(Constants.QSKeyRoomsRequired).set(Constants.QSKeyRoomsRequired, Constants.DefaultNumbersOfRooms)
                                            .REMOVE(Constants.QSKeyAdults).set(Constants.QSKeyAdults, Constants.DefaultNumberOfAdults)
                                            .REMOVE(Constants.QSKeyChildren).set(Constants.QSKeyChildren, Constants.DefaultNumberOfChildren)
                                            .REMOVE(Constants.QSKeyOccupancyStatus).set(Constants.QSKeyOccupancyStatus, Constants.DefaultOccupancyStatus)
																						.REMOVE(Constants.QSKeyDepartureCode).set(Constants.QSKeyDepartureCode, sDepAirport.split('_')[0] === "1" ? "" : sDepAirport.split('_')[0])
																						.REMOVE(Constants.QSKeyDepartureGroupID).set(Constants.QSKeyDepartureGroupID, sDepAirport.split('_')[0] === "1" ? sDepAirport.split('_')[0] : "")
                                            .REMOVE(Constants.QSKeyVariance).set(Constants.QSKeyVariance, "0")


        //				if (sFlightCacheID != "0") {
        //					sParamaters += "&" + Constants.QSKeyFlightID + "=" + sFlightCacheID + "&" + Constants.QSKeySearchFor + "=" + Constants.DealTypeFlightAndHotel;
        //				}
        //				else {
        //					sParamaters += "&" + Constants.QSKeySearchFor + "=" + Constants.DealTypeHotel;
        //				}
        sParamaters += "&" + Constants.QSKeySearchFor + "=" + Constants.DealTypeFlightAndHotel;
        break;

      case "hotel":

        var sCountryCode = aBits[2];
        var sDestinationCode = aBits[3];
        var sResortCode = aBits[4];
        var sBoardBasisID = aBits[5];
        var sCheckInDate = aBits[6];

        var sHotelCode = aQueryStringObj[Constants.QSKeyHotelCode];
        var sParamaters = jQuery.query.REMOVE(Constants.QSKeyHotelCode).set(Constants.QSKeyHotelCode, sHotelCode)
                                            .REMOVE(Constants.QSKeyCountryCode).set(Constants.QSKeyCountryCode, sCountryCode)
                                            .REMOVE(Constants.QSKeyDestinationCode).set(Constants.QSKeyDestinationCode, sDestinationCode)
                                            .REMOVE(Constants.QSKeyLocationCode).set(Constants.QSKeyLocationCode, sResortCode)
                                            .REMOVE(Constants.QSKeyCheckInDate).set(Constants.QSKeyCheckInDate, sCheckInDate)
                                            .REMOVE(Constants.QSKeyDuration).set(Constants.QSKeyDuration, Constants.DefaultDuration)
                                            .REMOVE(Constants.QSKeyStarRating).set(Constants.QSKeyStarRating, Constants.DefaultStarRating)
                                            .REMOVE(Constants.QSKeyBoardBasisID).set(Constants.QSKeyBoardBasisID, sBoardBasisID)
                                            .REMOVE(Constants.QSKeyRoomsRequired).set(Constants.QSKeyRoomsRequired, Constants.DefaultNumbersOfRooms)
                                            .REMOVE(Constants.QSKeyAdults).set(Constants.QSKeyAdults, Constants.DefaultNumberOfAdults)
                                            .REMOVE(Constants.QSKeyChildren).set(Constants.QSKeyChildren, Constants.DefaultNumberOfChildren)
                                            .REMOVE(Constants.QSKeyOccupancyStatus).set(Constants.QSKeyOccupancyStatus, Constants.DefaultOccupancyStatus)
                                            .REMOVE(Constants.QSKeyVariance).set(Constants.QSKeyVariance, "0")
                                            .REMOVE(Constants.QSKeySearchFor).set(Constants.QSKeySearchFor, Constants.DealTypeHotel).toString();

        break;


      default:
        alert("Deal not available");
        return false;
    }

    sParamaters = sParamaters.replace("?", "");
    me.NavigateToSearch(Url, sParamaters);
    //window.location = Url + sParamaters;
  }

  this.NavigateToDestination = function (pageURL) {
    var Url = host + pageURL;
    window.location = Url;
  }

  this.NavigateToResort = function (sender) {
    var Url = host + Constants.PageNameResortDetail;
    var sResortCode = sender.id.split('_')[1];
    var sParamaters = jQuery.query.set(Constants.QSKeyResortCode, sResortCode).REMOVE(Constants.QSKeyCityCode).toString();
    window.location = Url + sParamaters;
  }

  this.NavigateToSearch = function (url, sParameters) {
    me.sGblParams = sParameters;
    me.sGblURL = url;
    try {
      jQuery.ajax({
        type: "POST",
        url: host + "Handler/SearchrequestidHandler.ashx?" + sParameters,
        contentType: "text/html",
        success: function (msg) {
          window.location = me.sGblURL + "?" + me.sGblParams + msg;
        },
        error: function (msg) {
          jQuery('#loadingdiv').hide();
          WaitMessege.RemoveWaitMessage();
          log('error in NavigateToSearch:', msg);
          alert('could not navigate to search. Please try again.');
        }
      });

    } catch (e) {
      jQuery('#loadingdiv').hide();
      WaitMessege.RemoveWaitMessage();
      log('error in NavigateToSearch:', e);
      alert('could not navigate to search. Please try again.');
    }
  }

  this.InitialCallforHandler = function () {
    var strQurystrings = Constants.QS_IS_INITIAL_REQUEST + "=1&" + Constants.QS_PAGE_ID + "=" + pageType + '&' + Constants.QS_NO_OF_COL + '=' + noOfColumns + '&';
    switch (pageType) {
      case "0":

        break;
      case "1":
        strQurystrings += Constants.QS_PAGE_PARAM + '=' + aQueryStringObj[Constants.QSKeyCountryCode];
        break;
      case "2":
        strQurystrings += Constants.QS_PAGE_PARAM + '=' + aQueryStringObj[Constants.QSKeyCityCode];
        break;
      case "3":
        strQurystrings += Constants.QS_PAGE_PARAM + '=' + aQueryStringObj[Constants.QSKeyResortCode];
        break;
    }
    me.CallHandlerOfferGridData(strQurystrings);
  }

  this.CallHandlerOfferGridData = function (strQurystrings) {
    //alert("hi");
    me.AddLoadingImage();

    try {
      jQuery.ajax({
        type: "POST",
        url: host + "Handler/OfferGridData.ashx?" + strQurystrings,
        contentType: "text/html",
        success: function (msg) {
          me.DispalyPriceHtml(msg);
        },
        error: function (msg) {
          jQuery('#loadingdiv').hide();
          me.DispalyPriceHtml("");
        }
      });

    } catch (e) {
      log("CallHandlerOfferGridData:", e);
    }
  }

  this.DispalyPriceHtml = function (msg) {
    jQuery('#loadingdiv').hide();
    if (msg === "") {
      jQuery('#PriceGridHTML').html(Constants.MessageNoDealsFound);
    }
    else {
      jQuery('#PriceGridHTML').html(msg);
    }

  }

  this.AddLoadingImage = function () {
    jQuery('#loadingdiv').show();
    jQuery('#divDeal_Notice').html("<small><img alt=\"loading\" src=\"/images_static/price-grid-ajax-loader.gif\" /><span style='color:#D53030;'> " + Constants.MessagePriceGridLoading + "</span></small>");
  }
}
