﻿//Aitport Seacrh
var urlAP = "/DesktopModules/Fareportal/Modules/Flight/AirportCode.aspx?frm=Form&textbox=";
//Airline Seacrh
var urlAL = "/DesktopModules/Fareportal/Modules/Flight/AirlineCode.aspx?textbox=";
var popupURL = "/travel/popup/traveldeals.html";
var minYear=1900;var maxYear=2100;var dtFrmt="mm/dd/yyyy";

var erMsgs = "";

var frmDt,toDt,hfd,htd;
var onNewWin = false; //For TravelSpot

var searchUnder;
var clickCount = 0;

//Contains pattern to match for formatting AutoSuggest List
var textToFormat = new Array();
function InitDates()
{
    document.onclick = HCal;
    //set default Dates
    frmDt = new Date();
    toDt = new Date();
    //Hotel only 2 days and for others 7 days
    frmDt.setDate(frmDt.getDate()+14);
    toDt.setDate(toDt.getDate()+16);    
    hfd = frmDt;
    htd = toDt;
    toDt.setDate(toDt.getDate()+5);
}

function InitPage()
{     
   var sLoc=window.location.search.toLowerCase();

    if(!singleTab)
    {
        lstTab = $.cookie("lstTab");
        if(lstTab!=null)
        {
            showTab=lstTab;
            LoadRTab(lstTab);
        }
    }

   InitDates(); //Initialize Dates    
   ShowForm(showTab);    
}

var bckGrnd = "STabflightbg";
function ShowForm(flowType)
{      
   curTab = flowType;   
   $("#hdFlt,#hdHtl,#hdCar,#hdActvty").hide();
   $("#errMsg").html("");
   $('#tabTd').removeAttr('class');
   HCal();
    switch (flowType)
    {
         case "F":
    
                bckGrnd = "STabflightbg";             
                $('#hotelWidget,#carWidget,#sugestBox').hide();                            
                $('#flightWidget,#hdFlt').show();                
                break;
                
        case "H":  
                      
                bckGrnd = "STabhotelbg";                   
                $('#flightWidget,#carWidget,#sugestBox').hide();
                $('#hotelWidget,#hdHtl').show();                                    
                break;
                
        case "C":

                bckGrnd = "STabcarbg";               
                $('#flightWidget,#hotelWidget,#sugestBox').hide();
                $('#carWidget,#hdCar').show();               
                break;        
    }    
    
    $("#tabTd").addClass(bckGrnd);
}

//Add tooltip message box and its cover
document.write("<div class='drgrbg' id='msgBox' style='display:none;z-index=1602;width:250px;PADDING-TOP:2px;PADDING-BOTTOM:2px;PADDING-RIGHT:2px;PADDING-LEFT:2px; BORDER:1px solid #333333; background-color:#e1e1e1; position:absolute; text-align:justify;'><div id='msgBoxInner' class='notbold' onclick='hideHoverInfo();'>&nbsp;</div><div align=right style='color:#fc3103; text-decoration:underline; font-size:11px;'><a href='JavaScript:hideHoverInfo()' style='color:#fc3103; text-decoration:underline; font-size:11px;font-weight:normal;'>Close [X]</a></div></div>");
    
function StDteOb(objNm,dtObj)
{
    $("#"+objNm).val((dtObj.getMonth()+1) + "/" + dtObj.getDate() + "/" + dtObj.getFullYear());
}

function GetDivName(tb)
{
    switch(tb)
    {
        case "F": return 'flightWidget';
        case "H": return 'hotelWidget';
        case "C": return 'carWidget';
    }
}

function LoadRTab(tb)
{
    if(tb==null || tb=='') return;

    $.cookie( "lstTab", tb);
     if($('#'+GetDivName(tb)).html() == "") 
     {
        $('#dvLoader').show();
        LoadTab(tb);
     }
     else
        ShowForm(tb);

     return false;
}

$(document).ready(function() {
  
  if(!singleTab)
  {
      $('#showFlights').click(function() {
            LoadRTab("F");
      });
      
      $('#showCars').click(function() {
            LoadRTab("C");
      });
      
      $('#showHotels').click(function() {
            LoadRTab("H");
      }); 
  }
  InitPage();
});

function SearchNow() {
    var qry = "";
    switch (curTab) {
        case "F":
            qry = GetAirQry();
            break;
        case "H":
            qry = GetHtlQry();
            break;
        case "C":
            qry = GetCarQry();
    }

    if (qry == undefined) return;

    //For CheapoStay
    var qPrmVal = GetValForQParam("FpAffiliate");
    var aQry = "";
    if (!IsNullEmpt(qPrmVal)) {
        aQry += "&FpAffiliate=" + qPrmVal;

        qPrmVal = GetValForQParam("FpSub");
        if (!IsNullEmpt(qPrmVal)) aQry += "&FpSub=" + qPrmVal;

        qPrmVal = GetValForQParam("caid");
        if (!IsNullEmpt(qPrmVal)) aQry += "&caid=" + qPrmVal;
    }

    if (onNewWin)
        window.open(aQry + qry, "fareportal");
    else {
		if(curTab == "F" && false)
		{
			var searchUnderURL = null;
			$.ajax({
				url: "/desktopmodules/adsales/adsaleshandle.ashx?ORDES=" + GetLocCD("hdnLocFrom", "tbFrom") + GetLocCD("hdnLocTo", "tbTo"),
				cache: true,
				async: false,
				timeout : 10000,
				tryCount : 0,
				retryLimit : 3,
				success: function(data){
				if(data == "False")
					searchUnderURL = "/travel/BookingBuddy.asp" + qry.replace("/default.aspx","");
				}
				});
				
				if (searchUnderURL != undefined && searchUnderURL != null) {
					try {
							var searchUnder = window.open(searchUnderURL, "searchUnder", "resizable=no,toolbar=no,width=640,height=485,status=no,scrollbars=no,resizable=no");
							searchUnder.blur();
						}
					catch(err){ }
					window.blur();
					window.focus();
				}
		}
        var clicked = ++clickCount;
        try {
            if (!GetCookie('signupuser')) {
                if (clicked < 2) {
                    //searchUnder = window.open(popupURL, "fareportal", "resizable=no,toolbar=no,width=425,height=275,status=no,scrollbars=no,resizable=no");
                    //searchUnder.blur();
                }
            }
        }
        catch (err) { }
        window.blur();
        window.focus();
        location = qry;
    }
    //For One Travel
    //$('#srcloadanim').show();
}


function GetTag(tagId)
{
    return document.getElementById(tagId);
}

function isDate(txtDate_, ctrlName, vldMsgReq)// expected format is mm/dd/yyyy
{
      var txtDt = $("#"+txtDate_).val();
      var oDt;  // date object initialized from the txtDate string
      var mSec; // milliseconds from txtDate	  

      if (txtDt.length > 10 || txtDt.length < 8) 
      {
			if(vldMsgReq==true) erMsgs += "<div>&bull; The date format should be : "+ dtFrmt +" for " + ctrlName + " date </div>";
			return false;
      }

      try
      { 
        var date = txtDt.split("/");

        if(date.length == 3)
        {// subtraction will cast variables to integer implicitly
            var day = date[1] - 0;
            var month = date[0] - 1; // because months in JS start with 0
            var year  = date[2] - 0;
        }
        else
        {			
            if(vldMsgReq==true) erMsgs += "<div>&bull; Please enter valid date for " + ctrlName + " date </div>";
            return false;
        }
      }
      catch(err)
      {
        if(vldMsgReq==true) erMsgs += "<div>&bull; Please enter valid date for " + ctrlName + " date </div>";
        return false;
      }

      if (year < minYear || year > maxYear) 
      {
        if(vldMsgReq==true) erMsgs += "<div>&bull; Please enter a valid 4 digit year between " +  minYear +  " and " + maxYear + " for " + ctrlName + " date </div>";
        return false;// test year range
      }

      mSec = (new Date(year, month, day)).getTime();// convert txtDate to the milliseconds
      oDt = new Date();// set the date object from milliseconds
      oDt.setTime(mSec);
        
      // if there exists difference then date isn't valid
      if (oDt.getFullYear() != year || oDt.getMonth() != month || oDt.getDate() != day)  
      {
        if(vldMsgReq==true) erMsgs += "<div>&bull; Please enter valid " + ctrlName + " date </div>";
        return false;
      }

      if(oDt < (new Date(new Date().toDateString())))//Can not less then current Date
      {
          if(vldMsgReq==true) erMsgs += "<div>&bull; " + ctrlName +" date can't be before today's date. </div>"; 
	      return false;
      }
      return true;
}

//--------calx.js

var CalS = '';
var CalE = '';

var cF=null;var cW=null;var g_tid=0;var g_cP,g_eD,g_eDP,g_dmin,g_dmax,g_dtsToBeSlct;
var g_dispCalOnRightOfCtrl;
var g_isDtRng;
var nextFocus;var g_fNoCal=false;

function SCal(cP,eD,eDP,dmin,dmax,dtsToBeSlct)
{
 clearTimeout(g_tid);

 if(g_fNoCal)
 {
    g_fNoCal=false;
    return;
 }
 if(g_calShown && eD==g_eD)
 {
    //    return;
 }
 g_calShown = true;
 g_calCB = null;
 g_cP=cP;
 g_eD=eD;
 g_eDP=eDP;
 g_dmin=dmin;
 g_dmax=dmax;
 g_dtsToBeSlct=dtsToBeSlct;
 
 WaitCal();
}

function WaitCal()
{ 
 if(!cW) cW=frames['calendar'];
 
 if(null==cW || null==cW.g_fCL || false==cW.g_fCL) g_tid=setTimeout("WaitCal()", 200);
 else
 {
     if(!cF)cF=getObj('calendar'); cF.style.visibility="hidden";
    setTimeout("DoCal()",1);
 }
}

function DoCal(){
    PosCal(g_cP);
    if(!cW)cW=frames['calendar']; cW.DoCal(g_eD,g_eDP,g_dmin,g_dmax,g_dtsToBeSlct,2,curTab,g_isDtRng);
}

function getScrollTop()
{
    if(document.documentElement.scrollTop) return document.documentElement.scrollTop;
    if(document.body.scrollTop) return document.body.scrollTop;
    if(window.pageYOffset) return window.pageYOffset;
    return 0;
}

function getWinHeight()
{
    if(window.innerHeight) return window.innerHeight;
    if(document.documentElement.clientHeight) return document.documentElement.clientHeight;
    if(document.body.clientHeight) return document.body.clientHeight;
    return 0;
}

function PosCal(cP)
{
    var dB=document.body;var eL=0;var eT=0;
    if(!cF)cF=getObj('calendar');
    for(var p=cP;p&&p.tagName!='BODY';p=p.offsetParent){eL+=p.offsetLeft;eT+=p.offsetTop;}
    var eH=cP.offsetHeight;var dH=parseInt(cF.style.height);var sT=getScrollTop();
    
    if(g_dispCalOnRightOfCtrl)
    {
        //show cal with the top of text box if open at bottom 
        //and show cal with the bottom of text box if open at top
        if(eT-dH>=sT&&eT+dH>getWinHeight()+sT)eT-=(dH-eH);
        //Show cal on right of text box after image
            cF.style.left=eL+30+cP.offsetWidth+'px';cF.style.top=eT+'px'; 
    }
    else
    {
        if(eT-dH>=sT&&eT+eH+dH>getWinHeight()+sT)eT-=dH;else eT+=eH;
            cF.style.left=eL+'px';cF.style.top=eT+'px';
    }
}

function CalSetFocus(e){if(e){g_fNoCal=true;e.focus();setTimeout("EndCalFocus()", 200);}}
function EndCalFocus(){g_fNoCal=false;}

function CalDateSet(eInp,d,m,y,giveFocus)
{
    var ds=GetDtSep();
    var fmt=GetDtFmt();

    if(fmt=="mmddyy")eInp.value=m+ds+d+ds+y;
    else if(fmt=="ddmmyy")eInp.value=d+ds+m+ds+y;
    else eInp.value=y+ds+m+ds+d;
    if(!giveFocus)
    CalSetFocus(eInp);
}

var g_calShown = false;
function SetCalShown(fcshown){g_calShown=fcshown;}

var g_calCB;
function CalCallback(){if(g_calCB)g_calCB();}
function SetCalendarCallback(cb){g_calCB=cb;}


function GetInputDate(t)
{
    if(IsNullEmpt(t)) return null;
    t=t.replace(/\s+/g,"");
    if(t.match(/[^-|\d|\.|\/]/)) return null;
    var rgt=t.split(/-|\.|\//);
    for(var i=0;i<rgt.length;i++) rgt[i]=parseInt(rgt[i],10);
    if(!rgt[1]) return null;
    var m,d,y;
    var fmt=GetDtFmt();
    if(fmt=="yymmdd")
    {
    if(!rgt[2]) return null;
    m=rgt[1];d=rgt[2];y=rgt[0];
    }
    else
    {
    if(fmt=="mmddyy"){m=rgt[0];d=rgt[1];}
    else{m=rgt[1];d=rgt[0];}//fmt=="ddmmyy"
    if(rgt[2])y=rgt[2];
    else y=DefYr(m-1,d);
    }
    m-=1;if(y<100)y+=2000;
    if(y<1601||y>4500||m<0||m>11||d<1||d>GetMonthCount(m,y))return null;
    return new Date(y,m,d);

}

var rM=new Array(12);rM[0]=rM[2]=rM[4]=rM[6]=rM[7]=rM[9]=rM[11]=31;rM[3]=rM[5]=rM[8]=rM[10]=30;rM[1]=28;
function GetMonthCount(m,y){var c=rM[m];if((1==m)&&IsLY(y))c++;return c;}
function IsLY(y){if(0==y%4&&((y%100!=0)||(y%400==0)))return true;else return false;}
function DefYr(m,d){var dt=new Date();var yC=(dt.getYear()<1000)?1900+dt.getYear():dt.getYear();if(m<dt.getMonth()||(m==dt.getMonth()&&d<dt.getDate()))yC++;return yC;}

function GetDowStart() {return 0;}function GetDtFmt() {return "mmddyy";}function GetDtSep() {return "/";}
function GetDowStart() {return 0;}
function GetDtFmt() {return "mmddyy";}
function GetDtSep() {return "/";}
function ShowCalendar(eP,eD,eDP,dmin,dmax,dtsToBeSlct)
{
    SCal(eP,eD,eDP,dmin,dmax,dtsToBeSlct);
}

var zz, zv, d, fTSR;
d = new Date();
fTSR=0;
zv = d.getTime();
zz = "&zz="+zv;

var gBF=false;
function GoTo(u){window.top.location = u + zz;}
function Go(u){window.top.location = u;} 

function BF(){gBF=true;}

function getObj(objID)
{
    if (GetTag) return GetTag(objID);
    else if (document.all) return document.all[objID];
    else if (document.layers) return document.layers[objID];
}

var actvEl;
function HCal()
{
    if ($('#calendar'))    
        $('#calendar').hide();    
}

if(window.navigator.appName.toLowerCase().indexOf("netscape") > -1)
{
    window.captureEvents(Event.CLICK);
    window.onmousemove = NS_MouseEventHandler;
    window.event = new Object;
}

function NS_MouseEventHandler(theMouseEvent)
{
    window.event.clientX = theMouseEvent.pageX;
    window.event.clientY = theMouseEvent.pageY;

    //back to main event handler for the desired purpose
     if (window.routeEvent)
        window.routeEvent(theMouseEvent);
   
}

document.onkeydown = StartSearch; 
function StartSearch(keyEvent)
{   
    var keyPressedCode = (keyEvent != null ? keyEvent.keyCode : event.keyCode);
        
    if (keyPressedCode == 13 && blockSrch==false)
    {
        SearchNow();
        return false;//If Search is called then not do anything
    }
}

function showCalToSelectDate(obj,dtsToBeSlct,dtMin)
{
    var ctrl = GetTag(obj);
    CalS=dtMin;//set Minimum date
    SC(ctrl,dtsToBeSlct);
}

function hideCalendar()
{
    $("#calendar").hide();    
    $("#"+actvEl).focus();    
}

function SC(el,dtsToBeSlct)
{
    if ($('#calendar') == null) return;    
    var id = el.id;
    var n = el.id;
    el.select();
    var temp=id;
    ShowCalendar(el,el,GetTag(temp),CalS,CalE,dtsToBeSlct);
}

//Form Validation
function AddVldtnMsg()
{    
    if(erMsgs != undefined)
        if(!IsNullEmpt(erMsgs))
            $('#errMsg').html(erMsgs);    
    erMsgs = "";
}

function IsBlank(ctrlName, erMsg, wtrmark)
{
    var ctrl = $("#" +ctrlName);
    if(jQuery.trim(ctrl.val()).length==0 || ctrl.val() == wtrmark)
    {   
        erMsgs += "<div>&bull; " + erMsg + "</div>";      
        return true;
    }
    return false;
}

function IsVldDtRng(fmCtlNm, toCtlNm, erMsg)
{
    var valDt
    if(curTab=="H") valDt =(new Date($("#"+fmCtlNm).val())) < (new Date($("#"+toCtlNm).val()));
    else//Allow same day pickup and drop for car and same day Departure and Return for Air
        valDt = (new Date($("#"+fmCtlNm).val())) <= (new Date($("#"+toCtlNm).val()));
    if (!valDt)
    {
         erMsgs += "<div>&bull; " + erMsg + "</div>";
         return false;
    }
    return true;
}

function IsNumOrCd(ctlNm, erMsg, isCde)
{
    var ctrl = $("#"+ctlNm);
    var ValidationExpression="[^#%~`_=\<>|?:;$^*{}+]*";
    
    var regExp = null;
    if(isCde == true) regExp = "(?=.*([0-9a-zA-Z]))";
    else regExp = "(?=.+([a-zA-Z]))([0-9a-zA-Z ',&amp;()./\_-]*)";
   
    var re = new RegExp(regExp); 
    
    if (!ctrl.val().match(re)) 
    {
        erMsgs += "<div>&bull; " + erMsg + "</div>";        
        return false;
    }
    return true;
}
//create options list
function GenOpsForDDL(name,ops, strt, opToSel)
{
    for(var i=strt; i<ops + strt;i++)
        $('#'+name).append('<option value="' + i + '">' + i + '</option>');
    $('#'+name).val(opToSel);
}

 
//Populate City/ Airport/ Location    
function SetHdnForLoc(tbID, str)
{
    $('#hdnLocFrom').val(str.replace(/<\/?[^>]+(>|$)/g, ""));
    $("#"+tbID).val(str.split("***")[1].replace(/<\/?[^>]+(>|$)/g, ""));
} 

function GetLocCD(autoSgstCD, locTB)
{
    var loc = $("#"+autoSgstCD).val();
    if(loc=="") loc = $("#"+locTB).val().toUpperCase();
    loc=loc.replace(/[^a-zA-Z0-9@!&]/g, " ").replace(/[\s]+/g, " ");
    if(loc.length > 3 && $("#"+autoSgstCD).val()!="") loc = loc.substring(0,3).toUpperCase();
    return loc;
}

/******************getAirportCode*********************/
function gtAptCde(theTagID, hidCtrlCdId)
{
    $("#"+hidCtrlCdId).val("");
    $("#"+theTagID).val("");
    $(".pplrdest input:radio").each(function() {$(this).attr('checked',false);});
    window.open(urlAP + theTagID,"AirportPicker","toolbar=no,status=no,resizable=no,scrollbars=yes,width=650,height=650,top=100,left=100");
}

function ShowHidett(show_)
{
    if(show_ == 'show') $('#minorMsg').show();
    else $('#minorMsg').hide();
}
function toggle(id) {
    if($("#"+id).is(':visible')) $("#"+id).hide();
    else $("#"+id).show();
}


function dispCalendar(elm,dt1,dt2,isDtRng,dispCalOnRightOfCtrl,showPassedDate)
{    
    g_dispCalOnRightOfCtrl = true;
    g_isDtRng = true;
    blockSrch = false;
    if(dispCalOnRightOfCtrl!=null)
        g_dispCalOnRightOfCtrl=dispCalOnRightOfCtrl;
        
    if(isDtRng!=null)
        g_isDtRng = isDtRng;
    
    if(curTab == "F" && $("#rbOW").is(':checked'))
        g_isDtRng=false;
    
    if(curTab == "H")
        g_dispCalOnRightOfCtrl=false;
    
    var mindt = '';
    if(showPassedDate==null || showPassedDate==false)
            mindt = (new Date()).toDateString();
            
    if(dt1 != null && dt2!=null && $("#"+dt1) != null && $("#"+dt2) != null)
    { 
        var setDt = false;
        if(dt1 != null && $("#"+dt1) != null && elm != dt1 )//case of from date
        {
            if($("#"+dt1).val()!=dtFrmt && isDate(dt1,"",false) == true)
                mindt= $("#"+dt1).val(); //mindate will be from date 

            setDt = true;
        }
        if(showPassedDate == true && setDt == false)
            mindt = '';
    }
    
    var fromTo = '';
    if(dt1 != null && $("#"+dt1) != null && $("#"+dt1).val()!=dtFrmt)
        fromTo = $("#"+dt1).val();

    if(dt2 != null && $("#"+dt2) != null && $("#"+dt2).val()!=dtFrmt && g_isDtRng == true)
        fromTo += "," + $("#"+dt2).val();
    else
        fromTo+= ",";
    
    showCalToSelectDate(elm,fromTo,mindt);    
}

// Decide browser version
var ns6 = (document.getElementById)? true:false;
var ie4 = (document.all)? true:false;
var ie5 = false;
var mX = 4;
var mY = 4;

// IE Stupidity Check.
if (ie4) 
{
    if ((navigator.userAgent.indexOf('MSIE 5') > 0) || (navigator.userAgent.indexOf('MSIE 6') > 0) || (navigator.userAgent.indexOf('MSIE 7') > 0)) 
        ie5 = true;    
    if (ns6) ns6 = false;
}


//Handle mouse location
document.onmousemove = mouseMove;
function mouseMove(e) {
    if (ns6) {
        mX=e.pageX; 
        mY=e.pageY;
        }
    else if (ie5) {
        mX=window.event.clientX;
        mY=(document.documentElement.scrollTop +  window.event.clientY);
        }
    else if (ie4) {
        mX=event.x; 
        mY=event.y;
        }
}

//add no of months in date
Date.prototype.addMonths = function(n)
{
    this.setMonth(this.getMonth()+n);
    return this;
}

/* ---------------------Jquery Cookie Code Starts -------------------------*/
$.cookie = function(name, value, options) {
    if (typeof value != 'undefined') 
    { // name and value given, set cookie
        options = options || {};
        if (value == null) 
        {
            value = '';
            options.expires = -1;
        }
        var expires = '';
        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
            var date;
            if (typeof options.expires == 'number') {
                date = new Date();
                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
            } else {
                date = options.expires;
            }
            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
        }
        // CAUTION: Needed to parenthesize options.path and options.domain
        // in the following expressions, otherwise they evaluate to undefined
        // in the packed version for some reason...
        var path = options.path ? '; path=' + (options.path) : '';
        var domain = options.domain ? '; domain=' + (options.domain) : '';
        var secure = options.secure ? '; secure' : '';
        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
    }
     else 
     { // only name given, get cookie
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
};
/* ---------------------Jquery Cookie Code Ends -------------------------*/



/* -----------------------Method to set Location From Hotel and Car RadioButtons--------------*/

function SetLocForPopLoc(str,tbID,hdnCntl)
{
    $("#"+hdnCntl).val(str.replace(/<\/?[^>]+(>|$)/g, ""));
    $("#"+tbID).val(str.split("***")[1].replace(/<\/?[^>]+(>|$)/g, ""));   
}

//Set value for hidden field controls
function SetHdnLocCode(txtBx,val)
{
  val = val.replace(/<\/?[^>]+(>|$)/g, "");      
  if(txtBx == 'tbTo') $("#hdnLocTo").val(val);
  else  $("#hdnLocFrom").val(val);     
}

//Save key/value pair for cookie
function SaveCookie(key, val, fltp, mtchIdxNo)
{   
    var soVal=$.cookie("srOr"+ "-" + fltp);
    var srchExst=false;
    var srch='';    
    var ckIdx=1;
    var forMtchCk="";
    jQuery.each(val, function(i) {        
        srch = srch + ($("#"+val[i]).is(":radio") == true ? $("#"+val[i]).is(':checked') : $("#"+val[i]).val()) +  '##';
        if(mtchIdxNo==(i+1))
            forMtchCk=srch.toLowerCase();
    });

    if(forMtchCk!=null && forMtchCk.length>0 && forMtchCk.substring(forMtchCk.length-2, forMtchCk.length) == '##') //Remove trailing for mathcing string ##
       forMtchCk = forMtchCk.substring(0, forMtchCk.length-2);

     if(srch!=null && srch.length>0 && srch.substring(srch.length-2, srch.length) == '##') //Remove trailing ##
        srch = srch.substring(0, srch.length-2);

    if(soVal != null && soVal.length > 0)
    {
        var ckArr = soVal.split(","); 
        for (var i = 0; i < ckArr.length; i++)
        {
            var ck=$.cookie( key+"-"+ckArr[i]);
            if (ck!=null && ck.length>0 && ck.toLowerCase().indexOf(forMtchCk)==0)
            {                
                if(i==0)//if found at first position then return no need to change
                    return;                

                srchExst=true;                    
                
                soVal = soVal.replace(","+ckArr[i], "");                
                soVal = ckArr[i] + "," + soVal;             
                ckIdx = i+1;
                break;
             }    
        }
    }
   
    if(srchExst==false)
    {
        if(soVal != null && soVal.length > 0)
        {            
            if(ckArr.length < 3)
                ckIdx = ckArr.length + 1;
            else
            {   
                ckIdx = ckArr[ckArr.length-1];
                soVal = soVal.replace(","+ckIdx, "");                
            }
            soVal = ckIdx + "," + soVal;       
        } 
        else
            soVal = ckIdx; 

       $.cookie( key+"-"+ckIdx,jQuery.trim(srch) ); 
    } 
    $.cookie( "srOr"+ "-" + fltp, soVal );
	
	
}

//Set controls based on cookie value
function LoadRcntSrch(key, elem)
{   
    var ctRL = elem.split(',');
            
    jQuery.each(key.split('##'), function(i) {       
        if($("#"+ctRL[i]).is(":radio") == true)
            $("#"+ctRL[i]).attr('checked', jQuery.trim(this) == "true");
        else
            $("#"+ctRL[i]).val(jQuery.trim(this));
    });
    
}

//Check to see value is null or empty
function IsNullEmpt(val)
{
    return (val == undefined || val == null || val.length == 0);
}

//Get Query String Value
function GetValForQParam(name)
{
  var results = (new RegExp( "[\\?&]"+name.toLowerCase().replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]")+"=([^&#]*)" )).exec( window.location.href.toLowerCase() );
  if( results != null && results.length > 1)
    return unescape(results[1]);
    
 return "";
}

//Fill html for respective div (Flight, Car, Hotel)
function LoadTab(category)
{ 
    $('#'+ GetDivName(category)).html(" ");   
     $.ajax({
          url: "/travel/lpsearchform/" + category + ".htm",
          cache: true,
          timeout : 10000,
          tryCount : 0,  
          retryLimit : 3,		  
          success: function(html){
            $('#'+ GetDivName(category)).html(html);
            ShowForm(category);           
            $('#dvLoader').hide();

          },
        error: function(xhr, textStatus, errorThrown){   
		    if (textStatus == 'timeout' || xhr.status == 500 || xhr.status == 0) 
		    {
    		    this.tryCount++;
    		    if (this.tryCount <= this.retryLimit) 
    		    {
        		    //try again
        		    $.ajax(this);
        		    return;
			    }
    		    return;
		    }
            $('#dvLoader').hide();
            $('#'+ GetDivName(category)).html('<div style="font-family:Arial; font-size:12px; color:#000000;"><b>Please refresh your browser window.</b></div>');
          }        
	});
}

//This function checks to see if departure/checkin/pickup date is expired, if expired it doesn't display that recentsearch
function ResetCkOrd(soCk, fltpCk, ord)
{                  
    var soVal = $.cookie(soCk);
    var ckArr = soVal.split(",");
    if(ckArr[ckArr.length-1] != ord)
    {           
        soVal = soVal.replace(ord + ",", "") + "," + ord;
        $.cookie(soCk, soVal, { expires: 7 });
    }
    $.cookie(fltpCk + "-" + ord, null);
}

//This function populates controls from last search saved in cookie on window load
function FillCtrlLstSrch(sOrdCk, flTpCk, ctRL, idxDepDate)
{
    var dtl = $.cookie(flTpCk + "-" + $.cookie(sOrdCk).split(",")[0]);
    if(dtl != null)
        if( new Date(dtl.split('##')[idxDepDate]) > new Date(new Date().toDateString()) ) //if departure/checkin date is greater than today's date
             LoadRcntSrch(dtl, String(ctRL));
}

function FillWidgetFromQryStr(paraNms,ctrlNms)
{
    var qryStrFound=false;
    for(var i=0;i<paraNms.length;i++)
    {
        var val = GetValForQParam(paraNms[i]);
        if(val.length!=0)
        {
            $("#"+ctrlNms[i]).val(val);
            qryStrFound=true;
         }
    }
    return qryStrFound;
}

/*******************Add Cookie Library*******************/

function GetCookieVal(offset) {
    var endstr = document.cookie.indexOf(";", offset);
    if (endstr == -1) { endstr = document.cookie.length; }
    return unescape(document.cookie.substring(offset, endstr));
}

function GetCookie(name) {

    var arg = name + "=";
    var alen = arg.length;
    var clen = document.cookie.length;
    var i = 0;
    while (i < clen) {
        var j = i + alen;
        if (document.cookie.substring(i, j) == arg) {
            return GetCookieVal(j);
        }
        i = document.cookie.indexOf(" ", i) + 1;
        if (i == 0) break;
    }
    return null;
}

function DeleteCookie(name, path, domain) {
    if (GetCookie(name)) {
        document.cookie = name + "=" +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    "; expires=Thu, 01-Jan-2020 00:00:01 GMT";
    }
}
function SetCookie(name, value, expires, path, domain, secure) {


    window.opener.document.cookie = name + "=" + escape(value) +
    ((expires) ? "; expires=" + expires.toGMTString() : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");

}
/*******************End Code Cookie Library *******************/   

