//  Lightview 2.5.1 - 05-09-2009
//  Copyright (c) 2008-2009 Nick Stakenburg (http://www.nickstakenburg.com)
//
//  Licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License
//  http://creativecommons.org/licenses/by-nc-nd/3.0/

//  More information on this project:
//  http://www.nickstakenburg.com/projects/lightview/

var Lightview = {
  Version: '2.5.1',

  // Configuration
  options: {
    backgroundColor: '#ffffff',                            // Background color of the view
    border: 12,                                            // Size of the border
    buttons: {
      opacity: {                                           // Opacity of inner buttons
        disabled: 0.4,
        normal: 0.75,
        hover: 1
      },
      side: { display: true },                             // Toggle side buttons
      innerPreviousNext: { display: true },                // Toggle the inner previous and next button
      slideshow: { display: true },                        // Toggle slideshow button
      topclose: { side: 'right' }                          // 'right' or 'left'                    
    },
    controller: {                                          // The controller is used on sets
      backgroundColor: '#4d4d4d',
      border: 6,
      buttons: {
        innerPreviousNext: true,
        side: false
      },
      margin: 18,
      opacity: 0.7,
      radius: 6,
      setNumberTemplate: '#{position} of #{total}'
    },
    cyclic: false,                                         // Makes galleries cyclic, no end/begin
    images: '/templates/lightview/images/lightview/',                        // The directory of the images, from this file
    imgNumberTemplate: 'Image #{position} of #{total}',    // Want a different language? change it here
    keyboard: true,                                        // Toggle keyboard buttons
    menubarPadding: 6,                                     // Space between menubar and content in px
    overlay: {                                             // Overlay
      background: '#000',                                  // Background color, Mac Firefox & Mac Safari use overlay.png
      close: true,
      opacity: 0.85,
      display: true
    },
    preloadHover: false,                                   // Preload images on mouseover
    radius: 12,                                            // Corner radius of the border
    removeTitles: true,                                    // Set to false if you want to keep title attributes intact
    resizeDuration: 0.45,                                  // The duration of the resize effect in seconds
    slideshowDelay: 5,                                     // Delay in seconds before showing the next slide
    titleSplit: '::',                                      // The characters you want to split title with
    transition: function(pos) {                            // Or your own transition
      return ((pos/=0.5) < 1 ? 0.5 * Math.pow(pos, 4) :
        -0.5 * ((pos-=2) * Math.pow(pos,3) - 2));
    },
    viewport: true,                                        // Stay within the viewport, true is recommended
    zIndex: 5000,                                          // zIndex of #lightview, #overlay is this -1

    startDimensions: {                                     // Dimensions Lightview starts at
      width: 100,
      height: 100
    },
    closeDimensions: {                                     // Modify if you've changed the close button images
      large: { width: 77, height: 22 },
      small: { width: 25, height: 22 }
    },
    sideDimensions: {                                      // Modify if you've changed the side button images
      width: 16,
      height: 22
    },

    defaultOptions: {                                      // Default options for each type of view
      image: {
        menubar: 'bottom',
        closeButton: 'large'
      },
      gallery: {
        menubar: 'bottom',
        closeButton: 'large'
      },
      ajax:   {
        width: 400,
        height: 300,
        menubar: 'top',
        closeButton: 'small',
        overflow: 'auto'
      },
      iframe: {
        width: 400,
        height: 300,
        menubar: 'top',
        scrolling: true,
        closeButton: 'small'
      },
      inline: {
        width: 400,
        height: 300,
        menubar: 'top',
        closeButton: 'small',
        overflow: 'auto'
      },
      flash: {
        width: 400,
        height: 300,
        menubar: 'bottom',
        closeButton: 'large'
      },
      quicktime: {
        width: 480,
        height: 220,
        autoplay: true,
        controls: true,
        closeButton: 'large'
      }
    }
  },
  classids: {
    quicktime: 'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
    flash: 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'
  },
  codebases: {
    quicktime: 'http://www.apple.com/qtactivex/qtplugin.cab#version=7,5,5,0',
    flash: 'http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,115,0'
  },
  errors: {
    requiresPlugin: "<div class='message'> The content your are attempting to view requires the <span class='type'>#{type}</span> plugin.</div><div class='pluginspage'><p>Please download and install the required plugin from:</p><a href='#{pluginspage}' target='_blank'>#{pluginspage}</a></div>"
  },
  mimetypes: {
    quicktime: 'video/quicktime',
    flash: 'application/x-shockwave-flash'
  },
  pluginspages: {
    quicktime: 'http://www.apple.com/quicktime/download',
    flash: 'http://www.adobe.com/go/getflashplayer'
  },
  // used with auto detection
  typeExtensions: {
    flash: 'swf',
    image: 'bmp gif jpeg jpg png',
    iframe: 'asp aspx cgi cfm htm html jsp php pl php3 php4 php5 phtml rb rhtml shtml txt',
    quicktime: 'avi mov mpg mpeg movie'
  }
};

eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(u(){G l=!!1d.8P("3j").5h,2H=1l.1T.2I&&(u(a){G b=E 4p("8Q ([\\\\d.]+)").8R(a);O b?3J(b[1]):-1})(35.4q)<7,2t=(1l.1T.5i&&!1d.3K),2R=35.4q.22("6x")>-1&&3J(35.4q.3L(/6x[\\/\\s](\\d+)/)[1])<3,4r=!!35.4q.3L(/8S/i)&&(2t||2R);18.1o(11,{8T:"1.6.1",8U:"1.8.2",V:{1b:"5j",3k:"Y"},5k:u(a){q((8V 1J[a]=="8W")||(n.5l(1J[a].8X)<n.5l(n["6y"+a]))){8Y("11 8Z "+a+" >= "+n["6y"+a])}},5l:u(a){G v=a.2S(/6z.*|\\./g,"");v=4s(v+"0".90(4-v.1s));O a.22("6z")>-1?v-1:v},5m:u(){n.5k("1l");q(!!1J.17&&!1J.6A){n.5k("6A")}q(/^(91?:\\/\\/|\\/)/.4t(n.F.1f)){n.1f=n.F.1f}10{G b=/Y(?:-[\\w\\d.]+)?\\.92(.*)/;n.1f=(($$("93 94[1x]").6B(u(s){O s.1x.3L(b)})||{}).1x||"").2S(b,"")+n.F.1f}q(!l){q(1d.5n>=8&&!1d.6C.3l){1d.6C.95("3l","96:97-98-99:9a","#5o#6D")}10{1d.1i("5p:3M",u(){G a=1d.9b();a.9c="3l\\\\:*{9d:3N(#5o#6D)}"})}}},5q:u(){n.1C=n.F.1C;n.W=(n.1C>n.F.W)?n.1C:n.F.W;n.1K=n.F.1K;n.1U=n.F.1U;n.4u()}});18.1o(11,{6E:14,2g:u(){G a=3O.9e;a.5r++;q(a.5r==n.6E){$(1d.29).5s("Y:3M")}}});11.2g.5r=0;18.1o(11,{4u:u(){n.Y=E N("U",{2T:"Y"});G d,3m,4v=1V(n.1U);q(2t){n.Y.19=u(){n.I("1j:-3n;1e:-3n;1p:1W;");O n};n.Y.1c=u(){n.I("1p:1y");O n};n.Y.1y=u(){O(n.1L("1p")=="1y"&&3J(n.1L("1e").2S("M",""))>-6F)}}$(1d.29).Q(n.2u=E N("U",{2T:"6G"}).I({2U:n.F.2U-1,1b:(!(2R||2H))?"4w":"36",2a:4r?"3N("+n.1f+"2u.1w) 1e 1j 3o":n.F.2u.2a}).1q(4r?1:n.F.2u.1F).19()).Q(n.Y.I({2U:n.F.2U,1e:"-3n",1j:"-3n"}).1q(0).Q(n.6H=E N("U",{R:"9f"}).Q(n.3P=E N("3p",{R:"9g"}).Q(n.6I=E N("1D",{R:"9h"}).I(3m=18.1o({1M:-1*n.1U.H+"M"},4v)).Q(n.4x=E N("U",{R:"5t"}).I(18.1o({1M:n.1U.H+"M"},4v)).Q(E N("U",{R:"1G"})))).Q(n.6J=E N("1D",{R:"9i"}).I(18.1o({6K:-1*n.1U.H+"M"},4v)).Q(n.4y=E N("U",{R:"5t"}).I(3m).Q(E N("U",{R:"1G"}))))).Q(n.6L=E N("U",{R:"6M"}).Q(n.4z=E N("U",{R:"5t 9j"}).Q(n.9k=E N("U",{R:"1G"})))).Q(E N("3p",{R:"9l"}).Q(E N("1D",{R:"6N 9m"}).Q(d=E N("U",{R:"9n"}).I({J:n.W+"M"}).Q(E N("3p",{R:"6O 9o"}).Q(E N("1D",{R:"6P"}).Q(E N("U",{R:"2v"})).Q(E N("U",{R:"38"}).I({1j:n.W+"M"})))).Q(E N("U",{R:"6Q"})).Q(E N("3p",{R:"6O 9p"}).Q(E N("1D",{R:"6P"}).I("1N-1e: "+(-1*n.W)+"M").Q(E N("U",{R:"2v"})).Q(E N("U",{R:"38"}).I("1j: "+(-1*n.W)+"M")))))).Q(n.4A=E N("1D",{R:"9q"}).I("J: "+(9r-n.W)+"M").Q(E N("U",{R:"9s"}).Q(E N("U",{R:"6R"}).I("1N-1e: "+n.W+"M").Q(n.2V=E N("U",{R:"9t"}).1q(0).I("3q: 0 "+n.W+"M").Q(n.6S=E N("U",{R:"9u 38"})).Q(n.1r=E N("U",{R:"9v 6T"}).Q(n.2h=E N("U",{R:"1G 6U"}).I(1V(n.F.1K.3a)).I({2a:n.F.12}).1q(n.F.1E.1F.3b)).Q(n.2W=E N("3p",{R:"9w"}).Q(n.5u=E N("1D",{R:"9x"}).Q(n.1H=E N("U",{R:"9y"})).Q(n.2i=E N("U",{R:"9z"}))).Q(n.5v=E N("U",{R:"9A"}).Q(n.3Q=E N("1D",{R:"9B"}).Q(E N("U"))).Q(n.4B=E N("1D",{R:"9C"}).Q(n.9D=E N("U",{R:"1G"}).1q(n.F.1E.1F.3b).I({12:n.F.12}).1O(n.1f+"9E.1w",{12:n.F.12})).Q(n.9F=E N("U",{R:"1G"}).1q(n.F.1E.1F.3b).I({12:n.F.12}).1O(n.1f+"9G.1w",{12:n.F.12}))).Q(n.2b=E N("1D",{R:"9H"}).Q(n.3c=E N("U",{R:"1G"}).1q(n.F.1E.1F.3b).I({12:n.F.12}).1O(n.1f+"6V.1w",{12:n.F.12})))))).Q(n.6W=E N("U",{R:"9I "}))))).Q(n.3r=E N("U",{R:"6X"}).Q(n.9J=E N("U",{R:"1G"}).I("2a: 3N("+n.1f+"3r.5w) 1e 1j 4C-3o")))).Q(E N("1D",{R:"6N 9K"}).Q(d.9L(2c))).Q(n.1X=E N("1D",{R:"9M"}).19().I("1N-1e: "+n.W+"M; 2a: 3N("+n.1f+"9N.5w) 1e 1j 3o"))))).Q(E N("U",{2T:"3R"}).19());G f=E 2j();f.1z=u(){f.1z=1l.2w;n.1U={H:f.H,J:f.J};G a=1V(n.1U),3m;n.3P.I({23:0-(f.J/2).2k()+"M",J:f.J+"M"});n.6I.I(3m=18.1o({1M:-1*n.1U.H+"M"},a));n.4x.I(18.1o({1M:a.H},a));n.6J.I(18.1o({6K:-1*n.1U.H+"M"},a));n.4y.I(3m);n.2g()}.X(n);f.1x=n.1f+"2x.1w";$w("2V 1H 2i 3Q").3S(u(e){n[e].I({12:n.F.12})}.X(n));G g=n.6H.2y(".2v");$w("6Y 6Z bl br").1g(u(a,i){q(n.1C>0){n.5x(g[i],a)}10{g[i].Q(E N("U",{R:"38"}))}g[i].I({H:n.W+"M",J:n.W+"M"}).70("2v"+a.1P());n.2g()}.X(n));n.Y.2y(".6Q",".38",".6R").3s("I",{12:n.F.12});G S={};$w("2x 1h 2l").1g(u(s){n[s+"3t"].1Q=s;G b=n.1f+s+".1w";q(s=="2l"){S[s]=E 2j();S[s].1z=u(){S[s].1z=1l.2w;n.1K[s]={H:S[s].H,J:S[s].J};G a=n.F.1E.2l.1Q,2e=18.1o({"5y":a,23:n.1K[s].J+"M"},1V(n.1K[s]));2e["3q"+a.1P()]=n.W+"M";n[s+"3t"].I(2e);n.6L.I({J:S[s].J+"M",1e:-1*n.1K[s].J+"M"});n[s+"3t"].5z().1O(b).I(1V(n.1K[s]));n.2g()}.X(n);S[s].1x=n.1f+s+".1w"}10{n[s+"3t"].1O(b)}},n);G C={};$w("3a 5A").1g(u(a){C[a]=E 2j();C[a].1z=u(){C[a].1z=1l.2w;n.1K[a]={H:C[a].H,J:C[a].J};n.2g()}.X(n);C[a].1x=n.1f+"71"+a+".1w"},n);G L=E 2j();L.1z=u(){L.1z=1l.2w;n.3r.I({H:L.H+"M",J:L.J+"M",23:-0.5*L.J+0.5*n.W+"M",1M:-0.5*L.H+"M"});n.2g()}.X(n);L.1x=n.1f+"3r.5w";G h=E 2j();h.1z=u(a){h.1z=1l.2w;G b={H:h.H+"M",J:h.J+"M"};n.2b.I(b);n.3c.I(b);n.2g()}.X(n);h.1x=n.1f+"72.1w";$w("2x 1h").1g(u(s){G S=s.1P(),i=E 2j();i.1z=u(){i.1z=1l.2w;n["3u"+S+"3v"].I({H:i.H+"M",J:i.J+"M"});n.2g()}.X(n);i.1x=n.1f+"9O"+s+".1w";n["3u"+S+"3v"].1X=s},n);$w("2b 4B 3Q").1g(u(c){n[c].19=n[c].19.1A(u(a,b){n.2e.1b="36";a(b);O n});n[c].1c=n[c].1c.1A(u(a,b){n.2e.1b="9P";a(b);O n})},n);n.Y.2y("*").3s("I",{2U:n.F.2U+1});n.Y.19();n.2g()},73:u(){17.2J.2m("Y").3S(u(e){e.74()});n.1Y=1I;q(n.y.1Z()){n.75=n.76;q(n.13&&!n.13.1y()){n.13.I("1p:1W").1c();n.3d.1q(0)}}10{n.75=1I;n.13.19()}q(4s(n.4z.1L("23"))<n.1K.2l.J){n.5B(2K)}n.77();n.78();E 17.1m({V:n.V,1t:u(){$w("1e 3T").1g(u(a){G b=a.1P();n["3w"+b].2n();G c={};n["3w"+b]=E N("U",{R:"9Q"+b}).19();c[a]=n["3w"+b];n.2V.Q(c)}.X(n))}.X(n)});n.5C();n.1n=1I},5D:u(){q(!n.3U||!n.3V){O}n.3V.Q({2X:n.3U.I({2z:n.3U.79})});n.3V.2n();n.3V=1I},1c:u(b){n.1u=1I;G c=18.7a(b);q(18.7b(b)||c){q(c&&b.3x("#")){n.1c({1k:b,F:18.1o({4D:2c},3O[1]||{})});O}n.1u=$(b);q(!n.1u){O}n.1u.9R();n.y=n.1u.24||E 11.3W(n.1u)}10{q(b.1k){n.1u=$(1d.29);n.y=E 11.3W(b)}10{q(18.7c(b)){n.1u=n.4E(n.y.26)[b];n.y=n.1u.24}}}q(!n.y.1k){O}n.73();q(n.y.2o()||n.y.1Z()){n.7d(n.y.26);n.1n=n.5E(n.y.26);q(n.y.1Z()){n.2A=n.1n.1s>1?n.7e:0;n.2Y=n.1n.9S(u(a){O a.2Z()})}}n.3X();n.7f();q(n.y.1k!="#3R"&&18.7g(11.4F).7h(" ").22(n.y.1a)>=0){q(!11.4F[n.y.1a]){$("3R").1B(E 4G(n.9T.9U).3K({1a:n.y.1a.1P(),5F:n.5G[n.y.1a]}));G d=$("3R").2f();n.1c({1k:"#3R",1H:n.y.1a.1P()+" 9V 9W",F:d});O 2K}}G e=18.1o({1r:"3T",2l:2K,5H:"9X",3Y:n.y.2o()&&n.F.1E.3Y.2z,5I:n.F.5I,2b:(n.y.2o()&&n.F.1E.2b.2z)||(n.2Y),2B:"1W",7i:n.F.2u.9Y,3Z:n.F.3Z},n.F.9Z[n.y.1a]||{});n.y.F=18.1o(e,n.y.F);q(n.y.1Z()){n.y.F.2l=(n.1n.1s<=1)}q(!(n.y.1H||n.y.2i||(n.1n&&n.1n.1s>1))&&n.y.F.2l){n.y.F.1r=2K}n.1R="3w"+(n.y.F.1r=="1e"?"7j":"7k");q(n.y.2Z()){q(!l&&!n.y.7l){n.y.7l=2c;G f=E N("3l:2p",{1x:n.y.1k,2z:"a0"}).I("J:5J;H:5J;");$(1d.29).Q(f);N.2n.3e(0.1,f)}q(n.y.2o()||n.y.1Z()){n.1b=n.1n.22(n.y);n.7m()}n.27=n.y.4H;q(n.27){n.4I()}10{n.5K();G f=E 2j();f.1z=u(){f.1z=1l.2w;n.4J();n.27={H:f.H,J:f.J};n.4I()}.X(n);f.1x=n.y.1k}}10{q(n.y.1Z()){n.1b=n.1n.22(n.y)}n.27=n.y.F.7n?m.2f():{H:n.y.F.H,J:n.y.F.J};n.4I()}},4K:(u(){u 5L(a,b,c){a=$(a);G d=1V(c);a.1B(E N("7o",{2T:"2C",1x:b,a1:"",a2:"4C"}).I(d))}G k=(u(){u 7p(a,b,c){a=$(a);G d=18.1o({"5y":"1j"},1V(c));G e=E N("3l:2p",{1x:b,2T:"2C"}).I(d);a.1B(e);e.4L=e.4L}u 7q(b,c,d){b=$(b);G f=1V(d),2p=E 2j();2p.1z=u(){3j=E N("3j",f);b.1B(3j);40{G a=3j.5h("2d");a.a3(2p,0,0,d.H,d.J)}41(e){5L(b,c,d)}}.X(n);2p.1x=c}q(1l.1T.2I){O 7p}10{O 7q}})();O u(){G c=n.7r(n.y.1k),2L=n.1Y||n.27;q(n.y.2Z()){G d=1V(2L);n[n.1R].I(d);q(n.1Y){k(n[n.1R],n.y.1k,2L)}10{5L(n[n.1R],n.y.1k,2L)}}10{q(n.y.5M()){4M(n.y.1a){2M"42":G f=18.5N(n.y.F.42)||{};G g=u(){n.4J();q(n.y.F.4D){n[n.1R].I({H:"1S",J:"1S"});n.27=n.5O(n[n.1R])}E 17.1m({V:n.V,1t:n.4N.X(n)})}.X(n);q(f.4O){f.4O=f.4O.1A(u(a,b){g();a(b)})}10{f.4O=g}n.5K();E a4.a5(n[n.1R],n.y.1k,f);2D;2M"2E":q(n.1Y){2L.J-=n.3f.J}n[n.1R].1B(n.2E=E N("2E",{a6:0,a7:0,1x:n.y.1k,2T:"2C",2q:"a8"+(7s.a9()*aa).2k(),7t:(n.y.F&&n.y.F.7t)?"1S":"4C"}).I(18.1o({W:0,1N:0,3q:0},1V(2L))));2D;2M"4P":G h=n.y.1k,2r=$(h.5P(h.22("#")+1));q(!2r||!2r.43){O}G i=2r.2f();2r.Q({ab:n.3V=E N(2r.43).19()});2r.79=2r.1L("2z");n.3U=2r.1c();n[n.1R].1B(n.3U);n[n.1R].2y("2y, 3y, 5Q").1g(u(b){n.44.1g(u(a){q(a.1u==b){b.I({1p:a.1p})}})}.X(n));q(n.y.F.4D){n.27=i;E 17.1m({V:n.V,1t:n.4N.X(n)})}2D}}10{G j={20:"3y",2T:"2C",H:2L.H,J:2L.J};4M(n.y.1a){2M"45":18.1o(j,{5F:n.5G[n.y.1a],3z:[{20:"2F",2q:"7u",2N:n.y.F.7u},{20:"2F",2q:"7v",2N:"ac"},{20:"2F",2q:"13",2N:n.y.F.7w},{20:"2F",2q:"ad",2N:2c},{20:"2F",2q:"1x",2N:n.y.1k},{20:"2F",2q:"7x",2N:n.y.F.7x||2K}]});18.1o(j,1l.1T.2I?{ae:n.af[n.y.1a],ag:n.ah[n.y.1a]}:{2W:n.y.1k,1a:n.7y[n.y.1a]});2D;2M"46":18.1o(j,{2W:n.y.1k,1a:n.7y[n.y.1a],ai:"aj",5H:n.y.F.5H,5F:n.5G[n.y.1a],3z:[{20:"2F",2q:"ak",2N:n.y.1k},{20:"2F",2q:"al",2N:"2c"}]});q(n.y.F.7z){j.3z.47({20:"2F",2q:"am",2N:n.y.F.7z})}2D}n[n.1R].I(1V(2L)).1B(n.5R(j)).1c();q(n.y.48()){(u(){40{q("7A"7B $("2C")){$("2C").7A(n.y.F.7w)}}41(e){}}.X(n)).an()}}}}})(),5O:u(b){b=$(b);G d=b.ao(),5S=[],5T=[];d.47(b);d.1g(u(c){q(c!=b&&c.1y()){O}5S.47(c);5T.47({2z:c.1L("2z"),1b:c.1L("1b"),1p:c.1L("1p")});c.I({2z:"ap",1b:"36",1p:"1y"})});G e={H:b.aq,J:b.ar};5S.1g(u(r,a){r.I(5T[a])});O e},4Q:u(){G a=$("2C");q(a){4M(a.43.4R()){2M"3y":q(1l.1T.5i&&n.y.48()){40{a.7C()}41(e){}a.as=""}q(a.7D){a.2n()}10{a=1l.2w}2D;2M"2E":a.2n();q(1l.1T.at&&1J.7E.2C){5U 1J.7E.2C}2D;5o:a.2n();2D}}$w("7k 7j").1g(u(S){n["3w"+S].I("H:1S;J:1S;").1B("").19()},n)},7F:1l.K,4I:u(){E 17.1m({V:n.V,1t:n.4S.X(n)})},4S:u(){n.3g();q(!n.y.5V()){n.4J()}q(!((n.y.F.4D&&n.y.7G())||n.y.5V())){n.4N()}q(!n.y.4T()){E 17.1m({V:n.V,1t:n.4K.X(n)})}q(n.y.F.2l){E 17.1m({V:n.V,1t:n.5B.X(n,2c)})}},7H:u(){E 17.1m({V:n.V,1t:n.7I.X(n)});q(n.y.4T()){E 17.1m({3e:0.2,V:n.V,1t:n.4K.X(n)})}q(n.3A){E 17.1m({V:n.V,1t:n.7J.X(n)})}q(n.y.48()){E 17.1m({V:n.V,1t:N.I.X(n,n[n.1R],"1p:1y")})}},2O:u(){q(17.2J.2m(11.V.3k).5W.1s){O}n.1c(n.30().2O)},1h:u(){q(17.2J.2m(11.V.3k).5W.1s){O}n.1c(n.30().1h)},4N:u(){n.7F();G a=n.5X(),31=n.7K();q(n.y.F.3Z&&(a.H>31.H||a.J>31.J)){q(n.y.F.7n){n.1Y=31;n.3g();a=31}10{G c=n.7L(),b=31;q(n.y.4U()){G d=[31.J/c.J,31.H/c.H,1].au();n.1Y={H:(n.27.H*d).2k(),J:(n.27.J*d).2k()}}10{n.1Y={H:c.H>b.H?b.H:c.H,J:c.J>b.J?b.J:c.J}}n.3g();a=18.5N(n.1Y);q(n.y.4U()){a.J+=n.3f.J}}}10{n.3g();n.1Y=1I}n.5Y(a)},49:u(a){n.5Y(a,{28:0})},5Y:(u(){G e,4V,4W,7M,7N,2A,b;G f=(u(){G w,h;u 4X(p){w=(e.H+p*4V).4a(0);h=(e.J+p*4W).4a(0)}G a;q(2H){a=u(p){n.Y.I({H:(e.H+p*4V).4a(0)+"M",J:(e.J+p*4W).4a(0)+"M"});n.4A.I({J:h-1*n.W+"M"})}}10{q(2R){a=u(p){G v=n.4Y(),o=1d.3Z.7O();n.Y.I({1b:"36",1M:0,23:0,H:w+"M",J:h+"M",1j:(o[0]+(v.H/2)-(w/2)).4b()+"M",1e:(o[1]+(v.J/2)-(h/2)).4b()+"M"});n.4A.I({J:h-1*n.W+"M"})}}10{a=u(p){n.Y.I({1b:"4w",H:w+"M",J:h+"M",1M:((0-w)/2).2k()+"M",23:((0-h)/2-2A).2k()+"M"});n.4A.I({J:h-1*n.W+"M"})}}}O u(p){4X.3B(n,p);a.3B(n,p)}})();O u(a){G c=3O[1]||{};e=n.Y.2f();b=2*n.W;H=a.H?a.H+b:e.H;J=a.J?a.J+b:e.J;n.5Z();q(e.H==H&&e.J==J){E 17.1m({V:n.V,1t:n.60.X(n,a)});O}G d={H:H+"M",J:J+"M"};4V=H-e.H;4W=J-e.J;7M=4s(n.Y.1L("1M").2S("M",""));7N=4s(n.Y.1L("23").2S("M",""));2A=n.13.1y()?(n.2A/2):0;q(!2H){18.1o(d,{1M:0-H/2+"M",23:0-J/2+"M"})}q(c.28==0){f.3B(n,1)}10{n.61=E 17.7P(n.Y,0,1,18.1o({28:n.F.av,V:n.V,7Q:n.F.7Q,1t:n.60.X(n,a)},c),f.X(n))}}})(),60:u(a){q(!n.3f){O}G b=n[n.1R],4Z;q(n.y.F.2B=="1S"){4Z=b.2f()}b.I({J:(a.J-n.3f.J)+"M",H:a.H+"M"});q(n.y.F.2B!="1W"&&(n.y.5V()||n.y.7G())){q(1l.1T.2I){q(n.y.F.2B=="1S"){G c=b.2f();b.I("2B:1y");G d={7R:"1W",7S:"1W"},62=0,51=15;q(4Z.J>a.J){d.7S="1S";d.H=c.H-51;d.aw="7T";62=51}q(4Z.H-62>a.H){d.7R="1S";d.J=c.J-51;d.ax="7T"}b.I(d)}10{b.I({2B:n.y.F.2B})}}10{b.I({2B:n.y.F.2B})}}10{b.I("2B:1W")}n.3X();n.61=1I;n.7H()},7I:u(){E 17.1m({V:n.V,1t:n.5Z.X(n)});E 17.1m({V:n.V,1t:u(){n[n.1R].1c();n.3g();q(n.1r.1y()){n.1r.I("1p:1y").1q(1)}}.X(n)});E 17.ay([E 17.7U(n.2V,{7V:2c,52:0,53:1}),E 17.54(n.3P,{7V:2c})],{V:n.V,28:0.25,1t:u(){q(n.1u){n.1u.5s("Y:az")}}.X(n)});q(n.y.2o()||(n.2Y&&n.F.13.1E.1Q)){E 17.1m({V:n.V,1t:n.7W.X(n)})}},78:(u(){u 2X(){n.4Q();n.4z.I({23:n.1K.2l.J+"M"});n.5D();q(n.y.48()){n[n.1R].I("1p:1W")}}u 7X(p){n.2V.1q(p);n.3P.1q(p)}O u(){q(!n.Y.1y()){n.2V.1q(0);n.3P.1q(0);n.4Q();O}E 17.7P(n.Y,1,0,{28:0.2,V:n.V,1t:2X.X(n)},7X.X(n))}})(),7Y:u(){$w("5v 2W 5u 1H 2i 3Q 4B 2b 2h").1g(u(a){N.19(n[a])},n);n.1r.I("1p:1W").1q(0)},3g:u(){n.7Y();q(!n.y.F.1r){n.3f={H:0,J:0};n.63=0;n.1r.19()}10{n.1r.1c()}q(n.y.1H||n.y.2i){n.5u.1c();n.2W.1c()}q(n.y.1H){n.1H.1B(n.y.1H).1c()}q(n.y.2i){n.2i.1B(n.y.2i).1c()}q(n.1n&&n.1n.1s>1){q(n.y.1Z()){n.2G.1B(E 4G(n.F.13.7Z).3K({1b:n.1b+1,64:n.1n.1s}));q(n.13.1L("1p")=="1W"){n.13.I("1p:1y");q(n.65){17.2J.2m("Y").2n(n.65)}n.65=E 17.54(n.3d,{V:n.V,28:0.1})}}10{n.2W.1c();q(n.y.2Z()){n.5v.1c();n.3Q.1c().5z().1B(E 4G(n.F.aA).3K({1b:n.1b+1,64:n.1n.1s}));q(n.y.F.2b){n.3c.1c();n.2b.1c()}}}}G a=n.y.1Z();q((n.y.F.3Y||a)&&n.1n.1s>1){G b={2x:(n.F.32||n.1b!=0),1h:(n.F.32||((n.y.2o()||a)&&n.30().1h!=0))};$w("2x 1h").1g(u(z){G Z=z.1P(),3C=b[z]?"80":"1S";q(a){n["13"+Z].I({3C:3C}).1q(b[z]?1:n.F.1E.1F.66)}10{n["3u"+Z+"3v"].I({3C:3C}).1q(b[z]?n.F.1E.1F.3b:n.F.1E.1F.66)}}.X(n));q(n.y.F.3Y||n.F.13.3Y){n.4B.1c()}}n.4c.1q(n.2Y?1:n.F.1E.1F.66).I({3C:n.2Y?"80":"1S"});n.81();q(!n.1r.aB().6B(N.1y)){n.1r.19();n.y.F.1r=2K}n.82()},81:u(){G a=n.1K.5A.H,3a=n.1K.3a.H,3h=n.1Y?n.1Y.H:n.27.H,55=aC,H=0,2h=n.y.F.2h||"3a",2a=n.F.aD;q(n.y.F.2l||n.y.1Z()||!n.y.F.2h){2a=1I}10{q(3h>=55+a&&3h<55+3a){2a="5A";H=a}10{q(3h>=55+3a){2a=2h;H=n.1K[2h].H}}}q(H>0){n.2W.1c();n.2h.I({H:H+"M"}).1c()}10{n.2h.19()}q(2a){n.2h.1O(n.1f+"71"+2a+".1w",{12:n.F.12})}n.63=H},5K:u(){n.67=E 17.54(n.3r,{28:0.2,52:0,53:1,V:n.V})},4J:u(){q(n.67){17.2J.2m("Y").2n(n.67)}E 17.83(n.3r,{28:0.2,V:n.V,3e:0.2})},84:u(){q(!n.y.2Z()){O}G a=(n.F.32||n.1b!=0),1h=(n.F.32||((n.y.2o()||n.y.1Z())&&n.30().1h!=0));n.4x[a?"1c":"19"]();n.4y[1h?"1c":"19"]();G b=n.1Y||n.27;n.1X.I({J:b.J+"M",23:n.W+(n.y.F.1r=="1e"?n.1r.4d():0)+"M"});G c=((b.H/2-1)+n.W).4b();q(a){n.1X.Q(n.3D=E N("U",{R:"1G aE"}).I({H:c+"M"}));n.3D.1Q="2x"}q(1h){n.1X.Q(n.3E=E N("U",{R:"1G aF"}).I({H:c+"M"}));n.3E.1Q="1h"}q(a||1h){n.1X.1c()}},7W:u(){q(!n.y||!n.F.1E.1Q.2z||!n.y.2Z()){O}n.84();n.1X.1c()},5Z:u(){n.1X.1B("").19();n.4x.19().I({1M:n.1U.H+"M"});n.4y.19().I({1M:-1*n.1U.H+"M"})},7f:(u(){u 2X(){n.Y.1q(1)}q(!2t){2X=2X.1A(u(a,b){a(b);n.Y.1c()})}O u(){q(n.Y.1L("1F")!=0){O}q(n.F.2u.2z){E 17.54(n.2u,{28:0.2,52:0,53:4r?1:n.F.2u.1F,V:n.V,aG:n.68.X(n),1t:2X.X(n)})}10{2X.3B(n)}}})(),19:u(){q(1l.1T.2I&&n.2E&&n.y.4T()){n.2E.2n()}q(2t&&n.y.48()){G a=$$("3y#2C")[0];q(a){40{a.7C()}41(e){}}}q(n.Y.1L("1F")==0){O}n.2s();n.1X.19();q(!1l.1T.2I||!n.y.4T()){n.2V.19()}q(17.2J.2m("69").5W.1s>0){O}17.2J.2m("Y").1g(u(e){e.74()});E 17.1m({V:n.V,1t:n.5D.X(n)});E 17.7U(n.Y,{28:0.1,52:1,53:0,V:{1b:"5j",3k:"69"}});E 17.83(n.2u,{28:0.16,V:{1b:"5j",3k:"69"},1t:n.85.X(n)})},85:u(){n.4Q();n.Y.19();n.2V.1q(0).1c();n.1X.1B("").19();n.6S.1B("").19();n.6W.1B("").19();n.5C();n.86();E 17.1m({V:n.V,1t:n.49.X(n,n.F.aH)});E 17.1m({V:n.V,1t:u(){q(n.1u){n.1u.5s("Y:1W")}$w("1u 1n y 1Y 2Y aI 3w").3S(u(a){n[a]=1I}.X(n))}.X(n)})},82:u(){n.1r.I("3q:0;");G a={},3h=n[(n.1Y?"aJ":"i")+"aK"].H;n.1r.I({H:3h+"M"});n.2W.I({H:3h-n.63-1+"M"});a=n.5O(n.1r);q(n.y.F.1r){a.J+=n.F.6a;4M(n.y.F.1r){2M"3T":n.1r.I("3q:"+n.F.6a+"M 0 0 0");2D;2M"1e":n.1r.I("3q: 0 0 "+n.F.6a+"M 0");2D}}n.1r.I({H:"87%"});n.3f=n.y.F.1r?a:{H:a.H,J:0}},3X:(u(){G a,2A;u 4X(){a=n.Y.2f();2A=n.13.1y()?(n.2A/2):0}G b;q(2H){b=u(){n.Y.I({1e:"50%",1j:"50%"})}}10{q(2t||2R){b=u(){G v=n.4Y(),o=1d.3Z.7O();n.Y.I({1M:0,23:0,1j:(o[0]+(v.H/2)-(a.H/2)).4b()+"M",1e:(o[1]+(v.J/2)-(a.J/2)).4b()+"M"})}}10{b=u(){n.Y.I({1b:"4w",1j:"50%",1e:"50%",1M:(0-a.H/2).2k()+"M",23:(0-a.J/2-2A).2k()+"M"})}}}O u(){4X.3B(n);b.3B(n)}})(),88:u(){n.2s();n.3A=2c;n.1h.X(n).3e(0.25);n.3c.1O(n.1f+"72.1w",{12:n.F.12}).19();n.4c.1O(n.1f+"89.1w",{12:n.F.13.12})},2s:u(){q(n.3A){n.3A=2K}q(n.6b){aL(n.6b)}n.3c.1O(n.1f+"6V.1w",{12:n.F.12});n.4c.1O(n.1f+"8a.1w",{12:n.F.13.12})},6c:u(){q(n.y.1Z()&&!n.2Y){O}n[(n.3A?"56":"5q")+"aM"]()},7J:u(){q(n.3A){n.6b=n.1h.X(n).3e(n.F.aN)}},aO:u(){$$("a[33~=Y], 3F[33~=Y]").1g(u(a){G b=a.24;q(!b){O}q(b.4e){a.8b("1H",b.4e)}a.24=1I})},4E:u(a){G b=a.22("][");q(b>-1){a=a.5P(0,b+1)}O $$(\'a[26^="\'+a+\'"], 3F[26^="\'+a+\'"]\')},5E:u(a){O n.4E(a).8c("24")},8d:u(){$(1d.29).1i("2P",n.8e.1v(n));$w("34 4f").1g(u(e){n.1X.1i(e,u(a){G b=a.3G("U");q(!b){O}q(n.3D&&n.3D==b||n.3E&&n.3E==b){n.57(a)}}.1v(n))}.X(n));n.1X.1i("2P",u(c){G d=c.3G("U");q(!d){O}G e=(n.3D&&n.3D==d)?"2O":(n.3E&&n.3E==d)?"1h":1I;q(e){n[e].1A(u(a,b){n.2s();a(b)}).X(n)()}}.1v(n));$w("2x 1h").1g(u(s){G S=s.1P(),2s=u(a,b){n.2s();a(b)},4g=u(a,b){G c=b.1u().1X;q((c=="2x"&&(n.F.32||n.1b!=0))||(c=="1h"&&(n.F.32||((n.y.2o()||n.y.1Z())&&n.30().1h!=0)))){a(b)}};n[s+"3t"].1i("34",n.57.1v(n)).1i("4f",n.57.1v(n)).1i("2P",n[s=="1h"?s:"2O"].1A(2s).1v(n));n["3u"+S+"3v"].1i("2P",n[s=="1h"?s:"2O"].1A(4g).1A(2s).1v(n)).1i("34",N.1q.58(n["3u"+S+"3v"],n.F.1E.1F.8f).1A(4g).1v(n)).1i("4f",N.1q.58(n["3u"+S+"3v"],n.F.1E.1F.3b).1A(4g).1v(n));n["13"+S].1i("2P",n[s=="1h"?s:"2O"].1A(4g).1A(2s).1v(n))},n);G f=[n.2h,n.3c];q(!2t){f.1g(u(b){b.1i("34",N.1q.X(n,b,n.F.1E.1F.8f)).1i("4f",N.1q.X(n,b,n.F.1E.1F.3b))},n)}10{f.3s("1q",1)}n.3c.1i("2P",n.6c.1v(n));n.4c.1i("2P",n.6c.1v(n));q(2t||2R){G g=u(a,b){q(n.Y.1L("1e").6d(0)=="-"){O}a(b)};1m.1i(1J,"4h",n.3X.1A(g).1v(n));1m.1i(1J,"49",n.3X.1A(g).1v(n))}q(2R){1m.1i(1J,"49",n.68.1v(n))}q(2H){u 6e(){q(n.13){n.13.I({1j:((1d.6f.aP||0)+m.59()/2).2k()+"M"})}}1m.1i(1J,"4h",6e.1v(n));1m.1i(1J,"49",6e.1v(n))}q(n.F.aQ){n.8g=u(a){G b=a.3G("a[33~=Y], 3F[33~=Y]");q(!b){O}a.56();q(!b.24){E 11.3W(b)}n.8h(b)}.1v(n);$(1d.29).1i("34",n.8g)}},5B:u(a){q(n.8i){17.2J.2m("aR").2n(n.aS)}G b={23:(a?0:n.1K.2l.J)+"M"};n.8i=E 17.8j(n.4z,{2e:b,28:0.16,V:n.V,3e:a?0.15:0})},8k:u(){G a={};$w("H J").1g(u(d){G D=d.1P(),5a=1d.6f;a[d]=1l.1T.2I?[5a["6g"+D],5a["4h"+D]].aT():1l.1T.5i?1d.29["4h"+D]:5a["4h"+D]});O a},68:u(){q(!2R){O}n.2u.I(1V(n.8k()))},8e:(u(){G b=".6U, .6M .1G, .6X, .8l";O u(a){q(n.y&&n.y.F&&a.3G(b+(n.y.F.7i?", #6G":""))){n.19()}}})(),57:u(a){G b=a.2r,1Q=b.1Q,w=n.1U.H,6g=(a.1a=="34")?0:1Q=="2x"?w:-1*w,2e={1M:6g+"M"};q(!n.4i){n.4i={}}q(n.4i[1Q]){17.2J.2m("8m"+1Q).2n(n.4i[1Q])}n.4i[1Q]=E 17.8j(n[1Q+"3t"],{2e:2e,28:0.2,V:{3k:"8m"+1Q,aU:1},3e:(a.1a=="4f")?0.1:0})},30:u(){q(!n.1n){O}G a=n.1b,1s=n.1n.1s;G b=(a<=0)?1s-1:a-1,1h=(a>=1s-1)?0:a+1;O{2O:b,1h:1h}},5x:u(a,b){G c=3O[2]||n.F,1C=c.1C,W=c.W;1b={1e:(b.6d(0)=="t"),1j:(b.6d(1)=="l")};q(l){G d=E N("3j",{R:"aV"+b.1P(),H:W+"M",J:W+"M"});d.I("5y:1j");a.Q(d);G e=d.5h("2d");e.aW=c.12;e.aX((1b.1j?1C:W-1C),(1b.1e?1C:W-1C),1C,0,7s.aY*2,2c);e.aZ();e.8n((1b.1j?1C:0),0,W-1C,W);e.8n(0,(1b.1e?1C:0),W,W-1C)}10{G f=E N("3l:b0",{b1:c.12,b2:"5J",b3:c.12,b4:(1C/W*0.5).4a(2)}).I({H:2*W-1+"M",J:2*W-1+"M",1b:"36",1j:(1b.1j?0:(-1*W))+"M",1e:(1b.1e?0:(-1*W))+"M"});a.Q(f);f.4L=f.4L}},77:(u(){u 6h(){O $$("3y, 5Q, 2y")}q(1l.1T.2I&&1d.5n>=8){6h=u(){O 1d.b5("3y, 5Q, 2y")}}O u(){q(n.6i){O}G a=6h();n.44=[];8o(G i=0,1s=a.1s;i<1s;i++){G b=a[i];n.44.47({1u:b,1p:b.2e.1p});b.2e.1p="1W"}n.6i=2c}})(),86:u(){n.44.1g(u(a,i){a.1u.2e.1p=a.1p});5U n.44;n.6i=2K},5X:u(){O{H:n.27.H,J:n.27.J+n.3f.J}},7L:u(){G i=n.5X(),b=2*n.W;O{H:i.H+b,J:i.J+b}},7K:u(){G a=21,6j=2*n.1U.J+a,v=n.4Y();O{H:v.H-6j,J:v.J-6j}},4Y:u(){G v=m.2f();q(n.13&&n.13.1y()&&n.1n&&n.1n.1s>1){v.J-=n.2A}O v}});G m={2f:u(){O{H:n.59(),J:n.4d()}}};(u(a){G B=1l.1T,5b=1d,1u,6k={};u 8p(){q(2t){O 5b}q(B.b6&&1J.3J(1J.b7.b8())<9.5){O 5b.29}O 5b.6f}u 6l(D){q(!1u){1u=8p()}6k[D]="b9"+D;a["2m"+D]=u(){O 1u[6k[D]]};O a["2m"+D]()}a.59=6l.58("ba");a.4d=6l.58("bb")})(m);(u(){u 8q(a,b){q(!n.y){O}a(b)}$w("3g 4K").1g(u(a){n[a]=n[a].1A(8q)},11)})();u 1V(b){G c={};18.7g(b).1g(u(a){c[a]=b[a]+"M"});O c}18.1o(11,{8r:u(){q(!n.y.F.5I){O}n.5c=n.8s.1v(n);1d.1i("8t",n.5c)},5C:u(){q(n.5c){1d.bc("8t",n.5c)}},8s:u(a){G b=bd.be(a.2Q).4R(),2Q=a.2Q,3H=(n.y.2o()||n.2Y)&&!n.61,2b=n.y.F.2b,4j;q(n.y.4U()){a.56();4j=(2Q==1m.8u||["x","c"].6m(b))?"19":(2Q==37&&3H&&(n.F.32||n.1b!=0))?"2O":(2Q==39&&3H&&(n.F.32||n.30().1h!=0))?"1h":(b=="p"&&2b&&3H)?"88":(b=="s"&&2b&&3H)?"2s":1I;q(b!="s"){n.2s()}}10{4j=(2Q==1m.8u)?"19":1I}q(4j){n[4j]()}q(3H){q(2Q==1m.bf&&n.1n.bg()!=n.y){n.1c(0)}q(2Q==1m.bh&&n.1n.bi()!=n.y){n.1c(n.1n.1s-1)}}}});11.4S=11.4S.1A(u(a,b){n.8r();a(b)});18.1o(11,{7d:u(a){G b=n.4E(a);q(!b){O}b.3S(11.4k)},7m:u(){q(n.1n.1s==0){O}G a=n.30();n.8v([a.1h,a.2O])},8v:u(c){G d=(n.1n&&n.1n.6m(c)||18.bj(c))?n.1n:c.26?n.5E(c.26):1I;q(!d){O}G e=$A(18.7c(c)?[c]:c.1a?[d.22(c)]:c).bk();e.1g(u(a){G b=d[a];n.6n(b)},n)},8w:u(a,b){a.4H={H:b.H,J:b.J}},6n:u(a){q(a.4H||a.5d||!a.1k){O}G P=E 2j();P.1z=u(){P.1z=1l.2w;a.5d=1I;n.8w(a,P)}.X(n);a.5d=2c;P.1x=a.1k},8h:u(a){G b=a.24;q(b&&b.4H||b.5d||!b.2Z()){O}n.6n(b)}});N.bm({1O:u(a,b){a=$(a);G c=18.1o({8x:"1e 1j",3o:"4C-3o",6o:"7v",12:""},3O[2]||{});a.I(2H?{bn:"bo:bp.bq.bs(1x=\'"+b+"\'\', 6o=\'"+c.6o+"\')"}:{2a:c.12+" 3N("+b+") "+c.8x+" "+c.3o});O a}});18.1o(11,{6p:u(a,b){G c;$w("46 2p 2E 45").1g(u(t){q(E 4p("\\\\.("+n.bt[t].2S(/\\s+/g,"|")+")(\\\\?.*)?","i").4t(a)){c=t}}.X(n));q(c){O c}q(a.3x("#")){O"4P"}q(1d.8y&&1d.8y!=(a).2S(/(^.*\\/\\/)|(:.*)|(\\/.*)/g,"")){O"2E"}O"2p"},7r:u(a){G b=a.bu(/\\?.*/,"").3L(/\\.([^.]{3,4})$/);O b?b[1]:1I},5R:u(b){G c="<"+b.20;8o(G d 7B b){q(!["3z","6q","20"].6m(d)){c+=" "+d+\'="\'+b[d]+\'"\'}}q(E 4p("^(?:3F|bv|bw|br|bx|by|bz|7o|8z|bA|bB|bC|2F|bD|bE|bF)$","i").4t(b.20)){c+="/>"}10{c+=">";q(b.3z){b.3z.1g(u(a){c+=n.5R(a)}.X(n))}q(b.6q){c+=b.6q}c+="</"+b.20+">"}O c}});(u(){1d.1i("5p:3M",u(){G c=(35.6r&&35.6r.1s);u 4l(a){G b=2K;q(c){b=($A(35.6r).8c("2q").7h(",").22(a)>=0)}10{40{b=E bG(a)}41(e){}}O!!b}q(c){1J.11.4F={46:4l("bH bI"),45:4l("6s")}}10{1J.11.4F={46:4l("8A.8A"),45:4l("6s.6s")}}})})();11.3W=bJ.bK({bL:u(b){q(b.24){O}G c=18.7b(b);q(c&&!b.24){b.24=n;q(b.1H){b.24.4e=b.1H;q(11.F.8B){b.bM("1H","")}}}n.1k=c?b.bN("1k"):b.1k;q(n.1k.22("#")>=0){n.1k=n.1k.5P(n.1k.22("#"))}G d=b.26;q(d){n.26=d;q(d.3x("4m")){n.1a="4m"}10{q(d.3x("5e")){q(d.bO("][")){G e=d.8C("]["),6t=e[1].3L(/([a-bP-Z]*)/)[1];q(6t){n.1a=6t;G f=e[0]+"]";b.8b("26",f);n.26=f}}10{n.1a=11.6p(n.1k)}}10{n.1a=d}}}10{n.1a=11.6p(n.1k);n.26=n.1a}$w("42 46 4m 2E 2p 4P 45 8D 8E 5e").3S(u(a){G T=a.1P(),t=a.4R();q("2p 4m 8E 8D 5e".22(a)<0){n["bQ"+T]=u(){O n.1a==t}.X(n)}}.X(n));q(c&&b.24.4e){G g=b.24.4e.8C(11.F.bR).3s("bS");q(g[0]){n.1H=g[0]}q(g[1]){n.2i=g[1]}G h=g[2];n.F=(h&&18.7a(h))?bT("({"+h+"})"):{}}10{n.1H=b.1H;n.2i=b.2i;n.F=b.F||{}}q(n.F.6u){n.F.42=18.5N(n.F.6u);5U n.F.6u}},2o:u(){O n.1a.3x("4m")},1Z:u(){O n.26.3x("5e")},2Z:u(){O(n.2o()||n.1a=="2p")},5M:u(){O"2E 4P 42".22(n.1a)>=0},4U:u(){O!n.5M()}});11.4k=u(a){G b=$(a);E 11.3W(a);O b};(u(){u 8F(a){G b=a.3G("a[33~=Y], 3F[33~=Y]");q(!b){O}a.56();n.4k(b);n.1c(b)}u 8G(a){G b=a.3G("a[33~=Y], 3F[33~=Y]");q(!b){O}n.4k(b)}u 8H(a){G b=a.2r,1a=a.1a,3i=a.3i;q(3i&&3i.43){q(1a==="5m"||1a==="bU"||(1a==="2P"&&3i.43.4R()==="8z"&&3i.1a==="bV")){b=3i}}q(b.bW==bX.bY){b=b.7D}O b}u 8I(a,b){q(!a){O}G c=a.R;O(c.1s>0&&(c==b||E 4p("(^|\\\\s)"+b+"(\\\\s|$)").4t(c)))}u 8J(a){G b=8H(a);q(b&&8I(b,"Y")){n.4k(b)}}1d.1i("Y:3M",u(){$(1d.29).1i("2P",8F.1v(11));q(11.F.8B&&1l.1T.2I&&1d.5n>=8){$(1d.29).1i("34",8J.1v(11))}10{$(1d.29).1i("34",8G.1v(11))}})})();18.1o(11,{5f:u(){G b=n.F.13,W=b.W;$(1d.29).Q(n.13=E N("U",{2T:"bZ"}).I({2U:n.F.2U+1,c0:b.1N+"M",1b:"36",1p:"1W"}).Q(n.c1=E N("U",{R:"c2"}).Q(E N("U",{R:"5g c3"}).I("1N-1j: "+W+"M").Q(E N("U",{R:"2v"}))).Q(E N("U",{R:"6v"}).I({1N:"0 "+W+"M",J:W+"M"})).Q(E N("U",{R:"5g c4"}).I("1N-1j: -"+W+"M").Q(E N("U",{R:"2v"})))).Q(n.3I=E N("U",{R:"6w 6T"}).Q(n.3d=E N("3p",{R:"c5"}).I("1N: 0 "+W+"M").Q(E N("1D",{R:"c6"}).Q(n.2G=E N("U"))).Q(E N("1D",{R:"4n c7"}).Q(n.c8=E N("U",{R:"1G"}).1O(n.1f+"8K.1w",{12:b.12}))).Q(E N("1D",{R:"4n c9"}).Q(n.ca=E N("U",{R:"1G"}).1O(n.1f+"cb.1w",{12:b.12}))).Q(E N("1D",{R:"4n cc"}).Q(n.4c=E N("U",{R:"1G"}).1O(n.1f+"8a.1w",{12:b.12}))).Q(E N("1D",{R:"4n 8l"}).Q(n.cd=E N("U",{R:"1G"}).1O(n.1f+"ce.1w",{12:b.12}))))).Q(n.cf=E N("U",{R:"cg"}).Q(E N("U",{R:"5g ch"}).I("1N-1j: "+W+"M").Q(E N("U",{R:"2v"}))).Q(E N("U",{R:"6v"}).I({1N:"0 "+W+"M",J:W+"M"})).Q(E N("U",{R:"5g ci"}).I("1N-1j: -"+W+"M").Q(E N("U",{R:"2v"})))));$w("2x 1h").1g(u(s){G S=s.1P();n["13"+S].1X=s},n);q(2t){n.13.19=u(){n.I("1j:-3n;1e:-3n;1p:1W;");O n};n.13.1c=u(){n.I("1p:1y");O n};n.13.1y=u(){O(n.1L("1p")=="1y"&&3J(n.1L("1e").2S("M",""))>-6F)}}n.13.2y(".4n U").3s("I",1V(n.8L));G c=n.13.2y(".2v");$w("6Y 6Z bl br").1g(u(a,i){q(b.1C>0){n.5x(c[i],a,b)}10{c[i].Q(E N("U",{R:"38"}))}c[i].I({H:b.W+"M",J:b.W+"M"}).70("2v"+a.1P())},n);n.13.5z(".6w").I("H:87%;");n.13.I(2H?{1b:"36",1e:"1S",1j:""}:{1b:"4w",1e:"1S",1j:"50%"});n.13.2y(".6v",".6w",".1G",".38").3s("I",{12:b.12});n.2G.1B(E 4G(b.7Z).3K({1b:8M,64:8M}));n.2G.I({H:n.2G.59()+"M",J:n.3d.4d()+"M"});n.8N();n.2G.1B("");n.13.19().I("1p:1y");n.8d();n.2g()},8N:u(){G b,4o,13=n.F.13,W=13.W;q(2H){b=n.3d.2f(),4o=b.H+2*W;n.3d.I({H:b.H+"M",1N:0});n.3I.I("H:1S;");n.3d.I({cj:W+"M"});n.3I.I({H:4o+"M"});$w("1e 3T").1g(u(a){n["13"+a.1P()].I({H:4o+"M"})},n);n.13.I("1N-1j:-"+(4o/2).2k()+"M")}10{n.3I.I("H:1S");b=n.3I.2f();n.2G.ck().I({8O:b.J+"M",H:n.2G.2f().H+"M"});n.13.I({H:b.H+"M",1M:(0-(b.H/2).2k())+"M"});n.3I.I({H:b.H+"M"});$w("1e 3T").1g(u(a){n["13"+a.1P()].I({H:b.H+"M"})},n)}n.7e=13.1N+b.J+2*W;n.76=n.13.4d();n.2G.I({8O:b.J+"M"})}});11.5f=11.5f.1A(u(a,b){G c=E 2j();c.1z=u(){c.1z=1l.2w;n.8L={H:c.H,J:c.J};a(b)}.X(n);c.1x=n.1f+"8K.1w";G d=(E 2j()).1x=n.1f+"89.1w"});11.4u=11.4u.1A(u(a,b){a(b);n.5f()});11.19=11.19.1A(u(a,b){q(n.y&&n.y.1Z()){n.13.19();n.2G.1B("")}a(b)})})();11.5m();1d.1i("5p:3M",11.5q.X(11));',62,765,'|||||||||||||||||||||||this|||if||||function||||view||||||new|options|var|width|setStyle|height|||px|Element|return||insert|className|||div|queue|border|bind|lightview||else|Lightview|backgroundColor|controller||||Effect|Object|hide|type|position|show|document|top|images|each|next|observe|left|href|Prototype|Event|views|extend|visibility|setOpacity|menubar|length|afterFinish|element|bindAsEventListener|png|src|visible|onload|wrap|update|radius|li|buttons|opacity|lv_Button|title|null|window|closeDimensions|getStyle|marginLeft|margin|setPngBackground|capitalize|side|_contentPosition|auto|Browser|sideDimensions|pixelClone|hidden|prevnext|scaledInnerDimensions|isSet|tag||indexOf|marginTop|_view||rel|innerDimensions|duration|body|background|slideshow|true||style|getDimensions|_lightviewLoadedEvent|closeButton|caption|Image|round|topclose|get|remove|isGallery|image|name|target|stopSlideshow|BROWSER_IS_WEBKIT_419|overlay|lv_Corner|emptyFunction|prev|select|display|controllerOffset|overflow|lightviewContent|break|iframe|param|setNumber|BROWSER_IS_IE_LT7|IE|Queues|false|dimensions|case|value|previous|click|keyCode|BROWSER_IS_FIREFOX_LT3|replace|id|zIndex|center|data|after|isSetGallery|isImage|getSurroundingIndexes|bounds|cyclic|class|mouseover|navigator|absolute||lv_Fill||large|normal|slideshowButton|controllerCenter|delay|menubarDimensions|fillMenuBar|imgWidth|currentTarget|canvas|scope|ns_vml|sideNegativeMargin|9500px|repeat|ul|padding|loading|invoke|ButtonImage|inner|Button|content|startsWith|object|children|sliding|call|cursor|prevButton|nextButton|area|findElement|staticGallery|controllerMiddle|parseFloat|evaluate|match|loaded|url|arguments|sideButtons|imgNumber|lightviewError|_each|bottom|inlineContent|inlineMarker|View|restoreCenter|innerPreviousNext|viewport|try|catch|ajax|tagName|overlappingRestore|quicktime|flash|push|isQuicktime|resize|toFixed|floor|controllerSlideshow|getHeight|_title|mouseout|blockInnerPrevNext|scroll|sideEffect|action|Extend|detectPlugin|gallery|lv_ButtonWrapper|finalWidth|RegExp|userAgent|FIX_OVERLAY_WITH_PNG|parseInt|test|build|sideStyle|fixed|prevButtonImage|nextButtonImage|topcloseButtonImage|resizeCenter|innerPrevNext|no|autosize|getSet|Plugin|Template|preloadedDimensions|afterEffect|stopLoading|insertContent|outerHTML|switch|resizeWithinViewport|onComplete|inline|clearContent|toLowerCase|afterShow|isIframe|isMedia|wdiff|hdiff|init|getViewportDimensions|contentDimensions||scrollbarWidth|from|to|Appear|minimum|stop|toggleSideButton|curry|getWidth|ddE|doc|keyboardEvent|isPreloading|set|buildController|lv_controllerCornerWrapper|getContext|WebKit|end|require|convertVersionString|load|documentMode|default|dom|start|counter|fire|lv_Wrapper|dataText|innerController|gif|createCorner|float|down|small|toggleTopClose|disableKeyboardNavigation|restoreInlineContent|getViews|pluginspage|pluginspages|wmode|keyboard|1px|startLoading|insertImageUsingHTML|isExternal|clone|getHiddenDimensions|substr|embed|createHTML|restore|styles|delete|isAjax|effects|getInnerDimensions|_resize|hidePrevNext|_afterResize|resizing|corrected|closeButtonWidth|total|_controllerCenterEffect|disabled|loadingEffect|maxOverlay|lightview_hide|menubarPadding|slideTimer|toggleSlideshow|charAt|centerControllerIELT7|documentElement|offset|getOverlappingElements|preventingOverlap|safety|property|define|member|preloadImageDimensions|sizingMethod|detectType|html|plugins|QuickTime|relType|ajaxOptions|lv_controllerBetweenCorners|lv_controllerMiddle|Firefox|REQUIRED_|_|Scriptaculous|find|namespaces|VML|_lightviewLoadedEvents|9500|lv_overlay|container|prevSide|nextSide|marginRight|topButtons|lv_topButtons|lv_Frame|lv_Half|lv_CornerWrapper|lv_Filler|lv_WrapDown|contentTop|clearfix|lv_Close|inner_slideshow_play|contentBottom|lv_Loading|tl|tr|addClassName|close_|inner_slideshow_stop|prepare|cancel|controllerHeight|_controllerHeight|hideOverlapping|hideContent|_inlineDisplayRestore|isString|isElement|isNumber|extendSet|_controllerOffset|appear|keys|join|overlayClose|Bottom|Top|_VMLPreloaded|preloadSurroundingImages|fullscreen|img|insertImageUsingVML|insertImageUsingCanvas|detectExtension|Math|scrolling|autoplay|scale|controls|loop|mimetypes|flashvars|SetControllerVisible|in|Stop|parentNode|frames|adjustDimensionsToView|isInline|finishShow|showContent|nextSlide|getBounds|getOuterDimensions|mleft|mtop|getScrollOffsets|Tween|transition|overflowX|overflowY|15px|Opacity|sync|showPrevNext|tween|hideData|setNumberTemplate|pointer|setCloseButtons|setMenubarDimensions|Fade|setPrevNext|afterHide|showOverlapping|100|startSlideshow|controller_slideshow_stop|controller_slideshow_play|writeAttribute|pluck|addObservers|delegateClose|hover|_preloadImageHover|preloadImageHover|_topCloseEffect|Morph|getScrollDimensions|lv_controllerClose|lightview_side|fillRect|for|getRootElement|guard|enableKeyboardNavigation|keyboardDown|keydown|KEY_ESC|preloadFromSet|setPreloadedDimensions|align|domain|input|ShockwaveFlash|removeTitles|split|external|media|handleClick|handleMouseOver|elementIE8|hasClassNameIE8|handleMouseOverIE8|controller_prev|controllerButtonDimensions|999|_fixateController|lineHeight|createElement|MSIE|exec|mac|REQUIRED_Prototype|REQUIRED_Scriptaculous|typeof|undefined|Version|throw|requires|times|https|js|head|script|add|urn|schemas|microsoft|com|vml|createStyleSheet|cssText|behavior|callee|lv_Container|lv_Sides|lv_PrevSide|lv_NextSide|lv_topcloseButtonImage|topcloseButton|lv_Frames|lv_FrameTop|lv_Liquid|lv_HalfLeft|lv_HalfRight|lv_Center|150|lv_WrapUp|lv_WrapCenter|lv_contentTop|lv_MenuBar|lv_Data|lv_DataText|lv_Title|lv_Caption|lv_innerController|lv_ImgNumber|lv_innerPrevNext|innerPrevButton|inner_prev|innerNextButton|inner_next|lv_Slideshow|lv_contentBottom|loadingButton|lv_FrameBottom|cloneNode|lv_PrevNext|blank|inner_|relative|lv_content|blur|all|errors|requiresPlugin|plugin|required|transparent|close|defaultOptions|none|alt|galleryimg|drawImage|Ajax|Updater|frameBorder|hspace|lightviewContent_|random|99999|before|tofit|enablejavascript|codebase|codebases|classid|classids|quality|high|movie|allowFullScreen|FlashVars|defer|ancestors|block|clientWidth|clientHeight|innerHTML|Gecko|min|resizeDuration|paddingRight|paddingBottom|Parallel|opened|imgNumberTemplate|childElements|180|borderColor|lv_PrevButton|lv_NextButton|beforeStart|startDimensions|_openEffect|scaledI|nnerDimensions|clearTimeout|Slideshow|slideshowDelay|updateViews|scrollLeft|preloadHover|lightview_topCloseEffect|topCloseEffect|max|limit|cornerCanvas|fillStyle|arc|PI|fill|roundrect|fillcolor|strokeWeight|strokeColor|arcSize|querySelectorAll|Opera|opera|version|client|Width|Height|stopObserving|String|fromCharCode|KEY_HOME|first|KEY_END|last|isArray|uniq||addMethods|filter|progid|DXImageTransform|Microsoft||AlphaImageLoader|typeExtensions|gsub|base|basefont|col|frame|hr|link|isindex|meta|range|spacer|wbr|ActiveXObject|Shockwave|Flash|Class|create|initialize|setAttribute|getAttribute|include|zA|is|titleSplit|strip|eval|error|radio|nodeType|Node|TEXT_NODE|lightviewController|marginBottom|controllerTop|lv_controllerTop|lv_controllerCornerWrapperTopLeft|lv_controllerCornerWrapperTopRight|lv_controllerCenter|lv_controllerSetNumber|lv_controllerPrev|controllerPrev|lv_controllerNext|controllerNext|controller_next|lv_controllerSlideshow|controllerClose|controller_close|controllerBottom|lv_controllerBottom|lv_controllerCornerWrapperBottomLeft|lv_controllerCornerWrapperBottomRight|paddingLeft|up'.split('|'),0,{}));


var statusSameSource = {source:0, target: 0};
var fsUIManager;
var imgDepartPicker,imgReturnPicker,txtDepartPicker,txtReturnPicker,txtInfantPicker,txtChildPicker;
var acObjects = {};
var myLookers = [];
var myJson=[];

gLookup = Class.create();

gLookup.prototype = {
 initialize: function(config){
    this.attachTo = $(config.attachTo);
    this.rpcUrl = config.rpcUrl ? config.rpcUrl : 'ajax.php';

    this.dynId = Math.random().toString().substring(3,8);
    this.selectedRow = -1;
    this.scrollMargin = 10;
    this.pos = this.attachTo.cumulativeOffset();
    this.dim = this.attachTo.getDimensions();
    
    var g = '';
    if(Prototype.Browser.IE){
        g += '<iframe id="IeBust_'+this.dynId+'" style="display:none;" frameborders="0"></iframe>';
    }
        g += '<div id="ovl_' + this.dynId + '" class="overlay" style="display:none;width:250px;">';
        g += '<ul class="loader" id="ldr_' + this.dynId +'"></ul>';
        g += '</div>';

    $$('body')[0].insert({bottom: g});

    var p = '<input type="hidden" name="' + config.elName + '" id="hide_'+this.attachTo.id.toString()+'" />';

    this.attachTo.insert({after: p });
    this.attachTo.setAttribute('autocomplete','off');
    this.tOvl = $('ovl_' + this.dynId);
    this.tLdr = $('ldr_' + this.dynId);
    
    this.tOvl.absolutize();
    this.tOvl.setStyle({left: this.pos.left + 'px', top: this.pos.top + this.dim.height + 'px', width: '250px', height: '150px'});
    if(Prototype.Browser.IE){
       $('IeBust_'+this.dynId).absolutize();
       $('IeBust_'+this.dynId).setStyle({left: this.pos.left + 'px', top: this.pos.top + this.dim.height + 'px', width: '250px', height: '150px'});
    }   
    //this.tOvl.setStyle({ width: ($(this.attachTo).getWidth() - 15) + 'px'});

    Event.observe(this.attachTo, 'keyup', this.doLookup.bindAsEventListener(this));
    Event.observe(this.attachTo, 'keydown', this.keyNavigation.bindAsEventListener(this));
    Event.observe(document,'click', this.hideLookup.bindAsEventListener(this));
    Event.observe(this.tLdr,'click', this.overlayClicked.bindAsEventListener(this));
 },
 hideLookup: function(){
    this.tOvl.hide();
    if(Prototype.Browser.IE){
        $('IeBust_'+this.dynId).hide();
    }
 },
 doLookup: function(evt){
  if([40,38,13].indexOf(evt.keyCode) != -1){
    Event.stop(evt);
  }else{
    var lkTxt = $(this.attachTo).value.strip().substring(0,2).toLowerCase();
    if(lkTxt.length >= 2){
      if(!myJson[lkTxt]){
         var url = this.rpcUrl + lkTxt + '.json';
         mySelf = this;
         var myLookupSeeker = new Ajax.Request( url, { method: "GET", onComplete: function(xhr){
                    eval('var x=' + xhr.responseText);
                    myJson[x.tag] = x.results;
                    mySelf.populateOptions();
                    } });
        }else this.populateOptions();
      }else
	this.hideLookup();
   }	
 },
 keyNavigation: function(evt){
  if([40,38,13].indexOf(evt.keyCode) != -1){
    var xx = $$('ul#ldr_' + this.dynId +' li');
    if(xx[this.selectedRow])
        xx[this.selectedRow].removeClassName('active');
    switch(evt.keyCode){
	case 40:
         this.selectedRow++;
	 if(this.selectedRow >= xx.length){
		this.selectedRow = xx.length - 1;
 	 }
	break;
	case 38:
         this.selectedRow--;
	 if(this.selectedRow < 0){
		this.selectedRow = 0;
 	 }
	break;
	case 13:
	 if(this.selectedRow == -1)
	    this.selectedRow = 0;
	 this.itemSelected(xx[this.selectedRow]);
     Event.stop(evt);
	break;
    }
    xx[this.selectedRow].addClassName('active');
    xPos = Element.positionedOffset(xx[this.selectedRow]);
    xHeight = $(xx[this.selectedRow]).getHeight();
    vpHeight = this.tOvl.getHeight();
    if( ( xPos.top + xHeight ) > vpHeight ){
        this.tOvl.scrollTop = (( xPos.top + xHeight + this.scrollMargin) - vpHeight);
    }else{
        this.tOvl.scrollTop = 0;
    }    
    Event.stop(evt);
   }
 },
 populateOptions: function(){
    var lkTxt = $(this.attachTo).value.strip().toLowerCase();
    var l = lkTxt.length
    if(l < 3) return;
    var indEx = lkTxt.substring(0,2);
    var tmpArray = myJson[indEx];
    this.tOvl.setStyle({height: 'auto'});
    this.tOvl.scrollTop = 0;
    this.tLdr.update('');
    var xLen = tmpArray.length;
    var xCount = 0;
    for(var i=0; i < xLen; i++){
      if(tmpArray[i].id.toLowerCase().indexOf(lkTxt) !== -1 || tmpArray[i].ct.toLowerCase().indexOf(lkTxt) !== -1){
        var o = tmpArray[i].ct + ', ' + tmpArray[i].cn + ' (' + tmpArray[i].id + ')';
        var p = o.toLowerCase().indexOf(lkTxt);
            o = o.substring(0, p) + '<b>' + o.substring(p, p + l) + '</b>' + o.substring(p + l);
        this.tLdr.insert({bottom: '<li>' + o + '</li>'});
        xCount++;
      }  
    }
   if(xCount > 0){
    this.tOvl.show();
    this.tOvl.setStyle({display: 'block'});
    this.selectedRow = -1;
    Event.observe(this.tLdr,'click', this.overlayClicked.bindAsEventListener(this));
    var vpHeight = this.tOvl.getHeight();
    if(vpHeight > 150){
       this.tOvl.setStyle({height: '150px'});
    }
    
    if(Prototype.Browser.IE){
       this.tOvl.setStyle({zIndex: '99', display: 'block'});
       var ieBust = $('IeBust_'+this.dynId);
       var scDim = this.tOvl.getDimensions();
       ieBust.show();
       ieBust.setStyle({ height: scDim.height + 'px', width: scDim.width + 'px', zIndex: '1' });  
    }
   }  
 },
 overlayClicked: function(evt){
    var child = Event.element(evt);
    this.itemSelected(child);
    Event.stop(evt);
 },
 itemSelected: function(child){
    if(!child) return;
    if(child.innerHTML == '')
         return;
    var cInner = child.innerHTML.stripTags();     
    $(this.attachTo).value = cInner;
    var k = cInner.substring(cInner.indexOf('('));
    $('hide_'+this.attachTo.id.toString()).value = k.substring(1,4);
    
    this.hideLookup();
 }
};

gUIManager = Class.create({
  initialize: function(){
     this.sTypeExt = '';
	 if(window.$('roundtrip') != null)
     	Event.observe('roundtrip','click', this.clickWatch.bindAsEventListener(this));
	 if(window.$('oneway') != null)
     	Event.observe('oneway','click', this.clickWatch.bindAsEventListener(this));
  },
  returnUpdate: function(){
  	if ($('no-return').checked == true && $('roundtrip').checked == true)
	  [$('fs_returnsource'),$('fs_returntarget')].invoke('show');
	else
	  [$('fs_returnsource'),$('fs_returntarget')].invoke('hide');
  },
  checkNoRoundTrip: function(){
  	//if ($('no-return').checked == false)
  				fsUIManager.returnUpdate();
  },
  clickWatch: function(evt){
  	var tempel = Event.element(evt).id.toString();
  	if (window.$('oneway') != null) {
  		if (tempel == 'oneway') {
  			[$('date_return'), $('no-return')].invoke('disable');
  			[$('fs_returnsource'), $('fs_returntarget')].invoke('hide');
  			$$('.trip-select').each(function(elem){
  				elem.removeClassName('roundTripSelect');
  			});
  			$$('.connections').each(function(elem){
  				elem.removeClassName('roundTrip');
  			});
  			$$('.destination').each(function(elem){
  				elem.removeClassName('roundTrip');
  			});
  		}
  	}
  	if (window.$('roundtrip') != null) {
  		if (tempel == 'roundtrip') {
  			[$('date_return'), $('no-return')].invoke('enable');
  		}
  	}
  },
  doSearch: function(evt){
     alert('Gotit');
     Event.stop(evt);
  }
});


var showDatepick = function(e){
    dtSetText = Event.element(e);
    var txx = dtSetText.cumulativeOffset();
    var tyy = dtSetText.getDimensions();
    var t = txx.top + tyy.height + 2;
    var l = txx.left;
    
    if(window.$('fltsrch') != null){
		l = txx.left;
	}

    if(window.$('flexdatepicker') != null){
     	$('flexdatepicker').setStyle({left: l + 'px', top: t + 'px'});
    }
    Event.stop(e);
}

var hideDatepick = function(e){
  if( (Event.element(e).id !== 'date_depart') || (Event.element(e).id !== 'date_return') )
    if(window.$('flexdatepicker') != null){
    	$('flexdatepicker').setStyle({left: '-600px', top: '-600px'});
    }
}

function setupApp(){
	fsUIManager = new gUIManager();
	if(window.$('fromFilterDate') != null){
  		Event.observe('fromFilterDate','click',showDatepick, true);
  	}

	if(window.$('toFilterDate') != null){
  		Event.observe('toFilterDate','click',showDatepick, true);
  	}

	$$('.acinput').each(function(tAcInput){
		var tempName = tAcInput.id.toString();
		var oName = tAcInput.getAttribute('name');
		tAcInput.removeAttribute('name');
		myLookers.push(new gLookup({attachTo: tempName, rpcUrl: 'a/', elName: oName}));
	});
	if (window.$('roundtrip') != null) {
		Event.observe('roundtrip', 'click', fsUIManager.returnUpdate, true);
	}
	if (window.$('roundtrip') != null) {
		Event.observe('no-return', 'click', fsUIManager.checkNoRoundTrip, true);
	}
	if (window.$('oneway') != null){
		$('oneway').fire('click');
	}
        if($('fsOptions')){
                Event.observe('fsOptions','submit',formhandler, true);
        }
	populateRefineSearch();
}

Event.observe(window, 'load', setupApp);

var formhandler = function(e){
   g = Event.element(e);
   Event.stop(e);

   var msg = '';

   if($('hide_fs_source').value.length !== 3)
	msg += "Origin City";


   if($('hide_fs_dest').value.length !== 3){
        if(msg.length != 0) msg += "\n";
	msg += "Destination City";
   }

   if($('date_depart').value.length !== 10){
        if(msg.length != 0) msg += "\n";
	msg += "Departure Date";
   }

   if($('roundtrip').checked == true){
     if($('date_return').value.length !== 10){
        if(msg.length != 0) msg += "\n";
	msg += "Return Date";
     }
   }

/*   if($('currency').selectedIndex == 0){
        if(msg.length != 0) msg += "\n";
        msg += "Preferred Currency";
   }*/

   if(msg.length != 0){
	alert("Please check the form\n\n" + msg);
        return;
   }
   doSearch(g);
}

function doSearch(g){
   postdata = g.serialize();
   gReq = new Ajax.Request('/post-search.html',{
	method: "post",
	parameters: postdata,
	onCreate: function() {
		$('bigThrobber').show();
	},
	onComplete: function(xhr) {
		switch(xhr.responseText){
		  case '1':
		    document.location = '/flight-search.html';
		  break;
		  case '2':
		    document.location = '/login.html';
		  break;
		  case '0':
		    $('bigThrobber').hide();
		    setTimeout("showwarn()", 10);
		  break;
		  default:
		    $('bigThrobber').hide();
		    alert(xhr.responseText);
		  break;
		}
	}
    });
}


var timeout;
var repeat;
function showwarn(){
 timeout = 10;
 repeat = true;
 $('blockdiv').show();
 $('windowx').show();
 checkTimer();
}

function checkTimer(){
  if(repeat == false) return;
  if(timeout <= 0)
    doSearchingAgain();
  else{
    $('time').update(timeout);
    timeout--;
    setTimeout("checkTimer()", 1000);
  }
}

function doSearchingAgain(){
 $('windowx').hide();
 $('blockdiv').hide();
 doSearch($('fsOptions'));
}

function cancelretry(){
 repeat = false;
 $('windowx').hide();
 $('blockdiv').hide();
}


var bigThrobberImg = new Image();
bigThrobberImg.src = '/templates/images/bigthrobber3.gif'; // make sure the image is available when we show it



/************************************************************************************************************
*	DHTML modal dialog box
*
*	Created:						August, 26th, 2006
*	@class Purpose of class:		Display a modal dialog box on the screen.
*			
*	Css files used by this script:	modal-message.css
*
*	Demos of this class:			demo-modal-message-1.html
*
* 	Update log:
*
************************************************************************************************************/


/**
* @constructor
*/

DHTML_modalMessage = function()
{
	var url;								// url of modal message
	var htmlOfModalMessage;					// html of modal message
	
	var divs_transparentDiv;				// Transparent div covering page content
	var divs_content;						// Modal message div.
	var iframe;								// Iframe used in ie
	var layoutCss;							// Name of css file;
	var width;								// Width of message box
	var height;								// Height of message box
	
	var existingBodyOverFlowStyle;			// Existing body overflow css
	var dynContentObj;						// Reference to dynamic content object
	var cssClassOfMessageBox;				// Alternative css class of message box - in case you want a different appearance on one of them
	var shadowDivVisible;					// Shadow div visible ? 
	var shadowOffset; 						// X and Y offset of shadow(pixels from content box)
	var MSIE;
		
	this.url = '';							// Default url is blank
	this.htmlOfModalMessage = '';			// Default message is blank
	this.layoutCss = 'modal-message.css';	// Default CSS file
	this.height = 200;						// Default height of modal message
	this.width = 400;						// Default width of modal message
	this.cssClassOfMessageBox = false;		// Default alternative css class for the message box
	this.shadowDivVisible = true;			// Shadow div is visible by default
	this.shadowOffset = 5;					// Default shadow offset.
	this.MSIE = false;
	if(navigator.userAgent.indexOf('MSIE')>=0) this.MSIE = true;
	

}

DHTML_modalMessage.prototype = {
	// {{{ setSource(urlOfSource)
    /**
     *	Set source of the modal dialog box
     * 	
     *
     * @public	
     */		
	setSource : function(urlOfSource)
	{
		this.url = urlOfSource;
		
	}	
	// }}}	
	,
	// {{{ setHtmlContent(newHtmlContent)
    /**
     *	Setting static HTML content for the modal dialog box.
     * 	
     *	@param String newHtmlContent = Static HTML content of box
     *
     * @public	
     */		
	setHtmlContent : function(newHtmlContent)
	{
		this.htmlOfModalMessage = newHtmlContent;
		
	}
	// }}}		
	,
	// {{{ setSize(width,height)
    /**
     *	Set the size of the modal dialog box
     * 	
     *	@param int width = width of box
     *	@param int height = height of box
     *
     * @public	
     */		
	setSize : function(width,height)
	{
	//alert(width+" "+height);
		if(width)this.width = width;
		if(height)this.height = height;		
	}
	// }}}		
	,		
	// {{{ setCssClassMessageBox(newCssClass)
    /**
     *	Assign the message box to a new css class.(in case you wants a different appearance on one of them)
     * 	
     *	@param String newCssClass = Name of new css class (Pass false if you want to change back to default)
     *
     * @public	
     */		
	setCssClassMessageBox : function(newCssClass)
	{
		this.cssClassOfMessageBox = newCssClass;
		if(this.divs_content){
			if(this.cssClassOfMessageBox)
				this.divs_content.className=this.cssClassOfMessageBox;
			else
				this.divs_content.className='modalDialog_contentDiv';	
		}
					
	}
	// }}}		
	,	
	// {{{ setShadowOffset(newShadowOffset)
    /**
     *	Specify the size of shadow
     * 	
     *	@param Int newShadowOffset = Offset of shadow div(in pixels from message box - x and y)
     *
     * @public	
     */		
	setShadowOffset : function(newShadowOffset)
	{
		this.shadowOffset = newShadowOffset
					
	}
	// }}}		
	,	
	// {{{ display()
    /**
     *	Display the modal dialog box
     * 	
     *
     * @public	
     */		
	display : function()
	{
		if(!this.divs_transparentDiv){
			this.__createDivs();
		}	
		
		// Redisplaying divs
		this.divs_transparentDiv.style.display='block';
		this.divs_content.style.display='block';
		this.divs_shadow.style.display='block';		
		if(this.MSIE)this.iframe.style.display='block';	
		this.__resizeDivs();
		
		/* Call the __resizeDivs method twice in case the css file has changed. The first execution of this method may not catch these changes */
		window.refToThisModalBoxObj = this;		
		setTimeout('window.refToThisModalBoxObj.__resizeDivs()',150);
		
		this.__insertContent();	// Calling method which inserts content into the message div.
	}
	// }}}		
	,
	// {{{ ()
    /**
     *	Display the modal dialog box
     * 	
     *
     * @public	
     */		
	setShadowDivVisible : function(visible)
	{
		this.shadowDivVisible = visible;
	}
	// }}}	
	,
	// {{{ close()
    /**
     *	Close the modal dialog box
     * 	
     *
     * @public	
     */		
	close : function()
	{
		//document.documentElement.style.overflow = '';	// Setting the CSS overflow attribute of the <html> tag back to default.
		
		/* Hiding divs */
		this.divs_transparentDiv.style.display='none';
		this.divs_content.style.display='none';
		this.divs_shadow.style.display='none';
		if(this.MSIE)this.iframe.style.display='none';
		
	}	
	// }}}	
	,
	// {{{ __addEvent()
    /**
     *	Add event
     * 	
     *
     * @private	
     */		
	addEvent : function(whichObject,eventType,functionName,suffix)
	{ 
	  if(!suffix)suffix = '';
	  if(whichObject.attachEvent){ 
	    whichObject['e'+eventType+functionName+suffix] = functionName; 
	    whichObject[eventType+functionName+suffix] = function(){whichObject['e'+eventType+functionName+suffix]( window.event );} 
	    whichObject.attachEvent( 'on'+eventType, whichObject[eventType+functionName+suffix] ); 
	  } else 
	    whichObject.addEventListener(eventType,functionName,false); 	    
	} 
	// }}}	
	,
	// {{{ __createDivs()
    /**
     *	Create the divs for the modal dialog box
     * 	
     *
     * @private	
     */		
	__createDivs : function()
	{
		// Creating transparent div
		this.divs_transparentDiv = document.createElement('DIV');
		this.divs_transparentDiv.className='modalDialog_transparentDivs';
		this.divs_transparentDiv.style.left = '0px';
		this.divs_transparentDiv.style.top = '0px';
		
		document.body.appendChild(this.divs_transparentDiv);
		// Creating content div
		this.divs_content = document.createElement('DIV');
		this.divs_content.className = 'modalDialog_contentDiv';
		this.divs_content.id = 'DHTMLSuite_modalBox_contentDiv';
		this.divs_content.style.zIndex = 100000;
		
		if(this.MSIE){
			this.iframe = document.createElement('<IFRAME src="about:blank" frameborder=0>');
			this.iframe.style.zIndex = 90000;
			this.iframe.style.position = 'absolute';
			document.body.appendChild(this.iframe);	
		}
			
		document.body.appendChild(this.divs_content);
		// Creating shadow div
		this.divs_shadow = document.createElement('DIV');
		this.divs_shadow.className = 'modalDialog_contentDiv_shadow';
		this.divs_shadow.style.zIndex = 95000;
		document.body.appendChild(this.divs_shadow);
		window.refToModMessage = this;
		this.addEvent(window,'scroll',function(e){ window.refToModMessage.__repositionTransparentDiv() });
		this.addEvent(window,'resize',function(e){ window.refToModMessage.__repositionTransparentDiv() });
		

	}
	// }}}
	,
	// {{{ __getBrowserSize()
    /**
     *	Get browser size
     * 	
     *
     * @private	
     */		
	__getBrowserSize : function()
	{
    	var bodyWidth = document.documentElement.clientWidth;
    	var bodyHeight = document.documentElement.clientHeight;
    	
		var bodyWidth, bodyHeight; 
		if (self.innerHeight){ // all except Explorer 
		 
		   bodyWidth = self.innerWidth; 
		   bodyHeight = self.innerHeight; 
		}  else if (document.documentElement && document.documentElement.clientHeight) {
		   // Explorer 6 Strict Mode 		 
		   bodyWidth = document.documentElement.clientWidth; 
		   bodyHeight = document.documentElement.clientHeight; 
		} else if (document.body) {// other Explorers 		 
		   bodyWidth = document.body.clientWidth; 
		   bodyHeight = document.body.clientHeight; 
		} 
		return [bodyWidth,bodyHeight];		
		
	}
	// }}}	
	,
	// {{{ __resizeDivs()
    /**
     *	Resize the message divs
     * 	
     *
     * @private	
     */	
    __resizeDivs : function()
    {
    	
    	var topOffset = Math.max(document.body.scrollTop,document.documentElement.scrollTop);

		if(this.cssClassOfMessageBox)
			this.divs_content.className=this.cssClassOfMessageBox;
		else
			this.divs_content.className='modalDialog_contentDiv';	
			    	
    	if(!this.divs_transparentDiv)return;
    	
    	// Preserve scroll position
    	var st = Math.max(document.body.scrollTop,document.documentElement.scrollTop);
    	var sl = Math.max(document.body.scrollLeft,document.documentElement.scrollLeft);
    	
    	window.scrollTo(sl,st);
    	setTimeout('window.scrollTo(' + sl + ',' + st + ');',10);

    	this.__repositionTransparentDiv();
    	

		var brSize = this.__getBrowserSize();
		var bodyWidth = brSize[0];
		var bodyHeight = brSize[1];
    	
    	// Setting width and height of content div
//alert(this.width);
      	this.divs_content.style.width = this.width + 'px';
    	this.divs_content.style.height= this.height + 'px';  	
    	
    	// Creating temporary width variables since the actual width of the content div could be larger than this.width and this.height(i.e. padding and border)
    	var tmpWidth = this.divs_content.offsetWidth;	
    	var tmpHeight = this.divs_content.offsetHeight;
    	
    	
    	// Setting width and height of left transparent div
    	
    	

    	
    	
		
    	this.divs_content.style.left = Math.ceil((bodyWidth - tmpWidth) / 2) + 'px';;
    	this.divs_content.style.top = (Math.ceil((bodyHeight - tmpHeight) / 2) +  topOffset) + 'px';
    	
 		if(this.MSIE){
 			this.iframe.style.left = this.divs_content.style.left;
 			this.iframe.style.top = this.divs_content.style.top;
 			this.iframe.style.width = this.divs_content.style.width;
 			this.iframe.style.height = this.divs_content.style.height;
 		}
 		
    	this.divs_shadow.style.left = (this.divs_content.style.left.replace('px','')/1 + this.shadowOffset) + 'px';
    	this.divs_shadow.style.top = (this.divs_content.style.top.replace('px','')/1 + this.shadowOffset) + 'px';
    	this.divs_shadow.style.height = tmpHeight + 'px';
    	this.divs_shadow.style.width = tmpWidth + 'px';
    	
    	
    	
    	if(!this.shadowDivVisible)this.divs_shadow.style.display='none';	// Hiding shadow if it has been disabled
    	
    	
    }
    // }}}	
    ,
	// {{{ __insertContent()
    /**
     *	Insert content into the content div
     * 	
     *
     * @private	
     */	    
    __repositionTransparentDiv : function()
    {
    	this.divs_transparentDiv.style.top = Math.max(document.body.scrollTop,document.documentElement.scrollTop) + 'px';
    	this.divs_transparentDiv.style.left = Math.max(document.body.scrollLeft,document.documentElement.scrollLeft) + 'px';
		var brSize = this.__getBrowserSize();
		var bodyWidth = brSize[0];
		var bodyHeight = brSize[1];
    	this.divs_transparentDiv.style.width = bodyWidth + 'px';
    	this.divs_transparentDiv.style.height = bodyHeight + 'px';		
		   	
    }
	// }}}	
	,
	// {{{ __insertContent()
    /**
     *	Insert content into the content div
     * 	
     *
     * @private	
     */	
    __insertContent : function()
    {
		if(this.url){	// url specified - load content dynamically
			ajax_loadContent('DHTMLSuite_modalBox_contentDiv',this.url);
		}else{	// no url set, put static content inside the message box
			this.divs_content.innerHTML = this.htmlOfModalMessage;	
		}
    }		
}


var searchResultContent, fareDetailContent, sideMenuFareDetails, reviewDetails, topMessage;
var rtype;
var startingPrice, endingPrice;
var airline_list;
var resultsShown = false;
var summary;
var selectedIntCode = 0;;
var selTripType = 1;
var onwardSelected, returnSelected;
var selectedDomOnCode = 0;
var selectedDomRtCode = 0;
var leftPosition;
var connectionAirport = new Array();
var k = 0;
var searching = 0;
var onwardFare = 0;
var returnFare = 0;

var dbgline = 1; //used in dodebug function

//Template for viewing flight details
var fltComDetails = '<tr><td colspan = "2" class="titlesidepanebf revheading">#{revHeading}</td></tr><tr><td colspan = "2">#{revSubHeading}</td></tr><tr><td width="108" align="center" class="airlinelogotd"><ul><li><div class="airline_logo" style="background-image:url(http://l.reserway.com/#{AirV}.jpg);"></div></li><li>#{fltItnName}</li></ul></td><td align="left"><table width="100%"><tr><td align="left"><span class="reviewDetailsHead">Departs</span>&nbsp;:&nbsp;<span class="reviewDetailsTxt departingtxt">#{StartDt} at #{StartTm} from #{StartAirp}</span></td></tr><tr><td align="left"><span class="reviewDetailsHead">Arrives</span>&nbsp;:&nbsp;&nbsp;<span class="reviewDetailsTxt arrivingtxt">#{EndDt} at #{EndTm} at #{EndAirp}</span></td></tr><tr><td class="reviewDetailsFltdur"><span class="reviewDetailsTxt">Flight No :</span> #{codeNum}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="reviewDetailsTxt">Class :</span> #{ClassList}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="reviewDetailsTxt">Air Craft :</span> #{equip}</td></tr><tr><td class="reviewDetailsFltdur" style="display:none;"><span class="reviewDetailsTxt">Terminal :</span> #{StartTerminal} #{EndTerminal}</td></tr></table></td></tr>';

//Template for Expert flight details
var expFltComDetails = '<tr><td width="108" align="center"><ul><li><div class="airline_logo" style="background-image:url(http://l.reserway.com/#{AirV}.jpg);"></div></li><li> #{codeNum}</li><li>#{fltItnName}</li></ul></td><td align="left" width="80%"><table width="100%" border="1" bordercolor="#c9e7fa"><tr><td align="left"><span class="reviewDetailsTxt">#{StartAirp} <br />#{StartDt} at #{StartTm}</span></td><td align="left"><span class="reviewDetailsTxt">#{EndAirp}<br /> #{EndDt} at #{EndTm}</span></td><td align="left" valign="bottom"><span class="reviewDetailsTxt">Duration #{cfltTm}</span></td></tr><tr><td colspan = "3" class="titlesidepanebf"style="padding: 8px 5px;">#{classViewList}</td></tr></table></td><td width="27%" align="center" valign="top"><ul><li><span class="reviewDetailsHead">Selected Class</span>&nbsp;<br /><br /><span class="reviewDetailsHead" style="border:1px solid #777777;padding: 10px 15px; line-height: 400%;" id="slectedCls_#{clsid}"></span></li></ul></td></tr>';

//Template for Expert flight details modal window view
var expFltComDetails_pop = '<tr><td width="108" align="center"><ul><li> #{codeNum}</li><li>#{fltItnName}</li></ul></td><td align="left" width="80%"><table width="100%" border="1" bordercolor="#c9e7fa"><tr><td align="left"><span class="reviewDetailsTxt">#{StartAirp} <br />#{StartDt} at #{StartTm}</span></td><td align="left"><span class="reviewDetailsTxt">#{EndAirp}<br /> #{EndDt} at #{EndTm}</span></td><td align="left" valign="bottom"><span class="reviewDetailsTxt">Class <br /><span class="reviewDetailsHead" style="padding:12px;" id="slectedCls_#{clsid}_1#{ret}"></span></span></td></tr></table><input type="hidden" id="slectedFltCls_#{clsid}_2#{ret}" value="#{codeNum}" /></td></tr>';

//Template for viewing flight details in left side panel
var fltComSideDetails = '<tr><td width="100%" align="left"><ul><li><div class="airline_logo" style="background-image:url(http://l.reserway.com/#{AirV}.jpg);"></div></li><li style="padding:2px 0 0 11px;"> #{codeNum}</li><li style="padding:2px 0 0 11px;">#{fltItnName}</li></ul></td></tr><tr><td align="left"><li><span class="reviewDetailsHead">Departs</span></li><li><span class="reviewDetailsSideTxt">#{StartDt} at #{StartTm}</span></li><li><span class="reviewDetailsSideTxt">#{StartAirp}</span></li><li><span class="reviewDetailsHead">Arrives</span></li><li><span class="reviewDetailsSideTxt">#{EndDt} at #{EndTm}</span></li><li><span class="reviewDetailsSideTxt">#{EndAirp}</span></li></td></tr>';

//Template for revieiw summary of flight details
var revSummFltTpl = '<table width="100%" border="1" cellspacing="2" cellpadding="5" bordercolor="#C9E7FA"><tr><td colspan="3" class="fcharge"><b>#{sCurrency} #{ssplfullfare}</b> #{sCurrency} #{BaseFareAmt} + #{sCurrency} #{taxAmt} (Taxes and Fees)<a style="cursor:pointer;" onMouseover="showDetailedInfo(\'#{airlineCodeId}\');" onMouseout="hideddrivetip();"><img border="0" src="/templates/images/trans.gif" class="popupicon" /></a></td><td colspan="2">#{refundImg}&nbsp;#{refundinfo} &nbsp;<a href="#" onclick="window.open(\'/farerules/#{SeqKey}.html\',\'popup\',\'width=360,height=450\');return false;"><img src="/templates/images/fare_rules.gif" />&nbsp;Fare Rules</a></td></tr><tr><td width="99" align="center" valign="top"><ul><li><div class="airline_logo" style="background-image:url(http://l.reserway.com/#{AirV}.jpg);"></div></li><li> #{codeNum}</li><li>#{fltItnName}</li></ul></td><td width="117" valign="top"><ul><li>#{fltStartAirp}</li><li>at #{fltStartTm}</li><li>#{StartTerminal}</li></ul></td><td width="137" valign="top"><ul><li>#{fltEndAirp}</li><li>at #{fltEndTm}</li><li>#{EndTerminal}</li></ul></td><td width="134" valign="top"><ul><li>#{stopsCount}</li><li>Duration&nbsp;:&nbsp;#{FltTm} Hrs</li><li></li></ul></td></tr></table>';

//Template for revieiw summary of flight itinerary details
var revSummIntFltTpl = '<table width="100%" border="1" cellspacing="2" cellpadding="5" bordercolor="#C9E7FA"><tr><td colspan="2" class="fcharge"><b>#{sCurrency} #{ssplfullfare}</b> #{sCurrency} #{BaseFareAmt} + #{sCurrency} #{taxAmt} (Taxes and Fees)<a style="cursor:pointer;" onMouseover="showDetailedInfo(\'#{airlineCodeId}\');" onMouseout="hideddrivetip();"><img border="0" src="/templates/images/trans.gif" class="popupicon" /></a></td><td>#{refundImg}&nbsp;#{refundinfo} &nbsp;<a href="#" onclick="window.open(\'/farerules/#{SeqKey}.html\',\'popup\',\'width=360,height=450\');return false;"><img src="/templates/images/fare_rules.gif" />&nbsp;Fare Rules</a></td></tr><tr><td width="100" align="center" valign="center"><ul><li><div class="airline_logo" style="background-image:url(http://l.reserway.com/#{AirV}.jpg);"></div></li><li>#{codeNum}</li><li>#{fltItnName}</li></ul></td><td valign="top"><table  width="100%" border="1" cellspacing="2" cellpadding="5" bordercolor="#C9E7FA"><tr><td><ul><li>#{fltStartAirp}</li><li>#{fltStartDt} at #{fltStartTm}</li><li>#{StartTerminal}</li></ul></td><td><ul><li>#{fltEndAirp}</li><li>#{fltEndDt} at #{fltEndTm}</li><li>#{EndTerminal}</li></ul></td><td><ul><li>#{stopsCount}</li><li>Duration&nbsp;:&nbsp;#{onFltTm} Hrs</li><li></li></ul></td></tr><tr><td><ul>#{fltRetStartAirp}#{retStartDtTm}<li>#{retStartTerminal}</li></ul></td><td><ul>#{fltRetEndAirp}#{retEndDtTm}<li>#{retEndTerminal}</li></ul></td><td><ul><li>#{rstopsCount}</li>#{retFltDur}<li></li></ul></td></tr></table></td><td width="155" align="center"><ul><li><input class="continue-but" type="button" onclick="continueToDetails()"/></li><li>&nbsp;</li><li><b><a style="cursor:pointer;color:#F57E16;" onclick="changeFlight(\'onward\',\'back\')">Change Flight</a></b></li></ul></td></tr></table>';

var reviewDetails='#{CompleteReviewFltDet}';

var currFlight = 0;
var flightsArr = [];
var listTpl = false;

/* needed for the new option for continue loading more results */
var cGet = {o: true, r: true};

function g1(x){
  if(selTripType == 2){
    cGet.r = x.checked;
    if(cGet.r == true)
        getReturnData();
  }else{
    cGet.o = x.checked;
    if(cGet.o == true)
        getOnwardData();
  }
  if(!x.checked)
    x.setAttribute('title','Load results by polling');
  else
    x.setAttribute('title','Stop loading results');
}

var retContinue = 0;
var onwContinue = 0;

Ajax.Responders.register({
  onCreate: function() {
  	if ($('minithrobber')) {
		$('minithrobber').show();
	}
    Ajax.activeRequestCount++;
  },
  onComplete: function() {
    Ajax.activeRequestCount--;
    if (Ajax.activeRequestCount == 0)
		if ($('minithrobber')) {
			$('minithrobber').hide();
		}
  }
});


function getOnwardData(){
  if(cGet.o == false) return;
  var ajxreq = new Ajax.Request('/search.html',{
    method: 'post', parameters: {"o":onwContinue}
    });
}

function getReturnData(){
  if(cGet.r == false) return;
  var ajxreq = new Ajax.Request('/search.html',{
    method: 'post', parameters: {"r":retContinue}
    });
}

function drawToparea(){
	var tm = $('topMessageArea');
	tm.update('');
	var topTpl = new Template(topMessage);
	var idx = summary.length;
	tm.insert({bottom:topTpl.evaluate(summary)});
}

//Updating top message area
function updateHeaders(master){
	//In the case of domestic search, if the search contains return flights results and when the return flight tab is selected the 'selTripType' variable becomes 2
    if(selTripType == 2){
		//For changing content in 'startAirport' div to return start air port
        if($("startAirport") !== null){
            $('startAirport').update(master.AirPorts[summary.Connecting[1]].split(',')[0]);
        }
		//For changing content in 'endAirport' div to return end air port
         if($("endAirport") !== null){
             $('endAirport').update(master.AirPorts[summary.Connecting[0]].split(',')[0]);
         }
		//For changing content in 'startDate' div to return start Date
		 if($("startDate") !== null){
 	    	$("startDate").update(summary.Dates[1]);
 		}
    }
    else{
		//For changing content in 'startAirport' div to onward start air port
   		if($("startAirport") !== null){
            $('startAirport').update(master.AirPorts[summary.Connecting[0]].split(',')[0]);
        }
		//For changing content in 'endAirport' div to onward end air port
        if($("endAirport") !== null){
             $('endAirport').update(master.AirPorts[summary.Connecting[1]].split(',')[0]);
        }
		//For changing content in 'startDate' div to onward start Date
		if($("startDate") !== null){
 	    	$("startDate").update(summary.Dates[0]);
 		}
    }

	//Calling function to set the sliders for filtering to its position
	setSliderToHome();
}

/*-----------------------------------------------------------*/
/*----------------------Filter Functions---------------------*/
/*-----------------------------------------------------------*/

/*Callback  Function to sort by price*/
function callbackFareFunc(a,b){
	return a.fare - b.fare;
}

/*Callback Function to sort by departure*/
function callbackDepartureFunc(a,b){
	if(a.depart == b.depart)
	    return 0;
	return (a.depart < b.depart) ? -1 : 1;
}

/*Callback Function to sort by arrival*/
function callbackFuncArrival(a,b){
    if(a.arrive == b.arrive)
	    return 0;
	return (a.arrive < b.arrive) ? -1 : 1;

}

/*Callback Function to sort by duration*/
function callbackFuncDuration(a,b){
	if(a.duration == b.duration){
		return 0;
	}
	return (a.duration < b.duration) ? -1 : 1;
}

/*Callback Function to sort by stops*/
function callbackFuncStops(a,b){
	if(a.stops == b.stops){
		return 0;
	}
	return (a.stops < b.stops) ? -1 : 1;
}
//Function for preparing data necessary for based on selected filter
function prepareSortingData(filter,fltArr){
	var filterArr = new Array();
	var fareContent = {};
	var fltcount = fltArr.length;
	for(i = 0; i < fltcount; i++){
		switch(filter){
			case 0:
				fareContent= {'id': fltArr[i].id, 'fare':$(fltArr[i].id+'_fare').innerHTML};
				break;
			case 1:
				fareContent= {'id': fltArr[i].id, 'depart':toTimestamp($(fltArr[i].id+'_depart_date').innerHTML+ ' '+ to24Hrs($(fltArr[i].id+'_depart_time').innerHTML))};
				break;
			case 2:
				fareContent= {'id': fltArr[i].id, 'arrive':toTimestamp($(fltArr[i].id+'_arrive_date').innerHTML+ ' '+ to24Hrs($(fltArr[i].id+'_arrive_time').innerHTML))};
				break;
			case 3:
				fareContent= {'id': fltArr[i].id, 'duration':hoursToMinutes($(fltArr[i].id+'_dur').innerHTML)};
				break;
			case 4:
				fareContent= {'id': fltArr[i].id, 'stops':$(fltArr[i].id+'_stops').innerHTML.sub('Stops ', '')=='Non Stop'?0:$(fltArr[i].id+'_stops').innerHTML.sub('Stops ', '')};
				break;

		}
		filterArr[i] = fareContent;
	}

	return filterArr;
}
//function for sorting
function getSorted(filter){
	var fareArr = new Array();
	//var fareContent = {};
	var fltArr = $$('.fltdatacss_'+selTripType);
	var fltcount = fltArr.length;

	/* case 0: For sort based on fare
	 * case 1: For sort based on departure time
	 * case 2: For sort based on arrival time
	 * case3: For sort based on duration of the flight
	 * case 4: For sort based on number of stops
	 * */

	fareArr =  prepareSortingData(filter,fltArr);
	//calling callback function to perform sorting based on the selected filter
	switch(filter){
		case 0:
			fareArr.sort(callbackFareFunc);
			break;
		case 1:
			fareArr.sort(callbackDepartureFunc);
			break;
		case 2:
			fareArr.sort(callbackFuncArrival);
			break;
		case 3:
			fareArr.sort(callbackFuncDuration);
			break;
		case 4:
			fareArr.sort(callbackFuncStops);
			break;
	}

	for(i = 0; i < fltcount; i++){
		if(selTripType == 1){
			$('searchContent').insert({bottom:$(fareArr[i].id).remove()});
		}
		else{
			$('searchContentReturn').insert({bottom:$(fareArr[i].id).remove()});
		}
	}

	if(filter == 0){
		$("startPrice").update(fareArr[0].fare);
		$("endPrice").update(fareArr[fltcount -1].fare);
		startingPrice = fareArr[0].fare;
		endingPrice = fareArr[fltcount -1].fare;
		showPriceTrack(startingPrice,endingPrice);
	}
}


//slider filter function based on depart time
function slidFilterDepartTime(){
	showArrivalTrack();
	showPriceTrack(startingPrice, endingPrice);
	var fareArr = new Array();
	if(($('startTime').innerHTML * 1) == 0 && ($('endTime').innerHTML * 1) == 24){
		$$('.fltdatacss_'+selTripType).invoke('show');
	}
	else{
		var fareContent = {};
		var fltArr = $$('.fltdatacss_'+selTripType);

		var fltDate = summary.Dates[0];
		if(selTripType == 2){
			fltDate = summary.Dates[1];
		}

		var fltcount = fltArr.length;
		fareArr =  prepareSortingData(1,fltArr);
		fltArr.invoke('hide');
		for(var i=0; i < fltcount; i++){
				if(((fareArr[i].depart * 1) >= toTimestamp(fltDate+' '+$('startTime').innerHTML+':'+'00')) && ((fareArr[i].depart * 1) <= toTimestamp(fltDate+' '+(($('endTime').innerHTML * 1) - 1)+':'+'59'))){
				$(fareArr[i].id).show();
			}
		}
		fareArr.sort(callbackDepartureFunc);
		for(i = 0; i < fltcount; i++){
			if(selTripType == 1){
				$('searchContent').insert({bottom:$(fareArr[i].id).remove()});
			}
			else{
				$('searchContentReturn').insert({bottom:$(fareArr[i].id).remove()});
			}
		}
	}
	updateNarrowResults();
}

//slider filter function based on arrive time
function slidFilterArriveTime(){
	showDepTrack();
	showPriceTrack(startingPrice, endingPrice);
	if(($('arrStartTime').innerHTML * 1) == 0 && ($('arrEndTime').innerHTML * 1) == 24){
		$$('.fltdatacss_'+selTripType).invoke('show');
	}
	else{
		var fareArr = new Array();
		var fareContent = {};
		var fltArr = $$('.fltdatacss_'+selTripType);
		var fltDate = summary.Dates[0];
		if(selTripType == 2){
			fltDate = summary.Dates[1];
		}
		var fltcount = fltArr.length;
		fareArr =  prepareSortingData(2,fltArr);
		fltArr.invoke('hide');

	var aa;
		for(var i=0; i < fltcount; i++){
			if(((fareArr[i].arrive * 1) >= toTimestamp(fltDate+' '+$('arrStartTime').innerHTML+':'+'00')) && ((fareArr[i].arrive * 1) <= toTimestamp(fltDate+' '+(($('arrEndTime').innerHTML * 1) - 1)+':'+'59'))){
				$(fareArr[i].id).show();
			}
		}
		fareArr.sort(callbackFuncArrival);
		for(i = 0; i < fltcount; i++){
			if(selTripType == 1){
				$('searchContent').insert({bottom:$(fareArr[i].id).remove()});
			}
			else{
				$('searchContentReturn').insert({bottom:$(fareArr[i].id).remove()});
			}
		}
	}
	updateNarrowResults();
}

//slider filter function based on fare
function slidFilterPrice(){
	showDepTrack();
	showArrivalTrack();
	var fareArr = new Array();
	var fareContent = {};
	var fltArr = $$('.fltdatacss_'+selTripType);
	var fltcount = fltArr.length;
	for(i = 0; i < fltcount; i++){
				fareContent= {'id': fltArr[i].id, 'fare':$(fltArr[i].id+'_fare').innerHTML};
				fareArr[i] = fareContent;
	}
	fltArr.invoke('hide');
	for(var i=0; i < fltcount; i++){
		if(((fareArr[i].fare * 1) >= ($('startPrice').innerHTML * 1)) && ((fareArr[i].fare * 1) <= ($('endPrice').innerHTML * 1))){
			$(fareArr[i].id).show();
		}
	}
	updateNarrowResults();
}

//convert 12 Hr to 24 Hr
function to24Hrs(fltTime){
	var tmarr;
	var depTime;
	tmarr = fltTime.split(' ');
	if(tmarr[1] == 'pm'){
		tmarr = tmarr[0].split(':');
		if(tmarr[0] != 12){
			depTime = ((tmarr[0] * 1) + 10 +2)+':';
			depTime += tmarr[1];
		}
		else{
			depTime = tmarr[0]+':'+tmarr[1];
		}
		}
		else{
			depTime = '0'+tmarr[0];
			tmarr = tmarr[0].split(':')
			if(tmarr[0] == 12){
				depTime = '00'+tmarr[1];
			}
	}
	return depTime;
}
//convert time to timestamp
function toTimestamp(strDate){
 var datum = Date.parse(strDate);
 return datum/1000;
}

//convert Hours To Minutes
function hoursToMinutes(hrs) {
    var time = hrs.split(":");
    return (time[0] * 60) + (time[1]*1);
}
/*-----------------------------------------------------------*/
/*-----------------------------------------------------------*/
/*-----------------------------------------------------------*/

var filterObject = {};
var fareObject = {};
var flight_nos = 0;
//Function used for preparing each itinerary in the flight serch result
function makeFlightData(tdata,master){
	var selFltData;

	if(selTripType == 2){
		//selFltData = Object.clone(tripdata_return[currFlight]);
	}
	else{
		selFltData = Object.clone(tdata);
	}
	var itinsegCount = selFltData.CompleteFltDet.length;
	if(selFltData.SeqKey.indexOf('R') > -1){
		selFltData.tripTypeTxt = 2;
	}
	var fltDatListTpl = new Template(fltComDetails);
	var fltDatList = '<table width="100%" border="1" cellspacing="2" cellpadding="5" bordercolor="#d38d8d" style="font-size: 11px;"><tr><td colspan="2" valign="middle" style="padding: 0px;" id="connHead_'+selFltData.SeqKey+'"></td></tr>';
	for(var i = 0; i < itinsegCount; i++){
		if(selFltData.CompleteFltDet[i].revHeading == 2){
			selFltData.CompleteFltDet[i].revHeading = '<span class="reviewsubheading2">Change flight at '+ master.AirPorts[selFltData.CompleteFltDet[i].StartAirp] + '</span>';
		}
		selFltData.CompleteFltDet[i].revSubHeading = '<span class="reviewsubheading1">Flight From '+ master.AirPorts[selFltData.CompleteFltDet[i].StartAirp] + ' to ' + master.AirPorts[selFltData.CompleteFltDet[i].EndAirp]+'</span>';
		selFltData.CompleteFltDet[i].StartAirp =  master.AirPorts[selFltData.CompleteFltDet[i].StartAirp];
		selFltData.CompleteFltDet[i].EndAirp =  master.AirPorts[selFltData.CompleteFltDet[i].EndAirp];
		selFltData.CompleteFltDet[i].equip = master.Equipments[selFltData.CompleteFltDet[i].equip];
		fltDatList += fltDatListTpl.evaluate(selFltData.CompleteFltDet[i]);
	}
	fltDatList += '</table>';
	selFltData.CompleteFltDet = fltDatList;
	var depStFlt = master.AirPorts[selFltData.fltStartAirp].split(',');
	selFltData.fltStartAirp = depStFlt[0];// master.AirPorts[selFltData.fltStartAirp];
	var depEndFlt = master.AirPorts[selFltData.fltEndAirp].split(',');
	selFltData.fltEndAirp =  depEndFlt[0];//master.AirPorts[selFltData.fltEndAirp];
	if (summary.triptype == 21) {
		var retStFlt = master.AirPorts[selFltData.fltRetStartAirp].split(',');
		selFltData.fltRetStartAirp = retStFlt[0];// master.AirPorts[selFltData.fltRetStartAirp];
		var retEndFlt = master.AirPorts[selFltData.fltRetEndAirp].split(',');
		selFltData.fltRetEndAirp = retEndFlt[0];// master.AirPorts[selFltData.fltRetEndAirp];
	}
	selFltData.fltItnName =  master.AirLines[selFltData.fltItnName];
	selFltData.tripType = summary.triptype;
	filterObject[flight_nos] = {
				Fare: selFltData.ssplfullfare,
				Depart: selFltData.StartTS,
				Arrive: selFltData.EndTS,
				Duration: selFltData.onFltTm,
				Stops: selFltData.stopsCount,
				ElementId: selFltData.SeqKey
	};

	fareObject[selFltData.SeqKey] = {
				SeqKey: selFltData.SeqKey,
				ADT_Count: selFltData.ADT_Count,
				ADT_Fare: selFltData.ADT_Fare,
				ADT_TotalFare: selFltData.ADT_Total_Fare,
				CNN_Count: selFltData.CNN_Count,
				CNN_Fare: selFltData.CNN_Fare,
				CNN_TotalFare: selFltData.CNN_Total_Fare,
				INF_Count: selFltData.INF_Count,
				INF_Fare: selFltData.INF_Fare,
				INF_TotalFare: selFltData.INF_Total_Fare,
				Currency:selFltData.sCurrency,
				TotalFare: selFltData.Total_Fare
	};
	flight_nos++;
	return selFltData;
}

function renderSingleFlight(tripdata,master,trip){
  var tc = $('searchContent');
  var delayNext = true;
  var showMe = '';
  var fltDetails;

//Should execute if expert mode is on
   if(summary.expert){
       searchResultContent = $('expSearchResultContentTpl').innerHTML;
   }
  if(!listTpl){
     listTpl = new Template(searchResultContent);
  }

  var tripdataCount = tripdata.length;
  for(var t = 0; t < tripdataCount; t++){
  	flightsArr[t] = makeFlightData(tripdata[t],master);
	tc.insert({bottom: listTpl.evaluate(flightsArr[t]) });
	currFlight++;
  }
	if(trip == 'r'){
		var fltReturnArr = $$('.fltdatacss_2');
		var fltReturncount = fltReturnArr.length;
  		for(i = 0; i < fltReturncount; i++){
			$('searchContentReturn').insert({bottom:$(fltReturnArr[i].id).remove()});
		}
	}
  //Should execute if expert mode is not on
  /* if(!summary.expert){
  showMe = filterFlight(flightsArr[currFlight]);
  }
  else{
  showme = true;
  }

  if(showMe === false){
	flightsArr[currFlight].styleDisp = 'noShow';
   	delayNext = false;
   }else{
   flightsArr[currFlight].styleDisp = '';
   }*/
   //flightsArr[currFlight].farowid = currFlight;
 //  tc.insert({bottom: listTpl.evaluate(flightsArr[currFlight]) });

  len = flightsArr.length - 1;


updateNarrowResults();

}

var summaryData = new Array();
function drawResults(tripdata,master,trip){
    var l = tripdata.length;
    if(resultsShown === false){
           if(selTripType == 2){
             // l = tripdata_return.length;
   	   }
   }
  if(l > 0){
      var tc = $('searchContent');
      renderSingleFlight(tripdata,master,trip);
  }else{
	   if($('bottomcontainer')) $('bottomcontainer').update("No Data Found!..");
  }

  	summaryData["ostartDate"] = summary.Dates[0];
	$('date_depart').value = summary.Dates[0];
	summaryData["ostartAirport"] = 	master.AirPorts[summary.Connecting[0]];
	$('fs_source').value = master.AirPorts[summary.Connecting[0]].split(',')[0];
	if (window.$('hide_fs_source') != null) {
		$('hide_fs_source').value = summary.Connecting[0];
	}
	summaryData["oendAirport"] = master.AirPorts[summary.Connecting[1]];
	$('fs_dest').value = master.AirPorts[summary.Connecting[1]].split(',')[0];
	if (window.$('hide_fs_dest') != null) {
		$('hide_fs_dest').value = summary.Connecting[1];
	}
  	summaryData["rstartDate"] = summary.Dates[1];
	summaryData["rstartAirport"] = 	master.AirPorts[summary.Connecting[1]];
	summaryData["rendAirport"] = master.AirPorts[summary.Connecting[0]];

  	showConnectingAirports(master,trip);

}

function populateRefineSearch(){
	if (window.$('fltSearch') != null) {
		if($('fs_source').name == ''){
			$('fs_source').name = 'fs_source';
		}
		
		if($('fs_dest').name == ''){
			$('fs_dest').name = 'fs_dest';
		}
		if($('fltSearch').value != ''){
			var DetailsJSON = $('fltSearch').value.evalJSON(true);

			$('fs_source').value = DetailsJSON.fs_source;
			$('fs_dest').value = DetailsJSON.fs_dest;
			if(window.$('hide_fs_source') != null){
				$('hide_fs_source').value = DetailsJSON.fs['source'];
			}
			if(window.$('hide_fs_dest') != null){
				$('hide_fs_dest').value = DetailsJSON.fs['target'];
			}
			if(window.$('hide_fs_returnsource') != null){
				$('hide_fs_returnsource').value = DetailsJSON.fs['returnSource'];
			}
			if(window.$('hide_fs_returntarget') != null){
				$('hide_fs_returntarget').value = DetailsJSON.fs['returnTarget'];
			}
			$('date_depart').value = DetailsJSON.fs['dtdepart'];
			if(DetailsJSON.fs['trip'] == 2){
				if (window.$('returnchk') != null) {
					$('returnchk').checked = true;
					$('date_return_dt').show();
					$('date_return').disabled = false;
					$('date_return').value = DetailsJSON.fs['dtreturn'];
					$('fltsrch').value = 2;
				}else{
					$('date_return').value = DetailsJSON.fs['dtreturn'];
					$('date_return').disabled = false;
					$('roundtrip').checked = true;
				}
			}
			else{
				$('oneway').checked = true;
			}
				$('fsadults').options[(DetailsJSON.fs['adults'] - 1)].selected = true;
				$('fschild').options[(DetailsJSON.fs['child'])].selected = true;
				$('fsinfants').options[(DetailsJSON.fs['infant'])].selected = true;	
				for(i=0;i<$('fsclass').options.length;i++){
					if($('fsclass').options[i].value == DetailsJSON.fs['class']){
						$('fsclass').options[i].selected = true;
					}
				}
		}
	}

}

//function for preparing prefered airline list when not in expert mode

function compareFare(a,b){
	return a.LowFare - b.LowFare;
}

var airlineLstArr = [];
function showAirlineList(master_type, trip){
    var l = master_type.LowFares.length;
    for (var x = 0; x < l; x++) {
        var tx = checkIfExist(master_type.LowFares[x].av,'airlines',trip);
		if (tx == -1) {
			airlineLstArr[(airlineLstArr.length)] = {
				AirlineCode: master_type.LowFares[x].av,
				AirlineName: master_type.AirLines[master_type.LowFares[x].av],
				LowFare: parseFloat(master_type.LowFares[x].fare),
				tripType: trip
			};
		}else{
		    if(airlineLstArr[tx].LowFare > parseFloat(master_type.LowFares[x].fare))
		        airlineLstArr[tx].LowFare = parseFloat(master_type.LowFares[x].fare);
		}
    }

    airlineLstArr.sort(compareFare);
	var lowfares = '<table border="0" width="100%"><tr class="trheads"><td width="72%" align="left"><h2>Air line</h2></td><td align="center"><h2>Price</h2></td></tr>';
    var lowFareTpl = new Template('<tr class="sep #{AirlineCode}tr"><td valign="middle"><input type="checkbox" checked="checked" class="airlinelistcss" onclick = "showNarrowResult(this.value);" value="#{AirlineCode}" id="#{AirlineCode}_#{tripType}" name="airlineList[]"/>&nbsp;<a style="cursor:pointer;" onclick="viewSelectedAirline(\'#{AirlineCode}\');" title="Click to view only #{AirlineName}">#{AirlineName}</a></td><td align="right">#{LowFare}</td></tr>');

    var y = airlineLstArr.length;
	for(var j = 0; j < y; j++){
		if(airlineLstArr[j].tripType == trip){
        	lowfares += lowFareTpl.evaluate(airlineLstArr[j]);
        }
    }
    lowfares += '</table>';

    if(trip == 'r'){
    	$("r_narrowContent").update(lowfares);
	}
	if(trip == 'o'){
	 	$("narrowContent").update(lowfares);
	}
}

//function for preparing Connecting Citieslist
var connAirPortArr = [];
function showConnectingAirports(master,trip){
	var connAirports = master.AirPortList;
	var connAirNames = Object.clone(master.AirPorts);

	var l = connAirports.length;

	for(var i = 0;i < l ; i++) {
		if(connAirports[i] != summary.Connecting[0] && connAirports[i] != summary.Connecting[1]){
			var conport = connAirNames[connAirports[i]];
		  	conport = connAirNames[connAirports[i]].split(',')[0];
			if (checkIfExist(connAirports[i], 'airports', trip) == -1) {
				connAirPortArr[(connAirPortArr.length)] = {
					AirPortCode: connAirports[i],
					AirPortName: conport,
					tripType: trip
				};
				k++;
			}
		}
	}
	var conChkBoxList = '<table width="100%" cellspacing="0" cellpadding="1" border="0">';
	var conTpl = new Template('<tr class="trheads"><td class="sepConnect" style="padding:2px 0;" width="100%" align="left"><input type="checkbox" class="airPortlistcss" value="#{AirPortCode}" id="#{AirPortCode}_#{tripType}" onclick="showPortResult(this);" checked="checked"/><a title="Click to view only #{AirPortName}" onclick="viewSelectedAirPort(\'#{AirPortCode}\');" style="cursor: pointer;">#{AirPortName}</a></td></tr>');
	var k = connAirPortArr.length;
	for(var j = 0; j < k; j++){
		if(connAirPortArr[j].tripType == trip){
         	conChkBoxList += conTpl.evaluate(connAirPortArr[j]);
        }
    }
	conChkBoxList += '</table>';

	if(trip == 'r'){
		$("r_connAirports").update(conChkBoxList);
	}
	if(trip == 'o'){
		$("connAirports").update(conChkBoxList);
	}
}

function checkIfExist(av,chktype,trip){
    var rv = -1;
	if (chktype == 'airlines') {
	    var y = airlineLstArr.length;
		for (var j = 0; j < y; j++) {
			if ((airlineLstArr[j].AirlineCode == av) && (airlineLstArr[j].tripType == trip)) {
				rv = j;
			}
		}
	}
	else{
	   var k = connAirPortArr.length;
		for (var j = 0; j < k; j++) {
			if ((connAirPortArr[j].AirPortCode == av) && (connAirPortArr[j].tripType == trip)) {
				rv = j;
			}
		}
	}
	return rv;
}

//function for preparing prefered airline list when in expert mode
function showExpAirlineList(master_type){

    var l = master_type.AirLines.length;
    var lowfares = '<table border="0" width="100%"><tr class="trheads"><td width="72%" align="left"><h2>Air line</h2></td></tr>';
    var lowFareTpl = new Template('<tr class="sep #{AirlineCode}tr"><td valign="middle"><input type="checkbox" checked="checked" class="airlinelistcss" onclick = "showNarrowResult(this.value);" value="#{AirlineCode}" id="#{AirlineCode}" name="airlineList[]"/>&nbsp;<a style="cursor:pointer;" onclick="viewSelectedAirline(\'#{AirlineCode}\');" title="Click to view only #{AirlineName}">#{AirlineName}</a></td></tr>');
    for (key in master_type.AirLines){
    	 var fo = {AirlineCode: key, AirlineName: master_type.AirLines[key]};
        lowfares += lowFareTpl.evaluate(fo);
    }
    lowfares += '</table>';
    $("narrowContent").update(lowfares);
}

//function for showing search results
function setupResultsDisplay(tripdata,master,trip){

//---------Checking if expert mode is on----------
if(summary.expert == '1')
    summary.expert = true;
else
    summary.expert = false;
//------------------------------------------------

searching = 0;
$('pageHeader').show();
$('footerDiv').show();
        ['searchResultContent', 'fareDetailContent', 'sideMenuFareDetails', 'reviewDetails', 'topMessage'].each(function(x){
		eval(x + ' = $(\'' + x + 'Tpl\').innerHTML;');
		});
	fareDetailContent = unescape(fareDetailContent).replace(/\+/g, ' ');
	sideMenuFareDetails = unescape(sideMenuFareDetails).replace(/\+/g, ' ');
	topMessage = unescape(topMessage).replace(/\+/g, ' ');
    rtype = 'onward';
	startingPrice = master.FareRange[0];
	endingPrice = master.FareRange[1];


	$("searchResultsDiv").show();
	$("advertisements").hide();
	//$('main').show();
	$$('.footer').invoke('show');

	if(summary.triptype == 11){
            $('returnDiv').show();
        }

        if(summary.triptype == 21){
            $('onwardFlightsLink').update('Round Trip');
        }

	drawResults(tripdata,master,trip);

	getSorted(0);
	$("price").setAttribute('checked', 'true');
	updateHeaders(master);


	showArrivalTrack();
	showDepTrack();
	if(summary.expert){
	    $('priceli').hide();
	    $('currli').hide();
	    $('priceSlider').hide();
	    $('rateTrack').hide();
	    $('refinedsearchLi').hide();
	    showExpAirlineList(master);
	}
	else{
		showAirlineList(master,trip);
	}
	
	populateRefineSearch();
}


//function to switch between tabs
function switchTab(keyvalue,elem){
	switch(keyvalue){
		case 'onward':
			selTripType = 1;
			$('searchContentReturn').hide();
			$('searchContent').show();
			$("startDate").update(summaryData["ostartDate"]);
			$('startAirport').update(summaryData["ostartAirport"]);
			$('endAirport').update(summaryData["oendAirport"]);
			$("narrowContent").show();
			$("r_narrowContent").hide();
			$("connAirports").show();
			$("r_connAirports").hide();
			$('getmore').checked = cGet.o;
			break;
		case 'return':
			selTripType = 2;
			$('searchContent').hide();
			$('searchContentReturn').show();
			$("startDate").update(summaryData["rstartDate"]);
			$('startAirport').update(summaryData["rstartAirport"]);
			$('endAirport').update(summaryData["rendAirport"]);
			$("narrowContent").hide();
			$("r_narrowContent").show();
			$("connAirports").hide();
			$("r_connAirports").show();
			$('getmore').checked = cGet.r;
			break;
	}

	showAllListings();
	showAllPortListings();
	showArrivalTrack();
  	showDepTrack();
  	getSorted(0);
  	showPriceTrack(startingPrice, endingPrice);
	$$('.fltdatacss_'+selTripType).invoke('show');
	updateNarrowResults();
	var tabButtonContainers = $$('.itab-title .tabinner');
	var tabCount = tabButtonContainers.length;
	for(i = 0; i < tabCount; i++){
		tabButtonContainers[i].removeClassName('itab-active');
		tabButtonContainers[i].addClassName('itab-inactive');
	}
	elem.parentNode.removeClassName('itab-inactive');
	elem.parentNode.addClassName('itab-active');

	elem.blur();
	return false;
}

//function to show/hide elements for review details page
function showElements(){
	['sideFilters','flightData','track1','arrTrack','topMessageArea','rateTrack'].each(function(x){
		try{
			$(x).hide();
		}catch(e){}
	});

	['summaryDetailHead', 'summaryHead', 'summaryReviewInwardSumm', 'summaryReviewInward',  'summaryReviewFareDetailsInward','reviewData', 'continueButton', 'sideSummary'].each(function(y){
	try{
		$(y).show();
	}catch(e){}
	});
}

//function to update div's in review details page
function updateElementData(CodeId){
	$('reviewSummTop_fare_'+selTripType).update($(CodeId + '_data_top_fare').innerHTML);
	$('reviewSummTop_rf_'+selTripType).update($(CodeId + '_data_top_rf').innerHTML);
	$('reviewSummFltLogo_'+selTripType).update($(CodeId + '_flight_logo').innerHTML);
	$('reviewSummFltData_'+selTripType).update($(CodeId + '_flight_data').innerHTML);

	$('SummTop_fare_'+selTripType).update($(CodeId + '_data_top_fare').innerHTML);
	$('SummTop_rf_'+selTripType).update($(CodeId + '_data_top_rf').innerHTML);
	$('SummFltLogo_'+selTripType).update($(CodeId + '_flight_logo').innerHTML);
	$('SummFltData_'+selTripType).update($(CodeId + '_flight_data').innerHTML);
}

//function to prepare Fare View details for side view in review details page
function sideFareView(CodeId){
	var sideFare = '<table width="190" cellspacing="0" cellpadding="3" border="0">';
	sideFare += '<tr><td width="10%" class="pdborder bfsptitle">Adult</td>';
	sideFare += '<td width="55%" align="right" class="pdborder">' + fareObject[CodeId].ADT_Fare + ' x '+ fareObject[CodeId].ADT_Count +'</td>';
	sideFare += '<td width="35%" align="right" class="pdborder">' + fareObject[CodeId].ADT_TotalFare + '</td></tr>';
	if(fareObject[CodeId].CNN_Count > 0){
	sideFare += '<tr><td width="10%" class="pdborder bfsptitle">Child</td>';
	sideFare += '<td width="55%" align="right" class="pdborder">' + fareObject[CodeId].CNN_Fare + ' x '+ fareObject[CodeId].CNN_Count +'</td>';
	sideFare += '<td width="35%" align="right" class="pdborder">' + fareObject[CodeId].CNN_TotalFare + '</td></tr>';
	}
	if(fareObject[CodeId].INF_Count > 0){
	sideFare += '<tr><td width="10%" class="pdborder bfsptitle">Infant</td>';
	sideFare += '<td width="55%" align="right" class="pdborder">' + fareObject[CodeId].INF_Fare + ' x '+ fareObject[CodeId].INF_Count +'</td>';
	sideFare += '<td width="35%" align="right" class="pdborder">' + fareObject[CodeId].INF_TotalFare + '</td></tr>';
	}
	sideFare += '<tr><td width="10%" class="pdborder bfsptitle"><b>Total</b></td>';
	sideFare += '<td width="55%" align="right" class="pdborder"><b>'+fareObject[CodeId].Currency+'</b></td>';
	sideFare += '<td width="35%" align="right" class="pdborder"><b>'+fareObject[CodeId].TotalFare+'</b></td></tr>';
	sideFare += '</table>';

	return 	sideFare;
}

//function to headings for side menu in review details page
function getRevheadData(element){
	var revheadData = new Array();
	var revheadingsTxt = element.childElements();
	if(revheadingsTxt[0].hasClassName('reviewsubheading3')){
		className = 'sidesubheading3';
	}
	if(revheadingsTxt[0].hasClassName('reviewsubheading2')){
		className = 'sidesubheading2';
	}
	revheadData[0] = className;
	revheadData[1] = revheadingsTxt[0].innerHTML;
	return revheadData
}

//function to process domestic onward/international flight details for review details page
function process_onword(CodeId){
	var airlines_logos,revheadings,departs,arrives,side,itinhead;
	var deparr,arrivearr,revheadingsArr;
	$('summaryReviewInward').update($('con_'+CodeId).innerHTML);
	$('summaryReviewFareDetailsInward').update($('farePop_'+CodeId).innerHTML);
	itinhead = $$('li#summaryReviewInward .connbgcolor');
	if (itinhead.length > 0) {
		itinhead[0].update('');
	}
	airlines_logos = $$('li#summaryReviewInward .airlinelogotd');
	revheadings = $$('li#summaryReviewInward .revheading');
	departs = $$('li#summaryReviewInward .departingtxt');
	arrives = $$('li#summaryReviewInward .arrivingtxt');
	side = '<table width="100%" border="1" cellspacing="2" cellpadding="5" bordercolor="#C9E7FA">';
	for(var m = 0;m < departs.length;m++){
		deparr = departs[m].innerHTML.split('from');
		arrivearr = arrives[m].innerHTML.split('at');
		revheadingsArr = getRevheadData(revheadings[m]);
		side += '<tr><td class="titlesidepanebf '+revheadingsArr[0]+'">'+revheadingsArr[1]+'</td></tr><tr><td width="100%" align="left">'+airlines_logos[m].innerHTML+'</td></tr><tr><td align="left"><ul><li><span class="reviewDetailsHead">Departs</span></li><li><span class="reviewDetailsSideTxt">'+deparr[0]+'</span></li><li><span class="reviewDetailsSideTxt">'+deparr[1]+'</span></li><li><span class="reviewDetailsHead">Arrives</span></li><li><span class="reviewDetailsSideTxt">'+arrivearr[0]+' at '+arrivearr[1]+'</span></li><li><span class="reviewDetailsSideTxt">'+arrivearr[2]+'</span></li></ul></td></tr>'
	}
	side += '</table>';
	$('sideRevOnwardList').update(side);
	onwardSelected = 1;
	onwardFare = ($(CodeId + '_fare').innerHTML * 1)
	$('onwardSelected').show();
	var side_onward_fare = sideFareView(CodeId);
	$('sidePricelistOnwardList').update(side_onward_fare);
}


//function to show review details page
function drawReviewDetails(CodeId, typeId){
	var airlines_logos,revheadings,departs,arrives,side,itinhead;
	var deparr,arrivearr,revheadingsArr;
	window.scrollTo(0,0);
	if(typeId == 0){
		updateElementData(CodeId);
		$('currencyType').update($(CodeId + '_curr').innerHTML);
		$('sideCurrency').update($(CodeId + '_curr').innerHTML);
		if(summary.triptype == '11'){
			$('showSelect').show();
			if(selTripType == 2){
				$('returnFltId').value = CodeId;
				$('summaryReviewReturnSumm').show();
				$('summaryReviewReturnHead').show();
				$( 'summaryReviewreturn').show();
				$('summaryReviewFareDetailsReturn').show();
				returnSelected = 1;
				updateElementData(CodeId);
				$('summaryReviewreturn').update($('con_'+CodeId).innerHTML);
				$('summaryReviewFareDetailsReturn').update($('farePop_'+CodeId).innerHTML);
				itinhead = $$('li#summaryReviewreturn .connbgcolor');
				if (itinhead.length > 0) {
					itinhead[0].update('');
				}
				airlines_logos = $$('li#summaryReviewreturn .airlinelogotd');
				revheadings = $$('li#summaryReviewreturn .revheading');
				departs = $$('li#summaryReviewreturn .departingtxt');
				arrives = $$('li#summaryReviewreturn .arrivingtxt');
				side = '<table width="100%" border="1" cellspacing="2" cellpadding="5" bordercolor="#C9E7FA">';
				for(var m = 0;m < departs.length;m++){
					deparr = departs[m].innerHTML.split('from');
					arrivearr = arrives[m].innerHTML.split('at');
					revheadingsArr = getRevheadData(revheadings[m]);
					side += '<tr><td class="titlesidepanebf '+revheadingsArr[0]+'">'+revheadingsArr[1]+'</td></tr><tr><td width="100%" align="left">'+airlines_logos[m].innerHTML+'</td></tr><tr><td align="left"><ul><li><span class="reviewDetailsHead">Departs</span></li><li><span class="reviewDetailsSideTxt">'+deparr[0]+'</span></li><li><span class="reviewDetailsSideTxt">'+deparr[1]+'</span></li><li><span class="reviewDetailsHead">Arrives</span></li><li><span class="reviewDetailsSideTxt">'+arrivearr[0]+' at '+arrivearr[1]+'</span></li><li><span class="reviewDetailsSideTxt">'+arrivearr[2]+'</span></li></ul></td></tr>'
				}
				side += '</table>';
				$('sideRevReturnList').update(side);

				$('sidePricelistReturn').show();
				var side_return_fare = sideFareView(CodeId);
				$('sidePricelistReturnList').update(side_return_fare);

				returnFare = ($(CodeId + '_fare').innerHTML * 1)
				$('returnSelected').show();
				switchTab('onward',$('onwardFlightsLink'));
			}
			else{
				$('onwordFltId').value = CodeId;
				$('summaryReviewInwardHead').show();
				process_onword(CodeId);
				switchTab('return',$('returnFlightsLink'));
			}
			if(onwardSelected == 1 && returnSelected == 1){
				$('sideRevOnward').show();
				$('sideRevReturn').show();
				$('sideSummary').update($('leftpaneldiv').innerHTML);
				$('leftpaneldiv').innerHTML = '';
				$('totalFare').update(onwardFare + returnFare);
				$('sideTotalFare').update(onwardFare + returnFare);
				showElements();
			}
		}
		else{
			$('onwordFltId').value = CodeId;
			showElements();
			process_onword(CodeId);
			$('onwardSelectedtxt').hide();
			$('onwardSideHeading').hide();
			$('fareOnwardSideHeading').hide();
			$('sideRevOnward').show();
			$('sideSummary').update($('leftpaneldiv').innerHTML);
			$('leftpaneldiv').innerHTML = '';
			$('totalFare').update(onwardFare + returnFare);
			$('sideTotalFare').update(onwardFare + returnFare);
		}
	}
    return false;
}

//
function changeFlight(rtype,fullfare){
window.scrollTo(0,0);
[$("sideFilters"),$("track1"),$("rateTrack"),$("arrTrack")].invoke('show');
[$("reviewData"),$("sideSummary")].invoke('hide');


if(rtype == 1){
	$('onwardSelected').hide();
	//$('sideRevOnwardList').update('');
	$('summaryReviewInward').hide();
	$('summaryReviewFareDetailsInward').hide();

$('summaryReviewreturn').hide();
$('summaryReviewFareDetailsReturn').hide();

$('summaryDetailHead').hide();
$('summaryReviewReturnHead').hide();
$('summaryReviewInwardHead').hide();

$('summaryReviewInwardSumm').hide();
$('summaryReviewInwardHead1').hide();

$('topMessageArea').show();
$('showSelect').show();
//$('selectText').update('Select your onward flight');

//$('sidePricelistOnward').hide();
$('flightData').show();
$('continueButton').hide();
//$('totalFare').update(parseFloat($('totalFare').innerHTML) - fullfare);
if(summary.triptype != '11'){
	$('leftpaneldiv').update($('sideSummary').innerHTML);
	$('sideSummary').innerHTML = '';
}
onwardSelected = 0;
if(returnSelected != 1){
    $('showSelect').hide();

}


switchTab('onward',$('onwardFlightsLink'));
}
else if(rtype == 2){
$('returnSelected').hide();
//$('sideRevReturnList').update('');
$('summaryReviewInward').hide();
$('summaryReviewFareDetailsInward').hide();

$('summaryReviewreturn').hide();
$('summaryReviewFareDetailsReturn').hide();

$('summaryDetailHead').hide();
$('summaryReviewReturnHead').hide();
$('summaryReviewInwardHead').hide();

$('summaryReviewReturnSumm').hide();
$('summaryReviewReturnHead1').hide();

$('topMessageArea').show();
$('showSelect').show();
//$('selectText').update('Select your return flight');

//$('sidePricelistReturn').hide();
$('flightData').show();
$('continueButton').hide();
//$('totalFare').update(parseFloat($('totalFare').innerHTML) - fullfare);

//$('leftpaneldiv').update($('sideSummary').innerHTML);
//$('sideSummary').innerHTML = '';

returnSelected = 0;
if(onwardSelected != 1){
    $('showSelect').hide();
 //   $('selectText').update('Select your onward flight');
}
else{
	switchTab('return',$('returnFlightsLink'));
}
}
/*else if(rtype == 0){
	$('sideRevReturnList').update('');
	$('sideRevOnwardList').update('');
    $('summaryReviewInward').hide();
    $('summaryReviewFareDetailsInward').hide();
    //$('sidePricelistOnward').hide();
    $('flightData').show();
    $('continueButton').hide();
    $('totalFare').update(parseFloat($('totalFare').innerHTML) - fullfare);
    onwardSelected = 0;
    if(returnSelected != 1){
       $('reviewData').hide();
    }
	$('leftpaneldiv').update($('sideSummary').innerHTML);
	$('sideSummary').innerHTML = '';
	switchTab('onward',$('onwardFlightsLink'));
}*/
else{
   onwardSelected = 0;
   returnSelected = 0;
	if(summary.triptype != '11'){
		$('leftpaneldiv').update($('sideSummary').innerHTML);
		$('sideSummary').innerHTML = '';
	}
   $('showSelect').hide();
	$('returnSelected').hide();
	$('onwardSelected').hide();

   switchTab('onward',$('onwardFlightsLink'));
   $('flightData').show();
   $('reviewData').hide();
   $('continueButton').hide();

   $('summaryReviewInward').hide();
$('summaryReviewFareDetailsInward').hide();

$('summaryReviewreturn').hide();
$('summaryReviewFareDetailsReturn').hide();

$('summaryDetailHead').hide();
$('summaryReviewReturnHead').hide();
$('summaryReviewInwardHead').hide();

$('summaryReviewReturnSumm').hide();
$('summaryReviewReturnHead1').hide();

$('summaryReviewInwardSumm').hide();
$('summaryReviewInwardHead1').hide();

$('topMessageArea').show();
}
if(summary.triptype == '11'){
	if(onwardSelected == 0 && returnSelected == 0){
		$('leftpaneldiv').update($('sideSummary').innerHTML);
		$('sideSummary').innerHTML = '';
	}
}
return false;
}

function extractSelectedItn(ItinSegData){
    var tags = ['AirV','StartPt','EndPt','StartDt','EndDt','FltNum','Conx','FIC','BIC','PlatingAirV'];
    var rv = [];
    var seglen = ItinSegData.length;
    var taglen = tags.length;
    for(var j = 0; j < seglen; j++){
        var seg = {};
        for(var k = 0; k < taglen; k++){
            seg[tags[k]] = ItinSegData[j][tags[k]];
        }
        rv.push(seg);
    }
    return rv;
}

function searchFlight(fdata){
	document.body.style.background = "#FFFFFF";
	$('pageHeader').hide();
	searching = 1;
	var aj = new Ajax.Request("/search.html", {method:'post',parameters: fdata});
}


function showNarrowResult(airlineId){
	$$(".li"+airlineId).invoke('toggle');
	updateNarrowResults();
}

function updateNarrowResults(){
if(selTripType == 1){
	$('flightCount').update($$('#searchContent li.FSresult-single').reject(function(x){return (x.getStyle('display') == 'none');}).length);
	}
else{
	$('flightCount').update($$('#searchContentReturn li.FSresult-single').reject(function(x){return (x.getStyle('display') == 'none');}).length);
}
}

/*function to get narrow items class names before slide filter*/
function getNarrowItems(){
	var narrowElements = $("narrowContent").getElementsByTagName('tr');
	var narrowItems = [];
	for (var i = 0;i < narrowElements.length; i++) {
		var clsname=(narrowElements[i].className).split(" ");
		$$("."+clsname[1]).invoke('show');
		narrowItems[i]=clsname[1];
	}
	return narrowItems;
}

//function to show/hide return date textbox when return check box in refine search checked/unchecked
function showReturn(){
    if($('returnchk').checked){
	$('date_return_dt').show();
	$('date_return').disabled = false;
	$('fltsrch').value = '2';
    }
    else{
    	$('date_return_dt').hide();
    	$('date_return').disabled = true;
    	$('fltsrch').value = '1';
    }
}

//function to show customer detail page when the 'continue' button in review details  page is clicked
function continueToDetails(){
	window.scrollTo(0,0);
	[$('customerDetails'),$('passengerDetailsDiv')].invoke('show');
	[$('searchResultsDiv'),	$("track1"),$("rateTrack"),	$("arrTrack")].invoke('hide');
	$('leftpaneldiv').update($('sideSummary').innerHTML);
	$('sideSummary').innerHTML = '';
}

//function to show review details page when the 'back' button in customer detail page is clicked
function showReviewDetails(){
	window.scrollTo(0,0);
	[$('searchResultsDiv'),$('leftpaneldiv')].invoke('show');
	[$('customerDetails'),$('getPnrNoDiv'),	$('selectNewAction')].invoke('hide');
	$$('.footer').invoke('show');
	$('pageHeader').show();
	if(summary.expert == '1'){
		clearSelectedClass();
		onwardSelected = 0;
		returnSelected = 0;
	}
	$('sideSummary').update($('leftpaneldiv').innerHTML);
	$('leftpaneldiv').innerHTML = '';
}

//function for 'View Flight Details' link
function ShowConnectionFlights(confltid){
	if($('con_'+confltid).style.display=="none"){
		$('con_'+confltid).style.display="block";
		$('conTd_'+confltid).className = "vcd";
		var fltDatListClose = '<span class="reviewsubheading1" style="float:left;color:#777777;">Flight Details</span><span style="float:right;"><a style="cursor:pointer;color:#F57E16;" onclick="ShowConnectionFlights(\''+confltid+'\');return false;"><img  src="/templates/images/close.gif" style="border: 0px none ;"/></a></span>';
		$('connHead_'+confltid).update(fltDatListClose);
		$('connHead_'+confltid).addClassName('connbgcolor');
	}
	else{
		$('conTd_'+confltid).removeClassName('vcd');

		$('con_'+confltid).style.display="none";
	}

}

//function used for popup fare info
function detailedFareInfo(fareIndex){
	ddrivetip($('farePop_'+fareIndex).innerHTML,410,'#ffffff');
}

/*narrow prefered airlines managing functions*/
function clearAllListings(){
	var airlinechklist = $$('.airlinelistcss');
	var airchkcount = airlinechklist.length;
	for(i = 0; i < airchkcount; i++){
		if($(airlinechklist[i].id).checked){
			showNarrowResult($(airlinechklist[i].id).value);
		}
		$(airlinechklist[i].id).checked=false;

	}
}

function showAllListings(){
	//showAllPortListings();
	$$('.fltdatacss_'+selTripType).invoke('show');
	var airlinechklist = $$('.airlinelistcss');
	var airchkcount = airlinechklist.length;
	for(i = 0; i < airchkcount; i++){
		/*if(!$(airlinechklist[i].id).checked){
			showNarrowResult($(airlinechklist[i].id).value);
		}*/
		$(airlinechklist[i].id).checked=true;
	}
	updateNarrowResults();
}
function viewSelectedAirline(airlinecode){
	$$('.fltdatacss_'+selTripType).invoke('hide');
	var airlinechklist = $$('.airlinelistcss');
	var airchkcount = airlinechklist.length;
	for(i = 0; i < airchkcount; i++){
	if($(airlinechklist[i].id).value == airlinecode){
		$(airlinechklist[i].id).checked=true;
	}
	else{
		$(airlinechklist[i].id).checked=false;
	}
		if($(airlinechklist[i].id).checked){
			$$('.li'+$(airlinechklist[i].id).value).invoke('show');
		}
	}
	updateNarrowResults();
}

function clearAllPortListings(){
	var airportchklist = $$('.airPortlistcss');
	var airchkcount = airportchklist.length;
	for(i = 0; i < airchkcount; i++){
		$(airportchklist[i].id).checked=false;
			showPortResult($(airportchklist[i]));
	}
}

function showAllPortListings(){
	$$('.fltdatacss_'+selTripType).invoke('show');
	var airportchklist = $$('.airPortlistcss');
	var airchkcount = airportchklist.length;
	for(i = 0; i < airchkcount; i++){
		$(airportchklist[i].id).checked=true;
	}
	updateNarrowResults();
}

function viewSelectedAirPort(airPortcode){
	$$('.fltdatacss_'+selTripType).invoke('hide');
	var airportchklist = $$('.airPortlistcss');
	var airchkcount = airportchklist.length;
	for(i = 0; i < airchkcount; i++){
	if($(airportchklist[i].id).value == airPortcode){
		$(airportchklist[i].id).checked=true;
	}
	else{
		$(airportchklist[i].id).checked=false;
	}
		if($(airportchklist[i].id).checked){
			$$('.li'+$(airportchklist[i].id).value).invoke('show');
		}
	}
	updateNarrowResults();
}

function showPortResult(airPortObj){
	$$('.fltdatacss_'+selTripType).invoke('show');
	var airportchklist = $$('.airPortlistcss');
	var airchkcount = airportchklist.length;
	for(i = 0; i < airchkcount; i++){
		if(!$(airportchklist[i].id).checked){
			$$('.li'+$(airportchklist[i].id).value).invoke('hide');
		}
	}
	updateNarrowResults();
}

///////////////////////////////
//function for debuging
function dodebug(msg){
 if(!$('jdebug'))
   $$('body')[0].insert({top: '<div id="jdebug" style="width:200px; float:left;"></div>'});
 $('jdebug').insert({top: '<p>' + dbgline + ': ' + msg + '</p>'});
 dbgline++;
}



messageObj = new DHTML_modalMessage();	// We only create one object of this class
messageObj.setShadowOffset(5);	// Large shadow

function displayStaticMessage(messageContent,w,h,cssClass)
{
	//alert("");
	messageObj.setHtmlContent(messageContent);
	messageObj.setSize(w,h);
	messageObj.setCssClassMessageBox(cssClass);
	messageObj.setSource(false);	// no html source since we want to use a static message here.
	messageObj.setShadowDivVisible(false);	// Disable shadow for these boxes
	messageObj.display();

	}

function closeMessage(val)
{
	messageObj.close();

}

function confirmFlight(){
		hideBeforeConfirm();
		var revFltDatListTpl = new Template(revSummIntFltTpl);
	   	var data;
	   	var submission = {};
	   	/*switch(parseInt(summary.triptype)){
		case 10:
		 	if(tripdata[selectedDomOnCode]){
			    submission.o = {'ItinSeg': extractSelectedItn(tripdata[selectedDomOnCode].ItinSeg), 'FareQuote': tripdata[selectedDomOnCode].FareQuote,'LastTkDt':tripdata[selectedDomOnCode].LastTkDt,'NumStops':tripdata[selectedDomOnCode].NumStops};
			    $('fltItnView').update(flightsArr[selectedDomOnCode].CompleteReviewFltDet);
			    $('fltItnFareView').update(flightsArr[selectedDomOnCode].farePopUp);
			}
			break;
		case 20:
			if(tripdata[selectedIntCode]){
			    submission.o = {'ItinSeg': extractSelectedItn(tripdata[selectedIntCode].ItinSeg), 'FareQuote': tripdata[selectedIntCode].FareQuote,'LastTkDt':tripdata[selectedIntCode].LastTkDt,'NumStops':tripdata[selectedIntCode].NumStops};
			    $('fltItnView').update(flightsArr[selectedIntCode].CompleteReviewFltDet);
			    $('fltItnFareView').update(flightsArr[selectedIntCode].farePopUp);
			    }
		break;
	case 11:
	    if(tripdata[selectedDomOnCode]){
	        submission.o = {'ItinSeg': extractSelectedItn(tripdata[selectedDomOnCode].ItinSeg), 'FareQuote': tripdata[selectedDomOnCode].FareQuote,'LastTkDt':tripdata[selectedDomOnCode].LastTkDt,'NumStops':tripdata[selectedDomOnCode].NumStops};
	        $('fltItnView').update(flightsArr[selectedDomOnCode].CompleteReviewFltDet);
	        $('fltItnFareView').update(flightsArr[selectedDomOnCode].farePopUp);
	    }
	    if(tripdata_return[selectedDomRtCode]){
	        submission.r = {'ItinSeg': extractSelectedItn(tripdata_return[selectedDomRtCode].ItinSeg), 'FareQuote': tripdata_return[selectedDomRtCode].FareQuote,'LastTkDt':tripdata[selectedDomRtCode].LastTkDt,'NumStops':tripdata[selectedDomRtCode].NumStops};
	        $('fltItnRetViewTR').show();
	        $('fltItnRetFareViewTR').show();
	        $('fltItnRetView').update(flightsArr[selectedDomRtCode].CompleteReviewFltDet);
	        $('fltItnRetFareView').update(flightsArr[selectedDomRtCode].farePopUp);
	    }
	break;
	case 21:
	    if(tripdata[selectedIntCode])
	        submission.trip = {'ItinSeg': extractSelectedItn(tripdata[selectedIntCode].ItinSeg), 'FareQuote': tripdata[selectedIntCode].FareQuote,'LastTkDt':tripdata[selectedIntCode].LastTkDt,'NumStops':tripdata[selectedIntCode].NumStops};
	        $('fltItnView').update(flightsArr[selectedIntCode].CompleteReviewFltDet);
	        $('fltItnFareView').update(flightsArr[selectedIntCode].farePopUp);
    break;
   }*/
	//data = "selFltData="+Object.toJSON(submission)+"&"+$("customerInformation").serialize();
	data = $("customerInformation").serialize();
		var aj = new Ajax.Request("/confirm-flight.html", {
			method: 'post',
			parameters: data,
			onComplete: function(msg){
				showBookingDetails(msg.responseText);
			}
		});
}

function hideBeforeConfirm(){
 	if($('getPnrNoDiv')) $('getPnrNoDiv').show();
	if($('passengerDetailsDiv')) $('passengerDetailsDiv').hide();
	if($('topLinkDiv')) $('topLinkDiv').hide();
	if($('leftpaneldiv')) $('leftpaneldiv').hide();
	if($('pageHeader')) $('pageHeader').hide();
	if($('footerDiv')) $('footerDiv').hide();
}

function showBookingDetails(responseData){
	var msgArr=responseData.split("|~|");
	if (msgArr[0] == '0') {
		setTimeout('cannotSellPrompt()',500);
	}
	else if (msgArr[0] == '1') {
		setTimeout('canSellNoFarePrompt()',500);
	}
	else if (msgArr[0] == '2') {
		setTimeout('canSellWithFarePrompt(\''+msgArr[1]+'\')',500);
	}
	else {
		if (parseInt(msgArr[1]) == 1) {
			$('pageHeader').show();
			$('footerDiv').show();
			$('pnrResultDiv').update(msgArr[0]);
			$('pnrResultDiv2').update(msgArr[0]);
			$('selectNewAction').hide();
			$('getPnrNoDiv').hide();
			$('showB2BPnrNo').show();
			$('noOfAdults').update($('hidAdultCount').value);
			$('noOfChildrens').update($('hidChildCount').value);
			$('noOfInfants').update($('hidInfantCount').value);
			//var bookingDate = new Date();
			//$('dateBookingDiv').update(bookingDate.getDate() + "/" + bookingDate.getMonth() + "/" + bookingDate.getYear());
			$('dateBookingDiv').update(msgArr[2]);
			$('dateTravelingDiv').update(summary.Dates[0]);
			if((summary.triptype == '10') || (summary.triptype == '11')){
				$('fltItnView').innerHTML = $('summaryReviewInwardHead').innerHTML + '<br />';
			}
			
			$('fltItnView').innerHTML += $('summaryReviewInward').innerHTML + '<br />' + $('summaryReviewFareDetailsInward').innerHTML + '<br />';
			
			if(summary.triptype == '11'){
				$('fltItnView').innerHTML += $('summaryReviewReturnHead').innerHTML + '<br />' + $('summaryReviewFareDetailsInward').innerHTML + '<br />' +  $('summaryReviewreturn').innerHTML + '<br />'+$('summaryReviewFareDetailsReturn').innerHTML;
			}
			showPassengerNames();
			$('serviceChargeSpan').update($('agents_charge').value);
			$('totalAmountSpan').update($('currencyType').innerHTML+' '+ (($('totalFare').innerHTML * 1)+($('agents_charge').value * 1)));
		}
		else {
			$('getPnrNoDiv').hide();
			$('customerDetails').hide();
			$('selectNewAction').show();
		}
	}
}

function reportError(request) {
	alert("Error");
}

function saveCustomerInfo(pnroData){
    var data = $("customerInformation").serialize();
	$('custInfoSer').value=data;
    var aj = new Ajax.Request("/modules/dynpage.code/save-customer-info.php", {
        method: 'post',
        parameters: data,
        onComplete: function(msg){
        var resultJSON=msg.responseText.evalJSON(true);
		  if(resultJSON.typeId==1){
           		alert("Registration Success ! Please Check Your Email For Password.");
           }

		  if(resultJSON.typeId==2){
           		//alert("Data Successfully Saved!..");
				$('passengerDetailsDiv').hide();
				$('pnrDiv').show();
				$('pnrResultDiv').update(pnroData);
           }
        }
    });
}

function getForgotPassword(){
	var data = "emailid="+ $("forgotPasswordEmailid").value;
    var aj = new Ajax.Request("/get-forgot-password.html", {
        method: 'post',
        parameters: data,
        onComplete: function(msg){
           if(msg.responseText=='1'){
           		alert("Please Check Your Email For The Password.");
           }
           $('forgotPasswordId').hide();
        }
    });
}

function getUserTypes(uid){
	var data = 'uid='+uid;
    var ut = new Ajax.Request("/get-userTypes.html", {
        method: 'post',
        parameters: data,
        onComplete: function(UserypeReq){
        if(uid == 1){
			$('userTypes').update(UserypeReq.responseText);
		}
		if(uid == 2){
			$('userTypes2').update(UserypeReq.responseText);
		}
        }
    });
}

/*-----------------------------Login Area------------------------------------------------*/
function checkLogin(){
	if ($('userType').value != "2" && $('userType').value != "subuser" ) {
		var data = $('loginFrm').serialize();
		var ajlogin = new Ajax.Request("/check-login.html", {
			method: 'post',
			parameters: data,
			onComplete: function(loginReq){
				var loginDetailsJSON = loginReq.responseText.evalJSON(true);
				if (loginDetailsJSON.loginSuccess == "1") {
					$('loginArea').update('Sign Out');
					loginMsg('Sign In Success !...');
					if (window.$('serviceChargeTbl') != null) {
						$('serviceChargeTbl').show();
					}
					if(window.$('currentlyIn')!=null){
						if($('currentlyIn').value.strip() == 'yes'){
							$("customer_type").value="agent";
							$('customerInformationSpan2').hide();
							$('dealersInformation').show();
							$("customer_id").value=loginDetailsJSON.customerId;
							$("customer_type_id").value=loginDetailsJSON.customerTypeId;
							$("contact_email").value=loginDetailsJSON.contactEmail;
							$("customer_name").value=loginDetailsJSON.customerName;
							$("customer_address").value=loginDetailsJSON.customerAddress;
							$("contact_person").value=loginDetailsJSON.contactPerson;
							$("contact_address").value=loginDetailsJSON.contactAddress;
							$("contact_number").value=loginDetailsJSON.contactNumber;
							$("alternate_number").value=loginDetailsJSON.alternateNumber;
							$("service_tax2").value=loginDetailsJSON.newServiceCharges;
							$("pax_quote2").value=parseInt($('airline_net').value) + parseInt(loginDetailsJSON.newServiceCharges);
							$('serviceChargeLi').show();
							$('welcomeUser').update("Logged as " + loginDetailsJSON.customerName);

							$("contact_email").readOnly=true;
							$("customer_name").readOnly=true;
							$("customer_address").readOnly=true;
							$("contact_person").readOnly=true;
							$("contact_address").readOnly=true;
							$("contact_number").readOnly=true;
							$("alternate_number").readOnly=true;

							var mypage = '<a href="/my-page.html">My Page</a>';
							var x=$('topMenuLinksTr').insertCell(1);
							x.id="mypageId";
							x.innerHTML=mypage;
							$("mypageId").addClassName("nav1");
						}
						else{
							window.location = "/flight-search.html";
						}

					}
					else{
						window.location = "/";
					}
					return false;
				}
				else {
					loginMsg('Login Failed !...');
					return false;
				}
			}
		});
	}
	else if($('userType').value == "subuser"){
		logSubUser();
	}
	else{
		logMeIn();
		return false;
	}
    return false;
}


function logMeIn(){
	var email_id, pass_word;

	if (window.$("loginEmailid") != null) {
		email_id = $("loginEmailid").value;
	}

	if (window.$("loginPassword") != null) {
		pass_word = $("loginPassword").value;
	}

	if (window.$("uname") != null) {
		email_id = $("uname").value;
	}

	if (window.$("passwd") != null) {
		pass_word = $("passwd").value;
	}

	if(window.$('loginFrm') != null){
		var data = $('loginFrm').serialize();
	}
	else{
		var data = $('loginFrm2').serialize();
	}

    var ajlogin = new Ajax.Request("/checkAuthentication.html", {
        method: 'post',
        parameters: data,
        onComplete: function(logreq){
        if(logreq.responseText=="false"){
				if (window.$("errlogin") != null) {
					$('errlogin').update("Authentication Failed !");
				}
				if (window.$("customerInformation") != null) {
					$("customerInformation").reset();
				}
				if (window.$("title") != null) {
					$("title").disabled = false;
				}
				if (window.$("city") != null) {
					$("city").disabled = false;
				}
				loginMsg('Sign In Failed !...');
        	}
        	else{
				if (window.$("guestLogged") != null) {
					$("guestLogged").value = "1";
					$("loginDone").value = "1";
					var custDetailsJSON = logreq.responseText.evalJSON(true);
					$("customer_id").value = 0;
					$("guest_id").value = custDetailsJSON.customer_id;

					$("title").value = custDetailsJSON.title;
					$("firstname").value = custDetailsJSON.firstname;
					$("lastname").value = custDetailsJSON.lastname;
					var loggedLinks = '<b>&nbsp;::&nbsp;<a class="welcome" href="/my-page.html">My Page</a></b>';
					$('welcomeUser').update('Logged as '+ custDetailsJSON.firstname + custDetailsJSON.lastname + loggedLinks);

					$("mobileno").value = custDetailsJSON.mobileno;
					$("alternateno").value = custDetailsJSON.alternateno;
					$("address1").value = custDetailsJSON.address1;
					$("address2").value = custDetailsJSON.address2;
					$("city").value = custDetailsJSON.city;
					$("state").value = custDetailsJSON.state;
					$("country").value = custDetailsJSON.country;
					$("pincode").value = custDetailsJSON.pincode;
					$("emailid").value = custDetailsJSON.emailid;
					$("divConfirmEmailInput").hide();
					$("divConfirmEmailLabel").hide();
					$("emailid").value = custDetailsJSON.emailid;
					$("emailid").value = custDetailsJSON.emailid;
					$('loginArea').update('SIGN OUT');
					alert('aa');
					loginMsg('Sign In Success !...');
				}
				else {
					$('loginArea').update('SIGN OUT');
					loginMsg('Sign In Success !...');
					window.location = "/";
				}
			}

        }
    });
}

function logSubUser(){
	var data = $('loginFrm').serialize();
	var ajlogin = new Ajax.Request("/check-sub-user-login.html", {
		method: 'post',
		parameters: data,
		onComplete: function(loginReq){
			var loginDetailsJSON = loginReq.responseText.evalJSON(true);
			if (loginDetailsJSON.loginSuccess == "1") {
				$('loginArea').update('Sign Out');
				loginMsg('Sign In Success !...');
				if (window.$('serviceChargeTbl') != null) {
					$('serviceChargeTbl').show();
				}
				if(window.$('currentlyIn')!=null){
					if($('currentlyIn').value.strip() == 'yes'){
						$("customer_type").value="agent";
						$('customerInformationSpan2').hide();
						$('dealersInformation').show();
						$("customer_id").value=loginDetailsJSON.customerId;
						$("customer_type_id").value=loginDetailsJSON.customerTypeId;
						$("contact_email").value=loginDetailsJSON.contactEmail;
						$("customer_name").value=loginDetailsJSON.customerName;
						$("customer_address").value=loginDetailsJSON.customerAddress;
						$("contact_person").value=loginDetailsJSON.contactPerson;
						$("contact_address").value=loginDetailsJSON.contactAddress;
						$("contact_number").value=loginDetailsJSON.contactNumber;
						$("alternate_number").value=loginDetailsJSON.alternateNumber;
						$("service_tax2").value=loginDetailsJSON.newServiceCharges;
						$("pax_quote2").value=parseInt($('airline_net').value) + parseInt(loginDetailsJSON.newServiceCharges);
						$('serviceChargeLi').show();
						$('welcomeUser').update("Logged as " + loginDetailsJSON.customerName);

						$("contact_email").readOnly=true;
						$("customer_name").readOnly=true;
						$("customer_address").readOnly=true;
						$("contact_person").readOnly=true;
						$("contact_address").readOnly=true;
						$("contact_number").readOnly=true;
						$("alternate_number").readOnly=true;

						var mypage = '<a href="/my-page.html">My Page</a>';
						var x=$('topMenuLinksTr').insertCell(1);
						x.id="mypageId";
						x.innerHTML=mypage;
						$("mypageId").addClassName("nav1");
					}
					else{
						window.location = "/flight-search.html";
					}

				}
				else{
					window.location = "/";
				}
				return false;
			}
			else {
				loginMsg('Login Failed !...');
				return false;
			}
		}
});
}

/*-----------------------------------------------------------------------------------------*/
function backToSearch(){
	$("loginFormDiv").hide();
	$("flightSearchDiv").show();
}

function addChild(selbox){
	var no = $('fsadults').options[$('fsadults').selectedIndex].text;
	var noOfChild = 9-no;
	if($('fschild').options.length>0){
		removeAllOptions($('fschild'));
	}
	for(var i=0; i<=noOfChild;i++){
		addOption($('fschild'),i, i);
	}

}

function addInfants(selbox){
	var noOfInfants = $('fsadults').options[$('fsadults').selectedIndex].text;
	if($('fsinfants').options.length>0){
		removeAllOptions($('fsinfants'));
	}
	for(var i=0; i<=noOfInfants;i++){
		addOption($('fsinfants'),i, i);
	}

}


function addOption(selectbox,text,value ){
	var optn = document.createElement("OPTION");
	optn.text = text;
	optn.value = value;
	selectbox.options.add(optn);
}

function removeAllOptions(selectbox){
	var i;
	for(i=selectbox.options.length-1;i>=0;i--){
	selectbox.remove(i);
	}
}



/*-------------------------------------------------------------------*/

function loginLogout(status){
	if(status == 'Sign In' || status == 'SIGN IN' || status == 'LOGIN'){
		loginForm();
	}
	else if(status == 'Sign Out' || status == 'SIGN OUT'  || status == 'LOGOUT' ){
		logoutPromt();
	}

}

function logoutPromt(){
var showContent='<table width="100%" cellspacing="0" cellpadding="0" border="0" class="loginFrm">';
showContent +=  '<tr><tr><td align="left" bgcolor="#1571AF">&nbsp;&nbsp;<b style="color:#ffffff;">Logout</b></td><td align="right" style="height:21px" bgcolor="#1571AF"><a href="javascript:onclick=messageObj.close();" style="text-decoration:none;" ><img style="border:0px" height="17" width="20" src="/templates/images/close.gif"/></a></td></tr>';
showContent+="<tr><td colspan='2' style='color:#51514a;'><br />&nbsp;&nbsp;Are you sure , you want to logout ?...</td></tr>";
showContent +=  '<tr><td height="60" valign="middle" align="left" colspan="2">&nbsp;&nbsp;<a style="cursor:pointer" onclick = "javascript: logout();" style="text-decoration:none;"><img style="border:0px" height="21px" width="34px" src="/templates/images/yes.jpg"/></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:onclick=messageObj.close();" style="text-decoration:none;"><img style="border:0px" height="21px" width="34px" src="/templates/images/no.jpg"/></a></td></tr>';
showContent +=  '</table>';
 	messageContent=showContent;

if(window.$("loginFormDiv") != null){
	leftPosition="";
}
else{
	leftPosition="";
}
displayStaticMessage(messageContent,250,110);
}

function cancelBookingPromt(key,cancelType){
	var showContent='<table width="100%" cellspacing="0" cellpadding="0" border="0" class="loginFrm">';
	showContent +=  '<tr><tr><td align="left" bgcolor="#1571AF">&nbsp;&nbsp;<b style="color:#ffffff;">Cancel Booking</b></td><td align="right" style="height:21px" bgcolor="#1571AF"><a href="javascript:onclick=messageObj.close();" style="text-decoration:none;" ><img style="border:0px" height="17" width="20" src="/templates/images/close.gif"/></a></td></tr>';
	showContent+="<tr><td colspan='2' style='color:#51514a;'><br />&nbsp;&nbsp;Are you sure , you want to cancel this booking ?...</td></tr>";
	showContent +=  '<tr><td height="60" valign="middle" align="left" colspan="2">&nbsp;&nbsp;<a style="cursor:pointer" onclick = "javascript: cancelBooking(\''+key+'\',\''+cancelType+'\');" style="text-decoration:none;"><img style="border:0px" height="21px" width="34px" src="/templates/images/yes.jpg"/></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:onclick=messageObj.close();" style="text-decoration:none;"><img style="border:0px" height="21px" width="34px" src="/templates/images/no.jpg"/></a></td></tr>';
	showContent +=  '</table>';
 	messageContent=showContent;

	if(window.$("loginFormDiv") != null){
		leftPosition="";
	}
	else{
		leftPosition="";
	}
	displayStaticMessage(messageContent,250,110);
}

function cancelBooking(key,cancelType){
    var data = 'key='+key+'&canceltype='+cancelType;
    var bcancel = new Ajax.Request("/cancel-booking.html", {
        method: 'post',
        parameters: data,
        onComplete: function(cancelReq){
		//if(cancelReq.responseText=="1"){
			//$('loginArea').update('Sign In');
			loginMsg(cancelReq.responseText);
			window.location = "/my-bookings.html";
		//}
		//else{
			//loginMsg('Canceling Failed !...');
		//}
        }
    });
    return false;
}

function ticketBookingPromt(key){
	var showContent='<table width="100%" cellspacing="0" cellpadding="0" border="0" class="loginFrm">';
	showContent +=  '<tr><tr><td align="left" bgcolor="#1571AF">&nbsp;&nbsp;<b style="color:#ffffff;">Ticket Booking</b></td><td align="right" style="height:21px" bgcolor="#1571AF"><a href="javascript:onclick=messageObj.close();" style="text-decoration:none;" ><img style="border:0px" height="17" width="20" src="/templates/images/close.gif"/></a></td></tr>';
	showContent+="<tr><td colspan='2' style='color:#51514a;'><br />&nbsp;&nbsp;Sent this booking for ticketing ?...</td></tr>";
	showContent +=  '<tr><td height="60" valign="middle" align="left" colspan="2">&nbsp;&nbsp;<a style="cursor:pointer" onclick = "javascript: ticketBooking(\''+key+'\');" style="text-decoration:none;"><img style="border:0px" height="21px" width="34px" src="/templates/images/yes.jpg"/></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:onclick=messageObj.close();" style="text-decoration:none;"><img style="border:0px" height="21px" width="34px" src="/templates/images/no.jpg"/></a></td></tr>';
	showContent +=  '</table>';
 	messageContent=showContent;

	if(window.$("loginFormDiv") != null){
		leftPosition="";
	}
	else{
		leftPosition="";
	}
	displayStaticMessage(messageContent,250,110);
}

function ticketBooking(key){
    var data = 'key='+key;
    var bcancel = new Ajax.Request("/ticket-booking.html", {
        method: 'post',
        parameters: data,
        onComplete: function(ticketReq){
		//if(cancelReq.responseText=="1"){
			//$('loginArea').update('Sign In');
			loginMsg(ticketReq.responseText);
			window.location = "/my-bookings.html";
		//}
		//else{
			//loginMsg('Canceling Failed !...');
		//}
        }
    });
    return false;
}

function loginMsg(msg){
var showContent='<table width="100%" cellspacing="0" cellpadding="0" border="0" class="loginFrm">';
showContent +=  '<tr><td align="right" bgcolor="#1571AF" style="height:21px"  colspan="2"><a href="javascript:onclick=messageObj.close();" style="text-decoration:none;" ><img style="border:0px" width="20" src="/templates/images/close.gif"/></a></td></tr>';
showContent +=  '<tr><td height="60" valign="middle" align="center" colspan="2"><b>'+msg+'</b></td></tr>';
showContent +=  '</table>';
messageContent=showContent;
displayStaticMessage(messageContent,255,80);
if(window.$("loginFormDiv") != null){
	leftPosition="";
}
else{
	leftPosition="";
}
setTimeout("messageObj.close()", 2000);

}

function logout(){
    var data = '';
    var ajlogin = new Ajax.Request("/logout-customer.html", {
        method: 'post',
        parameters: data,
        onComplete: function(loginReq){
		if(loginReq.responseText=="1"){
			$('loginArea').update('SIGN IN');
			loginMsg('Logout Success !...');
			window.location = "/";
		}
		else{
			loginMsg('Logout Failed !...');
		}
        }
    });
    return false;
}



function loginForm(){
		var fclass;
		var fcode;
		var bfairAmt;

	if(window.$("loginFormDiv") != null){
		$("loginFormDiv").show();
		$("flightSearchDiv").hide();
	}
	else{


		if (window.$('flightClassId') != null) {
			fclass = $('flightClassId').value;
		}
		else{
			fclass = "";
		}

		if (window.$('flightCodeId') != null) {
			fcode = $('flightCodeId').value;
		}
		else{
			fcode = "";
		}

		if (window.$('airline_net') != null) {
			bfairAmt = $('airline_net').value;
		}
		else{
			bfairAmt = "";
		}



		var showContent = '<table width="100%" cellspacing="0" cellpadding="0" border="0" class="loginFrm">';
		showContent +=  '<tr><td align="right" bgcolor="#1571AF" style="height:21px"  colspan="2"><a href="javascript:onclick=messageObj.close();" style="text-decoration:none;" ><img style="border:0px" width="20" src="/templates/images/close.gif"/></a></td></tr>';
		showContent +=  '<tr><td height="40" valign="middle" align="center" colspan="2"><div id="loginFormSec">';
		showContent +=  '<form action="" method="post" name="loginFrm" id="loginFrm"><input name="flightClass" id="flightClass" type="hidden" class="pass-input" value="'+fclass+'" /><input name="flightCode" id="flightCode" type="hidden" class="pass-input" value="'+fcode+'" /><input name="baseFairAmount" id="baseFairAmount" type="hidden" class="pass-input" value="'+bfairAmt+'" />';
		showContent +=  '<table width="88%" cellspacing="0" cellpadding="0" border="0">';
		showContent +=  '<tr><td height="40" valign="middle" align="left" colspan="2">';
		showContent +=  '<span class="logintext">Login Here </span></td></tr>';
		showContent +=  '<tr><td height="25"><input type="text" class="login_input" onblur="$(\'uname\').value==\'\'?$(\'uname\').value=\'User Name\':$(\'uname\').value;" onfocus="$(\'uname\').value=\'\';" value="User Name" id="uname" name="auth[email]"/></td>';
		showContent +=  '<td height="28" ><input type="password" autocomplete="off" class="login_input" onblur="if($(\'passwd\').value==\'\'){$(\'passwd\').value=\'\';$(\'passwd\').type=\'text\';}" onfocus="$(\'passwd\').value=\'\';$(\'passwd\').type=\'password\';" value="Password" id="passwd" name="auth[password]"/></td></tr>';
		showContent +=  '<tr><td height="28" colspan="2">User Type:';
		showContent +=  '<span id="userTypes"></span><!--<select name="userType" id="userType" style="width:75px;"><option value=""></option><option value="0">Corporates</option><option value="1">Sub-Agents</option><option value="2">Individuals</option></select>--></td></tr>';
		showContent +=  '<tr><td height="32"><input type="submit" class="log_button" style="cursor:pointer;" value="Login" onclick="return checkLogin();"/>   <input type="button" class="log_button" style="cursor:pointer;" value="Cancel" onclick="messageObj.close();"/></td><td width="156" align="right" valign="bottom"><span style="cursor:pointer;" onclick="forgotPasswd();">Forgot Password</span></td></tr>';
		showContent +=  '</table></form></div>';
		showContent +=  '<div id="forgotPasswdSec" style="display:none"><form action="" method="post" name="forgotPasswdFrm" id="forgotPasswdFrm"><table width="100%" cellspacing="0" cellpadding="0" border="0"><tr><td height="40" valign="middle" align="left" colspan="2" class="logintd"><span class="logintext">Forgot Password</span></td></tr><tr><td height="25" class="logintd" width="100%"><label style="margin-left:39px;"> Username/Email Id &nbsp;: </label>&nbsp;<input type="text" class="login_input" style="width:121px;"  id="funame" name="auth[femail]"/></td></tr><tr><td height="15" class="logintd" valign="top"><label style="margin-left:39px;"> User Type : </label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span id="userTypes2"></span></td></tr><tr><td height="32" class="logintd"><table width="100%"><tr><td><span style="margin-left:39px;"><input type="button" class="log_button" style="cursor:pointer;width:90px" value="Get Password" onclick="return getPassword();"/>&nbsp;&nbsp;<input type="button" class="log_button" style="cursor:pointer;width:90px" value="Back To Login" onclick = "backToLogin()"/></span></td></tr></table></td></tr></table></form></div>';

		showContent +=  '</td></tr><tr><td bgcolor="#1571AF" height="2"></td></tr><tr><td height="32" align="center"><table width="88%" border="0" cellspacing="0" cellpadding="0">';
        showContent +=  '<tr><td>This facility is currently available for the Corporate and Individual users registered with Ideal Travels.<br>Please <a href="/register.html">Register now</a> to get better offers from Ideal Travels.Else contact any of our offices.</td>';
        showContent +=  '</tr> </table><br></td></tr>';
		showContent +=  '<tr><td bgcolor="#1571AF" height="2"></td></tr></table>';
		messageContent=showContent;
		displayStaticMessage(messageContent,300,223);
		leftPosition="";
		getUserTypes(1);
		getUserTypes(2);
	}
}

function forgotPasswd(){
	$('loginFormSec').hide();
	$('forgotPasswdSec').show();
}

function backToLogin(){
	$('forgotPasswdSec').hide();
	$('loginFormSec').show();
}

function getPassword(){
	var data = $('forgotPasswdFrm').serialize();
    var ajlogin = new Ajax.Request("/forgotPassword.html", {
        method: 'post',
        parameters: data,
        onComplete: function(logreq){
		    if(logreq.responseText == '1'){
		    	loginMsg(' Password send successfully to your emailid. ');
		    	if(window.$("loginFormDiv") != null){
		    		backToLogin();
		    	}
		    }
		    else{
		    	loginMsg(' Invalid Email Id/Username !... ');
		    }
        return false;
        }
    });
}
function showPassengerNames(){

	for(var i=0;i < parseInt($('hidAdultCount').value);i++){
					if (i == 0) {
						$('Adult_name_' + (i + 1)).update($('leadfname').value + " " + $('leadlname').value);
					}
					else {
						$('Adult_name_' + (i + 1)).update($('adultfname_' + (i-1)).value + " " + $('adultlname_' + (i-1)).value);
					}
				}

				for(var i=0;i<$('hidChildCount').value;i++){
					$('Child_name_' + (i + 1)).update($('childfname_' + i).value + " " + $('childlname_' + i).value);
				}
				for(var i=0;i<$('hidInfantCount').value;i++){
					$('Infant_name_' + (i + 1)).update($('infantfname_' + i).value + " " + $('infantlname_' + i).value);
				}

}

function ticket_now(){
	var data = '';
	var aj = new Ajax.Request("/ticket-booking.html", {
		method: 'post',
		parameters: data,
		onComplete: function(msg){
			loginMsg(msg.responseText);
			window.location = "/my-bookings.html";
        }
    });
}

function updateProfile(){
	var data = $('customerInformation').serialize();
	var aj = new Ajax.Request("/update-profile.html", {
		method: 'post',
		parameters: data,
		onComplete: function(msg){
			loginMsg(msg.responseText);
        }
    });
}

function viewUserDetail(subuserid){
	$('subusername').value = '';
	$('address').value = '';
	$('phoneno').value = '';
	$('emailid').value = '';
	$('password').value = '';
	$('approved').options[0].selected = true;
	$('subuserid').value = '';
	$('Yclass').checked = false;
	$('Fclass').checked = false;
	$('Cclass').checked = false;

	var data = 'subuserid='+subuserid;
	var aj = new Ajax.Request("/view-subuser-details.html", {
		method: 'post',
		parameters: data,
		onComplete: function(userdata){
			var userDetailsJSON = userdata.responseText.evalJSON(true);
			if (userDetailsJSON.sclass != null && userDetailsJSON.sclass != '' ) {
				var sclasses = userDetailsJSON.sclass.split(',');
				for (var i = 0; i < sclasses.length; i++) {
					if ($(sclasses[i] + 'class')) {
						$(sclasses[i] + 'class').checked = true;
					}
				}
			}
			$('subusername').value = userDetailsJSON.subusername;
			$('address').value = userDetailsJSON.address;
			$('phoneno').value = userDetailsJSON.phoneno;
			$('emailid').value = userDetailsJSON.emailid;
			$('password').value = userDetailsJSON.password;
			$('approved').value = userDetailsJSON.approved;
			$('subuserid').value = userDetailsJSON.subuserid;
			$('task').value = 'update';
        }
    });
}

function deleteSubUser(){
	var showContent='<table width="100%" cellspacing="0" cellpadding="0" border="0" class="loginFrm">';
	showContent +=  '<tr><tr><td align="left" bgcolor="#1571AF">&nbsp;&nbsp;<b style="color:#ffffff;">Remove User</b></td><td align="right" style="height:21px" bgcolor="#1571AF"><a href="javascript:onclick=messageObj.close();" style="text-decoration:none;" ><img style="border:0px" height="17" width="20" src="/templates/images/close.gif"/></a></td></tr>';
	showContent+="<tr><td colspan='2' style='color:#51514a;'><br />&nbsp;&nbsp;Are you sure , you want to remove this user ?...</td></tr>";
	showContent +=  '<tr><td height="60" valign="middle" align="left" colspan="2">&nbsp;&nbsp;<a style="cursor:pointer" onclick = "javascript: return true;" style="text-decoration:none;"><img style="border:0px" height="21px" width="34px" src="/templates/images/yes.jpg"/></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:onclick=messageObj.close();" style="text-decoration:none;"><img style="border:0px" height="21px" width="34px" src="/templates/images/no.jpg"/></a></td></tr>';
	showContent +=  '</table>';
 	messageContent=showContent;

	if(window.$("loginFormDiv") != null){
		leftPosition="";
	}
	else{
		leftPosition="";
	}
	displayStaticMessage(messageContent,250,110);

	return false;
}

function showFilterMenu(){
	if ($('filterMenu').style.display == 'none') {
		$('filterMenu').show();
	}
	else{
		$('filterMenu').hide();
		$('filterItems').hide();
	}
}

function showFilters(typeNo){
	$('filterItems').show();
	if(typeNo == 1){
		$('dateFilterHead').update('Booking date based filter.');
		$('filterType').value = typeNo;
		$('dateFilter').show();
		$('subUserFilter').hide();
		$('fromFilterDate').value = '';
		$('toFilterDate').value = '';
	}
	else if(typeNo == 2){
		$('dateFilterHead').update('Travel date based filter.');
		$('filterType').value = typeNo;
		$('dateFilter').show();
		$('subUserFilter').hide();
		$('fromFilterDate').value = '';
		$('toFilterDate').value = '';
	}
	else if(typeNo == 3){
		$('filterType').value = typeNo;
		$('dateFilter').hide();
		$('subUserFilter').show();
	}
}

function  checkUserTypes(tdid,inputid){
	var data = 'emailId='+$(inputid).value;
    var ajUserTypes = new Ajax.Request("/get-user-types.html", {
        method: 'post',
        parameters: data,
        onComplete: function(typesReq){
        $(tdid).update(typesReq.responseText);
        var re = /(<select)/i;
		if(typesReq.responseText.match( re )){
			$(tdid+'Td').show();
			$(tdid+'Label').show();
			$(tdid).show();
		//	$('DHTMLSuite_modalBox_contentDiv').style.height = '219px';
		}
		else{
			$(tdid+'Td').hide();
			$(tdid +'Label').hide();
			//$('DHTMLSuite_modalBox_contentDiv').style.height = '191px';
		}       
			//var userTypesJSON = typesReq.responseText.evalJSON(true);
			/*if(userTypesJSON.count > 1){
				$('userTypeTitle').show();
				if(userTypesJSON.Corporates){
					selectTag += '<option value="1">Corporates</option>';
				}

				if(userTypesJSON.SubAgency){
					selectTag += '<option value="3">Sub Agency</option>';
				}

				if(userTypesJSON.Guest){
					selectTag += '<option value="2">Guest</option>';
				}

				if(userTypesJSON.SubUser){
					selectTag += '<option value="subuser">Sub User</option>';
				}
				selectTag += '</select>';

				$('userTypes').update(selectTag);
			}
			else{
				$('userTypeTitle').hide();
				if(userTypesJSON.Corporates){
					selectTag = '<input type="hidden" id="userType" name="auth[userType]" value="'+userTypesJSON.Corporates +'" />';
				}

				if(userTypesJSON.SubAgency){
					selectTag = '<input type="hidden" id="userType" name="auth[userType]" value="'+userTypesJSON.Corporates +'" />';
				}

				if(userTypesJSON.Guest){
					selectTag = '<input type="hidden" id="userType" name="auth[userType]" value="'+userTypesJSON.Corporates +'" />';
				}

				if(userTypesJSON.SubUser){
					selectTag = '<input type="hidden" id="userType" name="auth[userType]" value="'+userTypesJSON.Corporates +'" />';
				}
				$('userTypes').update(selectTag);
			}*/
        }
    });
}

function copyTolead(){
	var flname = $('customer_name').value.split(" ");
	//$("leadtitle").value = $("title").value;
	$("leadfname").value = flname[0];
	flname[0] = "";
	$("leadlname").value = flname.join(" ").strip();
	$("leadmobileno").value = $("contact_number").value;
	$("leademail").value = $("contact_email").value;
}


/***********************************************
* Cool DHTML tooltip script II- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
***********************************************/

var offsetfromcursorX=12 //Customize x offset of tooltip
var offsetfromcursorY=10 //Customize y offset of tooltip

var offsetdivfrompointerX=10 //Customize x offset of tooltip DIV relative to pointer image
var offsetdivfrompointerY=14 //Customize y offset of tooltip DIV relative to pointer image. Tip: Set it to (height_of_pointer_image-1).

document.write('<div id="dhtmltooltip"></div>') //write out tooltip DIV
document.write('<img id="dhtmlpointer" src="/templates/images/arrow2.gif">') //write out pointer image

var ie=document.all
var ns6=document.getElementById && !document.all
var enabletip=false
if (ie||ns6)
var tipobj=document.all? document.all["dhtmltooltip"] : document.getElementById? document.getElementById("dhtmltooltip") : ""

var pointerobj=document.all? document.all["dhtmlpointer"] : document.getElementById? document.getElementById("dhtmlpointer") : ""

function ietruebody(){
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

function ddrivetip(thetext, thewidth, thecolor){
if (ns6||ie){
if (typeof thewidth!="undefined") tipobj.style.width=thewidth+"px"
if (typeof thecolor!="undefined" && thecolor!="") tipobj.style.backgroundColor=thecolor
tipobj.innerHTML=thetext
enabletip=true
return false
}
}

function positiontip(e){
if (enabletip){
var nondefaultpos=false
var curX=(ns6)?e.pageX : event.clientX+ietruebody().scrollLeft;
var curY=(ns6)?e.pageY : event.clientY+ietruebody().scrollTop;
//Find out how close the mouse is to the corner of the window
var winwidth=ie&&!window.opera? ietruebody().clientWidth : window.innerWidth-20
var winheight=ie&&!window.opera? ietruebody().clientHeight : window.innerHeight-20

var rightedge=ie&&!window.opera? winwidth-event.clientX-offsetfromcursorX : winwidth-e.clientX-offsetfromcursorX
var bottomedge=ie&&!window.opera? winheight-event.clientY-offsetfromcursorY : winheight-e.clientY-offsetfromcursorY

var leftedge=(offsetfromcursorX<0)? offsetfromcursorX*(-1) : -1000

//if the horizontal distance isn't enough to accomodate the width of the context menu
if (rightedge<tipobj.offsetWidth){
//move the horizontal position of the menu to the left by it's width
tipobj.style.left=curX-tipobj.offsetWidth+"px"
nondefaultpos=true
}
else if (curX<leftedge)
tipobj.style.left="5px"
else{
//position the horizontal position of the menu where the mouse is positioned
tipobj.style.left=curX+offsetfromcursorX-offsetdivfrompointerX+"px"
pointerobj.style.left=curX+offsetfromcursorX+"px"
}

//same concept with the vertical position
if (bottomedge<tipobj.offsetHeight){
tipobj.style.top=curY-tipobj.offsetHeight-offsetfromcursorY+"px"
nondefaultpos=true
}
else{
tipobj.style.top=curY+offsetfromcursorY+offsetdivfrompointerY+"px"
pointerobj.style.top=curY+offsetfromcursorY+"px"
}
tipobj.style.visibility="visible"
if (!nondefaultpos)
pointerobj.style.visibility="visible"
else
pointerobj.style.visibility="hidden"
}
}

function hideddrivetip(){
if (ns6||ie){
enabletip=false
tipobj.style.visibility="hidden"
pointerobj.style.visibility="hidden"
tipobj.style.left="-1000px"
tipobj.style.backgroundColor=''
tipobj.style.width=''
}
}

document.onmousemove=positiontip


/*checkBlank function is used to validate if the passed element in null or contains a value. The function is used in input types like text, checkbox, radiobutton and textareas*/
function checkBlank(elementId){
	if (window.$(elementId) !== null) {
   		if ($(elementId).value.strip() === "") {
   			errors = 1;
			$('err_' + elementId).update($(elementId).title);
    }
    else {
   			$('err_' + elementId).update('');
   	}
   }
}

function checkBlankWarning(elementId){

	if (window.$(elementId) !== null) {
   		if ($(elementId).value.strip() === "") {
   			warningErrors = 1;
		//	$('err_' + elementId).update($(elementId).title);
    }
    else {
   			//$('err_' + elementId).update('');
   	}
   }
}

/*checkBlankSelect function is used to validate if the passed element is selected or not. The function is used in  select -option*/
function checkBlankSelect(elementId){

	if (window.$(elementId) !== null) {
   		if ($(elementId).options[$(elementId).selectedIndex].value.strip() === "") {
   			errors = 1;
			$('err_' + elementId).update($(elementId).title);
    }
    else {
   			$('err_' + elementId).update('');
   	}
   }
}
/*checkEmail function is used to validate if the passed element contains a valid emalid. The function also checks if the emailid already exist in the database id the table name is passed. */
function checkEmail(elementId,tableName){

	if (window.$(elementId) !== null) {
   		if ($(elementId).value.strip() === "") {
   			errors = 1;
			$('err_' + elementId).update($(elementId).title);
    }
    else {
   			if (checkEmailSyntax(elementId)) {
				if (tableName != '') {
					checkEmailExist(elementId, tableName);
					if (error2 == 1) {
						errors = 1;
					}
				}
			}
			else{
				errors = 1;
				$('err_' + elementId).update($(elementId).title);
			}
   	}
   }
}

function checkEmailSyntax(elementId){
	if ($(elementId).value.strip() === "") {
		$('err_' + elementId).update($(elementId).title);
	}
	else {
		var emailReg = /^(([^<>()\[\]\\.,;:\s@\"]+(\.[^<>()\[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
		email = $(elementId).value;
		if (!email.match(emailReg)) {
			//$('err_' + elementId).update($(elementId).title);
			return false;
		}
		else {
			$('err_' + elementId).update('');
			return true;
		}
	}
}

function checkEmailExist(elementId,tableName){
		var data = 'email=' + $(elementId).value + '&tablename='+tableName;
		var aj = new Ajax.Request("/checkEmail.html", {
			method: 'post',
			parameters: data,
			onComplete: function(msg){
				var custAuth = msg.responseText.evalJSON(true);
				if (custAuth.success == "false") {
					errors2 = 1;
					$('err_' + elementId).update('Email already exist. Enter a new one!');
					if((window.$('custInfo') != null) && ($('custInfo').value == "1")){
						errors2 = 0;
						$('err_' + elementId).update('');
						$('divConfirmEmailLabel').hide();
						$('divConfirmEmailInput').hide();
						$("guest_id").value = custAuth.custId;
						$("guestLogged").value = "2";
						$("loginDone").value = "2";
					}
				}
				else {
					errors2 = 0;
					$('err_' + elementId).update('');
				}
			}
		});
}

function checkEmailConfirm(elementId1,elementId2){
	if((window.$(elementId1) != null) && (window.$(elementId2) != null)){
		if ($(elementId2).value.strip() != "")  {
			if($(elementId1).value.strip() != $(elementId2).value.strip()){
				$('err_'+elementId2).update("Repeat the email id for confirmation");
			   	errors = 1;
			}
			else{
				errors = 0;
				$('err_'+elementId2).update('');
			}

		}
		else{
		   	$('err_'+elementId2).update("Repeat the email id for confirmation");
			errors = 1;
		}
	}
}

function checkForgotEmail(elementId,tableName){
	if (window.$(elementId) !== null) {
   		if ($(elementId).value.strip() === "") {
   			errors = 1;
   				$('err_' + elementId).update($(elementId).title);
    }
    else {
   			if (checkEmailSyntax(elementId)) {
				var data = 'email=' + $(elementId).value + '&tablename='+tableName;
				var aj = new Ajax.Request("/checkEmail.html", {
				method: 'post',
				parameters: data,
				onComplete: function(msg){
				if (msg.responseText != "false") {
					errors = 1;
					$('err_' + elementId).update('Email does not exist. Enter a new one!');
				}
				else {
					$('err_' + elementId).update('');
				}
			}
		});
			}
			else{
				errors = 1;
				$('err_' + elementId).update($(elementId).title);
			}
   	}
   }
}

function validateComboDates(day,month,year,errdivid, errorText){
	if((day.strip() == '') || (month.strip() == '') || (year.strip() == '')){
		errors = 1;
		$(errdivid).update(errorText);
	}
	else{
		$(errdivid).update('');
	}

}

function validateComboDatesWarning(day,month,year,errdivid, errorText){
	if((day.strip() == '') || (month.strip() == '') || (year.strip() == '')){
		warningErrors = 1;
	//	$(errdivid).update(errorText);
	}
	else{
		//$(errdivid).update('');
	}

}

function reKeyPress(event, keyRE){
    var strr = "";
    for (var i in event) {
        strr += "\n" + i + " - " + event[i];
    }

    if ((typeof(event.keyCode) != 'undefined' && event.keyCode > 0 && String.fromCharCode(event.keyCode).search(keyRE) != (-1)) ||
    (typeof(event.charCode) != 'undefined' && event.charCode > 0 && String.fromCharCode(event.charCode).search(keyRE) != (-1)) ||
    (typeof(event.charCode) != 'undefined' && event.charCode != event.keyCode && typeof(event.keyCode) != 'undefined' && event.keyCode.toString().search(/^(8|9|13|45|46|35|36|37|39)$/) != (-1)) ||
    (typeof(event.charCode) != 'undefined' && event.charCode == event.keyCode && typeof(event.keyCode) != 'undefined' && event.keyCode.toString().search(/^(8|9|13)$/) != (-1))) {

        return true;
    }
    else {
        return false;
    }
}



var errors = 0;
var error2 = 0;
var tot_error = 0;
var warningErrors = 0;
function validateBookingData(){
	tot_error = 0;
	if(!infoValidation()){
		tot_error = 1;
	}
	if(!registrationvalidate()){
		tot_error = 1;
	}
	 if (tot_error === 0) {
		 if(warningErrors != 0){
	 		if(confirm("Passport details of the given PAX is not seems to be given. Do you want to contine?")){ 		
	 			confirmFlight();
	 			return false;
	 		}
	 	}
	 	else{
	 		confirmFlight();
	 		return false;
	 	}
    }
    else {
         return false;
    }
}
function infoValidation(){
	errors = 0;
	checkBlankSelect('leadtitle');
	checkBlank('leadfname');
	checkBlank('leadlname');
	checkEmail('leademail','');
	checkBlank('leadmobileno');
	if(summary.triptype > 19){
		checkBlankWarning('leadpassport_no');
		checkBlankWarning('leadpissue');
		checkBlankWarning('leadnationality');
		validateComboDatesWarning($('leadpassday').options[$('leadpassday').selectedIndex].value,$('leadpassmonth').options[$('leadpassmonth').selectedIndex].value,$('leadpassyear').options[$('leadpassyear').selectedIndex].value, 'errleadpassport', 'Invalid Passport Date');
	}
	validateComboDates($('leadday').options[$('leadday').selectedIndex].value,$('leadmonth').options[$('leadmonth').selectedIndex].value,$('leadyear').options[$('leadyear').selectedIndex].value,'errleadbirthdate', 'Invalid Date of Birth');
	checkAdultList();
	checkChildList();
	checkInfantList();

    if (errors === 0) {
        return true;
    }
    else {
        return false;
    }

}

function registrationvalidate(){
	errors = 0;
	checkBlankSelect('title');
	checkBlank('firstname');
	checkBlank('lastname');
	checkBlank('mobileno');
	checkBlank('address1');
	checkBlank('city');
	checkBlank('state');
	checkBlank('country');
	checkBlank('pincode');
	checkBlank('corporate_name');
	
	checkBlank('customer_name');
	checkBlank('contact_person');
	checkBlank('customer_address');
	checkBlank('contact_address');
	checkBlank('contact_number');
	checkEmail('contact_email','');
	
	checkBlank('contact_no');
	checkBlank('contactAddress');
	checkBlank('corporate_name');
	checkBlank('corporate_name');
	checkEmail('emailid_ind','bl_customer_register');
	checkEmail('emailid_cor','customer_master');
	checkEmail('emailid_ag','customer_master');
	if((window.$('guestLogged')!= null) && (window.$('agentLogged')!= null)){
		if(($('guestLogged').value == 0) && ($('agentLogged').value == 0)){
			checkEmailConfirm('emailid_ind','confirmEmailid');
		}
	}
	checkBlank('agency_name');
	checkBlank('rqCode');
    if (errors === 0) {
		return true;
    }
    else {
        return false;
    }

}

function feedValidation(){
	errors = 0;
	checkBlank('feedBackName');
	checkBlank('address1');
	checkEmail('emailid','');
	checkBlank('feedPhone');
	checkBlank('fmsg');
	checkBlank('rqCode');
	if (errors === 0) {
        return true;
    }
    else {
        return false;
    }
}

function subUserValidation(){
	errors = 0;
	checkBlank('subusername');
	checkBlank('address');
	checkBlank('phoneno');
	checkEmail('emailid','sub_users');
	checkBlank('password');
	checkBlank('approved');
	if (errors === 0) {
        return true;
    }
    else {
        return false;
    }
}

function agentFrmValidation(){
	errors = 0;
	checkBlank('customer_name');
	checkBlank('contact_person');
	checkBlank('customer_address');
	checkEmail('emailid','customer_master');
	checkBlank('contact_address');
	checkBlank('contact_number');

	if (errors === 0) {
        return true;
    }
    else {
        return false;
    }
}

function loginValidate(){
	chkLoginEmail();
	chkPassword();

    if (errors === 0) {
		logMeIn();
        return true;
    }
    else {
    errors = 0;
        return false;
    }
}

function packagevalidate(){
        checkBlank('noofpassengers1');
        checkBlank('noofchild2');
        categoryHtlValidate();
        checkBlank('cusName');
        preferredpackValidate();
        requiredpckvalidate();
        checkBlank('single');
        tourdatevalidate()
		checkEmail('emailId','');
	if(error==1) {
	    error = 0;
		return false;
		}
	else{
		return true;
	}

}

function forgotPasswordValidate(){
errors = 0;
	checkForgotEmail('forgotPasswordEmailid','bl_customer_register');

	if (errors === 0) {
		getForgotPassword();
        return true;
    }
    else {
        return false;
    }
}

function checkAdultList(){
	for(var i=0;i<$('hidAdultCount').value-1;i++){
		checkBlank('adulttitle_'+i);
		checkBlank('adultfname_'+i);
		checkBlank('adultlname_'+i);
		if(summary.triptype > 19){
			checkBlankWarning('adultpassport_no_'+i);
			checkBlankWarning('adultpissue_'+i);
			checkBlankWarning('adultnationality_'+i);
			validateComboDatesWarning($('adultpassday_'+i).options[$('adultpassday_'+i).selectedIndex].value,$('adultpassmonth_'+i).options[$('adultpassmonth_'+i).selectedIndex].value,$('adultpassyear_'+i).options[$('adultpassyear_'+i).selectedIndex].value, 'erradultpassport_'+i, 'Invalid Passport Date');
		}
		validateComboDates($('adultday_'+i).options[$('adultday_'+i).selectedIndex].value,$('adultmonth_'+i).options[$('adultmonth_'+i).selectedIndex].value,$('adultyear_'+i).options[$('adultyear_'+i).selectedIndex].value, 'erradultbirthdate_'+i, 'Invalid Date of Birth');
	}
}

function checkChildList(){
	for(var i=0;i<$('hidChildCount').value;i++){
		checkBlank('childtitle_'+i);
		checkBlank('childfname_'+i);
		checkBlank('childlname_'+i);
		if(summary.triptype > 19){
			checkBlankWarning('childpassport_no_'+i);
			checkBlankWarning('childpissue_'+i);
			checkBlankWarning('childnationality_'+i);
			validateComboDatesWarning($('childpassday_'+i).options[$('childpassday_'+i).selectedIndex].value,$('childpassmonth_'+i).options[$('childpassmonth_'+i).selectedIndex].value,$('childpassyear_'+i).options[$('childpassyear_'+i).selectedIndex].value,'errchildpassport_'+i, 'Invalid Passport Date');
		}
		validateComboDates($('childday_'+i).options[$('childday_'+i).selectedIndex].value,$('childmonth_'+i).options[$('childmonth_'+i).selectedIndex].value,$('childyear_'+i).options[$('childyear_'+i).selectedIndex].value,'errchildbirthdate_'+i, 'Invalid Date of Birth');
	}
}

function checkInfantList(){
	for(var i=0;i<$('hidInfantCount').value;i++){
		checkBlank('infanttitle_'+i);
		checkBlank('infantfname_'+i);
		checkBlank('infantlname_'+i);
		if(summary.triptype > 19){
			checkBlankWarning('infantpassport_no_'+i);
			checkBlankWarning('infantpissue_'+i);
			checkBlankWarning('infantnationality_'+i);
			validateComboDatesWarning($('infantpassday_'+i).options[$('infantpassday_'+i).selectedIndex].value,$('infantpassmonth_'+i).options[$('infantpassmonth_'+i).selectedIndex].value,$('infantpassyear_'+i).options[$('infantpassyear_'+i).selectedIndex].value,'errinfantpassport_'+i, 'Invalid Passport Date');
		}
		validateComboDates($('infantday_'+i).options[$('infantday_'+i).selectedIndex].value,$('infantmonth_'+i).options[$('infantmonth_'+i).selectedIndex].value,$('infantyear_'+i).options[$('infantyear_'+i).selectedIndex].value,'errinfantbirthdate_'+i, 'Invalid Date of Birth');
	}
}

function chkAirlines(){
    if ($("frequentno").value.strip() !== "") {
		if ($("airlines").value.strip() === "") {
        	//$('errairlines').update("* Please select the airline.");
        	$("airlines").removeClassName('city-select');
			$("airlines").addClassName('error_select');
			$("airlines").options[0].text = "Select the airline";
        	errors = 1;
			error2 = 1;
    	}
    	else {
			error2 = 0;
        	//$('errairlines').update("&nbsp;") ;
    	}
	}
	else {
        $('errairlines').update("&nbsp;") ;
    }

}

function categoryHtlValidate()
        {

	if (($('catHotel').value != "00")){
		$('errcatHotel').update('');

		}
		else{
			$('errcatHotel').update('Select category');
			error = 1;
			}
	}

function tourdatevalidate()
{

	if (($('startingtourMonth').value != "00") || ($('startingtourDay').value != "00") || ($('startingtourYear').value != "00") || ($('startingtourTime').value != "00") ){
		$('errstartingtourTime').update('');

		}
		else{
			$('errstartingtourTime').update('Select Date');
			error = 1;
			}
	}

function preferredpackValidate()
        {

	if (($('preferred1').value != "00")){
		$('errpreferred1').update('');

		}
		else{
			$('errpreferred1').update('Select Preferred meals');
			error = 1;
			}
	}
	function requiredpckvalidate()
{

	if ((($('singleR').value != "0") && ($('singleR').value != null)) ||  (($('doubleR').value != "0") && ($('doubleR').value != null)) || (($('tripleR').value != "0") && ($('tripleR').value != null))){
		$('errrequiredR').update('');

		}
		else{
			$('errrequiredR').update('Select No of rooms required');
			error = 1;
			}
	}


// script.aculo.us slider.js v1.8.1, Thu Jan 03 22:07:12 -0500 2008

// Copyright (c) 2005-2007 Marty Haught, Thomas Fuchs 
//
// script.aculo.us is freely distributable under the terms of an MIT-style license.
// For details, see the script.aculo.us web site: http://script.aculo.us/

if (!Control) var Control = { };

// options:
//  axis: 'vertical', or 'horizontal' (default)
//
// callbacks:
//  onChange(value)
//  onSlide(value)
Control.Slider = Class.create({
  initialize: function(handle, track, options) {
    var slider = this;
    
    if (Object.isArray(handle)) {
      this.handles = handle.collect( function(e) { return $(e) });
    } else {
      this.handles = [$(handle)];
    }
    
    this.track   = $(track);
    this.options = options || { };

    this.axis      = this.options.axis || 'horizontal';
    this.increment = this.options.increment || 1;
    /**
     * Added By Param
     * This option sets how many divisions you need in the slider tray within the specified range
     */
    this.divisions     = this.options.divisions || 1;
    this.step      = parseInt(this.options.step || '1');
    this.range     = this.options.range || $R(0,1);
    
    this.value     = 0; // assure backwards compat
    this.values    = this.handles.map( function() { return 0 });
    this.spans     = this.options.spans ? this.options.spans.map(function(s){ return $(s) }) : false;
    this.options.startSpan = $(this.options.startSpan || null);
    this.options.endSpan   = $(this.options.endSpan || null);

    this.restricted = this.options.restricted || false;

    this.maximum   = this.options.maximum || this.range.end;
    this.minimum   = this.options.minimum || this.range.start;

    // Will be used to align the handle onto the track, if necessary
    this.alignX = parseInt(this.options.alignX || '0');
    this.alignY = parseInt(this.options.alignY || '0');
    
    this.trackLength = this.maximumOffset() - this.minimumOffset();

    this.handleLength = this.isVertical() ? 
      (this.handles[0].offsetHeight != 0 ? 
        this.handles[0].offsetHeight : this.handles[0].style.height.replace(/px$/,"")) : 
      (this.handles[0].offsetWidth != 0 ? this.handles[0].offsetWidth : 
        this.handles[0].style.width.replace(/px$/,""));

    this.active   = false;
    this.dragging = false;
    this.disabled = false;

    if (this.options.disabled) this.setDisabled();

    // Allowed values array
    if (this.divisions > 1) {
	this.allowedValues = new Array(this.divisions);
    	this.allowedValues[0] = this.range.start;
    	this.allowedValues[this.divisions - 1] = this.range.end;
    	for (var i=1;i<this.divisions-1;i++) {
    		this.allowedValues[i] = this.range.start + (((this.range.end-this.range.start)/this.divisions)*i);
    		this.allowedValues[i] = parseInt(""+this.allowedValues[i]);
    	}
    } else {
    	this.allowedValues = this.options.values ? this.options.values.sortBy(Prototype.K) : false;
    }
    if (this.allowedValues) {
      this.minimum = this.allowedValues.min();
      this.maximum = this.allowedValues.max();
    }

    this.eventMouseDown = this.startDrag.bindAsEventListener(this);
    this.eventMouseUp   = this.endDrag.bindAsEventListener(this);
    this.eventMouseMove = this.update.bindAsEventListener(this);

    // Initialize handles in reverse (make sure first handle is active)
    this.handles.each( function(h,i) {
      i = slider.handles.length-1-i;
      slider.setValue(parseFloat(
        (Object.isArray(slider.options.sliderValue) ? 
          slider.options.sliderValue[i] : slider.options.sliderValue) || 
         slider.range.start), i);
      h.makePositioned().observe("mousedown", slider.eventMouseDown);
    });
    
    this.track.observe("mousedown", this.eventMouseDown);
    document.observe("mouseup", this.eventMouseUp);
    document.observe("mousemove", this.eventMouseMove);
    
    this.initialized = true;
  },
  dispose: function() {
    var slider = this;    
    Event.stopObserving(this.track, "mousedown", this.eventMouseDown);
    Event.stopObserving(document, "mouseup", this.eventMouseUp);
    Event.stopObserving(document, "mousemove", this.eventMouseMove);
    this.handles.each( function(h) {
      Event.stopObserving(h, "mousedown", slider.eventMouseDown);
    });
  },
  setDisabled: function(){
    this.disabled = true;
  },
  setEnabled: function(){
    this.disabled = false;
  },  
  getNearestValue: function(value){
    if (this.allowedValues){
      if (value >= this.allowedValues.max()) return(this.allowedValues.max());
      if (value <= this.allowedValues.min()) return(this.allowedValues.min());
      
      var offset = Math.abs(this.allowedValues[0] - value);
      var newValue = this.allowedValues[0];
      this.allowedValues.each( function(v) {
        var currentOffset = Math.abs(v - value);
        if (currentOffset <= offset){
          newValue = v;
          offset = currentOffset;
        } 
      });
      return newValue;
    }
    if (value > this.range.end) return this.range.end;
    if (value < this.range.start) return this.range.start;
    return value;
  },
  setValue: function(sliderValue, handleIdx){
    if (!this.active) {
      this.activeHandleIdx = handleIdx || 0;
      this.activeHandle    = this.handles[this.activeHandleIdx];
      this.updateStyles();
    }
    handleIdx = handleIdx || this.activeHandleIdx || 0;
    if (this.initialized && this.restricted) {
      if ((handleIdx>0) && (sliderValue<this.values[handleIdx-1]))
        sliderValue = this.values[handleIdx-1];
      if ((handleIdx < (this.handles.length-1)) && (sliderValue>this.values[handleIdx+1]))
        sliderValue = this.values[handleIdx+1];
    }
    sliderValue = this.getNearestValue(sliderValue);
    this.values[handleIdx] = sliderValue;
    this.value = this.values[0]; // assure backwards compat
    
    this.handles[handleIdx].style[this.isVertical() ? 'top' : 'left'] = this.translateToPx(sliderValue);
    
    this.drawSpans();
    if (!this.dragging || !this.event) this.updateFinished();
  },
  setValueBy: function(delta, handleIdx) {
    this.setValue(this.values[handleIdx || this.activeHandleIdx || 0] + delta, 
      handleIdx || this.activeHandleIdx || 0);
  },
  translateToPx: function(value) {
    return Math.round(
      ((this.trackLength-this.handleLength)/(this.range.end-this.range.start)) * 
      (value - this.range.start)) + "px";
  },
  translateToValue: function(offset) {
    return ((offset/(this.trackLength-this.handleLength) * 
      (this.range.end-this.range.start)) + this.range.start);
  },
  getRange: function(range) {
    var v = this.values.sortBy(Prototype.K); 
    range = range || 0;
    return $R(v[range],v[range+1]);
  },
  minimumOffset: function(){
    return(this.isVertical() ? this.alignY : this.alignX);
  },
  maximumOffset: function(){
    return(this.isVertical() ? 
      (this.track.offsetHeight != 0 ? this.track.offsetHeight :
        this.track.style.height.replace(/px$/,"")) - this.alignY : 
      (this.track.offsetWidth != 0 ? this.track.offsetWidth : 
        this.track.style.width.replace(/px$/,"")) - this.alignX);
  },  
  isVertical:  function(){
    return (this.axis == 'vertical');
  },
  drawSpans: function() {
    var slider = this;
    if (this.spans)
      $R(0, this.spans.length-1).each(function(r) { slider.setSpan(slider.spans[r], slider.getRange(r)) });
    if (this.options.startSpan)
      this.setSpan(this.options.startSpan,
        $R(0, this.values.length>1 ? this.getRange(0).min() : this.value ));
    if (this.options.endSpan)
      this.setSpan(this.options.endSpan, 
        $R(this.values.length>1 ? this.getRange(this.spans.length-1).max() : this.value, this.maximum));
  },
  setSpan: function(span, range) {
    if (this.isVertical()) {
      span.style.top = this.translateToPx(range.start);
      span.style.height = this.translateToPx(range.end - range.start + this.range.start);
    } else {
      span.style.left = this.translateToPx(range.start);
      span.style.width = this.translateToPx(range.end - range.start + this.range.start);
    }
  },
  updateStyles: function() {
    this.handles.each( function(h){ Element.removeClassName(h, 'selected') });
    Element.addClassName(this.activeHandle, 'selected');
  },
  startDrag: function(event) {
    if (Event.isLeftClick(event)) {
      if (!this.disabled){
        this.active = true;
        
        var handle = Event.element(event);
        var pointer  = [Event.pointerX(event), Event.pointerY(event)];
        var track = handle;
        if (track==this.track) {
          var offsets  = Position.cumulativeOffset(this.track); 
          this.event = event;
          this.setValue(this.translateToValue( 
           (this.isVertical() ? pointer[1]-offsets[1] : pointer[0]-offsets[0])-(this.handleLength/2)
          ));
          var offsets  = Position.cumulativeOffset(this.activeHandle);
          this.offsetX = (pointer[0] - offsets[0]);
          this.offsetY = (pointer[1] - offsets[1]);
        } else {
          // find the handle (prevents issues with Safari)
          while((this.handles.indexOf(handle) == -1) && handle.parentNode) 
            handle = handle.parentNode;
            
          if (this.handles.indexOf(handle)!=-1) {
            this.activeHandle    = handle;
            this.activeHandleIdx = this.handles.indexOf(this.activeHandle);
            this.updateStyles();
            
            var offsets  = Position.cumulativeOffset(this.activeHandle);
            this.offsetX = (pointer[0] - offsets[0]);
            this.offsetY = (pointer[1] - offsets[1]);
          }
        }
      }
      Event.stop(event);
    }
  },
  update: function(event) {
   if (this.active) {
      if (!this.dragging) this.dragging = true;
      this.draw(event);
      if (Prototype.Browser.WebKit) window.scrollBy(0,0);
      Event.stop(event);
   }
  },
  draw: function(event) {
    var pointer = [Event.pointerX(event), Event.pointerY(event)];
    var offsets = Position.cumulativeOffset(this.track);
    pointer[0] -= this.offsetX + offsets[0];
    pointer[1] -= this.offsetY + offsets[1];
    this.event = event;
    this.setValue(this.translateToValue( this.isVertical() ? pointer[1] : pointer[0] ));
    if (this.initialized && this.options.onSlide)
      this.options.onSlide(this.values.length>1 ? this.values : this.value, this);
  },
  endDrag: function(event) {
    if (this.active && this.dragging) {
      this.finishDrag(event, true);
      Event.stop(event);
    }
    this.active = false;
    this.dragging = false;
  },  
  finishDrag: function(event, success) {
    this.active = false;
    this.dragging = false;
    this.updateFinished();
  },
  updateFinished: function() {
    if (this.initialized && this.options.onChange) 
      this.options.onChange(this.values.length>1 ? this.values : this.value, this);
    this.event = null;
  }
});


var passArr = new Array();
var p = 0;
function showPassengersPanel(){
	//var showContent = $('popuppassengerlist').innerHTML;
	var showContent = '<table width="100%" cellspacing="0" cellpadding="0" border="0" class="innerClass">';
	showContent +=  '<tr><tr><td align="left" class="passtopdiv">&nbsp;&nbsp;<b style="color:#ffffff;">Add Passengers</b></td><td align="right" class="passtopdiv"><a href="javascript:onclick=messageObj.close();" style="text-decoration:none;" ><img style="border:0px" src="/templates/images/close.gif"/></a></td></tr>';
	showContent +=  "<tr><td style='color:#ffffff;'>";
	showContent +=  '<ul id="passtabs" class="passtabs">';
	showContent +=  '<li><a href="#" class="tabcontenta_links selected" onclick="return activateTab(\'tabcontenta\', 1, this);">View Passengers</a></li>';
	showContent +=  '<li><a href="#" class="tabcontenta_links notselected" onclick="return activateTab(\'tabcontenta\', 2, this);">Search Passengers</a></li>';
	showContent +=  '<li><a href="#" class="tabcontenta_links notselected" onclick="return activateTab(\'tabcontenta\', 3, this);">Selected Passengers</a></li>';
	showContent +=  '</ul>';
	showContent +=  '</td>';
	showContent +=  '<td align="right"></td></tr>';
	showContent +=  "<tr><td colspan='2' valign='top'>";
	showContent +=  '<div style="width: 100%; height: 370px;"><div id="tabcontenta1" class="tabcontenta" style="display: block;" >';
	showContent +=  '<div id="filter_links" style="display: block;" class="filterdiv" >Filter : <select id="selPasstype" onchange="showPassList();"><option value="all">All</option><option value="lead">Lead</option><option value="adult">Adult</option><option value="child">Child</option><option value="infant">Infant</option></select></div>';
	showContent +=  '<div id="alpa_links" style="display: block;" class="alphadiv" ></div>';
	showContent +=  '<div id="contents_view" style="display: block; padding-top:15px;" ></div></div>';
	showContent +=  '<div id="tabcontenta2" class="tabcontenta" style="display: none;" >';
	showContent +=  '<br /><table width="98%" id="searchPanel" cellspacing="2" cellpadding="2" border="0" align="center"><tbody>';
	showContent +=  '<tr><td align="right">Mode</td><td align="left"><select id="s_mode" name="s_mode" ><option value="1">Start With</option><option value="2">In Between</option><option value="3">Full</option></select></td>';
	showContent +=  '<td align="right">Name</td><td align="left"><input type="text" id="s_name" name="s_name" class="searchTxt" onkeyup="return trapkeypress();" /></td>';
	showContent +=  '<td align="right">Passenger Type</td><td align="left"><select id="sf_Passtype" name="sf_Passtype" ><option value="all">All</option><option value="lead">Lead</option><option value="adult">Adult</option><option value="child">Child</option><option value="infant">Infant</option></select></td>';
	showContent +=  '<td align="right" colspan="2"><input type="button" id="sl_search" name="sl_search" value="Search" onclick="searchPassList();" /></td></tr></tbody></table>';
	showContent +=  '<div id="search_error_view" style="display: block; padding-top:1px; float:right; padding-right:90px; padding-top:15px;"  class="error2" ></div>';
	showContent +=  '<div id="search_contents_view" style="display: block; padding-top:15px;" ></div></div>';
	showContent +=  '<div id="tabcontenta3" class="tabcontenta" style="display: none;" >';
	showContent +=  '<br /><table width="100%" cellspacing="2" cellpadding="2" border="0" id="norecords"><tbody><tr><td align="center"><br/><br/><br/><br/><br/><br/>No records Found</td></tr><tr><td align="center"/></tr></tbody></table>';
	showContent +=  '<br /><table width="98%" align="center" border="1" bordercolor="#000000" cellspacing="2" cellpadding="3" id="pass_selected_view" style="display:none;">';
	showContent +=  '<tr><th>No</th><th>Name</th><th>Date Of Birth</th><th>E-Mail</th><th>Passport No</th><th>Passenger Type</th><th></th></tr></table></div></div>';
	showContent +=  '</td></tr>';
	showContent +=  '<tr><td height="29" valign="middle" align="left" colspan="2" class="passbottomdiv">&nbsp;&nbsp;<a style="cursor:pointer;text-decoration:none;" onclick = "javascript: populatePassData();"><img style="border:0px" src="/templates/images/add.gif"/></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:onclick=messageObj.close();" style="cursor:pointer;text-decoration:none;" ><img style="border:0px" src="/templates/images/pass_cancel.gif"/></a>&nbsp;<span style="padding-bottom:5px;" id="list_error_view" class="error2" ></span></td></tr>';
	showContent +=  '</table>';
	showContent +=  '<input type="hidden" id="passStore" value="|~|" style="width:20px;" /><input type="hidden" id="passlead" value="0" style="width:20px;" /><input type="hidden" id="passadult" value="0" style="width:20px;" /><input type="hidden" id="passchild" value="0" style="width:20px;" /><input type="hidden" id="passinfant" value="0" style="width:20px;" /><input type="hidden" id="allPassengers" value="|~|" style="width:200px;" />';
 	messageContent=showContent;

	if(window.$("loginFormDiv") != null){
		leftPosition="";
	}
	else{
		leftPosition="";
	}
	displayStaticMessage(messageContent,608,447);
	loadChars();

	p = 0;
}

function activateTab(csstag, slno, evtobj){
    $$('.'+csstag +'_links').each(function(c){
        c.removeClassName('selected');
    });
    evtobj.addClassName('selected');
    $$('.'+csstag).invoke('hide');
    $(csstag+slno).show();
    return false;
 }

 function loadChars(){
 	var chars = '';
 	for (i = 65; i < 91; i++) {
		chars += '<a href="#" class="alphas" id="alpha_'+i+'">'+String.fromCharCode(i)+'</a>' + ' ';
	}
	$('alpa_links').update(chars);
	$$('.alphas').each(function(poElement){
         Event.observe(poElement, 'click', alphasEventHandler, true);
      });
 }

 var alphasEventHandler = function(e){
    alphaElement = Event.element(e);
	$$('.alphas').invoke('removeClassName', 'alphaselected');
	alphaElement.addClassName('alphaselected');
	var data = 'alphabet='+alphaElement.innerHTML+'&passSelected='+$('passStore').value+'&selPasstype='+$('selPasstype').value;
    var ut = new Ajax.Request("/show-passenger-list.html", {
        method: 'post',
        parameters: data,
        onComplete: function(responseData){
        	$('contents_view').update(responseData.responseText);
        }
    });
    setTimeout("call_disableChecks()", 100);
   	Event.stop(e);
}

function showPassList(){
	var alpabetSel = '';
	$$('.alphaselected').each(function(selElement){
        alpabetSel = $(selElement).innerHTML;
      });


	var data = 'alphabet='+alpabetSel+'&passSelected='+$('passStore').value+'&selPasstype='+$('selPasstype').value;
    var ut = new Ajax.Request("/show-passenger-list.html", {
        method: 'post',
        parameters: data,
        onComplete: function(responseData){
        	$('contents_view').update(responseData.responseText);
        }
    });
    setTimeout("call_disableChecks()", 100);
}

function showNextPage(page,alphabet){
	var data = 'page='+page+'&alphabet='+alphabet+'&passSelected='+$('passStore').value+'&selPasstype='+$('selPasstype').value;
    var ut = new Ajax.Request("/show-passenger-list.html", {
        method: 'post',
        parameters: data,
        onComplete: function(responseData){
        	$('contents_view').update(responseData.responseText);
        }
    });
	setTimeout("call_disableChecks()", 100);
}

function storePassenger(passid,elementid,passtype){
	if ($(elementid).checked) {
		passArr[p] = passid;
		$('passStore').value = '|~|';
		//$('allPassengers').value = '|~|';
		$('passStore').value += passArr.join('|~|') + '|~|';
		$('allPassengers').value += passid+'-'+passtype+'|~|';
		p++;
		$(elementid).removeClassName(passtype);
		$(elementid).addClassName(passtype+'Selected');
		if(passtype == 'lead'){
			$('passlead').value = (($('passlead').value * 1) + 1);
			disableChecks('lead',1);
		}
		if(passtype == 'adult'){
			$('passadult').value = (($('passadult').value * 1) + 1);
			disableChecks('adult',(($('hidAdultCount').value * 1) - 1));
		}
		if(passtype == 'child'){
			$('passchild').value = (($('passchild').value * 1) + 1);
			disableChecks('child',$('hidChildCount').value);
		}
		if(passtype == 'infant'){
			$('passinfant').value = (($('passinfant').value * 1) + 1);
			disableChecks('infant',$('hidInfantCount').value);
		}
		/*test 1*/
		$('pass_selected_view').show();
		$('norecords').hide();
		var rowid = $("tr_" + passid).rowIndex;
        var x = $("pass_view").rows[rowid].cells;
		var trdata = x[1].innerHTML+' , '+ x[2].innerHTML+' , '+ x[3].innerHTML;
		var passtablerow = $('pass_selected_view').insertRow((p));
		var noColumn = passtablerow.insertCell(0);
		noColumn.innerHTML = p;
        var nameColumn = passtablerow.insertCell(1);
		nameColumn.innerHTML = x[1].innerHTML;
        var dobColumn = passtablerow.insertCell(2);
		dobColumn.innerHTML = x[2].innerHTML;
        var passemailColumn = passtablerow.insertCell(3);
		passemailColumn.innerHTML = x[3].innerHTML;
		var passportnoColumn = passtablerow.insertCell(4);
		passportnoColumn.innerHTML = x[4].innerHTML;
		var passtypeColumn = passtablerow.insertCell(5);
		passtypeColumn.innerHTML = x[5].innerHTML;
        var delColumn = passtablerow.insertCell(6);
		delColumn.innerHTML = '<a href="javascript:onclick=removeSelPassenger('+passid+',\''+elementid+'\',\''+passtype+'\');" style="text-decoration:none;" ><img style="border:0px" src="/templates/images/close.gif"/></a>'
        passtablerow.id = "str_" + passid;
		/*--------------------*/
	}
	else{

		removeSelPassenger(passid,elementid,passtype);

	}
}

function disableChecks(passType,limit){
	if ($('pass'+passType).value == limit) {
		$$('.'+passType).each(function(c){
			if (!c.checked) {
				c.disabled = true;
			}
			else{
				c.removeClassName(passType);
				c.addClassName(passType+'Selected');
			}
		});
	}
}

function call_disableChecks(){
	disableChecks('lead',1);
	disableChecks('adult',(($('hidAdultCount').value * 1) - 1));
	disableChecks('child',$('hidChildCount').value);
	disableChecks('infant',$('hidInfantCount').value);
}

function enableChecks(passType){
	$$('.'+passType).each(function(c){
		c.disabled = false;
	});
	$('pass'+passType).value = (($('pass'+passType).value * 1) - 1);
}

function removeSelPassenger(passid,elementid,passtype){
	var passCleanArr = new Array();
		passArr = passArr.without(passid);
		var j = 0;
		for(var i = 0; i < passArr.length; i++){
			if (passArr[i] != "") {
				passCleanArr[j] = passArr[i];
				j++;
			}
		}
		$('passStore').value = '';
		if (passCleanArr.length > 0) {
			var str = passCleanArr.join('|~|');
			passArr = passCleanArr;
			$('passStore').value = '|~|';
			$('passStore').value += passCleanArr.join('|~|') + '|~|';
			p--;
		}
		else{
			passArr = passCleanArr;
			p = 0;
		}
		enableChecks(passtype);

		if (window.$(elementid)) {
			$(elementid).removeClassName(passtype + 'Selected');
			$(elementid).addClassName(passtype);
		}

		var rowid = $("str_" + passid).rowIndex;
		$('pass_selected_view').deleteRow(rowid);

		var allpasslist = $('allPassengers').value.split(passid+'-'+passtype+'|~|');
		$('allPassengers').value = allpasslist.join('');


	if (window.$("str_" + passid)) {
		var rowid = $("str_" + passid).rowIndex;
		$('pass_selected_view').deleteRow(rowid);
	}
	if (window.$('pass_' + passid)) {
		if ($('pass_' + passid).checked) {
			$('pass_' + passid).checked = false;
		}
	}
	if (p == 0) {
		$('pass_selected_view').hide();
		$('norecords').show();
	}
}

function populatePassData(){
	if ($('allPassengers').value == '|~|') {
		$('list_error_view').update('Please select any passenger.');
	}
	else {
		var data = 'passid=' + $('allPassengers').value;
		var ut = new Ajax.Request("/fetch-passenger-details.html", {
			method: 'post',
			parameters: data,
			onComplete: function(responseData){
				var recordsJSON = responseData.responseText.evalJSON(true);
				//var passname = recordsJSON.lead.passenger_name.split(' ');
				$('leadtitle').value = recordsJSON.lead.leadtitle;
				;
				$('leadfname').value = recordsJSON.lead.leadfname;
				;
				$('leadlname').value = recordsJSON.lead.leadlname;
				;
				$('leademail').value = recordsJSON.lead.passenger_email;
				$('leadmobileno').value = recordsJSON.lead.leadmobileno;
				if(window.$('leadpassport_no')!=null){
					$('leadpassport_no').value = recordsJSON.lead.passport_no;
					$('leadpassday').value = recordsJSON.lead.pday;
					$('leadpassmonth').value = recordsJSON.lead.pmonth;
					$('leadpassyear').value = recordsJSON.lead.pyear;
				}
				$('leademail').value = recordsJSON.lead.passenger_email;
				
				$('leadday').value = recordsJSON.lead.bday;
				$('leadmonth').value = recordsJSON.lead.bmonth;
				$('leadyear').value = recordsJSON.lead.byear;
				if (typeof(recordsJSON.adult) != 'undefined') {
					$noOfAdult = recordsJSON.adult.length;
					for (var a = 0; a < $noOfAdult; a++) {
						//passname = recordsJSON.adult[a].passenger_name.split(' ');
						$('adulttitle_' + a).value = recordsJSON.adult[a].title;
						$('adultfname_' + a).value = recordsJSON.adult[a].lname;
						$('adultlname_' + a).value = recordsJSON.adult[a].fname;
						if(window.$('adultpassport_no_' + a)!=null){
							$('adultpassport_no_' + a).value = recordsJSON.adult[a].passport_no;
							$('adultpassday_' + a).value = recordsJSON.adult[a].pday;
							$('adultpassmonth_' + a).value = recordsJSON.adult[a].pmonth;
							$('adultpassyear_' + a).value = recordsJSON.adult[a].pyear;
						}
						$('adultday_' + a).value = recordsJSON.adult[a].bday;
						$('adultmonth_' + a).value = recordsJSON.adult[a].bmonth;
						$('adultyear_' + a).value = recordsJSON.adult[a].byear;
					}
				}

				if (typeof(recordsJSON.child) != 'undefined') {
					$noOfChild = recordsJSON.child.length;
					for (var a = 0; a < $noOfChild; a++) {
						//passname = recordsJSON.adult[a].passenger_name.split(' ');
						$('childtitle_' + a).value = recordsJSON.child[a].title;
						$('childfname_' + a).value = recordsJSON.child[a].lname;
						$('childlname_' + a).value = recordsJSON.child[a].fname;
						if(window.$('childpassport_no_' + a)!=null){
							$('childpassport_no_' + a).value = recordsJSON.child[a].passport_no;
							$('childpassday_' + a).value = recordsJSON.child[a].pday;
							$('childpassmonth_' + a).value = recordsJSON.child[a].pmonth;
							$('childpassyear_' + a).value = recordsJSON.child[a].pyear;
						}
						$('childday_' + a).value = recordsJSON.child[a].bday;
						$('childmonth_' + a).value = recordsJSON.child[a].bmonth;
						$('childyear_' + a).value = recordsJSON.child[a].byear;
					}
				}

				if (typeof(recordsJSON.infant) != 'undefined') {
					$noOfInfant = recordsJSON.adult.length;
					for (var a = 0; a < $noOfInfant; a++) {
						//passname = recordsJSON.adult[a].passenger_name.split(' ');
						$('infanttitle_' + a).value = recordsJSON.infant[a].title;
						$('infantfname_' + a).value = recordsJSON.infant[a].lname;
						$('infantlname_' + a).value = recordsJSON.infant[a].fname;
						if(window.$('infantpassport_no_' + a)!=null){
							$('infantpassport_no_' + a).value = recordsJSON.infant[a].passport_no;
							$('infantpassday_' + a).value = recordsJSON.infant[a].pday;
							$('infantpassmonth_' + a).value = recordsJSON.infant[a].pmonth;
							$('infantpassyear_' + a).value = recordsJSON.infant[a].pyear;
							$('infantday_' + a).value = recordsJSON.infant[a].bday;
						}
						$('infantmonth_' + a).value = recordsJSON.infant[a].bmonth;
						$('infantyear_' + a).value = recordsJSON.infant[a].byear;
					}
				}
			}
		});
		messageObj.close();
	}

	if ($('list_error_view').innerHTML != '') {
		setTimeout("$('list_error_view').update('')", 2000);
	}
}

function searchPassList(){
	if (trapkeypress()) {
		if ($('s_name').value.length >= 3) {
			var data = 'alphabet=' + $('s_name').value + '&passSelected=' + $('passStore').value + '&selPasstype=' + $('sf_Passtype').value + '&selmode=' + $('s_mode').value;
			var ut = new Ajax.Request("/search-passenger-list.html", {
				method: 'post',
				parameters: data,
				onComplete: function(responseData){
					$('search_contents_view').update(responseData.responseText);
				}
			});
			setTimeout("call_disableChecks()", 100);
		}
		else {
			$('search_error_view').update('Name should have atleast 3 characters.');
			setTimeout("$('search_error_view').update('')", 2000);
		}
	}
	if ($('search_error_view').innerHTML != '') {
		setTimeout("$('search_error_view').update('')", 2000);
	}
}

function showNextSearchPage(page,alphabet){
	var data = 'page='+page+'&alphabet='+alphabet+'&passSelected='+$('passStore').value+'&selPasstype='+$('sf_Passtype').value+'&selmode='+$('s_mode').value;
    var ut = new Ajax.Request("/search-passenger-list.html", {
        method: 'post',
        parameters: data,
        onComplete: function(responseData){
        	$('search_contents_view').update(responseData.responseText);
        }
    });
	setTimeout("call_disableChecks()", 100);
}

/*airport listing functions*/

var selectedType = 0;
function showAirportsPanel(selectType){
	//var showContent = $('popuppassengerlist').innerHTML;
	var showContent = '<table width="100%" cellspacing="0" cellpadding="0" border="0" class="innerClass">';
	showContent +=  '<tr><tr><td align="left" class="passtopdiv">&nbsp;&nbsp;<b style="color:#ffffff;">Select City</b></td><td align="right" class="passtopdiv"><a href="javascript:onclick=messageObj.close();" style="text-decoration:none;" ><img style="border:0px" src="/templates/images/close.gif"/></a></td></tr>';
	showContent +=  "<tr><td style='color:#ffffff;'>";
	showContent +=  '<ul id="passtabs" class="passtabs">';
	showContent +=  '<li><a href="#" class="tabcontenta_links selected" onclick="return activateTab(\'tabcontenta\', 1, this);">View Airports</a></li>';
	showContent +=  '<li><a href="#" class="tabcontenta_links notselected" onclick="return activateTab(\'tabcontenta\', 2, this);">Search Airports</a></li>';
	showContent +=  '</ul>';
	showContent +=  '</td>';
	showContent +=  '<td align="right"></td></tr>';
	showContent +=  "<tr><td colspan='2' valign='top'>";
	showContent +=  '<div style="width: 100%; height: 347px;"><div id="tabcontenta1" class="tabcontenta" style="display: block;" >';
	showContent +=  '<div id="alpa_links" style="display: block;" class="alphadiv" ></div>';
	showContent +=  '<div id="contents_view" style="display: block; padding-top:10px;" ></div></div>';
	showContent +=  '<div id="tabcontenta2" class="tabcontenta" style="display: none;" >';
	showContent +=  '<br /><table width="56%" id="searchPanel" cellspacing="2" cellpadding="2" border="0" align="center"><tbody>';
	showContent +=  '<tr><td align="right"><select id="s_type" name="s_type" onchange="showHideMode();" ><option value="1">City Name</option><option value="2">Airport Code</option></select></td><td align="left"><input type="text" id="s_name" name="s_name" class="searchTxt" onkeyup="return trapkeypress();" /></td>';
	showContent +=  '<td align="right" id="td_Modetxt">Mode</td><td align="left" id="td_Modesel"><select id="s_mode" name="s_mode" ><option value="1">Start With</option><option value="2">In Between</option><option value="3">Full</option></select></td>';
	showContent +=  '<td align="right" colspan="2"><input type="button" id="sl_search" name="sl_search" value="Search" onclick="searchAirportList();" /></td></tr></tbody></table>';
	showContent +=  '<div id="search_error_view" style="display: block; padding-top:1px; float:right; padding-right:90px; padding-top:15px;"  class="error2" ></div>';
	showContent +=  '<div id="search_contents_view" style="display: block; padding-top:15px;" ></div></div>';
	showContent +=  '</td></tr>';
	showContent +=  '<tr><td height="29" valign="middle" align="left" colspan="2" class="passbottomdiv">&nbsp;&nbsp;<a style="cursor:pointer;text-decoration:none;" onclick = "javascript: populateAirData();"><img style="border:0px" src="/templates/images/add.gif"/></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:onclick=messageObj.close();" style="cursor:pointer;text-decoration:none;" ><img style="border:0px" src="/templates/images/pass_cancel.gif"/></a>&nbsp;<span style="padding-bottom:5px;" id="list_error_view" class="error2" ></span></td></tr>';
	showContent +=  '</table>';
	showContent +=  '<input type="hidden" id="airStore" value="'+selectType+'" style="width:200px;" />';

	selectedType = selectType;
 	messageContent=showContent;

	displayStaticMessage(messageContent,608,423);
	loadAirportChars();

	p = 0;
}

 function loadAirportChars(){
 	var chars = '';
 	for (i = 65; i < 91; i++) {
		chars += '<a href="#" class="alphas" id="alpha_'+i+'">'+String.fromCharCode(i)+'</a>' + ' ';
	}
	$('alpa_links').update(chars);
	$$('.alphas').each(function(poElement){
         Event.observe(poElement, 'click', airportAlphasEventHandler, true);
      });
 }

 var airportAlphasEventHandler = function(e){
    alphaElement = Event.element(e);
	$$('.alphas').invoke('removeClassName', 'alphaselected');
	alphaElement.addClassName('alphaselected');
	var data = 'alphabet='+alphaElement.innerHTML;
    var ut = new Ajax.Request("/show-airport-list.html", {
        method: 'post',
        parameters: data,
        onComplete: function(responseData){
        	$('contents_view').update(responseData.responseText);
        }
    });
   	Event.stop(e);
}

function showNextAirportPage(page,alphabet){
	var data = 'page='+page+'&alphabet='+alphabet;
    var ut = new Ajax.Request("/show-airport-list.html", {
        method: 'post',
        parameters: data,
        onComplete: function(responseData){
        	$('contents_view').update(responseData.responseText);
        }
    });
}

function storeAirport(airpcode,city){
	$('airStore').value = selectedType;
	$('airStore').value += '|~|'+airpcode+'|~|'+city;
}

function populateAirData(){
	var airData = $('airStore').value.split('|~|');
	if (airData.length > 1) {
		if (airData[1] != "undefined" || airData[1] != "") {
			if (airData[0] == '1') {
				$('hide_fs_source').value = airData[1];
				$('fs_source').value = airData[2];
			}

			if (airData[0] == '2') {
				$('hide_fs_dest').value = airData[1];
				$('fs_dest').value = airData[2];
			}
			messageObj.close();
		}
		else {
			$('list_error_view').update('Please select any airport.');
		}
	}
	else {
		$('list_error_view').update('Please select any airport.');
	}
	if ($('list_error_view').innerHTML != '') {
		setTimeout("$('list_error_view').update('')", 2000);
	}
}

function searchAirportList(){
	if (trapkeypress()) {
		if ($('s_name').value.length >= 3) {
			var smode;
			if (window.$('s_mode').value) {
				smode = $('s_mode').value;
			}
			var data = 'alphabet=' + $('s_name').value + '&selmode=' + smode + '&category=' + $('s_type').options[$('s_type').selectedIndex].value;
			var ut = new Ajax.Request("/search-airport-list.html", {
				method: 'post',
				parameters: data,
				onComplete: function(responseData){
					$('search_contents_view').update(responseData.responseText);
				}
			});
		}
		else {
			$('search_error_view').update('Name should have atleast 3 characters.');
			setTimeout("$('search_error_view').update('')", 2000);
		}
	}

	if ($('search_error_view').innerHTML != '') {
		setTimeout("$('search_error_view').update('')", 2000);
	}

}

function showHideMode(){
	if($('s_type').options[$('s_type').selectedIndex].value =='2'){
		$('td_Modetxt').hide();
		$('td_Modesel').hide();
	}
	else{
		$('td_Modetxt').show();
		$('td_Modesel').show()
	}
}

function showNextAirSearchPage(page,alphabet){
	var smode;
		if(window.$('s_mode').value){
			smode = $('s_mode').value;
		}
	var data = 'page='+page+'&alphabet='+alphabet+ '&selmode=' + smode + '&category=' + $('s_type').options[$('s_type').selectedIndex].value;
	var ut = new Ajax.Request("/search-airport-list.html", {
        method: 'post',
        parameters: data,
        onComplete: function(responseData){
        	$('search_contents_view').update(responseData.responseText);
        }
    });
}

function trapkeypress()
{
	 var cReg = /^(([^<>()\[\]\\.,;:\s`~\/|?@!#\^\*\"]+(\.[^<>()\[\]\\.,;:\s@\"]+)*))$/;//|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
	 var name = $('s_name').value;
		if (!name.match(cReg)) {
			$('search_error_view').update('Invalid characters are not allowed.');
			return false;
		}
		else{
			$('search_error_view').update('');
			return true;
		}
}


/* Pop-Up Calendar Built from Scratch by Marc Grabanski */
/* ported to prototype dependency and drastically reduced the number of observers */
/* current version unmaintained; porting by Jiju Thomas Mathew; http://www.saturn.in */

popUpCal = Class.create();

popUpCal.prototype = {
    selectedMonth: new Date().getMonth(), // 0-11
    selectedYear: new Date().getFullYear(), // 4-digit year
    selectedDay: new Date().getDate(),
    dateInInput: {},
    inputElements: [],
    calendarId: 'calendarDiv',
    inputClass: 'datePick',
    minDate: null,
    maxDate: null,

	initialize: function () {
        var x = $$('.'+this.inputClass);
        this.minDate = new Date();
        this.maxDate = new Date(this.minDate.getTime() + (364 * 24 * 60 * 60 * 1000));
        if(calendarConfig !== undefined){
            if(calendarConfig.inputClass !== undefined)
                this.inputClass = calendarConfig.inputClass;
            if(calendarConfig.minDate !== undefined)
                this.minDate = calendarConfig.minDate;
            if(calendarConfig.maxDate !== undefined)
                this.maxDate = calendarConfig.maxDate;
        }
        this.inputObj = null;
        if(!$(this.calendarId)){
            var p = '';
            if(Prototype.Browser.IE){
               p = '<iframe id="' + this.calendarId + 'Frame" src="about:blank" frameborder="0" style="display:none"></iframe>';
            }
            p += '<div id="' + this.calendarId + '" class="isCalendarArea"></div>';
            new Insertion.Bottom($$('body')[0], p);
        }
        
        // set the calendar position based on the input position
        for (var i=0; i < x.length; i++) {
           x[i].addClassName('isCalendarArea');
	   this.inputElements.push(x[i].id.toString());
           Event.observe(this.inputElements[i], 'focus', this.popupCalendar.bindAsEventListener(this));
        }
        Event.observe(document, 'click', this.calendarClose.bindAsEventListener(this));
        Event.observe(this.calendarId, 'click', this.calendarClicked.bindAsEventListener(this));
    },
    calendarClicked: function (evt){
        cElem = Event.element(evt);
        var evDone = false;
        if(cElem.hasClassName('monthNav')){
            if(cElem.id.toString() == 'prevMonth')
                this.eventPrevMonth();
            else
                this.eventNextMonth();
        }else if(cElem.hasClassName('sD')){
            this.selectedDay = cElem.innerHTML;
            var sTmp = this.inputObj.id.toString();
            this.dateInInput[sTmp] = new Date(this.selectedYear, this.selectedMonth, this.selectedDay);
            this.inputObj.value = formatDate(this.selectedDay, this.selectedMonth, this.selectedYear);		
            if(calendarConfig.related[sTmp].clear){
                $(calendarConfig.related[sTmp].clear).value = "";
                this.dateInInput[calendarConfig.related[sTmp].clear] = null;
            }
            this.closeCalendar();
        }
        Event.stop(evt);
    },
    calendarClose: function (evt){
        cElem = Event.element(evt);
        if(cElem.hasClassName('isCalendarArea') == false){
            this.closeCalendar();
        }else
            this.calendarClicked(evt);
    },
    closeCalendar: function(){
        $(this.calendarId).hide();
        if(Prototype.Browser.IE){
            $(this.calendarId + 'Frame').hide();
        }    
    },
    popupCalendar: function (evt) {
        this.inputObj = Event.element(evt);

        var sTmp = this.inputObj.id.toString();
        this.dateInInput[sTmp] = this.getDateFromInput(this.inputObj);
        this.selectedYear = this.dateInInput[sTmp].getFullYear();
        this.selectedMonth = this.dateInInput[sTmp].getMonth();
        this.selectedDay = this.dateInInput[sTmp].getDate();
        this.setPos(Event.element(evt)); 
        this.drawCalendar();
    },
    isDateSelected: function(iDate){
       var oIndex = this.inputElements.indexOf(this.inputObj.id.toString());
       if(!this.dateInInput[this.inputElements[oIndex]]) return false;
       var tSelDate = this.dateInInput[this.inputElements[oIndex]];
       return (this.selectedYear == tSelDate.getFullYear() && this.selectedMonth == tSelDate.getMonth() && iDate == tSelDate.getDate());
    },
    setPos: function(inputObj){
        $(this.calendarId).absolutize();
        var tPos = $(inputObj).cumulativeOffset();
        var tHeight = $(inputObj).getHeight();
        $(this.calendarId).setStyle({left: tPos.left + 'px', top: (tPos.top + tHeight + 1) + 'px'});
        $(this.calendarId).show();
        if(Prototype.Browser.IE){
           $(this.calendarId).setStyle({zIndex: 99});
           $(this.calendarId + 'Frame').absolutize();
           $(this.calendarId + 'Frame').setStyle({left: (tPos.left + 1) + 'px', top: (tPos.top + tHeight) + 'px'});
           $(this.calendarId + 'Frame').show();
        }   
    },
    drawCalendar: function () {
		
		var html = '';
		html += '<table id="calendar" cellpadding="0" cellspacing="0"><tr>';
		html += '<th colspan="7" class="calendarHeader">'
		html += '<table cellpadding="0" cellspacing="0" width="100%"><tr><td><a id="prevMonth" class="monthNav">&laquo;</a></td>';
		html += '<td><a class="calTitle">' +getMonthName(this.selectedMonth)+' '+this.selectedYear+ '</a></td>';
		html += '<td><a id="nextMonth" class="monthNav">&raquo;</a></td></tr></table></th>';
		html += '</tr><tr class="weekDaysTitleRow">';
        var weekDays = new Array('S','M','T','W','T','F','S');
        for (var j=0; j<weekDays.length; j++) {
			html += '<td>'+weekDays[j]+'</td>';
        }
		
        var daysInMonth = getDaysInMonth(this.selectedYear, this.selectedMonth);
        var startDay = getFirstDayofMonth(this.selectedYear, this.selectedMonth);
        var numRows = 0;
        var printDate = 1;
        if (startDay != 7) {
            numRows = Math.ceil(((startDay+1)+(daysInMonth))/7); // calculate the number of rows to generate
        }
		
        // calculate number of days before calendar starts
        if (startDay != 7) {
            var noPrintDays = startDay + 1; 
        } else {
            var noPrintDays = 0; // if sunday print right away	
        }
		var today = new Date().getDate();
		var thisMonth = new Date().getMonth();
		var thisYear = new Date().getFullYear();
        // create calendar rows
        for (var e=0; e<numRows; e++) {
			html += '<tr class="weekDaysRow">';
            // create calendar days
            for (var f=0; f<7; f++) {
				if ( (printDate == today) 
					 && (this.selectedYear == thisYear) 
					 && (this.selectedMonth == thisMonth) 
					 && (noPrintDays == 0)) {
					html += '<td id="today" class="weekDaysCell">';
				}else{
                    if(this.isDateSelected(printDate)){
                        html += '<td id="selected" class="weekDaysCell">';
                    } else {
                        html += '<td class="weekDaysCell">';
                    }
                }
                if (noPrintDays == 0) {
					if (printDate <= daysInMonth) {
						html += this.checkDateClickable(printDate);
					}
                    printDate++;
                }
                html += '</td>';
                if(noPrintDays > 0) noPrintDays--;
            }
            html += '</tr>';
        }
		html += '</table>';
        
        // add calendar to element to calendar Div
        $(this.calendarId).update(html);
        
        $(this.calendarId).setStyle({width: 'auto', height: 'auto', display: 'block'});
        var dimensions = $(this.calendarId).getDimensions();

        if(Prototype.Browser.IE){
            $(this.calendarId + 'Frame').setStyle({width: dimensions.width + 'px', height: dimensions.height + 'px', display: 'block'});
        }    
       
    }, 
    checkDateClickable: function(pDate){
       var rv = '<a class="sD">'+pDate+'</a>';
       var tMinDate = this.minDate;
       var tMaxDate = this.maxDate;
       
       var sTmp = this.inputObj.id.toString();
       
       if(typeof(calendarConfig.related[sTmp].minDate) == 'string'){
         if(this.dateInInput[calendarConfig.related[sTmp].minDate]){
             gtDate = this.dateInInput[calendarConfig.related[sTmp].minDate];
             tMinDate = new Date(gtDate.getFullYear(), gtDate.getMonth(), gtDate.getDate() + 1);
         }            
       }else{
         if(calendarConfig.related[sTmp].minDate)
            tMinDate = calendarConfig.related[sTmp].minDate;
       }
         
       if(typeof(calendarConfig.related[sTmp].maxDate) == 'string'){
         if(this.dateInInput[calendarConfig.related[sTmp].maxDate])
           tMaxDate = this.dateInInput[calendarConfig.related[sTmp].maxDate];
       }else{
         if(calendarConfig.related[sTmp].maxDate)
           tMaxDate = calendarConfig.related[sTmp].maxDate;
       }
       
       if (((pDate < tMinDate.getDate()) 
            && (this.selectedMonth == tMinDate.getMonth())
            && (this.selectedYear == tMinDate.getFullYear())) ||
            (this.selectedMonth < tMinDate.getMonth() && this.selectedYear == tMinDate.getFullYear()) || 
            (this.selectedYear < tMinDate.getFullYear()) || 
            ((pDate > tMaxDate.getDate()) 
            && (this.selectedMonth == tMaxDate.getMonth())
            && (this.selectedYear == tMaxDate.getFullYear())) ||
            (this.selectedMonth > tMaxDate.getMonth() && this.selectedYear == tMaxDate.getFullYear()) ||
            (this.selectedYear > tMaxDate.getFullYear())
            ) rv = pDate;
      return rv;
    },
    eventPrevMonth: function () {
        if(this.testRange('p')){
            this.selectedMonth--;
            if (this.selectedMonth < 0) {
                this.selectedMonth = 11;
                this.selectedYear--;
            }
            this.drawCalendar(); 
         }    
        },
    eventNextMonth: function () {
        if(this.testRange('n')){
            this.selectedMonth++;
            if (this.selectedMonth > 11) {
                this.selectedMonth = 0;
                this.selectedYear++;
            }
            this.drawCalendar(); 
         }   
        },
    testRange: function (dir){
     switch(dir){
        case 'p':
            tMonth = this.minDate.getMonth();
            tYear = this.minDate.getFullYear();
        break;
        case 'n':    
            tMonth = this.maxDate.getMonth();
            tYear = this.maxDate.getFullYear();
        break;       
     }   
      if(tMonth == this.selectedMonth && tYear == this.selectedYear) 
            return false;
      else
            return true;          
    },
    getDateFromInput: function (inputObj){
        if(inputObj.value == ''){
         return new Date(this.selectedYear, this.selectedMonth, this.selectedDay);
        }else{   
           var dateArr = inputObj.value.split('/');
           return new Date(dateArr[2], dateArr[1] - 1, dateArr[0]);
        }
    }

}

var calendarConfig = {
    inputClass: 'datePick',
    minDate: new Date(),
    related: {"date_depart": {minDate: new Date(), maxDate: false, clear: "date_return"}, "date_return": {minDate: "date_depart", maxDate: false, clear: false}}
}

calendarConfig.maxDate = new Date(calendarConfig.minDate.getTime() + (364 * 24 * 60 * 60 * 1000));


var myPopupHandler = {};
function myPageInit(){
   myPopupHandler = new popUpCal();
}

// Add calendar event that has wide browser support
Event.observe(window, 'load', myPageInit);

/* Functions Dealing with Dates */

function formatDate(Day, Month, Year) {
    Month++; // adjust javascript month
    if (Month <10) Month = '0'+Month; // add a zero if less than 10
    if (Day < 10) Day = '0'+Day; // add a zero if less than 10
    var dateString = Day+'/'+Month+'/'+Year;
    return dateString;
}

function getMonthName(month) {
    var monthNames = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
    return monthNames[month];
}

function getDayName(day) {
    var dayNames = new Array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday')
    return dayNames[day];
}

function getDaysInMonth(year, month) {
    return 32 - new Date(year, month, 32).getDate();
}

function getFirstDayofMonth(year, month) {
    var day;
    day = new Date(year, month, 0).getDay();
    return day;
}





