﻿// JScript File

      var wingStart = true;    
      var wingEnd = "false"; 
      var divSeatCol;  
      var psngrListId;  
      var imagePath = "../Images/SeatMap/";
      var arr = new Array();
      var arrFreqFliers = new Array();
      function SeatMap()
      {
         this._seatStrId;
         this._passengerListId;
         this._selectType;
         this._onCallBack;
      }
      SeatMap.prototype.SetSeatStrElementId= function(elementId){this._seatStrId=elementId; }
      SeatMap.prototype.SetPassngrListElementId= function(elementId){this._passengerListId=elementId;}
      SeatMap.prototype.SetSelectType = function(flag){this._selectType=flag;}
      SeatMap.prototype.SetcallBackFunc = function(callBackFunc){ this._onCallBack=callBackFunc;}
      
      SeatMap.prototype.GetJasonObject = function(origin,destination,journeyDate,flightNum,classOfService,airlineCode,airFareSource,sessionId)
      {
        GetSeatMapJson("origin,destination,journeyDate,flightNum,classOfService,airlineCode,airFareSource,sessionId","");
           return seatobj;
      }
         
      SeatMap.prototype.DisplaySeatMap = function(jsonObj,isSelectable)
        {
             if(jsonObj=="null")
             {
                 return "Seat structure not available.";
             }
             oSeatMap = jsonObj;             
             this._selectType = isSelectable;
             srvCount = oSeatMap.ClassesOfService.length;
              var vDiv = document.getElementById(this._seatStrId);                     
             if (!vDiv) throw "Div not found";
             wingStart = true;
             createColName(oSeatMap);
             var totalSeatRows =0;
            
             for(var srvIndex=0;srvIndex<srvCount;srvIndex++)
               {
                     var vnumCol = oSeatMap.ClassesOfService[srvIndex]["Columns"].length;
                     var numRow = oSeatMap.ClassesOfService[srvIndex]["Rows"].length;
                     var startRowNum = oSeatMap.ClassesOfService[srvIndex].StartRowNumber;                    
                     if(this._seatStrId=="null")
                     {
                       return "Element to display seat structure not provided.";
                     }                 
                    
                    
                     for(var rw=1;rw<=numRow;rw++)
                       {                      
                            var rowdiv = document.createElement('div');
                            var wingDiv = document.createElement('div');
                            var wingImg = document.createElement('img');
                            wingImg.src= imagePath+"emptyRowNew.GIF";
                            rowdiv.className = "rowDiv";
                          
                            var rowSeat = oSeatMap.ClassesOfService[srvIndex]["Rows"][Number(rw)-1];
                           
                            if(rowSeat.Characterstics==2)// Exit Row- Green Background.
                            {
                                rowdiv.style.backgroundColor = "#FF8500";
                            }
                            else if(rowSeat.Characterstics==6)// Exit Row+Over wing Green Background.
                            {
                               rowdiv.style.backgroundColor = "#FF8500";
                               wingImg = SetWingImage(true,oSeatMap,rw,srvIndex);
                            }
                            else if(rowSeat.Characterstics==4)// Over wing red Background.
                            { 
                                wingImg = SetWingImage(true,oSeatMap,rw,srvIndex);
                            }
                           if(wingEnd=="true" && wingImg.longdesc!="Middle")
                            {
                                 wingImg.src=imagePath+"seatmap_wing_right_rear.GIF";
                            }
                          
                            wingDiv.appendChild(wingImg);
                            rowdiv.appendChild(wingDiv);     
                            var maxColSrvIndex = GetMaxColumnsServiceIndex(oSeatMap.ClassesOfService);                                                  
                            var numCol = oSeatMap.ClassesOfService[maxColSrvIndex]["Rows"][0]["Seats"].length;
                           
                            for(var cl=(numCol-1);cl>=0;cl-- )
                            {                               
                                var newdiv = document.createElement("div");
                                if(cl==(numCol-1)){newdiv.style.borderTop="2px solid #666666";}
                                if(cl==0){newdiv.style.borderBottom="2px solid #666666";}
                                var seatImg = document.createElement('img');
                                var seat = oSeatMap.ClassesOfService[srvIndex]["Rows"][Number(rw)-1]["Seats"][Number(cl)];
                               
                                if(seat ==null)// Add empty image.
                                {
                                       var emptyRowdiv = document.createElement("div");
                                       var rowImg = document.createElement('img');
                                       rowImg.alt="Empty Row";
                                       rowImg.title="Empty Row";
                                       rowImg.src=imagePath+"emptyRowNew.GIF";
                                       newdiv.appendChild(rowImg);
                                       rowdiv.appendChild(newdiv);
                                    continue;
                                }
                                var divIdName =oSeatMap.ClassesOfService[srvIndex]["Rows"][Number(rw)-1].Number + seat.Name;                                 
                                if(seat.Type==4 ||seat.Type==0) // Gallery.
                                {
                                    seatImg.alt="Galley";
                                    seatImg.title="Galley";
                                    newdiv.style.backgroundColor="#999999";
                                    seatImg.src= imagePath+"galleyunBoxednew.GIF";
                                }
                                else if(seat.Type==5) // Lavatory.
                                {
                                    seatImg.id=divIdName;
                                    seatImg.name = divIdName;
                                    seatImg.alt="Lavatory";
                                    seatImg.title="Lavatory";
                                    newdiv.style.backgroundColor="#446699";
                                    seatImg.src=imagePath+"seatmap_lavatoryPlain.GIF";
                                }
                                else if(seat.Status==1)
                                {
                                    // Available Seats.
                                    seatImg.id=divIdName;
                                    seatImg.name = divIdName;
                                    seatImg.className = "selectedSeat";
                                    seatImg.alt=divIdName+" : Available Seat";
                                    seatImg.title=divIdName+" : Available Seat";
//                                    if(seat.Characterstics==2) // Handicap
//                                    {
//                                        seatImg.longdesc="Handicap";
//                                        seatImg.src=imagePath+"seatmap_handicap.GIF";
//                                        seatImg.alt=divIdName+" : Handicap Seat";
//                                        seatImg.title=divIdName+" : Handicap Seat";
//                                    }else
                                    if(seat.Characterstics==4) // Premium
                                    {
                                        seatImg.longdesc="Premium";
                                        seatImg.src=imagePath+"seatmap_premium.GIF";
                                        seatImg.alt=divIdName+" : Premium Seat";
                                        seatImg.title=divIdName+" : Premium Seat";
                                    }
                                    else if(seat.Characterstics==6) // Premium
                                    {
                                        seatImg.longdesc="Handicap Premium";
                                        seatImg.src=imagePath+"seatmap_premium.GIF";
                                        seatImg.alt=divIdName+" : Handicap Premium Seat";
                                        seatImg.title=divIdName+" : Handicap Premium Seat";
                                    }
                                    else if(seat.Characterstics==8) // Restricted
                                    {
                                        seatImg.longdesc="Restricted";
                                        seatImg.src=imagePath+"seatmap_restricted.GIF";
                                        seatImg.alt=divIdName+" : Restricted Seat";
                                        seatImg.title=divIdName+" : Restricted Seat";
                                    }
                                    
                                    if(seat.Type==2) // bulk head
                                    {
                                        seatImg.longdesc="Bulk";
                                        seatImg.src=imagePath+"seatmap_bulkhead_seat.PNG";
                                        seatImg.alt=divIdName+" : Bulk Head Seat";
                                        seatImg.title=divIdName+" : Bulk Head Seat";
                                    }
                                    if(seatImg.src=="")// if not assigned.
                                    {
                                        seatImg.longdesc="Regular";
                                        seatImg.src=imagePath+"seatmap_avail.gif";
                                    }
                                   
                                    if(isSelectable=="True"){
                                  
                                     seatImg= AddEvent(seatImg);
                                     seatImg.className = "availableSeat";
                                    }
                                }
                                else if(seat.Status==2 || seat.Status==0) // Occupied Seats
                                {
                                    seatImg.id=divIdName;
                                    seatImg.name = divIdName;
                                    seatImg.alt="Occupied Seat";
                                    seatImg.title="Occupied Seat";
                                    seatImg.src=imagePath+"seatmap_taken.gif";
                                }
                                 newdiv.appendChild(seatImg);
                                 rowdiv.appendChild(newdiv);
                                                          
                                 // make Empty Row.                        
                                if(cl>0 && oSeatMap.ClassesOfService[srvIndex]["Columns"][Number(cl)].Location==2 && oSeatMap.ClassesOfService[srvIndex]["Columns"][Number(cl)-1].Location==2)
                                {
                                   if(rw%2==0)
                                   {
                                        rowdiv.appendChild(GetRowNumberDiv(oSeatMap.ClassesOfService[srvIndex]["Rows"][Number(rw)-1].Number));
                                   }
                                   else
                                   {
                                       var emptyRowdiv = document.createElement("div");
                                       var rowImg = document.createElement('img');
                                       rowImg.alt="Empty Row";
                                       rowImg.title="Empty Row";
                                       rowImg.src=imagePath+"emptyRowNew.GIF";
                                       emptyRowdiv.appendChild(rowImg);
                                       rowdiv.appendChild(emptyRowdiv);
                                   }                                   
                                }
                            }
                             var lwrWingDiv = document.createElement('div');
                            var lwrWingImg = document.createElement('img');
                            lwrWingImg.src=imagePath+"emptyRowNew.GIF";
                            if(rowSeat.Characterstics==6 || rowSeat.Characterstics==4)// Exit Row+Over wing Blue Background.
                            {
                               lwrWingImg = SetWingImage(false,oSeatMap,rw,srvIndex);
                               wingStart=false;
                            }
                            if(wingEnd=="true" && lwrWingImg.longdesc!="Middle")
                                {
                                     lwrWingImg.src=imagePath+"seatmap_wing_left_rear.GIF";
                                     wingEnd="false";
                                }
                            lwrWingDiv.appendChild(lwrWingImg);
                            rowdiv.appendChild(lwrWingDiv);
                            vDiv.appendChild(rowdiv);
					        startRowNum++;
					        
                       }
					        totalSeatRows +=numRow;
                     }
                     
                      var divSeatStr = document.getElementById(divSeatId);
                        var divWidth = totalSeatRows * 21;
                      divSeatStr.style.width = divWidth+'px';
        }
  
  function GetRowNumberDiv(rowNum)
  {  
        var rowNumdiv = document.createElement('div');
        rowNumdiv.innerHTML = "  "+(rowNum);
        rowNumdiv.style.backgroundColor = "white";
        rowNumdiv.className="RowNum";
        return rowNumdiv;
  }
  
  function SetWingImage(isUpper,objSeat,rowNum,svcIndex)
  {
    var wingImgtemp = document.createElement('img'); 
    if(wingStart==true)
        { 
            if(isUpper==true)
                wingImgtemp.src=imagePath+"seatmap_wing_right_front.GIF";
            else
                wingImgtemp.src=imagePath+"seatmap_wing_left_front.GIF";
        }
        else 
        {
            if(objSeat.ClassesOfService[svcIndex]["Rows"].length>rowNum)
            {
                var rowChk = objSeat.ClassesOfService[svcIndex]["Rows"][Number(rowNum)];               
                if(rowChk.Characterstics ==null || rowChk.Characterstics!=4 && rowChk.Characterstics!=6){wingEnd="true";}
            }
           if(wingEnd=="false")
            {
                if(isUpper==true)
                    wingImgtemp.src=imagePath+"seatmap_wing_right_mid.GIF";
                else
                    wingImgtemp.src=imagePath+"seatmap_wing_left_mid.GIF";
                wingImgtemp.longdesc="Middle";
            }
        }        
        return wingImgtemp;
   }
        // To apply OnClick event on each seat.
        var passangerCounter;
        var prevSeat;
        var obj;
        var counter=0;
        var seatCount=1;
        function DisplaySeatDetails(evt) // Display Selected Seat image and Seat number.
        {
         
        try
        {
           var obj ;
           
            (typeof window.event!="undefined")? obj=event.srcElement : obj=evt.target; 
                      
            if(obj==null)
            {
                return 0;
            }
            var vPasngrLbl = document.getElementById("lblP"+(counter+1));
            var nameArr = vPasngrLbl.innerHTML.split(':');
            if((obj.longdesc.indexOf('Premium')>-1))
            {
                 var isFreqFlier = false
                 for(var i=0;i<arrFreqFliers.length;i++)
                 {
                    if(nameArr[0].replace(/^\s+|\s+$/g,"")== arrFreqFliers[i])
                        isFreqFlier = true;
                 }
                 if(!isFreqFlier)
                 {
                     //alert('Sorry you can not request for premium seat. Only premium members of airline with frequent flier number can request for premium seats. Please select available non premium seat.');
                     showDiv('divPremiumSeatMsg');
                     showDiv('divGrayPlane');
                     return 0;
                 }
            }
            SeatRatation();
           
            obj.src= imagePath+"seatmap_selected.gif"
            obj.alt=obj.name+" : Selected Seat";
            obj.title=obj.name+" : Selected Seat";
            obj = RemoveEvent(obj);
            obj.className = "selectedSeat";
            counter++;
            vPasngrLbl.innerHTML = nameArr[0]+" : "+obj.name;
            vPasngrLbl.style.backgroundColor = "white";
           
          
            
           if(counter==(passangerCounter))
            {
                counter=0;
            }
               var passenger =  document.getElementById("lblP"+(Number(counter)+1));
               passenger.style.backgroundColor = "#EED08A";
               var selectedUser = document.getElementById("divUserNm");
               
                selectedUser.innerHTML = "Seat Selection : "+passenger.innerHTML.split(':')[0];
                selectedUser.className = "title";
                UpdatePassengerList();
            }
            catch(err)
            {
               
            }
        }

        // To Apply respective seat ../Images according to there types in cyclic select.

        function SeatRatation(){
            if(seatCount > passangerCounter)
            { 
                var rotationCounter = Number(seatCount)-Number(passangerCounter) +Number(counter);
                if(rotationCounter>0)
                {
                    var lblId = document.getElementById("lblP"+(rotationCounter)).innerHTML.split(':');
                    lblId[1] = lblId[1].replace(/^\s+|\s+$/g,"");
                    prevSeat = document.getElementById(lblId[1]);
                }
                if(prevSeat=="null")
                {
                    return 0;
                }
                prevSeat.alt=prevSeat.name;
                prevSeat.title=prevSeat.name;
                prevSeat= AddEvent(prevSeat);
                prevSeat.className = "availableSeat";
               
                switch(prevSeat.longdesc)
                {
                    case "Handicap":
                         prevSeat.src=imagePath+"seatmap_handicap.GIF";
                         break;
                     case "Premium":
                         prevSeat.src=imagePath+"seatmap_premium.GIF";
                         break;
                     case "Bulk":
                         prevSeat.src=imagePath+"seatmap_bulkhead_seat.PNG";
                         break;
                     case "Handicap Premium":
                         prevSeat.src=imagePath+"seatmap_premium.GIF";
                         break;
                     case "Regular":
                         prevSeat.src=imagePath+"seatmap_avail.gif";
                         break;
                     case "Restricted":
                         prevSeat.src=imagePath+"seatmap_restricted.GIF";
                         break;
                }
            }
            else
            {seatCount++;}
        }
       
        // To Create passenger list.
        
        SeatMap.prototype.BookNseats =  function () // To Book n number of Seats.
        {
        
        var isReadonlyView = (typeof(IsReadOnlyView)!='undefined' && IsReadOnlyView =='True');
           if(this._selectType=="False" && !isReadonlyView){return 0;}
           if(psngrListId==null){return 0;}
            passangerCounter = (arr.length-1);
          
            var vPasngrDiv = document.getElementById(psngrListId);
            for(x=1; x<=passangerCounter;x++)
            {
                var newDiv = document.createElement("div");
                var newLabel = document.createElement("label");
                var pasngrSeat = arr[x-1].split(':');
                var seatNum = pasngrSeat[1].replace(/^\s+|\s+$/g,"");
                
                DisplayAssignedSeat(seatNum);
                var paxName = pasngrSeat[0].replace(/^\s+|\s+$/g,"") ;
               
                // populate frequent flier passenger array.
                if(pasngrSeat[0].indexOf('FF'+unescape('%A7'))>-1)
                {
                    paxName = pasngrSeat[0].replace('FF'+unescape('%A7'),"") ;
                    arrFreqFliers[arrFreqFliers.length] = paxName;
                }

                newLabel.innerHTML= paxName +" :  "+seatNum;
                newLabel.id = "lblP"+x;
                newLabel.runat="server";
                newDiv.appendChild(newLabel);
                if(!isReadonlyView)
                {      
                    newLabel.className = "availableSeat";                         
                    if(window.addEventListener) {
                        newDiv.addEventListener('click',SetPassengerCounter,true);
                    }
                    else {
                        newDiv.attachEvent('onclick',SetPassengerCounter);
                    }
                 } 
                vPasngrDiv.appendChild(newDiv);
            }
            if(!isReadonlyView)
            {
                var lblPax = document.getElementById("lblP1");
                var selectedUser = document.getElementById("divUserNm");
               
                if(lblPax!=null)
                {
                    lblPax.style.backgroundColor = "#EED08A";
                    selectedUser.innerHTML = "Seat Selection : "+arr[0].split(':')[0].replace('FF'+unescape('%A7'),"");
                    selectedUser.className = "title";
                }
            }
        }
        //To keep track of next passenger when user select passenger.
        function SetPassengerCounter(evt)
        {
        
           var obj;
            (typeof window.event!="undefined")? obj=event.srcElement : obj=evt.target; 
           if(obj=="null" || obj.id==""){return 0;}
           document.getElementById("lblP"+(Number(counter)+1)).style.backgroundColor = "white";
           counter = obj.id.substr(4);
           passenger = document.getElementById("lblP"+(Number(counter)));
           passenger.style.backgroundColor = "#EED08A";
           var selectedUser = document.getElementById("divUserNm");
           selectedUser.innerHTML ="Seat Selection : "+passenger.innerHTML.split(':')[0].replace('FF'+unescape('%A7'),"") ;
           selectedUser.className = "title";
           --counter;
        }
        // To Add psnger list in hidden field .

        function UpdatePassengerList()
        {
            var hiddenElem = document.getElementById("hdnPsngrList");
            if(hiddenElem==null||hiddenElem=='undefined'){return 0;}
            hiddenElem.value="";
             for(x=1; x<=passangerCounter;x++)
                {
                    var lblPsngr = document.getElementById("lblP"+x);
                    hiddenElem.value +=lblPsngr.innerHTML+",";
                }
        }

       function ValidateSelection()
       {
            var hiddenElem = document.getElementById("hdnPsngrList");
            var arrSelSeat =hiddenElem.value.split(',');
            if(arrSelSeat.length==0){return 0;}
            for(var s=0;s<passangerCounter;s++)
            {
                 var seatDetail = arrSelSeat[s];
                 var arrSeat =seatDetail.split(':');
                 var seatNum = arrSeat[1].replace(/^\s+|\s+$/g,"");
                 if(seatNum == "")
                 {
                    return 'false';
                 }
            }
            return 'true';
       }
       
       function DisplayAssignedSeat(seatNum)
       {
            if(seatNum=="")
            return '0';
            var seat = document.getElementById(seatNum);
            if(seat==null || seat=="undefined")
                return '0';
                
            seat.src= imagePath+"seatmap_selected.gif"
            seat.alt=seatNum+" : Selected Seat";
            seat.title=seatNum+" : Selected Seat";
            
            seat = RemoveEvent(seat);
            seat.className = "selectedSeat";
            seatCount++;
            return '1';
      }
       
//*****************************************  Calling Methods  ********************************************************        
        
    var divSeatId ;  
   
    var lnkButnID;
    var divSmOutId;
    var isSeatSelect;
    var tblRowId;
    var progressbarId
    var invSelectIdList = null;
   function ShowSeatMapTemp(origin,destination,journeyDate,flightNum,classOfService,airlineCode,airFareSource,sessionId,divClientId,lnkBtnId,dSmOutId,dSeatCol,selectSeat,psngrLst,passengerArr,rowId,iteneraryId,legRph,LableControlClientIdList,progessId,isInvBucketVisible,tblInvbucketId)
        {
            divSeatId = divClientId;
            isSeatSelect = selectSeat;
            lnkButnID = lnkBtnId;
            divSmOutId = dSmOutId;
            divSeatCol = dSeatCol;
            psngrListId = psngrLst;
            tblRowId = rowId;
            arr = passengerArr.split(',');
           
//            if(isInvBucketVisible == "True")
//            {
//                showDiv(tblInvbucketId);
//            }
           showDiv(divSmOutId); 

            var divSeatStr = document.getElementById(divSeatId);
           DisplayDiv(divSeatStr,origin);
            if(origin!="")
            {
              if(divSeatStr.style.display =='none')
               {
                 return false;
               }
              divRowColNm = document.getElementById("divColNm"+divSeatCol);
              if(divRowColNm!=null)
              {
                showDiv(divSeatCol);
                return;
              }
             }
             progressbarId = progessId;
             showDiv(progessId);
          
           var parameter = origin+","+destination+","+journeyDate+","+flightNum+","+classOfService+","+airlineCode+","+airFareSource+"," + sessionId+","+iteneraryId+ ","+ legRph +","+ isInvBucketVisible +","+LableControlClientIdList;
           GetSeatMapJson(parameter,"");
        } 
        
        function ReceiveServerData(result)
        {                    
             var seatStrObj=null;
             var responseArry = result.split('$');
             hideDiv(progressbarId);
        
            // Inventory Bucket display code.
           /*  if(responseArry[1] !="null" && responseArry[2] !="null")
             {
                 var invBucketObj = eval("(" + responseArry[1] + ")");
                 var clientIdListObj = eval("(" + responseArry[2] + ")");
                  if(invBucketObj != null && invBucketObj["Buckets"]!=null && invBucketObj["Buckets"].length !=0 && clientIdListObj!=null)
                    {
                         PopulateInventaryBucket(invBucketObj,clientIdListObj);
                         DisableSelectButton(invBucketObj,clientIdListObj);
                        
                         if(invSelectIdList!=null)
                            DisableZeroValueBuckets(invSelectIdList);
                   }
                    else
                        DisableAll(clientIdListObj); // Disable all buckets select buttons.                   
             }*/
	        var divSeatStr = document.getElementById(divSeatId);
            if(responseArry[0] =="null")
            {
                divSeatStr.innerHTML = "Sorry. Seat Map is not available.";
                divSeatStr.style.color = "red";
            }
            else  if(responseArry[0] !="False")
            {
                    divSeatStr.innerHTML = "";
                    
                    seatStrObj = eval("(" + responseArry[0] + ")");
                  
                    var mySeatMap = new SeatMap();
                    mySeatMap.SetSeatStrElementId(divSeatId) ;
                    mySeatMap.DisplaySeatMap(seatStrObj,isSeatSelect);// json object , isSelectable .
                    mySeatMap.SetPassngrListElementId(psngrListId);
                    mySeatMap.SetSelectType(isSeatSelect);
                    mySeatMap.BookNseats();
            }
       }
       
       function createColName(oSeatMap)
       {    
           svcIndex =0;
             var divRowColNm;
             var seatCol = document.getElementById(divSeatCol);
             divRowColNm = document.getElementById("divColNm"+divSeatCol);
             if(divRowColNm!=null)
             {
                showDiv(divSeatCol);
                return;
             }
             var svcIndex = GetMaxColumnsServiceIndex(oSeatMap.ClassesOfService);
             var vnumCol = oSeatMap.ClassesOfService[svcIndex]["Columns"].length;
             divRowColNm = document.createElement("div");
             divRowColNm.className ="rowDiv";
             divRowColNm.id="divColNm"+divSeatCol;
             var defCol = document.createElement("div");
             defCol.innerHTML = '&nbsp';
             divRowColNm.appendChild(defCol);
             for(c=(vnumCol-1);c>=0;c--)
             {
                var divColNm = document.createElement("div");
                divColNm.className ="colName";
                divColNm.innerHTML = oSeatMap.ClassesOfService[svcIndex]["Columns"][c].Name;
                divRowColNm.appendChild(divColNm);
                if(c>0 && (oSeatMap.ClassesOfService[svcIndex]["Columns"][c].Location ==2) && (oSeatMap.ClassesOfService[svcIndex]["Columns"][Number(c)-1].Location ==2))
                {
                    var divEmpColNm = document.createElement("div");
                   // divEmpColNm.innerHTML = '&nbsp';
                    divEmpColNm.style.height = "16"+'px';
                     divEmpColNm.style.width = "17"+'px';
                    divRowColNm.appendChild(divEmpColNm);
                }
             }            
             seatCol.className ="rowDiv";
             seatCol.appendChild(divRowColNm);
       }         
       // Get maximum columns out of all class of services. 
       function GetMaxColumnsServiceIndex(classesOfService)
       {
         numberOfColumns = 0;
         index = 0;
         for(c=0;c<classesOfService.length;c++)
         {
            if(classesOfService[c]["Columns"].length > numberOfColumns)
            {
               index = c;
            }
         }         
         return index;
       }
       
       function DisplayDiv(divSeatStr,locOrigin)
       {
           if(locOrigin !="")
           {
                showDiv(divSeatStr.id);
                showDiv(divSeatCol);
           }
           if(tblRowId !=null)
           {
                showDiv(tblRowId);
                 var browser = navigator.appName;
                 var displayString;
                if(browser == "Netscape"){
                displayString = "table-row";
                } else {
                displayString = "block";
                }
                document.getElementById(tblRowId).style.display = displayString;
           }
            return false;                       
       }
      function AddEvent(elem) {
            if(window.addEventListener) {
                elem.addEventListener("click",DisplaySeatDetails, true);
            }
            else {
                elem.attachEvent("onclick", DisplaySeatDetails);
            }
            return elem;
        }

        function RemoveEvent(elem) {
            if(window.removeEventListener) {
                elem.removeEventListener("click", DisplaySeatDetails, true);
            }
            else {
                elem.detachEvent("onclick", DisplaySeatDetails);
            }
            return elem;
        }
      function VisibleTableRow(tableRowId)
       {
             var rowElem = document.getElementById(tableRowId).style.display;
             var browser = navigator.appName;
             var displayString;
                if(browser == "Netscape"){
                displayString = "table-row";
                } else {
                displayString = "block";
                }
                document.getElementById(tableRowId).style.display = displayString;
       }
       
   function PopulateInventaryBucket(invBuckets,controlIdList)
   {
        if(invBuckets == null ||invBuckets["Buckets"]==null ||invBuckets["Buckets"].length==0 ||controlIdList==null)
            return;
            
     for(var i=0;i<invBuckets["Buckets"].length;i++)
     {
         var bucketType = invBuckets["Buckets"][i].BucketType;
         
         switch(bucketType)
            {
                case 0: // AwardTicket
                    FillBucket(i,0,invBuckets,controlIdList);
                break;
                
                 case 1: // EconomySaver
                    FillBucket(i,1,invBuckets,controlIdList);
                break;
                
                 case 2: // Economy
                    FillBucket(i,2,invBuckets,controlIdList);
                break;
                 case 3: // sBusinessSaver
                    FillBucket(i,3,invBuckets,controlIdList);
                break;
                
                 case 4: // Business
                    FillBucket(i,4,invBuckets,controlIdList);
                break;
                 case 5: // FirstSaver
                    FillBucket(i,5,invBuckets,controlIdList);
                break;
                
                 case 6: // First
                    FillBucket(i,6,invBuckets,controlIdList);
                break;
            }
       }
   }
   
   function FillBucket(index,caseId,invBuckets,controlIdList)
   {
        var amount ="$ ";
        var savings ="$ ";
        var avlSeats;
        var classOfService;
    
        if(invBuckets["Buckets"][index]["BaseFare"] != null && invBuckets["Buckets"][index]["BaseFare"].UsdEquivAmount !=null&& invBuckets["Buckets"][index]["BaseFare"].UsdEquivAmount !=0)
           amount += invBuckets["Buckets"][index]["BaseFare"].UsdEquivAmount;
        else
           amount += "0.00";
        if(invBuckets["Buckets"][index]["Savings"] !=null && invBuckets["Buckets"][index]["Savings"].UsdEquivAmount!=null&& invBuckets["Buckets"][index]["Savings"].UsdEquivAmount!=0)    
            savings += invBuckets["Buckets"][index]["Savings"].UsdEquivAmount;
        else
            savings += "0.00";
        if(invBuckets["Buckets"][index]!=null && invBuckets["Buckets"][index].SeatsAvailable!=null&& invBuckets["Buckets"][index].SeatsAvailable!=0)
            avlSeats = invBuckets["Buckets"][index].SeatsAvailable;
        else 
            avlSeats = 0;
        if(invBuckets["Buckets"][index]!=null && invBuckets["Buckets"][index].ClassOfService!=null)
            classOfService = invBuckets["Buckets"][index].ClassOfService;
        if( avlSeats != 0)
        {
            SetValue(controlIdList["bucketType"][caseId]["Price"],amount);
            SetValue(controlIdList["bucketType"][caseId]["Savings"],savings);
            SetValue(controlIdList["bucketType"][caseId]["AvlSeat"],avlSeats);
        }
        else
        {                   
            if(invSelectIdList == null)
                invSelectIdList = controlIdList["bucketType"][caseId]["Select"];
            else
                invSelectIdList += controlIdList["bucketType"][caseId]["Select"]+",";
        }
        SetClassOfService(controlIdList["bucketType"][caseId]["ServiceClass"],classOfService);
   }
   
   function SetValue(controlId,textValue)
   {
        var varControl = document.getElementById(controlId);
        varControl.innerHTML = textValue;
   }
   
   function SetClassOfService(controlId,classOfService)
   {
        var varControl = document.getElementById(controlId);
        if(varControl != null)
            varControl.value = classOfService;
   }
   
   function DisableSelectButton(invBuckets,controlIdList)
   {
       if(invBuckets == null ||invBuckets["Buckets"]==null ||invBuckets["Buckets"].length==0 ||controlIdList==null)
            return;
        for(var k = 0;k < controlIdList["bucketType"].length; k++)
        {
        var status = IsBucketExists(invBuckets,k);
        
            if(!status)// if bucket exists don't disable select button.
                EnableControl(controlIdList["bucketType"][k]["Select"],false);
                
        }
   }
   
   function IsBucketExists(invBuckets,bucketType)
   {
          if(invBuckets == null ||invBuckets["Buckets"]==null ||invBuckets["Buckets"].length==0)
            return false  ;
            for(b=0;b<invBuckets["Buckets"].length;b++)
            {
                    if( bucketType == invBuckets["Buckets"][b].BucketType)
                        return true;
            }
            return false;
   }
   
   function DisableAll(controlIdList)
   {
        if(controlIdList==null)
            return;
        for(var k = 0;k < controlIdList["bucketType"].length; k++)
        {
             EnableControl(controlIdList["bucketType"][k]["Select"],false);
        }
   }
   
   function EnableControl(controlId,status)
   {
        var varSelectControl = document.getElementById(controlId);
        if(varSelectControl == null) return;
       
        if(status)
           varSelectControl.disabled = "";
        else
        {
           varSelectControl.disabled = 'disabled';
           varSelectControl.removeAttribute('href');
        }
   }
   function DisableZeroValueBuckets(selectIdList)
   {
         var selectIdArry = selectIdList.split(',');
          for(b=0;b<selectIdArry.length;b++)
            {
                if(selectIdArry[b]!=null)
                {
                     EnableControl(selectIdArry[b],false);
                }
            }
   }
      
   function ShowSeatMap(origin,destination,journeyDate,flightNum,classOfService,airlineCode,airFareSource,sessionId,divClientId,lnkBtnId,dSmOutId,dSeatCol,selectSeat,psngrLst,passengerArr,rowId,iteneraryId,legRph,LableControlClientIdList,progessId,isInvBucketVisible,tblInvbucketId,jsonSeatMapStr)
    {
        divSeatId = divClientId;
        isSeatSelect = selectSeat;
        lnkButnID = lnkBtnId;
        divSmOutId = dSmOutId;
        divSeatCol = dSeatCol;
        psngrListId = psngrLst;
        tblRowId = rowId;
        arr = passengerArr.split(',');
        showDiv(divSmOutId); 

        var divSeatStr = document.getElementById(divSeatId);
        DisplayDiv(divSeatStr,origin);
        if(origin!="")
        {
          if(divSeatStr.style.display =='none')
           {
             return false;
           }
          divRowColNm = document.getElementById("divColNm"+divSeatCol);
          if(divRowColNm!=null)
          {
            showDiv(divSeatCol);
            return;
          }
         }
         progressbarId = progessId;
         showDiv(progessId);
         ReceiveServerData(jsonSeatMapStr);
    }    