﻿// JScript File
var _ajaxUrl = '';
var idCode=null;//credit
var idBtnClick=null;//credit

function CloseMeSoft()
{     
    if ($(hfHidePanel)!=null)
        if ($(hfHidePanel).value=='1') 
            {
                $(lbCloseTicketRefine).innerHTML = "<img src=\"../../../images/sign_minus.gif\" alt=\"\" />";
                $(divTicketRefine).innerHTML='Please&nbsp;click&nbsp;here&nbsp;to&nbsp;collapse&nbsp;the&nbsp;Search&nbsp;menu';
                $(divTicketRefine).style.display='inline';
                $(imgArrowRefine).style.display='inline';
                $(tdTicketSearch).style.display='block'; 
           } 
 }
function ClientCall(callBackFunction, params, aditionalMethodToCall)
{
//    debugger;
    var object = typeof (params) == 'object' && params !== null;
    var string = typeof (params) == 'string';
    var url = object ? _ajaxUrl.addQuery(params) : string ? _ajaxUrl + params : _ajaxUrl;

    var rnd = { r: Math.random() }

    url = url.addQuery(rnd);

    var oXMLHttpRequest = new XMLHttpRequest();
    //    debugger;
    oXMLHttpRequest.open("GET", url, false);
    oXMLHttpRequest.onreadystatechange = function()
    {
        if (this.readyState == XMLHttpRequest.DONE)
        {
//            debugger;
            if (callBackFunction)
               return callBackFunction(this.responseText);
            else
                return this.responseText;

            if (aditionalMethodToCall)
               return aditionalMethodToCall();
        }
        return false;
    };
    oXMLHttpRequest.send(null);
}
function dollar(id)
{
    return document.getElementById(id);
}
if (!String.prototype.addQuery)
{
    String.prototype.addQuery = function(params)
    {
        var concat = this.indexOf('?') == -1 ? this + '?' : this;
        for (var property in params)
        {
            if (typeof (params[property]) != 'object' && params[property] !== undefined && params[property] !== null && params[property].toString().length > 0)
                concat += (concat.indexOf('?') == concat.length - 1 ? '' : '&') + property + '=' + params[property];
        }
        return concat;
    };
}
var m_page,m_btn,m_resId;
var agency=false;
var eTicket=false;
var myISender= null;

var checkCreditAndOpenCurrencyPaymentFirstTime = null;


function checkCreditAndOpenCurrencyPayment(page,btn,resid,agencyId,userId,eventCredit,currencyCode,isTicket,sender)
{
     //debugger;
    if ( checkCreditAndOpenCurrencyPaymentFirstTime == false )
    {
        if (isTicket) 
        {
            myShowPleaseWait();
        }
        return true;
    }

    m_page = page;
    m_btn = btn;
    m_resId = resid;
    agency = true;
    eTicket=isTicket;
    
    myISender = sender;
    
    checkCreditAndOpenCurrencyPaymentFirstTime = true;
    
    return checkCredit(agencyId,userId,resid,eventCredit,currencyCode);
}
function myOpenCurrencyPayment()
{
    return myCreateDragContainer('CURRENCY PAYMENT','300px','180px',m_page + "?rid=" + m_resId + (eTicket ? "&hide=1" : ""),myISender);
}

//    if (eTicket)
//    {
//        eTicket=false;
//        test = openCurrencyPaymentTicket(m_page,m_resId,m_btn);
//    }
//    else 
//    {
//        test = openCurrencyPayment(m_page,m_resId,m_btn);
//        var x= 1;
//    }
//}
//openCurrencyPaymentTicket(page,resId,btn)
var clientCallResponse = false;

var checkCreditFirstTime = null;

function checkCredit(agencyId,userId,reservationId,eventCredit,currencyCode)
{
//    debugger;
    
//    if ( checkCreditFirstTime == false )
//        return true;
    
    var params = '';
    
    params = params.addQuery({ method : 'CheckCredit', aid : agencyId, uid : userId, rid : reservationId, value : eventCredit, currencyCode : currencyCode });
    
    ClientCall(checkCreditResponse,params);
    
    return clientCallResponse;

//    return checkCreditResponse();
}


function HideGroupedHotels(eventElement,tid,hide)
{
//    debugger;
    var eventElementRow = GetParent(eventElement,"tr");
    
    var tmpRow = eventElementRow.nextSibling;
    
    while ( tmpRow.nodeName.toLowerCase() != 'tr' )
        tmpRow = tmpRow.nextSibling;
    
    while ( tmpRow != null )
    {
        if ( typeof(tmpRow.attributes["tid"]) != "undefined" && tmpRow.attributes["tid"].value == tid )
        {
            
            tmpRow.style["display"] = hide ? "none" : "table-row";
        }
        else
            break;
            
        tmpRow = tmpRow.nextSibling;
        
        while ( tmpRow.nodeName.toLowerCase() != 'tr' )
            tmpRow = tmpRow.nextSibling;
    }
    
//    eventElement.onclick = function () { HideGroupedHotels(eventElement,tid,!hide); }
//    eventElement.innerText = hide ? "Check for other room type and prices" : "Hide options";
    
    var expImage = document.getElementById(tid + "a");
    var colImage = document.getElementById(tid + "b");
    
    if ( expImage != null && colImage != null )
    {
        expImage.style["display"] = hide ? "table" : "none";
        colImage.style["display"] = hide ? "none" : "table";
    }
}

var _expandEventElement;
var _tid;

function GetGroupedHotels
    (
        eventElement
        , sessionId
        , filterBy
        , category
        , hotelName
        , orderBy
        , orderDirection
        , mealType
//        , serviceId
        , currentUser
//        , nights
//        , rooms
//        , agencyId
//        , subagencyId
//        , cityId
//        , visaFee
//        , commUseFlat
//        , commPerc
//        , commFlat
//        , hasCityFee
//        , hasHotelFee
        , all
        , groupHotelName
        , firstRowNumber
        , sid
        , tid
        , aid
        , gid
        , appPath
        , countryCode
    )
{
//    debugger;

    _expandEventElement = eventElement;
    _tid = tid;
    
    var params = '';
    
    params = params.addQuery(
        { 
        method : 'GetGroupedHotels'
        , sessionId         : sessionId 
        , filterBy          : filterBy
        , category          : category
        , hotelName         : hotelName
        , orderBy           : orderBy
        , orderDirection    : orderDirection
        , mealType          : mealType
//        , serviceId         : serviceId
        , currentUser       : currentUser
//        , nights            : nights
//        , rooms             : rooms
//        , agencyId          : agencyId
//        , subagencyId       : subagencyId
//        , cityId            : cityId
//        , visaFee           : visaFee
//        , commUseFlat       : commUseFlat
//        , commPerc          : commPerc
//        , commFlat          : commFlat
//        , hasCityFee        : hasCityFee
//        , hasHotelFee       : hasHotelFee
        , groupedHotelName  : groupHotelName
        , firstRowNumber    : firstRowNumber
        , allResults        : all
        , sid               : sid
        , tid               : tid
        , aid               : aid
        , gid               : gid
        , appPath           : appPath
        , countryCode       : countryCode
        });
        
    ClientCall(GetGroupedHotelsResponse,params);
    
}

function GetGroupedHotelsResponse(response)
{
//    debugger;
    
    var mainRowContainerInitial = GetParent(_expandEventElement, "table");// _expandEventElement.parentNode.parentNode.parentNode;
    
    
    var mainRowContainer = mainRowContainerInitial.childNodes[0];
    
    while ( mainRowContainer.nodeName.toLowerCase() != 'tbody' )
    {
        if ( mainRowContainer.nodeName.toLowerCase() == 'tr' )
        {
            mainRowContainer = mainRowContainerInitial;
            break; 
        }
        mainRowContainer = mainRowContainer.nextSibling;
    }
    
//    if ( mainRowContainer.childNodes[0] != null && mainRowContainer.childNodes[0].nodeName.toLowerCase() == "tbody" )
//        mainRowContainer = mainRowContainer.childNodes[0];
    
    var nextRow = GetParent(_expandEventElement,"tr").nextSibling;// _expandEventElement.parentNode.parentNode.nextSibling;
    
    while ( nextRow != null && nextRow.nodeName.toLowerCase() != 'tr' )
        nextRow = nextRow.nextSibling;
    
    var tmpDiv = document.createElement('div');
    
    tmpDiv.innerHTML = response;

    var tmpTable = tmpDiv.childNodes[0];
    
    var trContainer = tmpTable.childNodes[0];
    
    while ( trContainer.nodeName.toLowerCase() != 'tbody' )
        trContainer = trContainer.nextSibling;
//    debugger;
    var hotelCount = trContainer.childNodes.length;
//    debugger;
    
    while ( trContainer.childNodes.length > 0 )
    {
        if ( trContainer.childNodes[0].nodeName.toLowerCase() != 'tr' )
            continue;
        if ( nextRow != null )
            mainRowContainer.insertBefore(trContainer.childNodes[0],nextRow);
        else
            mainRowContainer.appendChild(trContainer.childNodes[0]);
    }
//    for ( var i = 0; i < icounter; i++ )
//    {
//        if ( trContainer.childNodes[i].nodeName.toLowerCase() != 'tr' )
//            continue;
//        if ( nextRow != null )
//            mainRowContainer.insertBefore(trContainer.childNodes[i],nextRow);
//        else
//            mainRowContainer.appendChild(trContainer.childNodes[i]);
//    }
//    debugger;
//    _expandEventElement.parentNode.removeChild(_expandEventElement);
    if ( tmpDiv.parentNode != null )
        tmpDiv.parentNode.removeChild(tmpDiv);
    else 
        tmpDiv = null;
//    debugger;

//    var hideOptionsLink =  document.getElementById(_tid);
    
//    hideOptionsLink.style.display = "block";

    var element = _expandEventElement;
    var tmpTid = _tid;
    
    if ( hotelCount < 1 )
    {

//        element.innerText = "no other option";
        element.onclick = "javascript:void(0);"
        element.disabled = true;
        var expImage = document.getElementById(tmpTid + "a");
        if ( expImage != null )
            expImage.style["display"] = "none";
    }
    else
    {
        
//        element.innerText = "Hide options";
//        debugger;

        
        element.onclick = function () { HideGroupedHotels(element,tmpTid,false); };
        
        var expImage = document.getElementById(tmpTid + "a");
        var colImage = document.getElementById(tmpTid + "b");
        
        if ( expImage != null && colImage != null )
        {
            expImage.style["display"] = "none";
            colImage.style["display"] = "table";
        }
    }
}
function GetParent(eventElement, parentNodeName)
{
    var parent = eventElement.parentNode;
    
    while ( parent != null )
    {
        if ( parent.nodeName.toLowerCase() == parentNodeName.toLowerCase() )
            return parent;
        else
            parent = parent.parentNode;
    }
}
var _eventElement;

function GetSearchResults
    (
        eventElement
        , sessionId
        , filterBy
        , category
        , hotelName
        , orderBy
        , orderDirection
        , mealType
//        , serviceId
        , currentUser
//        , nights
//        , rooms
//        , agencyId
//        , subagencyId
//        , cityId
//        , visaFee
//        , commUseFlat
//        , commPerc
//        , commFlat
//        , hasCityFee
//        , hasHotelFee
        , from
        , to
        , allResults
        , sid
        , aid
        , gid
        , appPath
        , countryCode
    )
{
//    debugger;

    var params = '';
    
    params = params.addQuery(
        { 
        method : 'GetSearchResults'
        , sessionId         : sessionId 
        , filterBy          : filterBy
        , category          : category
        , hotelName         : hotelName
        , orderBy           : orderBy
        , orderDirection    : orderDirection
        , mealType          : mealType
//        , serviceId         : serviceId
        , currentUser       : currentUser
//        , nights            : nights
//        , rooms             : rooms
//        , agencyId          : agencyId
//        , subagencyId       : subagencyId
//        , cityId            : cityId
//        , visaFee           : visaFee
//        , commUseFlat       : commUseFlat
//        , commPerc          : commPerc
//        , commFlat          : commFlat
//        , hasCityFee        : hasCityFee
//        , hasHotelFee       : hasHotelFee
        , from              : from
        , to                : to
        , allResults        : allResults
        , sid               : sid
        , aid               : aid
        , gid               : gid
        , appPath           : appPath
        , countryCode       : countryCode
        });
        
    _eventElement = eventElement;
    
    ClientCall(GetSearchResultsResponse,params);
}

function GetSearchResultsResponse(response)
{
//    debugger;
    var mainRowContainerInitial = GetParent(_eventElement, "table");// _expandEventElement.parentNode.parentNode.parentNode;

    var mainRowContainer = mainRowContainerInitial.childNodes[0];
    
    while ( mainRowContainer.nodeName.toLowerCase() != 'tbody' )
    {
        if ( mainRowContainer.nodeName.toLowerCase() == 'tr' )
        {
            mainRowContainer = mainRowContainerInitial;
            break; 
        }
        mainRowContainer = mainRowContainer.nextSibling;
    }


    var tmpDiv = document.createElement('div');
    tmpDiv.innerHTML = response;

    var tmpTable = tmpDiv.childNodes[0];
    
    var trContainer = tmpTable.childNodes[0];
    
    while ( trContainer.nodeName.toLowerCase() != 'tbody' )
        trContainer = trContainer.nextSibling;

//    if ( tmpTable.childNodes[0].nodeName.toLowerCase() == "tbody" )
//        trContainer = tmpTable.childNodes[0];
    
    if ( tmpTable.attributes["header"] == "true" )
        mainDiv.appendChild(tmpTable);
    else
    {
        while ( trContainer.firstChild != null )
        {
            mainRowContainer.appendChild(trContainer.firstChild);
        }
//        var count = trContainer.childNodes.length;
//        for ( var i = 0; i < count ; i++ )
//        {
//            mainRowContainer.appendChild(trContainer.childNodes[i]);
//        }
    }    
    
    var NextRow = _eventElement.parentNode.parentNode;
    mainRowContainer.removeChild(NextRow);
    
    if ( tmpDiv.parentNode != null )
        tmpDiv.parentNode.removeChild(tmpDiv);
    else
        tmpDiv = null;
}

function checkCreditResponse(response)
{
//    debugger;
//    return myOpenCurrencyPayment();
//    return;
    

//    debugger;
    if ( response === '1' )
    {
        if ( agency )
        {
            agency = false;
            checkCreditAndOpenCurrencyPaymentFirstTime = false;
            return myOpenCurrencyPayment();
        }
        else 
        {
            clientCallResponse = true;
            return true;
        }
    }
    else
    {
        alert('This reservation is not possible to be finalised due to credit reasons. Please contact Hotelcon\'s Accounting Manager.');
        clientCallResponse = false;
        return false;
    }
}
var tmpWindow = null;
function openAgencyHistory(link)
{
    if ( tmpWindow != null && !tmpWindow.closed )
    {
        tmpWindow.focus();
    }
    else
    {
       tmpWindow =  window.open(link,"mywindow","status=1,toolbar=0,resizable=1,width=500,height=200,scrollbars=1");
    }
    return false;
}
function foo()
{
    alert('foo');
}
function GetTicketAirport(idC,btnClick)
{
 
    var params = '';
    var city='';
    if ($(idC).value!='')
    {
        city=$(idC).value;
        params = params.addQuery({ method : 'TicketAirport', id : city });
        idCode=idC;
        idBtnClick=btnClick;
        ClientCall(GetTicketAirportCb,params);
    }
    return false;
}
function GetTicketAirportCb(result)
{
 var content="<table style=\"align:center;vertical-align:middle;background-color:#AACBEA;border:solid #1D5492 1px; \">"+
                "<tr onmousedown=\"myDragThisTicket(event);\" style=\"cursor:move\"><td><strong style=\"font-size:14\">Choose airport code:</strong> </td></tr>"+
                "<tr><td>"+
                "<select size=\"4\"  id=\"lbAirportCode\" class=\"ddl\" style=\"height:200px;width:280px;\">"+
                result+
 			    "</select>"+
			    "</td></tr>"+
			    "<tr><td colspan=\"2\" align=\"center\">"+            
                "<input type=\"button\" name=\"Ok\" value=\"Ok\" onclick=\"Select()\" id=\"Ok\" class=\"BtnNew\" />&nbsp;&nbsp;&nbsp;"+
                "<input type=\"button\" name=\"Cancel\" value=\"Cancel\" onclick=\"CloseDivTicket()\" id=\"Cancel\" class=\"BtnNew\" />"+
                "</td></tr>"+
                "<tr><td colspan=\"2\" style=\"height:10px\"></td></tr>"+
			    "</table>";
    
    $('divAirport').innerHTML=content;
    $('divAirport').style.position='absolute';   
    $('divAirport').style.left=getX($(idBtnClick))+30+"px";
    $('divAirport').style.top=getY($(idBtnClick))+"px";
    $('divAirport').style.display='inline';   
    
}

function CloseDivTicket()
{
    $('divAirport').style.display='none';
    $('divAirport').innerHTML='';       
}

function Select()
{
    if ($('lbAirportCode').selectedIndex!=-1)   
    {
        $(idCode).value=$('lbAirportCode').options[$('lbAirportCode').selectedIndex].value;
        CloseDivTicket();        
    }
}

 function getY( oElement )
 {
    var iReturnValue = 0;
    while( oElement != null ) {
     iReturnValue += oElement.offsetTop;
      oElement = oElement.offsetParent;
    }
    return iReturnValue;
 }
 
 function getX( oElement )
 {
    var iReturnValue = 0;
    while( oElement != null ) {
     iReturnValue += oElement.offsetLeft;
      oElement = oElement.offsetParent;
    }
    return iReturnValue;
 }
 
 function myDragThisTicket(e)
{
    var fobj       = document.getElementById('divAirport');
    isdrag = true;
    dobj = fobj;
    tx = parseInt(dobj.style.left+0);
    ty = parseInt(dobj.style.top+0);
    x = nn6 ? e.clientX : event.clientX;
    y = nn6 ? e.clientY : event.clientY;
    document.onmousemove=movemouse;
    return false;
}