/*
 * jQuery 1.2.6 - New Wave Javascript
 *
 * Copyright (c) 2008 John Resig (jquery.com)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * $Date: 2008-05-24 14:22:17 -0400 (Sat, 24 May 2008) $
 * $Rev: 5685 $
 */
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}('(H(){J w=1b.4M,3m$=1b.$;J D=1b.4M=1b.$=H(a,b){I 2B D.17.5j(a,b)};J u=/^[^<]*(<(.|\\s)+>)[^>]*$|^#(\\w+)$/,62=/^.[^:#\\[\\.]*$/,12;D.17=D.44={5j:H(d,b){d=d||S;G(d.16){7[0]=d;7.K=1;I 7}G(1j d=="23"){J c=u.2D(d);G(c&&(c[1]||!b)){G(c[1])d=D.4h([c[1]],b);N{J a=S.61(c[3]);G(a){G(a.2v!=c[3])I D().2q(d);I D(a)}d=[]}}N I D(b).2q(d)}N G(D.1D(d))I D(S)[D.17.27?"27":"43"](d);I 7.6Y(D.2d(d))},5w:"1.2.6",8G:H(){I 7.K},K:0,3p:H(a){I a==12?D.2d(7):7[a]},2I:H(b){J a=D(b);a.5n=7;I a},6Y:H(a){7.K=0;2p.44.1p.1w(7,a);I 7},P:H(a,b){I D.P(7,a,b)},5i:H(b){J a=-1;I D.2L(b&&b.5w?b[0]:b,7)},1K:H(c,a,b){J d=c;G(c.1q==56)G(a===12)I 7[0]&&D[b||"1K"](7[0],c);N{d={};d[c]=a}I 7.P(H(i){R(c 1n d)D.1K(b?7.V:7,c,D.1i(7,d[c],b,i,c))})},1g:H(b,a){G((b==\'2h\'||b==\'1Z\')&&3d(a)<0)a=12;I 7.1K(b,a,"2a")},1r:H(b){G(1j b!="49"&&b!=U)I 7.4E().3v((7[0]&&7[0].2z||S).5F(b));J a="";D.P(b||7,H(){D.P(7.3t,H(){G(7.16!=8)a+=7.16!=1?7.76:D.17.1r([7])})});I a},5z:H(b){G(7[0])D(b,7[0].2z).5y().39(7[0]).2l(H(){J a=7;1B(a.1x)a=a.1x;I a}).3v(7);I 7},8Y:H(a){I 7.P(H(){D(7).6Q().5z(a)})},8R:H(a){I 7.P(H(){D(7).5z(a)})},3v:H(){I 7.3W(19,M,Q,H(a){G(7.16==1)7.3U(a)})},6F:H(){I 7.3W(19,M,M,H(a){G(7.16==1)7.39(a,7.1x)})},6E:H(){I 7.3W(19,Q,Q,H(a){7.1d.39(a,7)})},5q:H(){I 7.3W(19,Q,M,H(a){7.1d.39(a,7.2H)})},3l:H(){I 7.5n||D([])},2q:H(b){J c=D.2l(7,H(a){I D.2q(b,a)});I 7.2I(/[^+>] [^+>]/.11(b)||b.1h("..")>-1?D.4r(c):c)},5y:H(e){J f=7.2l(H(){G(D.14.1f&&!D.4n(7)){J a=7.6o(M),5h=S.3h("1v");5h.3U(a);I D.4h([5h.4H])[0]}N I 7.6o(M)});J d=f.2q("*").5c().P(H(){G(7[E]!=12)7[E]=U});G(e===M)7.2q("*").5c().P(H(i){G(7.16==3)I;J c=D.L(7,"3w");R(J a 1n c)R(J b 1n c[a])D.W.1e(d[i],a,c[a][b],c[a][b].L)});I f},1E:H(b){I 7.2I(D.1D(b)&&D.3C(7,H(a,i){I b.1k(a,i)})||D.3g(b,7))},4Y:H(b){G(b.1q==56)G(62.11(b))I 7.2I(D.3g(b,7,M));N b=D.3g(b,7);J a=b.K&&b[b.K-1]!==12&&!b.16;I 7.1E(H(){I a?D.2L(7,b)<0:7!=b})},1e:H(a){I 7.2I(D.4r(D.2R(7.3p(),1j a==\'23\'?D(a):D.2d(a))))},3F:H(a){I!!a&&D.3g(a,7).K>0},7T:H(a){I 7.3F("."+a)},6e:H(b){G(b==12){G(7.K){J c=7[0];G(D.Y(c,"2A")){J e=c.64,63=[],15=c.15,2V=c.O=="2A-2V";G(e<0)I U;R(J i=2V?e:0,2f=2V?e+1:15.K;i<2f;i++){J d=15[i];G(d.2W){b=D.14.1f&&!d.at.2x.an?d.1r:d.2x;G(2V)I b;63.1p(b)}}I 63}N I(7[0].2x||"").1o(/\\r/g,"")}I 12}G(b.1q==4L)b+=\'\';I 7.P(H(){G(7.16!=1)I;G(b.1q==2p&&/5O|5L/.11(7.O))7.4J=(D.2L(7.2x,b)>=0||D.2L(7.34,b)>=0);N G(D.Y(7,"2A")){J a=D.2d(b);D("9R",7).P(H(){7.2W=(D.2L(7.2x,a)>=0||D.2L(7.1r,a)>=0)});G(!a.K)7.64=-1}N 7.2x=b})},2K:H(a){I a==12?(7[0]?7[0].4H:U):7.4E().3v(a)},7b:H(a){I 7.5q(a).21()},79:H(i){I 7.3s(i,i+1)},3s:H(){I 7.2I(2p.44.3s.1w(7,19))},2l:H(b){I 7.2I(D.2l(7,H(a,i){I b.1k(a,i,a)}))},5c:H(){I 7.1e(7.5n)},L:H(d,b){J a=d.1R(".");a[1]=a[1]?"."+a[1]:"";G(b===12){J c=7.5C("9z"+a[1]+"!",[a[0]]);G(c===12&&7.K)c=D.L(7[0],d);I c===12&&a[1]?7.L(a[0]):c}N I 7.1P("9u"+a[1]+"!",[a[0],b]).P(H(){D.L(7,d,b)})},3b:H(a){I 7.P(H(){D.3b(7,a)})},3W:H(g,f,h,d){J e=7.K>1,3x;I 7.P(H(){G(!3x){3x=D.4h(g,7.2z);G(h)3x.9o()}J b=7;G(f&&D.Y(7,"1T")&&D.Y(3x[0],"4F"))b=7.3H("22")[0]||7.3U(7.2z.3h("22"));J c=D([]);D.P(3x,H(){J a=e?D(7).5y(M)[0]:7;G(D.Y(a,"1m"))c=c.1e(a);N{G(a.16==1)c=c.1e(D("1m",a).21());d.1k(b,a)}});c.P(6T)})}};D.17.5j.44=D.17;H 6T(i,a){G(a.4d)D.3Y({1a:a.4d,31:Q,1O:"1m"});N D.5u(a.1r||a.6O||a.4H||"");G(a.1d)a.1d.37(a)}H 1z(){I+2B 8J}D.1l=D.17.1l=H(){J b=19[0]||{},i=1,K=19.K,4x=Q,15;G(b.1q==8I){4x=b;b=19[1]||{};i=2}G(1j b!="49"&&1j b!="H")b={};G(K==i){b=7;--i}R(;i<K;i++)G((15=19[i])!=U)R(J c 1n 15){J a=b[c],2w=15[c];G(b===2w)6M;G(4x&&2w&&1j 2w=="49"&&!2w.16)b[c]=D.1l(4x,a||(2w.K!=U?[]:{}),2w);N G(2w!==12)b[c]=2w}I b};J E="4M"+1z(),6K=0,5r={},6G=/z-?5i|8B-?8A|1y|6B|8v-?1Z/i,3P=S.3P||{};D.1l({8u:H(a){1b.$=3m$;G(a)1b.4M=w;I D},1D:H(a){I!!a&&1j a!="23"&&!a.Y&&a.1q!=2p&&/^[\\s[]?H/.11(a+"")},4n:H(a){I a.1C&&!a.1c||a.2j&&a.2z&&!a.2z.1c},5u:H(a){a=D.3k(a);G(a){J b=S.3H("6w")[0]||S.1C,1m=S.3h("1m");1m.O="1r/4t";G(D.14.1f)1m.1r=a;N 1m.3U(S.5F(a));b.39(1m,b.1x);b.37(1m)}},Y:H(b,a){I b.Y&&b.Y.2r()==a.2r()},1Y:{},L:H(c,d,b){c=c==1b?5r:c;J a=c[E];G(!a)a=c[E]=++6K;G(d&&!D.1Y[a])D.1Y[a]={};G(b!==12)D.1Y[a][d]=b;I d?D.1Y[a][d]:a},3b:H(c,b){c=c==1b?5r:c;J a=c[E];G(b){G(D.1Y[a]){2U D.1Y[a][b];b="";R(b 1n D.1Y[a])1X;G(!b)D.3b(c)}}N{1U{2U c[E]}1V(e){G(c.5l)c.5l(E)}2U D.1Y[a]}},P:H(d,a,c){J e,i=0,K=d.K;G(c){G(K==12){R(e 1n d)G(a.1w(d[e],c)===Q)1X}N R(;i<K;)G(a.1w(d[i++],c)===Q)1X}N{G(K==12){R(e 1n d)G(a.1k(d[e],e,d[e])===Q)1X}N R(J b=d[0];i<K&&a.1k(b,i,b)!==Q;b=d[++i]){}}I d},1i:H(b,a,c,i,d){G(D.1D(a))a=a.1k(b,i);I a&&a.1q==4L&&c=="2a"&&!6G.11(d)?a+"2X":a},1F:{1e:H(c,b){D.P((b||"").1R(/\\s+/),H(i,a){G(c.16==1&&!D.1F.3T(c.1F,a))c.1F+=(c.1F?" ":"")+a})},21:H(c,b){G(c.16==1)c.1F=b!=12?D.3C(c.1F.1R(/\\s+/),H(a){I!D.1F.3T(b,a)}).6s(" "):""},3T:H(b,a){I D.2L(a,(b.1F||b).6r().1R(/\\s+/))>-1}},6q:H(b,c,a){J e={};R(J d 1n c){e[d]=b.V[d];b.V[d]=c[d]}a.1k(b);R(J d 1n c)b.V[d]=e[d]},1g:H(d,e,c){G(e=="2h"||e=="1Z"){J b,3X={30:"5x",5g:"1G",18:"3I"},35=e=="2h"?["5e","6k"]:["5G","6i"];H 5b(){b=e=="2h"?d.8f:d.8c;J a=0,2C=0;D.P(35,H(){a+=3d(D.2a(d,"57"+7,M))||0;2C+=3d(D.2a(d,"2C"+7+"4b",M))||0});b-=29.83(a+2C)}G(D(d).3F(":4j"))5b();N D.6q(d,3X,5b);I 29.2f(0,b)}I D.2a(d,e,c)},2a:H(f,l,k){J e,V=f.V;H 3E(b){G(!D.14.2k)I Q;J a=3P.54(b,U);I!a||a.52("3E")==""}G(l=="1y"&&D.14.1f){e=D.1K(V,"1y");I e==""?"1":e}G(D.14.2G&&l=="18"){J d=V.50;V.50="0 7Y 7W";V.50=d}G(l.1I(/4i/i))l=y;G(!k&&V&&V[l])e=V[l];N G(3P.54){G(l.1I(/4i/i))l="4i";l=l.1o(/([A-Z])/g,"-$1").3y();J c=3P.54(f,U);G(c&&!3E(f))e=c.52(l);N{J g=[],2E=[],a=f,i=0;R(;a&&3E(a);a=a.1d)2E.6h(a);R(;i<2E.K;i++)G(3E(2E[i])){g[i]=2E[i].V.18;2E[i].V.18="3I"}e=l=="18"&&g[2E.K-1]!=U?"2F":(c&&c.52(l))||"";R(i=0;i<g.K;i++)G(g[i]!=U)2E[i].V.18=g[i]}G(l=="1y"&&e=="")e="1"}N G(f.4g){J h=l.1o(/\\-(\\w)/g,H(a,b){I b.2r()});e=f.4g[l]||f.4g[h];G(!/^\\d+(2X)?$/i.11(e)&&/^\\d/.11(e)){J j=V.1A,66=f.65.1A;f.65.1A=f.4g.1A;V.1A=e||0;e=V.aM+"2X";V.1A=j;f.65.1A=66}}I e},4h:H(l,h){J k=[];h=h||S;G(1j h.3h==\'12\')h=h.2z||h[0]&&h[0].2z||S;D.P(l,H(i,d){G(!d)I;G(d.1q==4L)d+=\'\';G(1j d=="23"){d=d.1o(/(<(\\w+)[^>]*?)\\/>/g,H(b,a,c){I c.1I(/^(aK|4f|7E|aG|4T|7A|aB|3n|az|ay|av)$/i)?b:a+"></"+c+">"});J f=D.3k(d).3y(),1v=h.3h("1v");J e=!f.1h("<au")&&[1,"<2A 7w=\'7w\'>","</2A>"]||!f.1h("<ar")&&[1,"<7v>","</7v>"]||f.1I(/^<(aq|22|am|ak|ai)/)&&[1,"<1T>","</1T>"]||!f.1h("<4F")&&[2,"<1T><22>","</22></1T>"]||(!f.1h("<af")||!f.1h("<ad"))&&[3,"<1T><22><4F>","</4F></22></1T>"]||!f.1h("<7E")&&[2,"<1T><22></22><7q>","</7q></1T>"]||D.14.1f&&[1,"1v<1v>","</1v>"]||[0,"",""];1v.4H=e[1]+d+e[2];1B(e[0]--)1v=1v.5T;G(D.14.1f){J g=!f.1h("<1T")&&f.1h("<22")<0?1v.1x&&1v.1x.3t:e[1]=="<1T>"&&f.1h("<22")<0?1v.3t:[];R(J j=g.K-1;j>=0;--j)G(D.Y(g[j],"22")&&!g[j].3t.K)g[j].1d.37(g[j]);G(/^\\s/.11(d))1v.39(h.5F(d.1I(/^\\s*/)[0]),1v.1x)}d=D.2d(1v.3t)}G(d.K===0&&(!D.Y(d,"3V")&&!D.Y(d,"2A")))I;G(d[0]==12||D.Y(d,"3V")||d.15)k.1p(d);N k=D.2R(k,d)});I k},1K:H(d,f,c){G(!d||d.16==3||d.16==8)I 12;J e=!D.4n(d),40=c!==12,1f=D.14.1f;f=e&&D.3X[f]||f;G(d.2j){J g=/5Q|4d|V/.11(f);G(f=="2W"&&D.14.2k)d.1d.64;G(f 1n d&&e&&!g){G(40){G(f=="O"&&D.Y(d,"4T")&&d.1d)7p"O a3 a1\'t 9V 9U";d[f]=c}G(D.Y(d,"3V")&&d.7i(f))I d.7i(f).76;I d[f]}G(1f&&e&&f=="V")I D.1K(d.V,"9T",c);G(40)d.9Q(f,""+c);J h=1f&&e&&g?d.4G(f,2):d.4G(f);I h===U?12:h}G(1f&&f=="1y"){G(40){d.6B=1;d.1E=(d.1E||"").1o(/7f\\([^)]*\\)/,"")+(3r(c)+\'\'=="9L"?"":"7f(1y="+c*7a+")")}I d.1E&&d.1E.1h("1y=")>=0?(3d(d.1E.1I(/1y=([^)]*)/)[1])/7a)+\'\':""}f=f.1o(/-([a-z])/9H,H(a,b){I b.2r()});G(40)d[f]=c;I d[f]},3k:H(a){I(a||"").1o(/^\\s+|\\s+$/g,"")},2d:H(b){J a=[];G(b!=U){J i=b.K;G(i==U||b.1R||b.4I||b.1k)a[0]=b;N 1B(i)a[--i]=b[i]}I a},2L:H(b,a){R(J i=0,K=a.K;i<K;i++)G(a[i]===b)I i;I-1},2R:H(a,b){J i=0,T,2S=a.K;G(D.14.1f){1B(T=b[i++])G(T.16!=8)a[2S++]=T}N 1B(T=b[i++])a[2S++]=T;I a},4r:H(a){J c=[],2o={};1U{R(J i=0,K=a.K;i<K;i++){J b=D.L(a[i]);G(!2o[b]){2o[b]=M;c.1p(a[i])}}}1V(e){c=a}I c},3C:H(c,a,d){J b=[];R(J i=0,K=c.K;i<K;i++)G(!d!=!a(c[i],i))b.1p(c[i]);I b},2l:H(d,a){J c=[];R(J i=0,K=d.K;i<K;i++){J b=a(d[i],i);G(b!=U)c[c.K]=b}I c.7d.1w([],c)}});J v=9B.9A.3y();D.14={5B:(v.1I(/.+(?:9y|9x|9w|9v)[\\/: ]([\\d.]+)/)||[])[1],2k:/75/.11(v),2G:/2G/.11(v),1f:/1f/.11(v)&&!/2G/.11(v),42:/42/.11(v)&&!/(9s|75)/.11(v)};J y=D.14.1f?"7o":"72";D.1l({71:!D.14.1f||S.70=="6Z",3X:{"R":"9n","9k":"1F","4i":y,72:y,7o:y,9h:"9f",9e:"9d",9b:"99"}});D.P({6W:H(a){I a.1d},97:H(a){I D.4S(a,"1d")},95:H(a){I D.3a(a,2,"2H")},91:H(a){I D.3a(a,2,"4l")},8Z:H(a){I D.4S(a,"2H")},8X:H(a){I D.4S(a,"4l")},8W:H(a){I D.5v(a.1d.1x,a)},8V:H(a){I D.5v(a.1x)},6Q:H(a){I D.Y(a,"8U")?a.8T||a.8S.S:D.2d(a.3t)}},H(c,d){D.17[c]=H(b){J a=D.2l(7,d);G(b&&1j b=="23")a=D.3g(b,a);I 7.2I(D.4r(a))}});D.P({6P:"3v",8Q:"6F",39:"6E",8P:"5q",8O:"7b"},H(c,b){D.17[c]=H(){J a=19;I 7.P(H(){R(J i=0,K=a.K;i<K;i++)D(a[i])[b](7)})}});D.P({8N:H(a){D.1K(7,a,"");G(7.16==1)7.5l(a)},8M:H(a){D.1F.1e(7,a)},8L:H(a){D.1F.21(7,a)},8K:H(a){D.1F[D.1F.3T(7,a)?"21":"1e"](7,a)},21:H(a){G(!a||D.1E(a,[7]).r.K){D("*",7).1e(7).P(H(){D.W.21(7);D.3b(7)});G(7.1d)7.1d.37(7)}},4E:H(){D(">*",7).21();1B(7.1x)7.37(7.1x)}},H(a,b){D.17[a]=H(){I 7.P(b,19)}});D.P(["6N","4b"],H(i,c){J b=c.3y();D.17[b]=H(a){I 7[0]==1b?D.14.2G&&S.1c["5t"+c]||D.14.2k&&1b["5s"+c]||S.70=="6Z"&&S.1C["5t"+c]||S.1c["5t"+c]:7[0]==S?29.2f(29.2f(S.1c["4y"+c],S.1C["4y"+c]),29.2f(S.1c["2i"+c],S.1C["2i"+c])):a==12?(7.K?D.1g(7[0],b):U):7.1g(b,a.1q==56?a:a+"2X")}});H 25(a,b){I a[0]&&3r(D.2a(a[0],b,M),10)||0}J C=D.14.2k&&3r(D.14.5B)<8H?"(?:[\\\\w*3m-]|\\\\\\\\.)":"(?:[\\\\w\\8F-\\8E*3m-]|\\\\\\\\.)",6L=2B 4v("^>\\\\s*("+C+"+)"),6J=2B 4v("^("+C+"+)(#)("+C+"+)"),6I=2B 4v("^([#.]?)("+C+"*)");D.1l({6H:{"":H(a,i,m){I m[2]=="*"||D.Y(a,m[2])},"#":H(a,i,m){I a.4G("2v")==m[2]},":":{8D:H(a,i,m){I i<m[3]-0},8C:H(a,i,m){I i>m[3]-0},3a:H(a,i,m){I m[3]-0==i},79:H(a,i,m){I m[3]-0==i},3o:H(a,i){I i==0},3S:H(a,i,m,r){I i==r.K-1},6D:H(a,i){I i%2==0},6C:H(a,i){I i%2},"3o-4u":H(a){I a.1d.3H("*")[0]==a},"3S-4u":H(a){I D.3a(a.1d.5T,1,"4l")==a},"8z-4u":H(a){I!D.3a(a.1d.5T,2,"4l")},6W:H(a){I a.1x},4E:H(a){I!a.1x},8y:H(a,i,m){I(a.6O||a.8x||D(a).1r()||"").1h(m[3])>=0},4j:H(a){I"1G"!=a.O&&D.1g(a,"18")!="2F"&&D.1g(a,"5g")!="1G"},1G:H(a){I"1G"==a.O||D.1g(a,"18")=="2F"||D.1g(a,"5g")=="1G"},8w:H(a){I!a.3R},3R:H(a){I a.3R},4J:H(a){I a.4J},2W:H(a){I a.2W||D.1K(a,"2W")},1r:H(a){I"1r"==a.O},5O:H(a){I"5O"==a.O},5L:H(a){I"5L"==a.O},5p:H(a){I"5p"==a.O},3Q:H(a){I"3Q"==a.O},5o:H(a){I"5o"==a.O},6A:H(a){I"6A"==a.O},6z:H(a){I"6z"==a.O},2s:H(a){I"2s"==a.O||D.Y(a,"2s")},4T:H(a){I/4T|2A|6y|2s/i.11(a.Y)},3T:H(a,i,m){I D.2q(m[3],a).K},8t:H(a){I/h\\d/i.11(a.Y)},8s:H(a){I D.3C(D.3O,H(b){I a==b.T}).K}}},6x:[/^(\\[) *@?([\\w-]+) *([!*$^~=]*) *(\'?"?)(.*?)\\4 *\\]/,/^(:)([\\w-]+)\\("?\'?(.*?(\\(.*?\\))?[^(]*?)"?\'?\\)/,2B 4v("^([:.#]*)("+C+"+)")],3g:H(a,c,b){J d,1t=[];1B(a&&a!=d){d=a;J f=D.1E(a,c,b);a=f.t.1o(/^\\s*,\\s*/,"");1t=b?c=f.r:D.2R(1t,f.r)}I 1t},2q:H(t,o){G(1j t!="23")I[t];G(o&&o.16!=1&&o.16!=9)I[];o=o||S;J d=[o],2o=[],3S,Y;1B(t&&3S!=t){J r=[];3S=t;t=D.3k(t);J l=Q,3j=6L,m=3j.2D(t);G(m){Y=m[1].2r();R(J i=0;d[i];i++)R(J c=d[i].1x;c;c=c.2H)G(c.16==1&&(Y=="*"||c.Y.2r()==Y))r.1p(c);d=r;t=t.1o(3j,"");G(t.1h(" ")==0)6M;l=M}N{3j=/^([>+~])\\s*(\\w*)/i;G((m=3j.2D(t))!=U){r=[];J k={};Y=m[2].2r();m=m[1];R(J j=0,3i=d.K;j<3i;j++){J n=m=="~"||m=="+"?d[j].2H:d[j].1x;R(;n;n=n.2H)G(n.16==1){J g=D.L(n);G(m=="~"&&k[g])1X;G(!Y||n.Y.2r()==Y){G(m=="~")k[g]=M;r.1p(n)}G(m=="+")1X}}d=r;t=D.3k(t.1o(3j,""));l=M}}G(t&&!l){G(!t.1h(",")){G(o==d[0])d.4s();2o=D.2R(2o,d);r=d=[o];t=" "+t.6v(1,t.K)}N{J h=6J;J m=h.2D(t);G(m){m=[0,m[2],m[3],m[1]]}N{h=6I;m=h.2D(t)}m[2]=m[2].1o(/\\\\/g,"");J f=d[d.K-1];G(m[1]=="#"&&f&&f.61&&!D.4n(f)){J p=f.61(m[2]);G((D.14.1f||D.14.2G)&&p&&1j p.2v=="23"&&p.2v!=m[2])p=D(\'[@2v="\'+m[2]+\'"]\',f)[0];d=r=p&&(!m[3]||D.Y(p,m[3]))?[p]:[]}N{R(J i=0;d[i];i++){J a=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];G(a=="*"&&d[i].Y.3y()=="49")a="3n";r=D.2R(r,d[i].3H(a))}G(m[1]==".")r=D.5m(r,m[2]);G(m[1]=="#"){J e=[];R(J i=0;r[i];i++)G(r[i].4G("2v")==m[2]){e=[r[i]];1X}r=e}d=r}t=t.1o(h,"")}}G(t){J b=D.1E(t,r);d=r=b.r;t=D.3k(b.t)}}G(t)d=[];G(d&&o==d[0])d.4s();2o=D.2R(2o,d);I 2o},5m:H(r,m,a){m=" "+m+" ";J c=[];R(J i=0;r[i];i++){J b=(" "+r[i].1F+" ").1h(m)>=0;G(!a&&b||a&&!b)c.1p(r[i])}I c},1E:H(t,r,h){J d;1B(t&&t!=d){d=t;J p=D.6x,m;R(J i=0;p[i];i++){m=p[i].2D(t);G(m){t=t.8r(m[0].K);m[2]=m[2].1o(/\\\\/g,"");1X}}G(!m)1X;G(m[1]==":"&&m[2]=="4Y")r=62.11(m[3])?D.1E(m[3],r,M).r:D(r).4Y(m[3]);N G(m[1]==".")r=D.5m(r,m[2],h);N G(m[1]=="["){J g=[],O=m[3];R(J i=0,3i=r.K;i<3i;i++){J a=r[i],z=a[D.3X[m[2]]||m[2]];G(z==U||/5Q|4d|2W/.11(m[2]))z=D.1K(a,m[2])||\'\';G((O==""&&!!z||O=="="&&z==m[5]||O=="!="&&z!=m[5]||O=="^="&&z&&!z.1h(m[5])||O=="$="&&z.6v(z.K-m[5].K)==m[5]||(O=="*="||O=="~=")&&z.1h(m[5])>=0)^h)g.1p(a)}r=g}N G(m[1]==":"&&m[2]=="3a-4u"){J e={},g=[],11=/(-?)(\\d*)n((?:\\+|-)?\\d*)/.2D(m[3]=="6D"&&"2n"||m[3]=="6C"&&"2n+1"||!/\\D/.11(m[3])&&"8q+"+m[3]||m[3]),3o=(11[1]+(11[2]||1))-0,d=11[3]-0;R(J i=0,3i=r.K;i<3i;i++){J j=r[i],1d=j.1d,2v=D.L(1d);G(!e[2v]){J c=1;R(J n=1d.1x;n;n=n.2H)G(n.16==1)n.4q=c++;e[2v]=M}J b=Q;G(3o==0){G(j.4q==d)b=M}N G((j.4q-d)%3o==0&&(j.4q-d)/3o>=0)b=M;G(b^h)g.1p(j)}r=g}N{J f=D.6H[m[1]];G(1j f=="49")f=f[m[2]];G(1j f=="23")f=6u("Q||H(a,i){I "+f+";}");r=D.3C(r,H(a,i){I f(a,i,m,r)},h)}}I{r:r,t:t}},4S:H(b,c){J a=[],1t=b[c];1B(1t&&1t!=S){G(1t.16==1)a.1p(1t);1t=1t[c]}I a},3a:H(a,e,c,b){e=e||1;J d=0;R(;a;a=a[c])G(a.16==1&&++d==e)1X;I a},5v:H(n,a){J r=[];R(;n;n=n.2H){G(n.16==1&&n!=a)r.1p(n)}I r}});D.W={1e:H(f,i,g,e){G(f.16==3||f.16==8)I;G(D.14.1f&&f.4I)f=1b;G(!g.24)g.24=7.24++;G(e!=12){J h=g;g=7.3M(h,H(){I h.1w(7,19)});g.L=e}J j=D.L(f,"3w")||D.L(f,"3w",{}),1H=D.L(f,"1H")||D.L(f,"1H",H(){G(1j D!="12"&&!D.W.5k)I D.W.1H.1w(19.3L.T,19)});1H.T=f;D.P(i.1R(/\\s+/),H(c,b){J a=b.1R(".");b=a[0];g.O=a[1];J d=j[b];G(!d){d=j[b]={};G(!D.W.2t[b]||D.W.2t[b].4p.1k(f)===Q){G(f.3K)f.3K(b,1H,Q);N G(f.6t)f.6t("4o"+b,1H)}}d[g.24]=g;D.W.26[b]=M});f=U},24:1,26:{},21:H(e,h,f){G(e.16==3||e.16==8)I;J i=D.L(e,"3w"),1L,5i;G(i){G(h==12||(1j h=="23"&&h.8p(0)=="."))R(J g 1n i)7.21(e,g+(h||""));N{G(h.O){f=h.2y;h=h.O}D.P(h.1R(/\\s+/),H(b,a){J c=a.1R(".");a=c[0];G(i[a]){G(f)2U i[a][f.24];N R(f 1n i[a])G(!c[1]||i[a][f].O==c[1])2U i[a][f];R(1L 1n i[a])1X;G(!1L){G(!D.W.2t[a]||D.W.2t[a].4A.1k(e)===Q){G(e.6p)e.6p(a,D.L(e,"1H"),Q);N G(e.6n)e.6n("4o"+a,D.L(e,"1H"))}1L=U;2U i[a]}}})}R(1L 1n i)1X;G(!1L){J d=D.L(e,"1H");G(d)d.T=U;D.3b(e,"3w");D.3b(e,"1H")}}},1P:H(h,c,f,g,i){c=D.2d(c);G(h.1h("!")>=0){h=h.3s(0,-1);J a=M}G(!f){G(7.26[h])D("*").1e([1b,S]).1P(h,c)}N{G(f.16==3||f.16==8)I 12;J b,1L,17=D.1D(f[h]||U),W=!c[0]||!c[0].32;G(W){c.6h({O:h,2J:f,32:H(){},3J:H(){},4C:1z()});c[0][E]=M}c[0].O=h;G(a)c[0].6m=M;J d=D.L(f,"1H");G(d)b=d.1w(f,c);G((!17||(D.Y(f,\'a\')&&h=="4V"))&&f["4o"+h]&&f["4o"+h].1w(f,c)===Q)b=Q;G(W)c.4s();G(i&&D.1D(i)){1L=i.1w(f,b==U?c:c.7d(b));G(1L!==12)b=1L}G(17&&g!==Q&&b!==Q&&!(D.Y(f,\'a\')&&h=="4V")){7.5k=M;1U{f[h]()}1V(e){}}7.5k=Q}I b},1H:H(b){J a,1L,38,5f,4m;b=19[0]=D.W.6l(b||1b.W);38=b.O.1R(".");b.O=38[0];38=38[1];5f=!38&&!b.6m;4m=(D.L(7,"3w")||{})[b.O];R(J j 1n 4m){J c=4m[j];G(5f||c.O==38){b.2y=c;b.L=c.L;1L=c.1w(7,19);G(a!==Q)a=1L;G(1L===Q){b.32();b.3J()}}}I a},6l:H(b){G(b[E]==M)I b;J d=b;b={8o:d};J c="8n 8m 8l 8k 2s 8j 47 5d 6j 5E 8i L 8h 8g 4K 2y 5a 59 8e 8b 58 6f 8a 88 4k 87 86 84 6d 2J 4C 6c O 82 81 35".1R(" ");R(J i=c.K;i;i--)b[c[i]]=d[c[i]];b[E]=M;b.32=H(){G(d.32)d.32();d.80=Q};b.3J=H(){G(d.3J)d.3J();d.7Z=M};b.4C=b.4C||1z();G(!b.2J)b.2J=b.6d||S;G(b.2J.16==3)b.2J=b.2J.1d;G(!b.4k&&b.4K)b.4k=b.4K==b.2J?b.6c:b.4K;G(b.58==U&&b.5d!=U){J a=S.1C,1c=S.1c;b.58=b.5d+(a&&a.2e||1c&&1c.2e||0)-(a.6b||0);b.6f=b.6j+(a&&a.2c||1c&&1c.2c||0)-(a.6a||0)}G(!b.35&&((b.47||b.47===0)?b.47:b.5a))b.35=b.47||b.5a;G(!b.59&&b.5E)b.59=b.5E;G(!b.35&&b.2s)b.35=(b.2s&1?1:(b.2s&2?3:(b.2s&4?2:0)));I b},3M:H(a,b){b.24=a.24=a.24||b.24||7.24++;I b},2t:{27:{4p:H(){55();I},4A:H(){I}},3D:{4p:H(){G(D.14.1f)I Q;D(7).2O("53",D.W.2t.3D.2y);I M},4A:H(){G(D.14.1f)I Q;D(7).4e("53",D.W.2t.3D.2y);I M},2y:H(a){G(F(a,7))I M;a.O="3D";I D.W.1H.1w(7,19)}},3N:{4p:H(){G(D.14.1f)I Q;D(7).2O("51",D.W.2t.3N.2y);I M},4A:H(){G(D.14.1f)I Q;D(7).4e("51",D.W.2t.3N.2y);I M},2y:H(a){G(F(a,7))I M;a.O="3N";I D.W.1H.1w(7,19)}}}};D.17.1l({2O:H(c,a,b){I c=="4X"?7.2V(c,a,b):7.P(H(){D.W.1e(7,c,b||a,b&&a)})},2V:H(d,b,c){J e=D.W.3M(c||b,H(a){D(7).4e(a,e);I(c||b).1w(7,19)});I 7.P(H(){D.W.1e(7,d,e,c&&b)})},4e:H(a,b){I 7.P(H(){D.W.21(7,a,b)})},1P:H(c,a,b){I 7.P(H(){D.W.1P(c,a,7,M,b)})},5C:H(c,a,b){I 7[0]&&D.W.1P(c,a,7[0],Q,b)},2m:H(b){J c=19,i=1;1B(i<c.K)D.W.3M(b,c[i++]);I 7.4V(D.W.3M(b,H(a){7.4Z=(7.4Z||0)%i;a.32();I c[7.4Z++].1w(7,19)||Q}))},7X:H(a,b){I 7.2O(\'3D\',a).2O(\'3N\',b)},27:H(a){55();G(D.2Q)a.1k(S,D);N D.3A.1p(H(){I a.1k(7,D)});I 7}});D.1l({2Q:Q,3A:[],27:H(){G(!D.2Q){D.2Q=M;G(D.3A){D.P(D.3A,H(){7.1k(S)});D.3A=U}D(S).5C("27")}}});J x=Q;H 55(){G(x)I;x=M;G(S.3K&&!D.14.2G)S.3K("69",D.27,Q);G(D.14.1f&&1b==1S)(H(){G(D.2Q)I;1U{S.1C.7V("1A")}1V(3e){3B(19.3L,0);I}D.27()})();G(D.14.2G)S.3K("69",H(){G(D.2Q)I;R(J i=0;i<S.4W.K;i++)G(S.4W[i].3R){3B(19.3L,0);I}D.27()},Q);G(D.14.2k){J a;(H(){G(D.2Q)I;G(S.3f!="68"&&S.3f!="1J"){3B(19.3L,0);I}G(a===12)a=D("V, 7A[7U=7S]").K;G(S.4W.K!=a){3B(19.3L,0);I}D.27()})()}D.W.1e(1b,"43",D.27)}D.P(("7R,7Q,43,85,4y,4X,4V,7P,"+"7O,7N,89,53,51,7M,2A,"+"5o,7L,7K,8d,3e").1R(","),H(i,b){D.17[b]=H(a){I a?7.2O(b,a):7.1P(b)}});J F=H(a,c){J b=a.4k;1B(b&&b!=c)1U{b=b.1d}1V(3e){b=c}I b==c};D(1b).2O("4X",H(){D("*").1e(S).4e()});D.17.1l({67:D.17.43,43:H(g,d,c){G(1j g!=\'23\')I 7.67(g);J e=g.1h(" ");G(e>=0){J i=g.3s(e,g.K);g=g.3s(0,e)}c=c||H(){};J f="2P";G(d)G(D.1D(d)){c=d;d=U}N{d=D.3n(d);f="6g"}J h=7;D.3Y({1a:g,O:f,1O:"2K",L:d,1J:H(a,b){G(b=="1W"||b=="7J")h.2K(i?D("<1v/>").3v(a.4U.1o(/<1m(.|\\s)*?\\/1m>/g,"")).2q(i):a.4U);h.P(c,[a.4U,b,a])}});I 7},aL:H(){I D.3n(7.7I())},7I:H(){I 7.2l(H(){I D.Y(7,"3V")?D.2d(7.aH):7}).1E(H(){I 7.34&&!7.3R&&(7.4J||/2A|6y/i.11(7.Y)||/1r|1G|3Q/i.11(7.O))}).2l(H(i,c){J b=D(7).6e();I b==U?U:b.1q==2p?D.2l(b,H(a,i){I{34:c.34,2x:a}}):{34:c.34,2x:b}}).3p()}});D.P("7H,7G,7F,7D,7C,7B".1R(","),H(i,o){D.17[o]=H(f){I 7.2O(o,f)}});J B=1z();D.1l({3p:H(d,b,a,c){G(D.1D(b)){a=b;b=U}I D.3Y({O:"2P",1a:d,L:b,1W:a,1O:c})},aE:H(b,a){I D.3p(b,U,a,"1m")},aD:H(c,b,a){I D.3p(c,b,a,"3z")},aC:H(d,b,a,c){G(D.1D(b)){a=b;b={}}I D.3Y({O:"6g",1a:d,L:b,1W:a,1O:c})},aA:H(a){D.1l(D.60,a)},60:{1a:5Z.5Q,26:M,O:"2P",2T:0,7z:"4R/x-ax-3V-aw",7x:M,31:M,L:U,5Y:U,3Q:U,4Q:{2N:"4R/2N, 1r/2N",2K:"1r/2K",1m:"1r/4t, 4R/4t",3z:"4R/3z, 1r/4t",1r:"1r/as",4w:"*/*"}},4z:{},3Y:H(s){s=D.1l(M,s,D.1l(M,{},D.60,s));J g,2Z=/=\\?(&|$)/g,1u,L,O=s.O.2r();G(s.L&&s.7x&&1j s.L!="23")s.L=D.3n(s.L);G(s.1O=="4P"){G(O=="2P"){G(!s.1a.1I(2Z))s.1a+=(s.1a.1I(/\\?/)?"&":"?")+(s.4P||"7u")+"=?"}N G(!s.L||!s.L.1I(2Z))s.L=(s.L?s.L+"&":"")+(s.4P||"7u")+"=?";s.1O="3z"}G(s.1O=="3z"&&(s.L&&s.L.1I(2Z)||s.1a.1I(2Z))){g="4P"+B++;G(s.L)s.L=(s.L+"").1o(2Z,"="+g+"$1");s.1a=s.1a.1o(2Z,"="+g+"$1");s.1O="1m";1b[g]=H(a){L=a;1W();1J();1b[g]=12;1U{2U 1b[g]}1V(e){}G(i)i.37(h)}}G(s.1O=="1m"&&s.1Y==U)s.1Y=Q;G(s.1Y===Q&&O=="2P"){J j=1z();J k=s.1a.1o(/(\\?|&)3m=.*?(&|$)/,"$ap="+j+"$2");s.1a=k+((k==s.1a)?(s.1a.1I(/\\?/)?"&":"?")+"3m="+j:"")}G(s.L&&O=="2P"){s.1a+=(s.1a.1I(/\\?/)?"&":"?")+s.L;s.L=U}G(s.26&&!D.4O++)D.W.1P("7H");J n=/^(?:\\w+:)?\\/\\/([^\\/?#]+)/;G(s.1O=="1m"&&O=="2P"&&n.11(s.1a)&&n.2D(s.1a)[1]!=5Z.al){J i=S.3H("6w")[0];J h=S.3h("1m");h.4d=s.1a;G(s.7t)h.aj=s.7t;G(!g){J l=Q;h.ah=h.ag=H(){G(!l&&(!7.3f||7.3f=="68"||7.3f=="1J")){l=M;1W();1J();i.37(h)}}}i.3U(h);I 12}J m=Q;J c=1b.7s?2B 7s("ae.ac"):2B 7r();G(s.5Y)c.6R(O,s.1a,s.31,s.5Y,s.3Q);N c.6R(O,s.1a,s.31);1U{G(s.L)c.4B("ab-aa",s.7z);G(s.5S)c.4B("a9-5R-a8",D.4z[s.1a]||"a7, a6 a5 a4 5N:5N:5N a2");c.4B("X-9Z-9Y","7r");c.4B("9W",s.1O&&s.4Q[s.1O]?s.4Q[s.1O]+", */*":s.4Q.4w)}1V(e){}G(s.7m&&s.7m(c,s)===Q){s.26&&D.4O--;c.7l();I Q}G(s.26)D.W.1P("7B",[c,s]);J d=H(a){G(!m&&c&&(c.3f==4||a=="2T")){m=M;G(f){7k(f);f=U}1u=a=="2T"&&"2T"||!D.7j(c)&&"3e"||s.5S&&D.7h(c,s.1a)&&"7J"||"1W";G(1u=="1W"){1U{L=D.6X(c,s.1O,s.9S)}1V(e){1u="5J"}}G(1u=="1W"){J b;1U{b=c.5I("7g-5R")}1V(e){}G(s.5S&&b)D.4z[s.1a]=b;G(!g)1W()}N D.5H(s,c,1u);1J();G(s.31)c=U}};G(s.31){J f=4I(d,13);G(s.2T>0)3B(H(){G(c){c.7l();G(!m)d("2T")}},s.2T)}1U{c.9P(s.L)}1V(e){D.5H(s,c,U,e)}G(!s.31)d();H 1W(){G(s.1W)s.1W(L,1u);G(s.26)D.W.1P("7C",[c,s])}H 1J(){G(s.1J)s.1J(c,1u);G(s.26)D.W.1P("7F",[c,s]);G(s.26&&!--D.4O)D.W.1P("7G")}I c},5H:H(s,a,b,e){G(s.3e)s.3e(a,b,e);G(s.26)D.W.1P("7D",[a,s,e])},4O:0,7j:H(a){1U{I!a.1u&&5Z.9O=="5p:"||(a.1u>=7e&&a.1u<9N)||a.1u==7c||a.1u==9K||D.14.2k&&a.1u==12}1V(e){}I Q},7h:H(a,c){1U{J b=a.5I("7g-5R");I a.1u==7c||b==D.4z[c]||D.14.2k&&a.1u==12}1V(e){}I Q},6X:H(a,c,b){J d=a.5I("9J-O"),2N=c=="2N"||!c&&d&&d.1h("2N")>=0,L=2N?a.9I:a.4U;G(2N&&L.1C.2j=="5J")7p"5J";G(b)L=b(L,c);G(c=="1m")D.5u(L);G(c=="3z")L=6u("("+L+")");I L},3n:H(a){J s=[];G(a.1q==2p||a.5w)D.P(a,H(){s.1p(3u(7.34)+"="+3u(7.2x))});N R(J j 1n a)G(a[j]&&a[j].1q==2p)D.P(a[j],H(){s.1p(3u(j)+"="+3u(7))});N s.1p(3u(j)+"="+3u(D.1D(a[j])?a[j]():a[j]));I s.6s("&").1o(/%20/g,"+")}});D.17.1l({1N:H(c,b){I c?7.2g({1Z:"1N",2h:"1N",1y:"1N"},c,b):7.1E(":1G").P(H(){7.V.18=7.5D||"";G(D.1g(7,"18")=="2F"){J a=D("<"+7.2j+" />").6P("1c");7.V.18=a.1g("18");G(7.V.18=="2F")7.V.18="3I";a.21()}}).3l()},1M:H(b,a){I b?7.2g({1Z:"1M",2h:"1M",1y:"1M"},b,a):7.1E(":4j").P(H(){7.5D=7.5D||D.1g(7,"18");7.V.18="2F"}).3l()},78:D.17.2m,2m:H(a,b){I D.1D(a)&&D.1D(b)?7.78.1w(7,19):a?7.2g({1Z:"2m",2h:"2m",1y:"2m"},a,b):7.P(H(){D(7)[D(7).3F(":1G")?"1N":"1M"]()})},9G:H(b,a){I 7.2g({1Z:"1N"},b,a)},9F:H(b,a){I 7.2g({1Z:"1M"},b,a)},9E:H(b,a){I 7.2g({1Z:"2m"},b,a)},9D:H(b,a){I 7.2g({1y:"1N"},b,a)},9M:H(b,a){I 7.2g({1y:"1M"},b,a)},9C:H(c,a,b){I 7.2g({1y:a},c,b)},2g:H(k,j,i,g){J h=D.77(j,i,g);I 7[h.36===Q?"P":"36"](H(){G(7.16!=1)I Q;J f=D.1l({},h),p,1G=D(7).3F(":1G"),46=7;R(p 1n k){G(k[p]=="1M"&&1G||k[p]=="1N"&&!1G)I f.1J.1k(7);G(p=="1Z"||p=="2h"){f.18=D.1g(7,"18");f.33=7.V.33}}G(f.33!=U)7.V.33="1G";f.45=D.1l({},k);D.P(k,H(c,a){J e=2B D.28(46,f,c);G(/2m|1N|1M/.11(a))e[a=="2m"?1G?"1N":"1M":a](k);N{J b=a.6r().1I(/^([+-]=)?([\\d+-.]+)(.*)$/),2b=e.1t(M)||0;G(b){J d=3d(b[2]),2M=b[3]||"2X";G(2M!="2X"){46.V[c]=(d||1)+2M;2b=((d||1)/e.1t(M))*2b;46.V[c]=2b+2M}G(b[1])d=((b[1]=="-="?-1:1)*d)+2b;e.3G(2b,d,2M)}N e.3G(2b,a,"")}});I M})},36:H(a,b){G(D.1D(a)||(a&&a.1q==2p)){b=a;a="28"}G(!a||(1j a=="23"&&!b))I A(7[0],a);I 7.P(H(){G(b.1q==2p)A(7,a,b);N{A(7,a).1p(b);G(A(7,a).K==1)b.1k(7)}})},9X:H(b,c){J a=D.3O;G(b)7.36([]);7.P(H(){R(J i=a.K-1;i>=0;i--)G(a[i].T==7){G(c)a[i](M);a.7n(i,1)}});G(!c)7.5A();I 7}});J A=H(b,c,a){G(b){c=c||"28";J q=D.L(b,c+"36");G(!q||a)q=D.L(b,c+"36",D.2d(a))}I q};D.17.5A=H(a){a=a||"28";I 7.P(H(){J q=A(7,a);q.4s();G(q.K)q[0].1k(7)})};D.1l({77:H(b,a,c){J d=b&&b.1q==a0?b:{1J:c||!c&&a||D.1D(b)&&b,2u:b,41:c&&a||a&&a.1q!=9t&&a};d.2u=(d.2u&&d.2u.1q==4L?d.2u:D.28.5K[d.2u])||D.28.5K.74;d.5M=d.1J;d.1J=H(){G(d.36!==Q)D(7).5A();G(D.1D(d.5M))d.5M.1k(7)};I d},41:{73:H(p,n,b,a){I b+a*p},5P:H(p,n,b,a){I((-29.9r(p*29.9q)/2)+0.5)*a+b}},3O:[],48:U,28:H(b,c,a){7.15=c;7.T=b;7.1i=a;G(!c.3Z)c.3Z={}}});D.28.44={4D:H(){G(7.15.2Y)7.15.2Y.1k(7.T,7.1z,7);(D.28.2Y[7.1i]||D.28.2Y.4w)(7);G(7.1i=="1Z"||7.1i=="2h")7.T.V.18="3I"},1t:H(a){G(7.T[7.1i]!=U&&7.T.V[7.1i]==U)I 7.T[7.1i];J r=3d(D.1g(7.T,7.1i,a));I r&&r>-9p?r:3d(D.2a(7.T,7.1i))||0},3G:H(c,b,d){7.5V=1z();7.2b=c;7.3l=b;7.2M=d||7.2M||"2X";7.1z=7.2b;7.2S=7.4N=0;7.4D();J e=7;H t(a){I e.2Y(a)}t.T=7.T;D.3O.1p(t);G(D.48==U){D.48=4I(H(){J a=D.3O;R(J i=0;i<a.K;i++)G(!a[i]())a.7n(i--,1);G(!a.K){7k(D.48);D.48=U}},13)}},1N:H(){7.15.3Z[7.1i]=D.1K(7.T.V,7.1i);7.15.1N=M;7.3G(0,7.1t());G(7.1i=="2h"||7.1i=="1Z")7.T.V[7.1i]="9m";D(7.T).1N()},1M:H(){7.15.3Z[7.1i]=D.1K(7.T.V,7.1i);7.15.1M=M;7.3G(7.1t(),0)},2Y:H(a){J t=1z();G(a||t>7.15.2u+7.5V){7.1z=7.3l;7.2S=7.4N=1;7.4D();7.15.45[7.1i]=M;J b=M;R(J i 1n 7.15.45)G(7.15.45[i]!==M)b=Q;G(b){G(7.15.18!=U){7.T.V.33=7.15.33;7.T.V.18=7.15.18;G(D.1g(7.T,"18")=="2F")7.T.V.18="3I"}G(7.15.1M)7.T.V.18="2F";G(7.15.1M||7.15.1N)R(J p 1n 7.15.45)D.1K(7.T.V,p,7.15.3Z[p])}G(b)7.15.1J.1k(7.T);I Q}N{J n=t-7.5V;7.4N=n/7.15.2u;7.2S=D.41[7.15.41||(D.41.5P?"5P":"73")](7.4N,n,0,1,7.15.2u);7.1z=7.2b+((7.3l-7.2b)*7.2S);7.4D()}I M}};D.1l(D.28,{5K:{9l:9j,9i:7e,74:9g},2Y:{2e:H(a){a.T.2e=a.1z},2c:H(a){a.T.2c=a.1z},1y:H(a){D.1K(a.T.V,"1y",a.1z)},4w:H(a){a.T.V[a.1i]=a.1z+a.2M}}});D.17.2i=H(){J b=0,1S=0,T=7[0],3q;G(T)ao(D.14){J d=T.1d,4a=T,1s=T.1s,1Q=T.2z,5U=2k&&3r(5B)<9c&&!/9a/i.11(v),1g=D.2a,3c=1g(T,"30")=="3c";G(T.7y){J c=T.7y();1e(c.1A+29.2f(1Q.1C.2e,1Q.1c.2e),c.1S+29.2f(1Q.1C.2c,1Q.1c.2c));1e(-1Q.1C.6b,-1Q.1C.6a)}N{1e(T.5X,T.5W);1B(1s){1e(1s.5X,1s.5W);G(42&&!/^t(98|d|h)$/i.11(1s.2j)||2k&&!5U)2C(1s);G(!3c&&1g(1s,"30")=="3c")3c=M;4a=/^1c$/i.11(1s.2j)?4a:1s;1s=1s.1s}1B(d&&d.2j&&!/^1c|2K$/i.11(d.2j)){G(!/^96|1T.*$/i.11(1g(d,"18")))1e(-d.2e,-d.2c);G(42&&1g(d,"33")!="4j")2C(d);d=d.1d}G((5U&&(3c||1g(4a,"30")=="5x"))||(42&&1g(4a,"30")!="5x"))1e(-1Q.1c.5X,-1Q.1c.5W);G(3c)1e(29.2f(1Q.1C.2e,1Q.1c.2e),29.2f(1Q.1C.2c,1Q.1c.2c))}3q={1S:1S,1A:b}}H 2C(a){1e(D.2a(a,"6V",M),D.2a(a,"6U",M))}H 1e(l,t){b+=3r(l,10)||0;1S+=3r(t,10)||0}I 3q};D.17.1l({30:H(){J a=0,1S=0,3q;G(7[0]){J b=7.1s(),2i=7.2i(),4c=/^1c|2K$/i.11(b[0].2j)?{1S:0,1A:0}:b.2i();2i.1S-=25(7,\'94\');2i.1A-=25(7,\'aF\');4c.1S+=25(b,\'6U\');4c.1A+=25(b,\'6V\');3q={1S:2i.1S-4c.1S,1A:2i.1A-4c.1A}}I 3q},1s:H(){J a=7[0].1s;1B(a&&(!/^1c|2K$/i.11(a.2j)&&D.1g(a,\'30\')==\'93\'))a=a.1s;I D(a)}});D.P([\'5e\',\'5G\'],H(i,b){J c=\'4y\'+b;D.17[c]=H(a){G(!7[0])I;I a!=12?7.P(H(){7==1b||7==S?1b.92(!i?a:D(1b).2e(),i?a:D(1b).2c()):7[c]=a}):7[0]==1b||7[0]==S?46[i?\'aI\':\'aJ\']||D.71&&S.1C[c]||S.1c[c]:7[0][c]}});D.P(["6N","4b"],H(i,b){J c=i?"5e":"5G",4f=i?"6k":"6i";D.17["5s"+b]=H(){I 7[b.3y()]()+25(7,"57"+c)+25(7,"57"+4f)};D.17["90"+b]=H(a){I 7["5s"+b]()+25(7,"2C"+c+"4b")+25(7,"2C"+4f+"4b")+(a?25(7,"6S"+c)+25(7,"6S"+4f):0)}})})();',62,669,'|||||||this|||||||||||||||||||||||||||||||||||if|function|return|var|length|data|true|else|type|each|false|for|document|elem|null|style|event||nodeName|||test|undefined||browser|options|nodeType|fn|display|arguments|url|window|body|parentNode|add|msie|css|indexOf|prop|typeof|call|extend|script|in|replace|push|constructor|text|offsetParent|cur|status|div|apply|firstChild|opacity|now|left|while|documentElement|isFunction|filter|className|hidden|handle|match|complete|attr|ret|hide|show|dataType|trigger|doc|split|top|table|try|catch|success|break|cache|height||remove|tbody|string|guid|num|global|ready|fx|Math|curCSS|start|scrollTop|makeArray|scrollLeft|max|animate|width|offset|tagName|safari|map|toggle||done|Array|find|toUpperCase|button|special|duration|id|copy|value|handler|ownerDocument|select|new|border|exec|stack|none|opera|nextSibling|pushStack|target|html|inArray|unit|xml|bind|GET|isReady|merge|pos|timeout|delete|one|selected|px|step|jsre|position|async|preventDefault|overflow|name|which|queue|removeChild|namespace|insertBefore|nth|removeData|fixed|parseFloat|error|readyState|multiFilter|createElement|rl|re|trim|end|_|param|first|get|results|parseInt|slice|childNodes|encodeURIComponent|append|events|elems|toLowerCase|json|readyList|setTimeout|grep|mouseenter|color|is|custom|getElementsByTagName|block|stopPropagation|addEventListener|callee|proxy|mouseleave|timers|defaultView|password|disabled|last|has|appendChild|form|domManip|props|ajax|orig|set|easing|mozilla|load|prototype|curAnim|self|charCode|timerId|object|offsetChild|Width|parentOffset|src|unbind|br|currentStyle|clean|float|visible|relatedTarget|previousSibling|handlers|isXMLDoc|on|setup|nodeIndex|unique|shift|javascript|child|RegExp|_default|deep|scroll|lastModified|teardown|setRequestHeader|timeStamp|update|empty|tr|getAttribute|innerHTML|setInterval|checked|fromElement|Number|jQuery|state|active|jsonp|accepts|application|dir|input|responseText|click|styleSheets|unload|not|lastToggle|outline|mouseout|getPropertyValue|mouseover|getComputedStyle|bindReady|String|padding|pageX|metaKey|keyCode|getWH|andSelf|clientX|Left|all|visibility|container|index|init|triggered|removeAttribute|classFilter|prevObject|submit|file|after|windowData|inner|client|globalEval|sibling|jquery|absolute|clone|wrapAll|dequeue|version|triggerHandler|oldblock|ctrlKey|createTextNode|Top|handleError|getResponseHeader|parsererror|speeds|checkbox|old|00|radio|swing|href|Modified|ifModified|lastChild|safari2|startTime|offsetTop|offsetLeft|username|location|ajaxSettings|getElementById|isSimple|values|selectedIndex|runtimeStyle|rsLeft|_load|loaded|DOMContentLoaded|clientTop|clientLeft|toElement|srcElement|val|pageY|POST|unshift|Bottom|clientY|Right|fix|exclusive|detachEvent|cloneNode|removeEventListener|swap|toString|join|attachEvent|eval|substr|head|parse|textarea|reset|image|zoom|odd|even|before|prepend|exclude|expr|quickClass|quickID|uuid|quickChild|continue|Height|textContent|appendTo|contents|open|margin|evalScript|borderTopWidth|borderLeftWidth|parent|httpData|setArray|CSS1Compat|compatMode|boxModel|cssFloat|linear|def|webkit|nodeValue|speed|_toggle|eq|100|replaceWith|304|concat|200|alpha|Last|httpNotModified|getAttributeNode|httpSuccess|clearInterval|abort|beforeSend|splice|styleFloat|throw|colgroup|XMLHttpRequest|ActiveXObject|scriptCharset|callback|fieldset|multiple|processData|getBoundingClientRect|contentType|link|ajaxSend|ajaxSuccess|ajaxError|col|ajaxComplete|ajaxStop|ajaxStart|serializeArray|notmodified|keypress|keydown|change|mouseup|mousedown|dblclick|focus|blur|stylesheet|hasClass|rel|doScroll|black|hover|solid|cancelBubble|returnValue|wheelDelta|view|round|shiftKey|resize|screenY|screenX|relatedNode|mousemove|prevValue|originalTarget|offsetHeight|keyup|newValue|offsetWidth|eventPhase|detail|currentTarget|cancelable|bubbles|attrName|attrChange|altKey|originalEvent|charAt|0n|substring|animated|header|noConflict|line|enabled|innerText|contains|only|weight|font|gt|lt|uFFFF|u0128|size|417|Boolean|Date|toggleClass|removeClass|addClass|removeAttr|replaceAll|insertAfter|prependTo|wrap|contentWindow|contentDocument|iframe|children|siblings|prevAll|wrapInner|nextAll|outer|prev|scrollTo|static|marginTop|next|inline|parents|able|cellSpacing|adobeair|cellspacing|522|maxLength|maxlength|readOnly|400|readonly|fast|600|class|slow|1px|htmlFor|reverse|10000|PI|cos|compatible|Function|setData|ie|ra|it|rv|getData|userAgent|navigator|fadeTo|fadeIn|slideToggle|slideUp|slideDown|ig|responseXML|content|1223|NaN|fadeOut|300|protocol|send|setAttribute|option|dataFilter|cssText|changed|be|Accept|stop|With|Requested|Object|can|GMT|property|1970|Jan|01|Thu|Since|If|Type|Content|XMLHTTP|th|Microsoft|td|onreadystatechange|onload|cap|charset|colg|host|tfoot|specified|with|1_|thead|leg|plain|attributes|opt|embed|urlencoded|www|area|hr|ajaxSetup|meta|post|getJSON|getScript|marginLeft|img|elements|pageYOffset|pageXOffset|abbr|serialize|pixelLeft'.split('|'),0,{}))// Common.js starts here
function DescPop(url) {
    openWnd(url, "Description", 300, 600, 0, 0, 0, 1, 1, 0, 0)
} 
//open new window
function openWnd(url, name, height, width, directories, location, menubar, resizable, scrollbars, status, toolbar) 
{
	wnd = window.open(url, name, "alwaysRaised=1,height=" + height + ",width=" + width + ",directories=" + directories + ",locaton=" + location + ",menubar=" + menubar + ",resizable=" + resizable + ",scrollbars=" + scrollbars + ",status=" + status + ",toolbar=" + toolbar)
	wnd.focus()
}


//remove all name/value pairs with the passed name from url-encoded querystring
function remQStringName(qString, name) {
var i
var qStringNew = ""

if (qString != "") {
var curName
var arrNameVal = qString.split("&")

for (i = 0; i < arrNameVal.length ; i++) {
    
    curName = URLDecode(arrNameVal[i].split("=")[0])
    if (curName.toLowerCase() != name.toLowerCase()) qStringNew += "&" + arrNameVal[i]

}}

return qStringNew.substr(1)
}

function GetSelText(ctl) {
var selIdx = ctl.selectedIndex
return selIdx == -1 ? "" : ctl[selIdx].text
}

function URLDecode(urlStr) {
return unescape(urlStr.replace(/\+/g, " "))
}

//get select box value
function GetSelVal(ctl) {
var selIdx = ctl.selectedIndex
return selIdx == -1 ? "" : ctl[selIdx].value
}

function notNumber(number) {
number = number.toString()
for (var i=0; i<number.length; i++) {
if (number.charAt(i) > "9" || number.charAt(i) < "0") return true
}
return false
}

//check whether text-box is empty
function isEmpty(field, fieldName, msg){
if (Trim(field.value) == ""){
if (msg == null)
    msg = "Please enter " + fieldName + "."
    alert(msg);
	field.focus()
	return true

}
return false
}

//validate ASCII Character Set
function charCheck(field, message, toASCIIfield) {
if (toASCIIfield == null)
var txt = field.value
else
var txt = ToASCII(field)

for (var i=0; i<txt.length; i++) {
if (txt.charCodeAt(i) >= 128) {
alert(message)
field.focus()
return true
}}

return false
}

//check whether text-box is empty
function isEmptyContact(field, fieldName, msg) 
{ //alert(field)
	if (Trim(field.value) == "") 
	{
		if (msg == null)
			msg = "Please enter " + fieldName + "."
			field.focus()
			return true
		
	}

		return false
}


//validate ASCII Character Set
function charCheckContact(field, message, toASCIIfield) 
	{
		if (toASCIIfield == null)
			var txt = field.value
		else
			var txt = ToASCII(field)
			for (var i=0; i<txt.length; i++) 
			{
				if (txt.charCodeAt(i) >= 128) 
				{
				field.focus()
				return true
				}
			}
		return false
	}
function notSelected(field, fieldName, msg) 
{
	if (field.selectedIndex == 0) 
	{
		if (msg == null)
			msg = "Please select " + fieldName + "."
			field.focus()
			return true
	}
		return false
}

var AllowDocLangClick;
var AllowDocCurrClick;

AllowDocLangClick = false;
AllowDocCurrClick = false;

var LangjustClicked;
LangjustClicked = false;

var CurrjustClicked;
CurrjustClicked = false;
//_______________________________________________________________________________________
//for handling lang and curr dropdown style.
//_______________________________________________________________________________________
var IsCollapsable = false;
var UPPER_LIMIT = LOWER_LIMIT = 0;
var IsMovingDownClicked,IsMovingUpClicked = false;
var ItemsTable ;
var ParentDiv ;
var ParentDiv_ID ;
var PixTop = 0;
var PixHeight = 0;
 
 //Image Click event handler
function ImageClick (ParentDivID, ItemsTableID)
{
    ItemsTable = document.getElementById(ItemsTableID);
    ParentDiv = document.getElementById(ParentDivID);
    ParentDiv_ID =  ParentDivID;
    if(ItemsTable.style.top == null || ItemsTable.style.top == '')
    {
        ItemsTable.style.top = (0 - ItemsTable.getElementsByTagName("TR").length * 22) + "px";
    }
    
    UPPER_LIMIT = ItemsTable.getElementsByTagName("TR").length * 22;
    LOWER_LIMIT = 0 - UPPER_LIMIT;
     
    if(ParentDiv.style.display == "none")
    {
       IsCollapsable = false;
       ParentDiv.style.height = "0px";
       ItemsTable.style.top = (0 - ItemsTable.getElementsByTagName("TR").length * 22) + "px";
    }
    PixTop = 0;
    PixHeight = 0;
    if(IsCollapsable)
    {
        IsCollapsable = false;
        IsMovingUpClicked = true;
        IsMovingDownClicked = false;
        MoveUp();
    }
    else
    {
        IsCollapsable = true;
        IsMovingDownClicked = true;
        IsMovingUpClicked = false;
        toggleDisplay(ParentDivID, "block");
        MoveDown();
    }
}
var MoveUp = function()
{
    if(LOWER_LIMIT >= PixTop)
    {
        toggleDisplay(ParentDiv_ID, "none");
       
        return;
    }
    if(IsMovingDownClicked)
    {
        return;
    }
     
    PixTop = parseInt(ItemsTable.style.top.replace("px",""));
    PixHeight = parseInt(ParentDiv.style.height.replace("px",""));
	PixTop = PixTop - 10; 
	PixHeight = PixHeight - 10;
    ItemsTable.style.top = PixTop.toString() + "px";
    ParentDiv.style.height = PixHeight.toString() + "px";
	setTimeout(MoveUp,0);      
}
var MoveDown = function()
{
    if(UPPER_LIMIT <= PixHeight || IsMovingUpClicked )
    {
         
        return;
    }
 
	PixTop = parseInt(ItemsTable.style.top.replace("px",""));
    PixHeight = parseInt(ParentDiv.style.height.replace("px",""));
    PixTop = PixTop + 10; 
	PixHeight = PixHeight + 10;
    ItemsTable.style.top = PixTop.toString() + "px";
    ParentDiv.style.height = PixHeight.toString() + "px";
    setTimeout(MoveDown,0);      
}

function langcurrMouseOver(currentObject, langTitle){
if(langTitle != ''){
var images = currentObject.getElementsByTagName("img");
currentObject.style.backgroundColor = "#eae7a8";       
var index = images.length == 2? 1: 0;
if(images.length >0)
{
images[index].style.visibility = "visible";
}}}

function langcurrMouseOut(currentObject, langTitle){
if(langTitle != ''){
var images = currentObject.getElementsByTagName("img");
currentObject.style.backgroundColor = "#f8f8f8";
var index = images.length == 2? 1: 0;
if(images.length >0){
    images[index].style.visibility = "hidden";
}}}

function toggleDisplay(divId, ops) {

    var div = document.getElementById(divId);
    if (document.getElementById(divId).style.display == "block") ops = "none";
    div.style.display = ops;
 
      if (divId == 'dropmenulang') {
        AllowDocLangClick = true;
        LangjustClicked = true;
        CurrjustClicked = false;
      }
      else {
        AllowDocCurrClick = true;
        CurrjustClicked = true;
        LangjustClicked = false;
      }
  
}

function toggleDisplay2(obj, msgShow, msgHide, msgTemplate) {
    var objTemplate = document.getElementById(obj)
    var objMsgTemplate = document.getElementById(msgTemplate)
    if (objTemplate.style.display == 'block') {
        objTemplate.style.display = 'none';
        objMsgTemplate.innerHTML = msgHide;
    } else {
    objTemplate.style.display = 'block';
        objMsgTemplate.innerHTML = msgShow;
    }
}

function showLangFalse() {
if (LangjustClicked == true){
    LangjustClicked = false;
	return;
}
if (AllowDocLangClick == true) {
document.getElementById('dropmenulang').style.display="none";
AllowDocLangClick = false;
}}

function showCurrFalse() {
if (CurrjustClicked == true) {
    CurrjustClicked = false;
	return;
}

if (AllowDocCurrClick == true) {
document.getElementById('dropmenucurr').style.display="none";
AllowDocCurrClick = false;
}}

function showDivsFalse() {
    showCurrFalse();
    showLangFalse();
}

document.onclick = showDivsFalse;

function ChangeValue(urlVar, varValue) {
if (varValue != "") {
var frm = document.MainLangSwitch
var URL = switch_URL(urlVar, varValue)

if (frm) {
	frm.action = URL
	frm.submit()
} else {
	location = URL
}}}

function switch_URL(urlVar, varValue) {
var qString = location.search.substr(1)
var arrQString = qString.split("&")
var varAdded = false

for (var i in arrQString) {
if (arrQString[i].split("=")[0].toLowerCase() == urlVar) {
	arrQString[i] = urlVar + "=" + varValue
	varAdded = true
}}
qString = arrQString.join("&")
if (!varAdded) {
if (qString != "") qString += "&"
qString += urlVar + "=" + varValue
}
return location.pathname + "?" + qString
}

function LTrim(str){
var whitespace = new String(" \t\n\r");
var s = new String(str);
if (whitespace.indexOf(s.charAt(0)) != -1) {
var j=0, i = s.length;
while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
j++;
s = s.substring(j, i);
}
return s;
}

function RTrim(str){
var whitespace = new String(" \t\n\r");
var s = new String(str);
if (whitespace.indexOf(s.charAt(s.length-1)) != -1) {
var i = s.length - 1;
while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
i--;
s = s.substring(0, i+1);
}
return s;
}

function Trim(str){
return RTrim(LTrim(str));
}

function Len(str)
{  return String(str).length;  }

function Left(str, n){
        if (n <= 0)     // Invalid bound, return blank string
                return "";
        else if (n > String(str).length)   // Invalid bound, return
                return str;                // entire string
        else // Valid bound, return appropriate substring
                return String(str).substring(0,n);
}
function Right(str, n){
        if (n <= 0)     // Invalid bound, return blank string
           return "";
        else if (n > String(str).length)   // Invalid bound, return
           return str;                     // entire string
        else { // Valid bound, return appropriate substring
           var iLen = String(str).length;
           return String(str).substring(iLen, iLen - n);
        }
}

function Mid(str, start, len){
        // Make sure start and len are within proper bounds
        if (start < 0 || len < 0) return "";

        var iEnd, iLen = String(str).length;
        if (start + len > iLen)
                iEnd = iLen;
        else
                iEnd = start + len;

        return String(str).substring(start,iEnd);
}
function InStr(strSearch, charSearchFor){
for (i=0; i < Len(strSearch); i++)
{
    if (charSearchFor == Mid(strSearch, i, Len(charSearchFor) ))
    {
		return i;
    }
}
return -1;
}

//trim string
function trim(stringToTrim) {
	var i, j

	//left trim
	for(i=0; i<stringToTrim.length; i++) {
		if (stringToTrim.charAt(i) != " ") break
	}

	//right trim
	for(j=stringToTrim.length-1; j>=i; j--) {
		if (stringToTrim.charAt(j) != " ") break
	}

	return stringToTrim.substring(i, j + 1)
}
//End of Utils.js


//replace or add name/value pairs in url-encoded querystring
function setQStringName(qString, name, arrVal) {
    var qStringNew = remQStringName(qString, name)
    var i
  
   
    var start = qStringNew == "" ? 1 : 0
    for (i = 0; i < arrVal.length; i++) {
        qStringNew += "&" + escape(name) + "=" + escape(arrVal[i])
    }
    return qStringNew.substr(start)
}


//extract (first!) value from querystring for the passed name
function GetQSVal(qsName) {
    var qsPair
    var qString = location.search.substr(1)
    var arrNameVal = qString.split("&")
    for (var i in arrNameVal) {
        qsPair = arrNameVal[i].split("=")
        if (URLDecode(qsPair[0]).toLowerCase() == qsName.toLowerCase()) return URLDecode(qsPair[1])
    }
    return ""
}

function Reload(name, val, totPageNo) {
    if (val < totPageNo + 1 && val > 0) {
        var qString = location.search.substr(1)
        //always resert page to 1
        if (name != "page") {
            var page = GetQSVal("page")
            if (page != "1" && page != "") qString = setQStringName(qString, "page", new Array("1"))
        }
        qString = setQStringName(qString, name, new Array(val.toString()))
        location = location.pathname + "?" + qString
    }
}


function setCriteria(val) {
    document.getElementById('SearchBy').value = val;
}

function invalidChars(validatedControl, validatedName, charString, msg) {
    var validatedString = trim(validatedControl.value).toLowerCase()
    charString = charString.toLowerCase()

    for (var i = 0; i < validatedString.length; i++) {
        for (var j = 0; j < charString.length; j++) {
            if (validatedString.charAt(i) == charString.charAt(j)) {

                if (typeof (Common_Scripts_FuncLib_Space) == "undefined")
                    Common_Scripts_FuncLib_Space = "space"

                var alertString = charString.split("").join("  ")
                alertString = alertString.split("     ").join("  " + Common_Scripts_FuncLib_Space + "  ")

                if (msg == null)
                    msg = validatedName + " cannot contain any of the following illegal characters:\n\n " + alertString

                msg = msg.replace(/\[IllegalCharacters\]/, alertString)
                alert(msg)
                validatedControl.focus()
                return true
            }
        }
    }

    return false
}

function submitForm() {

    //check that at least one star rating is selected

    if (document.getElementById('rating3').checked == false && document.getElementById('rating4').checked == false && document.getElementById('rating5').checked == false)  {
    if (typeof (Common_Scripts_SearchEngine_SelectStar) == "undefined")
    Common_Scripts_SearchEngine_SelectStar = "Please select at least one Star Rating."

    alert(Common_Scripts_SearchEngine_SelectStar)
    document.getElementById('rating5').focus()
    return false;
    }

    if ($("#SearchBy").val() == "LocationKey" & ($("#destination").val().length < 3 | $("#destination").val() == HINT_DRE)) {
        alert(Common_Scripts_ValidDestinationSearch);
        return false;
    }

    if (document.getElementById("SearchBy").value == "Name") {
        document.getElementById('hotelname').value = trim(document.getElementById('hotelname').value)
        if (typeof (Common_Scripts_SearchEngine_HotelName) == "undefined")
            Common_Scripts_SearchEngine_HotelName = "Hotel Name cannot contain any of the following illegal characters:\n\n%"

        if (typeof (Common_Scripts_SearchEngine_HotelNameLength) == "undefined")
            Common_Scripts_SearchEngine_HotelNameLength = "Hotel Name should be at least 3 characters long."

        if (invalidChars(document.getElementById('hotelname'), "", "%", Common_Scripts_SearchEngine_HotelName)) return false;
   

        if (typeof (document.getElementById('hotelname')) != 'undefined') {
            if (trim(document.getElementById('hotelname').value).length < 3) {
                alert(Common_Scripts_SearchEngine_HotelNameLength);
                return false;

            }
        }
    }
    else {
        if (document.getElementById("SearchBy").value == "LocationKey") {
            if(document.getElementById('LocationKey'))
                document.getElementById('LocationKey').value = trim(document.getElementById('LocationKey').value)
                
            if (document.getElementById('hdnLocationKey'))
                document.getElementById('hdnLocationKey').value = trim(document.getElementById('hdnLocationKey').value)
                
            if (typeof (Common_Scripts_SearchEngine_LocationName) == "undefined")
                Common_Scripts_SearchEngine_LocationName = "Hotel Name cannot contain any of the following illegal characters:\n\n%"

            if (typeof (Common_Scripts_SearchEngine_LocationLength) == "undefined")
                Common_Scripts_SearchEngine_LocationLength = "Location Name should be at least 3 characters long."
            if (document.getElementById('LocationKey')) {
                if (invalidChars(document.getElementById('LocationKey'), "", "%", Common_Scripts_SearchEngine_LocationName)) return false;

            }
                
            
/*            if (document.getElementById('destination')) {
                if (document.getElementById('destination').value.split("'").length > 2) 
                {
                    alert(Common_Scripts_SearchEngine_LocationName + "\\~`!@#$%^&*()-+{}|\"':;?/><");
                    return false;
                }
                if (CheckForSpecialChars(document.getElementById('destination').value, "\\,~,`,!,@,#,$,%,^,&,*,(,),-,+,{,},|,\",:,;,?,/,>,<" )) {
                    alert(Common_Scripts_SearchEngine_LocationName + "\\~`!@#$%^&*()-+{}|\"':;?/><");
                    return false;
                }
            }
*/            
            if (document.getElementById('hdnLocationKey')) {
                if (invalidChars(document.getElementById('hdnLocationKey'), "", "%", Common_Scripts_SearchEngine_LocationName)) return false;
            }

            if (document.getElementById('LocationKey')) {
                if (trim(document.getElementById('LocationKey').value).length < 3) {
                    alert(Common_Scripts_SearchEngine_LocationLength);
                    return false;

                }
            }
            
            
        }
    }

}

function CheckForSpecialChars(str, splchars) {
    var charArr = splchars.split(",");
    for (i = 0; i < charArr.length; i++) {
        if (str.indexOf(charArr[i]) >= 0) {
            return true;
        }
    }
return false;
}


//update all name/value pairs with the passed name from url-encoded querystring
function updateQStringName(qString, name, value) {
    var i
    var qStringNew="" 
    //var start = qStringNew == "" ? 1 : 0
    
    if (qString != "") {
        var curName
        var arrNameVal = qString.split("&")
         
       

        for (i in arrNameVal) {
            curName = URLDecode(arrNameVal[i].split("=")[0])
            if (curName.toLowerCase() != name.toLowerCase()) qStringNew += "&" + arrNameVal[i]
        }
    }
    
    qStringNew += "&" + escape(name) + "=" + value

    return qStringNew.substr(1)
}

function UpdateFilter() {

    var qString = location.search.substr(1)

    var qStringRating
    qStringRating = remQStringName(qString, "star3")
    qStringRating = remQStringName(qStringRating, "star4")
    qStringRating = remQStringName(qStringRating, "star5")

    if (document.getElementById('star5').checked == false &&
        document.getElementById('star4').checked == false &&
        document.getElementById('star3').checked == false) {
        qStringRating += "&star3=ON&star4=ON&star5=ON&starAll=ON"
        qString = qStringRating
    }
    else if( document.getElementById('chkRatingAll').checked == true)
    {
        qStringRating += "&star3=ON&star4=ON&star5=ON&starAll=ON"
        qString = qStringRating
    }
    else {
        if (document.getElementById('star3').checked == true) {
            qStringRating += "&star3=" + document.getElementById('star3').value
            qString = qStringRating
        }

        if (document.getElementById('star4').checked == true) {
            qStringRating += "&star4=" + document.getElementById('star4').value
            qString = qStringRating
        }

        if (document.getElementById('star5').checked == true) {
            qStringRating += "&star5=" + document.getElementById('star5').value
            qString = qStringRating
        }
    }
    
    //-------------------------getting accommodation filters.
    var accChk = "";
    
    if(document.getElementById("ACCOMMODATIONTYPEAll").checked == false)
    {
        var arraccommodationTypeId = accommodationTypeIds.split(",");
        for (index = 0; index < arraccommodationTypeId.length - 1; index++) {
            if(arraccommodationTypeId[index] != ""){
                var chkbox = document.getElementById("ACCOMMODATIONTYPE" + arraccommodationTypeId[index])
                if (chkbox != null && chkbox.checked == true) {
                  accChk += chkbox.value + ',';
                }
            }
        }
        
        if (accChk.length > 0) {   
          accChk = accChk.substring(0, accChk.length - 1);
        }
    }
    
    var qStringAcc = remQStringName(qString, "accChk");
    qStringAcc += "&accChk=" + accChk;
    qString = qStringAcc;           
    //-------------------------getting accommodation filters - Ends.
       
    // FacilitiesCount is calculated in searchfilter.inc
    var count = FacilitiesCount
    var facChk =""
    if (document.getElementById("FACILITIESAll").checked == false) 
    {
        var arrFacilitiesId = FacilitiesId.split(",")
        for (i = 0; i < count+1; i++) {
             var chkbox = document.getElementById("FACILITIES" + arrFacilitiesId[i]);
             if (chkbox != null && chkbox.checked == true) {
              facChk += chkbox.value + ','
            }
        }
    }
    var chkLen = facChk.substring(0, facChk.length - 1)
    /////////

    var qStringNew = remQStringName(qString, "facChk")
    
    var chkLen = facChk.substring(0, facChk.length - 1)
    
    if (chkLen.length > 0) {       
        var arrVal = new Array(chkLen)       
        var i
       qStringNew += "&facChk=" + arrVal[0]       
    }

    qString = qStringNew
    qString = remQStringName(qString, "page")
    qString = remQStringName(qString, "rpage")
    
    qString = qString + "&rpage=" + document.getElementById("rpage").value;
    
    location = location.pathname + "?" + qString
}

function replaceQueryString(initialQuery, keyString, newValue) {
var re = new RegExp("([?|&])" + keyString + "=.*?(&|$)", "i");

var matches = initialQuery.match(re);

if (matches && matches.length)
    return initialQuery.replace(re, '$1' + keyString + "=" + newValue + '$2');
else {
    if (initialQuery.indexOf('?') < 0)
        return initialQuery + '?' + keyString + "=" + newValue;
    else
        return initialQuery + '&' + keyString + "=" + newValue;
}}


function Querystring(qs) {
this.params = {};

if (qs == null) qs = location.search.substring(1, location.search.length);
if (qs.length == 0) return;

qs = qs.toLowerCase();
qs = qs.replace(/\+/g, ' ');
var args = qs.split('&'); // parse out name/value pairs separated via &

// split out each name=value pair
for (var i = 0; i < args.length; i++) {
var pair = args[i].split('=');
var name = decodeURIComponent(unescape(pair[0]));

var value = (pair.length == 2)
	? decodeURI(encodeURI(pair[1]))
	: name;

this.params[name] = value;
}}

Querystring.prototype.get = function(key, default_) {
    key = key.toLowerCase();
    var value = this.params[key];
    return (value != null) ? value : default_;
}

function showpopup(cid,parentobj, x, y) {
    var topoffset = 18;
    if( x == 'undefined' ) x = 0 ; 
    if( y == 'undefined' ) y = 0 ;
	obj = document.getElementById(cid);
	mainobj = document.getElementById(parentobj);
	var curleft = curtop = 0;
	if (mainobj.offsetParent) {
	curleft = mainobj.offsetLeft;
	curtop = mainobj.offsetTop;
	while (mainobj = mainobj.offsetParent) {
	curleft += mainobj.offsetLeft;
	curtop += mainobj.offsetTop;
		}
	}
	obj.style.position = "absolute";
	obj.style.display = "";
	obj.style.left = (curleft + x) + 'px'; //Fix for bug#1737
	obj.style.top =  (curtop + topoffset + y) + 'px';
}


function hidepopup(divid) {
	objid = divid;
	document.getElementById(objid).style.display = "none";
}


function navigateToDirectHotelPage(hotelid,checkin,checkout, locKey, locID, isDRE, isByHotelName, hotelName, refinfo) {
  var directHotelString;
    if (isDRE == 'True')
    {
     
      directHotelString = "directhotel.asp?id=" + hotelid + "&ncl=&checkin=2009-03-10&checkout=2009-03-12&locKey=&locID=&locDispName=" + locDispName;
      directHotelString = replaceQueryString(directHotelString, "locKey", locKey);
      directHotelString = replaceQueryString(directHotelString, "locID", locID);
    }
    else if (isByHotelName == 'True')
    {
        directHotelString = "directhotel.asp?id=" + hotelid + "&ncl=&checkin=2009-03-10&checkout=2009-03-12&hotelName=";
        directHotelString = replaceQueryString(directHotelString, "hotelName", hotelName);        
    }
    else
    {
        directHotelString = "directhotel.asp?id=" + hotelid + "&ncl=&checkin=2009-03-10&checkout=2009-03-12";
    }    
    directHotelString = replaceQueryString(directHotelString, "id", hotelid);
    directHotelString = replaceQueryString(directHotelString, "checkin", checkin);
    directHotelString = replaceQueryString(directHotelString, "checkout", checkout);

    var varDMName = ""
    if (document.domain.length > 0) {
        varDMName = document.domain
    }

    directHotelString = directHotelString + "&rpage=" + varDMName + "/" + refinfo;

    window.location.href = directHotelString;
    }
    
    function navigateToDirectHotelPageRatingTab(hotelid,checkin,checkout, locKey, locID, isDRE) {
  var directHotelString;
    if (isDRE == 'True')
    {
      directHotelString = "directhotel.asp?id=" + hotelid + "&ncl=&checkin=2009-03-10&checkout=2009-03-12&locKey=&locID=&tab=2";
      directHotelString = replaceQueryString(directHotelString, "locKey", locKey);
      directHotelString = replaceQueryString(directHotelString, "locID", locID);
    }
    else
    {
    directHotelString = "directhotel.asp?id=" + hotelid + "&ncl=&checkin=2009-03-10&checkout=2009-03-12&tab=2";
    }    
    directHotelString = replaceQueryString(directHotelString, "id", hotelid);
    directHotelString = replaceQueryString(directHotelString, "checkin", checkin);
    directHotelString = replaceQueryString(directHotelString, "checkout", checkout);

    window.location.replace(directHotelString);
    }

function refreshattabclick(refreshval) {
    var pagecode = GetQSVal("vw");
    if (pagecode != refreshval)
    {
        var qString = location.search.substr(1)
        qString = location.pathname + "?" + qString
        qString = replaceQueryString(qString, "vw", refreshval)
        qString = replaceQueryString(qString, "rpage", document.getElementById("rpage").value)
        qString = replaceQueryString(qString, "page", "1")
        location =  qString;
    }
}

function logoutclick() {
    var qString = ""
    if (location.pathname.toLowerCase() == "/selections.asp") {
        qString = "?" + location.search.substr(1)

        qString = replaceQueryString(qString, "lgt", "1")

        qString = replaceQueryString(qString, "rpage", location.pathname)
    }
    //location = qString;
    location = "/logout.asp" + qString;
}


function ChangeCurrencies(currencycode, currencyname, refinfo) {
    document.getElementById('txtCurrency').innerHTML = document.getElementById(currencycode).innerHTML;
    toggleDisplay('dropmenucurr', 'none');

    var squery = "";
    var sFquery = "";
    var varDMName = "";
    if (document.domain.length > 0) {
        varDMName = document.domain
    }

    sFquery = window.location.toString();
    squery = replaceQueryString(sFquery, "curr", currencycode);
    squery = replaceQueryString(squery, "rpage", varDMName + "/" + refinfo);

    
    //TODO integrate with current function, no need to have 2 same functions
    //var frm = document.MainLangSwitch;
    
    //if (frm) {
    //    frm.action = squery
    //    frm.submit()
    //}
    //else {
        window.location.replace(squery);
    //}
    
    //window.location.replace( replaceQueryString(window.location.toString(),"curr",currencycode ));
}

function ChangeCurrenciesCCForm(currencycode, currencyname, refinfo) {
    document.getElementById('txtCurrency').innerHTML = document.getElementById(currencycode).innerHTML;
    toggleDisplay('dropmenucurr', 'none');

    var squery = "";
    var sFquery = "";
    var varDMName = "";
    if (document.domain.length > 0) {
        varDMName = document.domain
    }

    sFquery = window.location.toString();
    squery = replaceQueryString(sFquery, "curr", currencycode);
    squery = replaceQueryString(squery, "rpage", varDMName + "/" + refinfo);

    var frm = document.MainLangSwitch
    frm.action = squery
    frm.submit()
}


function ChangeLangCCForm(languagecode, languagename, refinfo) {
    document.getElementsByName("imgLang")[0].id = languagecode + "Smallgif";
    document.getElementsByName("imgLang")[0].src = "SiteEngine/HTC/Images/lang/" + languagecode + "Small.gif";
    toggleDisplay('dropmenulang', 'none');

    var squery = "";
    var sFquery = "";
    var varDMName = "";
    if (document.domain.length > 0) {
        varDMName = document.domain
    }

    sFquery = window.location.toString();
    squery = replaceQueryString(sFquery, "lc", languagecode);
    squery = replaceQueryString(squery, "rpage", varDMName + "/" + refinfo);
    var frm = document.MainLangSwitch
    if (frm) {
        frm.action = squery
        frm.submit()
    } 
}





function ChangeLang(languagecode, languagename, refinfo) {
    document.getElementsByName("imgLang")[0].id = languagecode + "Smallgif";
    document.getElementsByName("imgLang")[0].src = "SiteEngine/HTC/Images/lang/" + languagecode + "Small.gif";
    toggleDisplay('dropmenulang', 'none');

    var squery = "";
    var sFquery = "";
    var varDMName = "";
    if (document.domain.length > 0) {
        varDMName = document.domain
    }

    sFquery = window.location.toString();
    squery = replaceQueryString(sFquery, "lc", languagecode);
    squery = replaceQueryString(squery, "rpage", varDMName + "/" + refinfo);

    window.location.replace(squery);
}

function unCheckOptions(currentObject, parentObjectId){
if (currentObject.checked){
var parentObejct = document.getElementById(parentObjectId);
var childOptions = parentObejct.getElementsByTagName("input");
for(index=0; index<childOptions.length; index++){
if (childOptions[index].type == "checkbox" ){
    childOptions[index].checked = false;
}}
currentObject.checked = true;
}}

function unCheckAll(AllOption){
    document.getElementById(AllOption).checked = false;
}

function DisplayMemberDollar(mainobj, currencysign, roomtotal, memberdollars, earnpercentage,optionalparam) {
obj = document.getElementById("areyoumember");

var curleft = curtop = 0;
if (mainobj.offsetParent) {
 curleft = mainobj.offsetLeft;
 curtop = mainobj.offsetTop;
 while (mainobj = mainobj.offsetParent) {
     curleft += mainobj.offsetLeft ;
     curtop += mainobj.offsetTop - 70;
}}

obj.style.position = "absolute";
obj.style.display = "block";
if(curleft - 640 < 5)
    obj.style.left = '5px';
else
    obj.style.left = curleft - 640 + 'px';
    var IE = /*@cc_on!@*/false;
    if (IE) {
        obj.style.top = document.documentElement.scrollTop + 50 + 'px';
    }
    else {
        obj.style.top = window.pageYOffset + 50 + 'px';
    }

var _memberdollar = document.getElementById("memberdollar")

if (_memberdollar != null)
 _memberdollar.innerHTML = currencysign + " " + memberdollars;

var _currencysign = document.getElementById("currencysign")
if (_currencysign != null)
 _currencysign.innerHTML = currencysign;

var _roomtotal = document.getElementById("roomtotal")
if (_roomtotal != null)
 _roomtotal.innerHTML = roomtotal;

var _earnpercentage = document.getElementById("earnpercentage")

if (_earnpercentage != null)
 _earnpercentage.innerHTML = earnpercentage; 
}

function HideMemberDollarPopup() {
 document.getElementById("areyoumember").style.display = "none";
}

function JEscape(str) {
str = str.replace(/<jstab>/g, "\t");
str = str.replace(/<jsbr>/g, "\n");
return str;
}


//check whether passed parameter is a valid number
function notNumber(number) {
number = number.toString()
for (var i = 0; i < number.length; i++) {
    if (number.charAt(i) > "9" || number.charAt(i) < "0") return true
}
return false
}

//validate email address
function notEmail(field, fieldName, msg) {
var email = trim(field.value)

if (email == "") return false

var at = false
var dot = false

for (var i = 0; i < email.length; i++) {
    if (email.charAt(i) == "@") at = true
    if (email.charAt(i) == "." && at) dot = true
}

if (!(at && dot && email.length > 5)) {
    if (msg == null)
        msg = "The " + fieldName + " you entered is not a valid e-mail address."

    alert(msg)
    field.focus()
    field.select()
    return true
}

//check for invalid characters
if (invalidChars(field, "E-mail", '%,;|" <>\\/')) return true

return false
}


function makeHttpRequest(url) {
    http_request = false
    if (window.XMLHttpRequest) {
        http_request = new XMLHttpRequest()
        if (http_request.overrideMimeType) {
            http_request.overrideMimeType('text/xml')
        }
    }
    else if (window.ActiveXObject) {
        try {
            if (IeVersion()['Version'] > 6) {
                http_request = new ActiveXObject("MSXML2.DOMDocument")
            } else {
                http_request = new ActiveXObject("MSXML2.XMLHTTP.3.0")
            }
        }
    catch (e) {
        onError(e)
        try {
            if (IeVersion()['Version'] > 6) {
                http_request = new ActiveXObject("Microsoft.XMLHTTP")
            } else {
                http_request = new ActiveXObject("MSXML2.XMLHTTP.3.0")
            }
        }
        catch (e) {
            onError(e) 
        }
    }
}
    if (!http_request) {
        onError()
        return false
    }
    http_request.onreadystatechange = refreshPage
    http_request.open('GET', url , true)
    http_request.send(null)
}


function refreshPage() {
    if (http_request.readyState == 4) {
        window.location.reload(false);
    }
}

//Start of defect-3016
function IeVersion() {
    var browser = navigator.userAgent.toLowerCase()
    var ba = new Array()
    if (browser.indexOf('msie') != -1) {
        var splie, splietoname
        splie = browser.split(';')
        splietoname = splie[1].split(' ')
        return parseFloat(splietoname[2])
    }
}
function onError(e) {
}
//Start of defect-3016
(function($) { $.extend($.ui, { datepicker: { version: "1.7.1"} }); var PROP_NAME = 'datepicker'; function Datepicker() { this.debug = false; this._curInst = null; this._keyEvent = false; this._disabledInputs = []; this._datepickerShowing = false; this._inDialog = false; this._mainDivId = 'ui-datepicker-div'; this._inlineClass = 'ui-datepicker-inline'; this._appendClass = 'ui-datepicker-append'; this._triggerClass = 'ui-datepicker-trigger'; this._dialogClass = 'ui-datepicker-dialog'; this._disableClass = 'ui-datepicker-disabled'; this._unselectableClass = 'ui-datepicker-unselectable'; this._currentClass = 'ui-datepicker-current-day'; this._dayOverClass = 'ui-datepicker-days-cell-over'; this.regional = []; this.regional[''] = { closeText: 'Done', prevText: 'Prev', nextText: 'Next', currentText: 'Today', monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], dateFormat: 'mm/dd/yy', firstDay: 0, isRTL: false }; this._defaults = { showOn: 'focus', showAnim: 'show', showOptions: {}, defaultDate: null, appendText: '', buttonText: '...', buttonImage: '', buttonImageOnly: false, hideIfNoPrevNext: false, navigationAsDateFormat: false, gotoCurrent: false, changeMonth: false, changeYear: false, showMonthAfterYear: false, yearRange: '-10:+10', showOtherMonths: false, calculateWeek: this.iso8601Week, shortYearCutoff: '+10', minDate: null, maxDate: null, duration: 'normal', beforeShowDay: null, beforeShow: null, onSelect: null, onChangeMonthYear: null, onClose: null, numberOfMonths: 1, showCurrentAtPos: 0, stepMonths: 1, stepBigMonths: 12, altField: '', altFormat: '', constrainInput: true, showButtonPanel: false, customTriggerElementID: null }; $.extend(this._defaults, this.regional['']); this.dpDiv = $('<div id="' + this._mainDivId + '" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all ui-helper-hidden-accessible"></div>') } $.extend(Datepicker.prototype, { markerClassName: 'hasDatepicker', log: function() { if (this.debug) console.log.apply('', arguments) }, setDefaults: function(settings) { extendRemove(this._defaults, settings || {}); return this }, _attachDatepicker: function(target, settings) { var inlineSettings = null; for (var attrName in this._defaults) { var attrValue = target.getAttribute('date:' + attrName); if (attrValue) { inlineSettings = inlineSettings || {}; try { inlineSettings[attrName] = eval(attrValue) } catch (err) { inlineSettings[attrName] = attrValue } } } var nodeName = target.nodeName.toLowerCase(); var inline = (nodeName == 'div' || nodeName == 'span'); if (!target.id) target.id = 'dp' + (++this.uuid); var inst = this._newInst($(target), inline); inst.settings = $.extend({}, settings || {}, inlineSettings || {}); if (nodeName == 'input') { this._connectDatepicker(target, inst) } else if (inline) { this._inlineDatepicker(target, inst) } }, _newInst: function(target, inline) { var id = target[0].id.replace(/([:\[\]\.])/g, '\\\\$1'); return { id: id, input: target, selectedDay: 0, selectedMonth: 0, selectedYear: 0, drawMonth: 0, drawYear: 0, inline: inline, dpDiv: (!inline ? this.dpDiv : $('<div class="' + this._inlineClass + ' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))} }, _connectDatepicker: function(target, inst) { var input = $(target); inst.trigger = $([]); if (input.hasClass(this.markerClassName)) return; var appendText = this._get(inst, 'appendText'); var isRTL = this._get(inst, 'isRTL'); if (appendText) input[isRTL ? 'before' : 'after']('<span class="' + this._appendClass + '">' + appendText + '</span>'); var showOn = this._get(inst, 'showOn'); if (showOn == 'focus' || showOn == 'both') input.focus(this._showDatepicker); if (showOn == 'customclick') { input.focus(this._showDatepicker); var customTriggerElementID = this._get(inst, 'customTriggerElementID'); if (customTriggerElementID) { inst.trigger = $('#' + customTriggerElementID).addClass(this._triggerClass); inst.trigger.click(function() { if ($.datepicker._datepickerShowing && $.datepicker._lastInput == target) $.datepicker._hideDatepicker(); else $.datepicker._showDatepicker(target); return false }) } } if (showOn == 'button' || showOn == 'both') { var buttonText = this._get(inst, 'buttonText'); var buttonImage = this._get(inst, 'buttonImage'); inst.trigger = $(this._get(inst, 'buttonImageOnly') ? $('<img/>').addClass(this._triggerClass).attr({ src: buttonImage, alt: buttonText, title: buttonText }) : $('<button type="button"></button>').addClass(this._triggerClass).html(buttonImage == '' ? buttonText : $('<img/>').attr({ src: buttonImage, alt: buttonText, title: buttonText }))); input[isRTL ? 'before' : 'after'](inst.trigger); inst.trigger.click(function() { if ($.datepicker._datepickerShowing && $.datepicker._lastInput == target) $.datepicker._hideDatepicker(); else $.datepicker._showDatepicker(target); return false }) } input.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).bind("setData.datepicker", function(event, key, value) { inst.settings[key] = value }).bind("getData.datepicker", function(event, key) { return this._get(inst, key) }); $.data(target, PROP_NAME, inst) }, _inlineDatepicker: function(target, inst) { var divSpan = $(target); if (divSpan.hasClass(this.markerClassName)) return; divSpan.addClass(this.markerClassName).append(inst.dpDiv).bind("setData.datepicker", function(event, key, value) { inst.settings[key] = value }).bind("getData.datepicker", function(event, key) { return this._get(inst, key) }); $.data(target, PROP_NAME, inst); this._setDate(inst, this._getDefaultDate(inst)); this._updateDatepicker(inst); this._updateAlternate(inst) }, _dialogDatepicker: function(input, dateText, onSelect, settings, pos) { var inst = this._dialogInst; if (!inst) { var id = 'dp' + (++this.uuid); this._dialogInput = $('<input type="text" id="' + id + '" size="1" style="position: absolute; top: -100px;"/>'); this._dialogInput.keydown(this._doKeyDown); $('body').append(this._dialogInput); inst = this._dialogInst = this._newInst(this._dialogInput, false); inst.settings = {}; $.data(this._dialogInput[0], PROP_NAME, inst) } extendRemove(inst.settings, settings || {}); this._dialogInput.val(dateText); this._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null); if (!this._pos) { var browserWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; var browserHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft; var scrollY = document.documentElement.scrollTop || document.body.scrollTop; this._pos = [(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY] } this._dialogInput.css('left', this._pos[0] + 'px').css('top', this._pos[1] + 'px'); inst.settings.onSelect = onSelect; this._inDialog = true; this.dpDiv.addClass(this._dialogClass); this._showDatepicker(this._dialogInput[0]); if ($.blockUI) $.blockUI(this.dpDiv); $.data(this._dialogInput[0], PROP_NAME, inst); return this }, _destroyDatepicker: function(target) { var $target = $(target); var inst = $.data(target, PROP_NAME); if (!$target.hasClass(this.markerClassName)) { return } var nodeName = target.nodeName.toLowerCase(); $.removeData(target, PROP_NAME); if (nodeName == 'input') { inst.trigger.remove(); $target.siblings('.' + this._appendClass).remove().end().removeClass(this.markerClassName).unbind('focus', this._showDatepicker).unbind('keydown', this._doKeyDown).unbind('keypress', this._doKeyPress) } else if (nodeName == 'div' || nodeName == 'span') $target.removeClass(this.markerClassName).empty() }, _enableDatepicker: function(target) { var $target = $(target); var inst = $.data(target, PROP_NAME); if (!$target.hasClass(this.markerClassName)) { return } var nodeName = target.nodeName.toLowerCase(); if (nodeName == 'input') { target.disabled = false; inst.trigger.filter("button").each(function() { this.disabled = false }).end().filter("img").css({ opacity: '1.0', cursor: '' }) } else if (nodeName == 'div' || nodeName == 'span') { var inline = $target.children('.' + this._inlineClass); inline.children().removeClass('ui-state-disabled') } this._disabledInputs = $.map(this._disabledInputs, function(value) { return (value == target ? null : value) }) }, _disableDatepicker: function(target) { var $target = $(target); var inst = $.data(target, PROP_NAME); if (!$target.hasClass(this.markerClassName)) { return } var nodeName = target.nodeName.toLowerCase(); if (nodeName == 'input') { target.disabled = true; inst.trigger.filter("button").each(function() { this.disabled = true }).end().filter("img").css({ opacity: '0.5', cursor: 'default' }) } else if (nodeName == 'div' || nodeName == 'span') { var inline = $target.children('.' + this._inlineClass); inline.children().addClass('ui-state-disabled') } this._disabledInputs = $.map(this._disabledInputs, function(value) { return (value == target ? null : value) }); this._disabledInputs[this._disabledInputs.length] = target }, _isDisabledDatepicker: function(target) { if (!target) { return false } for (var i = 0; i < this._disabledInputs.length; i++) { if (this._disabledInputs[i] == target) return true } return false }, _getInst: function(target) { try { return $.data(target, PROP_NAME) } catch (err) { throw 'Missing instance data for this datepicker'; } }, _optionDatepicker: function(target, name, value) { var settings = name || {}; if (typeof name == 'string') { settings = {}; settings[name] = value } var inst = this._getInst(target); if (inst) { if (this._curInst == inst) { this._hideDatepicker(null) } extendRemove(inst.settings, settings); var date = new Date(); extendRemove(inst, { rangeStart: null, endDay: null, endMonth: null, endYear: null, selectedDay: date.getDate(), selectedMonth: date.getMonth(), selectedYear: date.getFullYear(), currentDay: date.getDate(), currentMonth: date.getMonth(), currentYear: date.getFullYear(), drawMonth: date.getMonth(), drawYear: date.getFullYear() }); this._updateDatepicker(inst) } }, _changeDatepicker: function(target, name, value) { this._optionDatepicker(target, name, value) }, _refreshDatepicker: function(target) { var inst = this._getInst(target); if (inst) { this._updateDatepicker(inst) } }, _setDateDatepicker: function(target, date, endDate) { var inst = this._getInst(target); if (inst) { this._setDate(inst, date, endDate); this._updateDatepicker(inst); this._updateAlternate(inst) } }, _getDateDatepicker: function(target) { var inst = this._getInst(target); if (inst && !inst.inline) this._setDateFromField(inst); return (inst ? this._getDate(inst) : null) }, _doKeyDown: function(event) { var inst = $.datepicker._getInst(event.target); var handled = true; var isRTL = inst.dpDiv.is('.ui-datepicker-rtl'); inst._keyEvent = true; if ($.datepicker._datepickerShowing) switch (event.keyCode) { case 9: $.datepicker._hideDatepicker(null, ''); break; case 13: var sel = $('td.' + $.datepicker._dayOverClass + ', td.' + $.datepicker._currentClass, inst.dpDiv); if (sel[0]) $.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]); else $.datepicker._hideDatepicker(null, $.datepicker._get(inst, 'duration')); return false; break; case 27: $.datepicker._hideDatepicker(null, $.datepicker._get(inst, 'duration')); break; case 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ? -$.datepicker._get(inst, 'stepBigMonths') : -$.datepicker._get(inst, 'stepMonths')), 'M'); break; case 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ? +$.datepicker._get(inst, 'stepBigMonths') : +$.datepicker._get(inst, 'stepMonths')), 'M'); break; case 35: if (event.ctrlKey || event.metaKey) $.datepicker._clearDate(event.target); handled = event.ctrlKey || event.metaKey; break; case 36: if (event.ctrlKey || event.metaKey) $.datepicker._gotoToday(event.target); handled = event.ctrlKey || event.metaKey; break; case 37: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), 'D'); handled = event.ctrlKey || event.metaKey; if (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ? -$.datepicker._get(inst, 'stepBigMonths') : -$.datepicker._get(inst, 'stepMonths')), 'M'); break; case 38: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, -7, 'D'); handled = event.ctrlKey || event.metaKey; break; case 39: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), 'D'); handled = event.ctrlKey || event.metaKey; if (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ? +$.datepicker._get(inst, 'stepBigMonths') : +$.datepicker._get(inst, 'stepMonths')), 'M'); break; case 40: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, +7, 'D'); handled = event.ctrlKey || event.metaKey; break; default: handled = false } else if (event.keyCode == 36 && event.ctrlKey) $.datepicker._showDatepicker(this); else { handled = false } if (handled) { event.preventDefault(); event.stopPropagation() } }, _doKeyPress: function(event) { var inst = $.datepicker._getInst(event.target); if ($.datepicker._get(inst, 'constrainInput')) { var chars = $.datepicker._possibleChars($.datepicker._get(inst, 'dateFormat')); var chr = String.fromCharCode(event.charCode == undefined ? event.keyCode : event.charCode); return event.ctrlKey || (chr < ' ' || !chars || chars.indexOf(chr) > -1) } }, _showDatepicker: function(input) { input = input.target || input; if (input.nodeName.toLowerCase() != 'input') input = $('input', input.parentNode)[0]; if ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput == input) return; var inst = $.datepicker._getInst(input); var beforeShow = $.datepicker._get(inst, 'beforeShow'); extendRemove(inst.settings, (beforeShow ? beforeShow.apply(input, [input, inst]) : {})); $.datepicker._hideDatepicker(null, ''); $.datepicker._lastInput = input; $.datepicker._setDateFromField(inst); if ($.datepicker._inDialog) input.value = ''; if (!$.datepicker._pos) { $.datepicker._pos = $.datepicker._findPos(input); $.datepicker._pos[1] += input.offsetHeight } var isFixed = false; $(input).parents().each(function() { isFixed |= $(this).css('position') == 'fixed'; return !isFixed }); if (isFixed && $.browser.opera) { $.datepicker._pos[0] -= document.documentElement.scrollLeft; $.datepicker._pos[1] -= document.documentElement.scrollTop } var offset = { left: $.datepicker._pos[0], top: $.datepicker._pos[1] }; $.datepicker._pos = null; inst.rangeStart = null; inst.dpDiv.css({ position: 'absolute', display: 'block', top: '-1000px' }); $.datepicker._updateDatepicker(inst); offset = $.datepicker._checkOffset(inst, offset, isFixed); inst.dpDiv.css({ position: ($.datepicker._inDialog && $.blockUI ? 'static' : (isFixed ? 'fixed' : 'absolute')), display: 'none', left: offset.left + 'px', top: offset.top + 'px' }); if (!inst.inline) { var showAnim = $.datepicker._get(inst, 'showAnim') || 'show'; var duration = $.datepicker._get(inst, 'duration'); var postProcess = function() { $.datepicker._datepickerShowing = true; if ($.browser.msie && parseInt($.browser.version, 10) < 7) $('iframe.ui-datepicker-cover').css({ width: inst.dpDiv.width() + 4, height: inst.dpDiv.height() + 4 }) }; if ($.effects && $.effects[showAnim]) inst.dpDiv.show(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess); else inst.dpDiv[showAnim](duration, postProcess); if (duration == '') postProcess(); if (inst.input[0].type != 'hidden') inst.input[0].focus(); $.datepicker._curInst = inst } }, _updateDatepicker: function(inst) { var dims = { width: inst.dpDiv.width() + 4, height: inst.dpDiv.height() + 4 }; var self = this; inst.dpDiv.empty().append(this._generateHTML(inst)).find('iframe.ui-datepicker-cover').css({ width: dims.width, height: dims.height }).end().find('button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a').bind('mouseout', function() { $(this).removeClass('ui-state-hover'); if (this.className.indexOf('ui-datepicker-prev') != -1) $(this).removeClass('ui-datepicker-prev-hover'); if (this.className.indexOf('ui-datepicker-next') != -1) $(this).removeClass('ui-datepicker-next-hover') }).bind('mouseover', function() { if (!self._isDisabledDatepicker(inst.inline ? inst.dpDiv.parent()[0] : inst.input[0])) { $(this).parents('.ui-datepicker-calendar').find('a').removeClass('ui-state-hover'); $(this).addClass('ui-state-hover'); if (this.className.indexOf('ui-datepicker-prev') != -1) $(this).addClass('ui-datepicker-prev-hover'); if (this.className.indexOf('ui-datepicker-next') != -1) $(this).addClass('ui-datepicker-next-hover') } }).end().find('.' + this._dayOverClass + ' a').trigger('mouseover').end(); var numMonths = this._getNumberOfMonths(inst); var cols = numMonths[1]; var width = 17; if (cols > 1) { if (window.navigator.userAgent.indexOf("MSIE") > -1 && window.navigator.userAgent.indexOf("8.0") == -1) { inst.dpDiv.addClass('ui-datepicker-multi-' + cols).css('width', '360px') } else { inst.dpDiv.addClass('ui-datepicker-multi-' + cols).css('width', 'auto') } } else { inst.dpDiv.removeClass('ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4').width('') } inst.dpDiv[(numMonths[0] != 1 || numMonths[1] != 1 ? 'add' : 'remove') + 'Class']('ui-datepicker-multi'); inst.dpDiv[(this._get(inst, 'isRTL') ? 'add' : 'remove') + 'Class']('ui-datepicker-rtl'); if (inst.input && inst.input[0].type != 'hidden' && inst == $.datepicker._curInst) $(inst.input[0]).focus() }, _checkOffset: function(inst, offset, isFixed) { var dpWidth = inst.dpDiv.outerWidth(); var dpHeight = inst.dpDiv.outerHeight(); var inputWidth = inst.input ? inst.input.outerWidth() : 0; var inputHeight = inst.input ? inst.input.outerHeight() : 0; var viewWidth = (window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth) + $(document).scrollLeft(); var viewHeight = (window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight) + $(document).scrollTop(); offset.left -= (this._get(inst, 'isRTL') ? (dpWidth - inputWidth) : 0); offset.left -= (isFixed && offset.left == inst.input.offset().left) ? $(document).scrollLeft() : 0; offset.top -= (isFixed && offset.top == (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0; offset.left -= (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ? Math.abs(offset.left + dpWidth - viewWidth) : 0; offset.top -= (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ? Math.abs(offset.top + dpHeight + inputHeight * 2 - viewHeight) : 0; return offset }, _findPos: function(obj) { while (obj && (obj.type == 'hidden' || obj.nodeType != 1)) { obj = obj.nextSibling } var position = $(obj).offset(); return [position.left, position.top] }, _hideDatepicker: function(input, duration) { var inst = this._curInst; if (!inst || (input && inst != $.data(input, PROP_NAME))) return; if (inst.stayOpen) this._selectDate('#' + inst.id, this._formatDate(inst, inst.currentDay, inst.currentMonth, inst.currentYear)); inst.stayOpen = false; if (this._datepickerShowing) { duration = (duration != null ? duration : this._get(inst, 'duration')); var showAnim = this._get(inst, 'showAnim'); var postProcess = function() { $.datepicker._tidyDialog(inst) }; if (duration != '' && $.effects && $.effects[showAnim]) inst.dpDiv.hide(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess); else inst.dpDiv[(duration == '' ? 'hide' : (showAnim == 'slideDown' ? 'slideUp' : (showAnim == 'fadeIn' ? 'fadeOut' : 'hide')))](duration, postProcess); if (duration == '') this._tidyDialog(inst); var onClose = this._get(inst, 'onClose'); if (onClose) onClose.apply((inst.input ? inst.input[0] : null), [(inst.input ? inst.input.val() : ''), inst]); this._datepickerShowing = false; this._lastInput = null; if (this._inDialog) { this._dialogInput.css({ position: 'absolute', left: '0', top: '-100px' }); if ($.blockUI) { $.unblockUI(); $('body').append(this.dpDiv) } } this._inDialog = false } this._curInst = null }, _tidyDialog: function(inst) { inst.dpDiv.removeClass(this._dialogClass).unbind('.ui-datepicker-calendar') }, _checkExternalClick: function(event) { if (!$.datepicker._curInst) return; var $target = $(event.target); if (($target.parents('#' + $.datepicker._mainDivId).length == 0) && !$target.hasClass($.datepicker.markerClassName) && !$target.hasClass($.datepicker._triggerClass) && $.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI)) $.datepicker._hideDatepicker(null, '') }, _adjustDate: function(id, offset, period) { var target = $(id); var inst = this._getInst(target[0]); if (this._isDisabledDatepicker(target[0])) { return } this._adjustInstDate(inst, offset + (period == 'M' ? this._get(inst, 'showCurrentAtPos') : 0), period); this._updateDatepicker(inst) }, _gotoToday: function(id) { var target = $(id); var inst = this._getInst(target[0]); if (this._get(inst, 'gotoCurrent') && inst.currentDay) { inst.selectedDay = inst.currentDay; inst.drawMonth = inst.selectedMonth = inst.currentMonth; inst.drawYear = inst.selectedYear = inst.currentYear } else { var date = new Date(); inst.selectedDay = date.getDate(); inst.drawMonth = inst.selectedMonth = date.getMonth(); inst.drawYear = inst.selectedYear = date.getFullYear() } this._notifyChange(inst); this._adjustDate(target) }, _selectMonthYear: function(id, select, period) { var target = $(id); var inst = this._getInst(target[0]); inst._selectingMonthYear = false; inst['selected' + (period == 'M' ? 'Month' : 'Year')] = inst['draw' + (period == 'M' ? 'Month' : 'Year')] = parseInt(select.options[select.selectedIndex].value, 10); this._notifyChange(inst); this._adjustDate(target) }, _clickMonthYear: function(id) { var target = $(id); var inst = this._getInst(target[0]); if (inst.input && inst._selectingMonthYear && !$.browser.msie) inst.input[0].focus(); inst._selectingMonthYear = !inst._selectingMonthYear }, _selectDay: function(id, month, year, td) { var target = $(id); if ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) { return } var inst = this._getInst(target[0]); inst.selectedDay = inst.currentDay = $('a', td).html(); inst.selectedMonth = inst.currentMonth = month; inst.selectedYear = inst.currentYear = year; if (inst.stayOpen) { inst.endDay = inst.endMonth = inst.endYear = null } this._selectDate(id, this._formatDate(inst, inst.currentDay, inst.currentMonth, inst.currentYear)); if (inst.stayOpen) { inst.rangeStart = this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay)); this._updateDatepicker(inst) } }, _clearDate: function(id) { var target = $(id); var inst = this._getInst(target[0]); inst.stayOpen = false; inst.endDay = inst.endMonth = inst.endYear = inst.rangeStart = null; this._selectDate(target, '') }, _selectDate: function(id, dateStr) { var target = $(id); var inst = this._getInst(target[0]); dateStr = (dateStr != null ? dateStr : this._formatDate(inst)); if (inst.input) inst.input.val(dateStr); this._updateAlternate(inst); var onSelect = this._get(inst, 'onSelect'); if (onSelect) onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); else if (inst.input) inst.input.trigger('change'); if (inst.inline) this._updateDatepicker(inst); else if (!inst.stayOpen) { this._hideDatepicker(null, this._get(inst, 'duration')); this._lastInput = inst.input[0]; if (typeof (inst.input[0]) != 'object') inst.input[0].focus(); this._lastInput = null } }, _updateAlternate: function(inst) { var altField = this._get(inst, 'altField'); if (altField) { var altFormat = this._get(inst, 'altFormat') || this._get(inst, 'dateFormat'); var date = this._getDate(inst); dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst)); $(altField).each(function() { $(this).val(dateStr) }) } }, noWeekends: function(date) { var day = date.getDay(); return [(day > 0 && day < 6), ''] }, iso8601Week: function(date) { var checkDate = new Date(date.getFullYear(), date.getMonth(), date.getDate()); var firstMon = new Date(checkDate.getFullYear(), 1 - 1, 4); var firstDay = firstMon.getDay() || 7; firstMon.setDate(firstMon.getDate() + 1 - firstDay); if (firstDay < 4 && checkDate < firstMon) { checkDate.setDate(checkDate.getDate() - 3); return $.datepicker.iso8601Week(checkDate) } else if (checkDate > new Date(checkDate.getFullYear(), 12 - 1, 28)) { firstDay = new Date(checkDate.getFullYear() + 1, 1 - 1, 4).getDay() || 7; if (firstDay > 4 && (checkDate.getDay() || 7) < firstDay - 3) { return 1 } } return Math.floor(((checkDate - firstMon) / 86400000) / 7) + 1 }, parseDate: function(format, value, settings) { if (format == null || value == null) throw 'Invalid arguments'; value = (typeof value == 'object' ? value.toString() : value + ''); if (value == '') return null; var shortYearCutoff = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff; var dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort; var dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames; var monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort; var monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames; var year = -1; var month = -1; var day = -1; var doy = -1; var literal = false; var lookAhead = function(match) { var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match); if (matches) iFormat++; return matches }; var getNumber = function(match) { lookAhead(match); var origSize = (match == '@' ? 14 : (match == 'y' ? 4 : (match == 'o' ? 3 : 2))); var size = origSize; var num = 0; while (size > 0 && iValue < value.length && value.charAt(iValue) >= '0' && value.charAt(iValue) <= '9') { num = num * 10 + parseInt(value.charAt(iValue++), 10); size-- } if (size == origSize) throw 'Missing number at position ' + iValue; return num }; var getName = function(match, shortNames, longNames) { var names = (lookAhead(match) ? longNames : shortNames); var size = 0; for (var j = 0; j < names.length; j++) size = Math.max(size, names[j].length); var name = ''; var iInit = iValue; while (size > 0 && iValue < value.length) { name += value.charAt(iValue++); for (var i = 0; i < names.length; i++) if (name == names[i]) return i + 1; size-- } throw 'Unknown name at position ' + iInit; }; var checkLiteral = function() { if (value.charAt(iValue) != format.charAt(iFormat)) throw 'Unexpected literal at position ' + iValue; iValue++ }; var iValue = 0; for (var iFormat = 0; iFormat < format.length; iFormat++) { if (literal) if (format.charAt(iFormat) == "'" && !lookAhead("'")) literal = false; else checkLiteral(); else switch (format.charAt(iFormat)) { case 'd': day = getNumber('d'); break; case 'D': getName('D', dayNamesShort, dayNames); break; case 'o': doy = getNumber('o'); break; case 'm': month = getNumber('m'); break; case 'M': month = getName('M', monthNamesShort, monthNames); break; case 'y': year = getNumber('y'); break; case '@': var date = new Date(getNumber('@')); year = date.getFullYear(); month = date.getMonth() + 1; day = date.getDate(); break; case "'": if (lookAhead("'")) checkLiteral(); else literal = true; break; default: checkLiteral() } } if (year == -1) year = new Date().getFullYear(); else if (year < 100) year += new Date().getFullYear() - new Date().getFullYear() % 100 + (year <= shortYearCutoff ? 0 : -100); if (doy > -1) { month = 1; day = doy; do { var dim = this._getDaysInMonth(year, month - 1); if (day <= dim) break; month++; day -= dim } while (true) } var date = this._daylightSavingAdjust(new Date(year, month - 1, day)); if (date.getFullYear() != year || date.getMonth() + 1 != month || date.getDate() != day) throw 'Invalid date'; return date }, ATOM: 'yy-mm-dd', COOKIE: 'D, dd M yy', ISO_8601: 'yy-mm-dd', RFC_822: 'D, d M y', RFC_850: 'DD, dd-M-y', RFC_1036: 'D, d M y', RFC_1123: 'D, d M yy', RFC_2822: 'D, d M yy', RSS: 'D, d M y', TIMESTAMP: '@', W3C: 'yy-mm-dd', formatDate: function(format, date, settings) { if (!date) return ''; var dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort; var dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames; var monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort; var monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames; var lookAhead = function(match) { var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match); if (matches) iFormat++; return matches }; var formatNumber = function(match, value, len) { var num = '' + value; if (lookAhead(match)) while (num.length < len) num = '0' + num; return num }; var formatName = function(match, value, shortNames, longNames) { return (lookAhead(match) ? longNames[value] : shortNames[value]) }; var output = ''; var literal = false; if (date) for (var iFormat = 0; iFormat < format.length; iFormat++) { if (literal) if (format.charAt(iFormat) == "'" && !lookAhead("'")) literal = false; else output += format.charAt(iFormat); else switch (format.charAt(iFormat)) { case 'd': output += formatNumber('d', date.getDate(), 2); break; case 'D': output += formatName('D', date.getDay(), dayNamesShort, dayNames); break; case 'o': var doy = date.getDate(); for (var m = date.getMonth() - 1; m >= 0; m--) doy += this._getDaysInMonth(date.getFullYear(), m); output += formatNumber('o', doy, 3); break; case 'm': output += formatNumber('m', date.getMonth() + 1, 2); break; case 'M': output += formatName('M', date.getMonth(), monthNamesShort, monthNames); break; case 'y': output += (lookAhead('y') ? date.getFullYear() : (date.getYear() % 100 < 10 ? '0' : '') + date.getYear() % 100); break; case '@': output += date.getTime(); break; case "'": if (lookAhead("'")) output += "'"; else literal = true; break; default: output += format.charAt(iFormat) } } return output }, _possibleChars: function(format) { var chars = ''; var literal = false; for (var iFormat = 0; iFormat < format.length; iFormat++) if (literal) if (format.charAt(iFormat) == "'" && !lookAhead("'")) literal = false; else chars += format.charAt(iFormat); else switch (format.charAt(iFormat)) { case 'd': case 'm': case 'y': case '@': chars += '0123456789'; break; case 'D': case 'M': return null; case "'": if (lookAhead("'")) chars += "'"; else literal = true; break; default: chars += format.charAt(iFormat) } return chars }, _get: function(inst, name) { return inst.settings[name] !== undefined ? inst.settings[name] : this._defaults[name] }, _setDateFromField: function(inst) { var dateFormat = this._get(inst, 'dateFormat'); var dates = inst.input ? inst.input.val() : null; inst.endDay = inst.endMonth = inst.endYear = null; var date = defaultDate = this._getDefaultDate(inst); var settings = this._getFormatConfig(inst); try { date = this.parseDate(dateFormat, dates, settings) || defaultDate } catch (event) { this.log(event); date = defaultDate } var maxDate = this._get(inst, 'maxDate'); if (date > maxDate) date = defaultDate; inst.selectedDay = date.getDate(); inst.drawMonth = inst.selectedMonth = date.getMonth(); inst.drawYear = inst.selectedYear = date.getFullYear(); inst.currentDay = (dates ? date.getDate() : 0); inst.currentMonth = (dates ? date.getMonth() : 0); inst.currentYear = (dates ? date.getFullYear() : 0); this._adjustInstDate(inst) }, _getDefaultDate: function(inst) { var date = this._determineDate(this._get(inst, 'defaultDate'), new Date()); var minDate = this._getMinMaxDate(inst, 'min', true); var maxDate = this._getMinMaxDate(inst, 'max'); date = (minDate && date < minDate ? minDate : date); date = (maxDate && date > maxDate ? maxDate : date); return date }, _determineDate: function(date, defaultDate) { var offsetNumeric = function(offset) { var date = new Date(); date.setDate(date.getDate() + offset); return date }; var offsetString = function(offset, getDaysInMonth) { var date = new Date(); var year = date.getFullYear(); var month = date.getMonth(); var day = date.getDate(); var pattern = /([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g; var matches = pattern.exec(offset); while (matches) { switch (matches[2] || 'd') { case 'd': case 'D': day += parseInt(matches[1], 10); break; case 'w': case 'W': day += parseInt(matches[1], 10) * 7; break; case 'm': case 'M': month += parseInt(matches[1], 10); day = Math.min(day, getDaysInMonth(year, month)); break; case 'y': case 'Y': year += parseInt(matches[1], 10); day = Math.min(day, getDaysInMonth(year, month)); break } matches = pattern.exec(offset) } return new Date(year, month, day) }; date = (date == null ? defaultDate : (typeof date == 'string' ? offsetString(date, this._getDaysInMonth) : (typeof date == 'number' ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : date))); date = (date && date.toString() == 'Invalid Date' ? defaultDate : date); if (date) { date.setHours(0); date.setMinutes(0); date.setSeconds(0); date.setMilliseconds(0) } return this._daylightSavingAdjust(date) }, _daylightSavingAdjust: function(date) { if (!date) return null; date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0); return date }, _setDate: function(inst, date, endDate) { var clear = !(date); var origMonth = inst.selectedMonth; var origYear = inst.selectedYear; date = this._determineDate(date, new Date()); inst.selectedDay = inst.currentDay = date.getDate(); inst.drawMonth = inst.selectedMonth = inst.currentMonth = date.getMonth(); inst.drawYear = inst.selectedYear = inst.currentYear = date.getFullYear(); if (origMonth != inst.selectedMonth || origYear != inst.selectedYear) this._notifyChange(inst); this._adjustInstDate(inst); if (inst.input) { inst.input.val(clear ? '' : this._formatDate(inst)) } }, _getDate: function(inst) { var startDate = (!inst.currentYear || (inst.input && inst.input.val() == '') ? null : this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay))); return startDate }, _generateHTML: function(inst) { var today = new Date(); today = this._daylightSavingAdjust(new Date(today.getFullYear(), today.getMonth(), today.getDate())); var isRTL = this._get(inst, 'isRTL'); var showButtonPanel = this._get(inst, 'showButtonPanel'); var hideIfNoPrevNext = this._get(inst, 'hideIfNoPrevNext'); var navigationAsDateFormat = this._get(inst, 'navigationAsDateFormat'); var numMonths = this._getNumberOfMonths(inst); var showCurrentAtPos = this._get(inst, 'showCurrentAtPos'); var stepMonths = this._get(inst, 'stepMonths'); var stepBigMonths = this._get(inst, 'stepBigMonths'); var isMultiMonth = (numMonths[0] != 1 || numMonths[1] != 1); var currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) : new Date(inst.currentYear, inst.currentMonth, inst.currentDay))); var minDate = this._getMinMaxDate(inst, 'min', true); var maxDate = this._getMinMaxDate(inst, 'max'); var drawMonth = inst.drawMonth - showCurrentAtPos; var drawYear = inst.drawYear; if (drawMonth < 0) { drawMonth += 12; drawYear-- } if (maxDate) { var maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(), maxDate.getMonth() - numMonths[1] + 1, maxDate.getDate())); maxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw); while (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) { drawMonth--; if (drawMonth < 0) { drawMonth = 11; drawYear-- } } } inst.drawMonth = drawMonth; inst.drawYear = drawYear; var prevText = this._get(inst, 'prevText'); prevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText, this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)), this._getFormatConfig(inst))); var prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ? '<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery.datepicker._adjustDate(\'#' + inst.id + '\', -' + stepMonths + ', \'M\');"' + ' title="' + prevText + '"><span class="ui-icon ui-icon-circle-triangle-' + (isRTL ? 'e' : 'w') + '">' + prevText + '</span></a>' : (hideIfNoPrevNext ? '' : '<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="' + prevText + '"><span class="ui-icon ui-icon-circle-triangle-' + (isRTL ? 'e' : 'w') + '">' + prevText + '</span></a>')); var nextText = this._get(inst, 'nextText'); nextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText, this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)), this._getFormatConfig(inst))); var next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ? '<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery.datepicker._adjustDate(\'#' + inst.id + '\', +' + stepMonths + ', \'M\');"' + ' title="' + nextText + '"><span class="ui-icon ui-icon-circle-triangle-' + (isRTL ? 'w' : 'e') + '">' + nextText + '</span></a>' : (hideIfNoPrevNext ? '' : '<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="' + nextText + '"><span class="ui-icon ui-icon-circle-triangle-' + (isRTL ? 'w' : 'e') + '">' + nextText + '</span></a>')); var currentText = this._get(inst, 'currentText'); var gotoDate = (this._get(inst, 'gotoCurrent') && inst.currentDay ? currentDate : today); currentText = (!navigationAsDateFormat ? currentText : this.formatDate(currentText, gotoDate, this._getFormatConfig(inst))); var controls = (!inst.inline ? '<div class="hc_close_hold"><a  class="hc_close" onclick="DP_jQuery.datepicker._hideDatepicker();">' + this._get(inst, 'closeText') + '</a></div>' : ''); var buttonPanel = (showButtonPanel) ? '<div class="ui-datepicker-buttonpane ui-widget-content">' + (isRTL ? controls : '') + (this._isInRange(inst, gotoDate) ? '' : '') + (isRTL ? '' : controls) + '</div>' : ''; var firstDay = parseInt(this._get(inst, 'firstDay'), 10); firstDay = (isNaN(firstDay) ? 0 : firstDay); var dayNames = this._get(inst, 'dayNames'); var dayNamesShort = this._get(inst, 'dayNamesShort'); var dayNamesMin = this._get(inst, 'dayNamesMin'); var monthNames = this._get(inst, 'monthNames'); var monthNamesShort = this._get(inst, 'monthNamesShort'); var beforeShowDay = this._get(inst, 'beforeShowDay'); var showOtherMonths = this._get(inst, 'showOtherMonths'); var calculateWeek = this._get(inst, 'calculateWeek') || this.iso8601Week; var endDate = inst.endDay ? this._daylightSavingAdjust(new Date(inst.endYear, inst.endMonth, inst.endDay)) : currentDate; var defaultDate = this._getDefaultDate(inst); var html = ''; for (var row = 0; row < numMonths[0]; row++) { var group = ''; for (var col = 0; col < numMonths[1]; col++) { var selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay)); var cornerClass = ' ui-corner-all'; var calender = ''; if (isMultiMonth) { calender += '<div class="ui-datepicker-group ui-datepicker-group-'; switch (col) { case 0: calender += 'first'; cornerClass = ' ui-corner-' + (isRTL ? 'right' : 'left'); break; case numMonths[1] - 1: calender += 'last'; cornerClass = ' ui-corner-' + (isRTL ? 'left' : 'right'); break; default: calender += 'middle'; cornerClass = ''; break } calender += '">' } calender += '<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix' + cornerClass + '">' + (/all|left/.test(cornerClass) && row == 0 ? (isRTL ? next : prev) : '') + (/all|right/.test(cornerClass) && row == 0 ? (isRTL ? prev : next) : '') + this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate, selectedDate, row > 0 || col > 0, monthNames, monthNamesShort) + '</div><table class="ui-datepicker-calendar"><thead>' + '<tr>'; var thead = ''; for (var dow = 0; dow < 7; dow++) { var day = (dow + firstDay) % 7; thead += '<th' + ((dow + firstDay + 6) % 7 >= 5 ? ' class="ui-datepicker-week-end"' : '') + '>' + '<span title="' + dayNames[day] + '">' + dayNamesMin[day] + '</span></th>' } calender += thead + '</tr></thead><tbody>'; var daysInMonth = this._getDaysInMonth(drawYear, drawMonth); if (drawYear == inst.selectedYear && drawMonth == inst.selectedMonth) inst.selectedDay = Math.min(inst.selectedDay, daysInMonth); var leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7; var numRows = (isMultiMonth ? 6 : Math.ceil((leadDays + daysInMonth) / 7)); var printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays)); for (var dRow = 0; dRow < numRows; dRow++) { calender += '<tr>'; var tbody = ''; for (var dow = 0; dow < 7; dow++) { var daySettings = (beforeShowDay ? beforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, '']); var otherMonth = (printDate.getMonth() != drawMonth); var unselectable = otherMonth || !daySettings[0] || (minDate && printDate < minDate) || (maxDate && printDate > maxDate); tbody += '<td class="' + ((dow + firstDay + 6) % 7 >= 5 ? ' ui-datepicker-week-end' : '') + (otherMonth ? ' ui-datepicker-other-month' : '') + ((printDate.getTime() == selectedDate.getTime() && drawMonth == inst.selectedMonth && inst._keyEvent) || (defaultDate.getTime() == printDate.getTime() && defaultDate.getTime() == selectedDate.getTime()) ? ' ' + this._dayOverClass : '') + (unselectable ? ' ' + this._unselectableClass + ' ui-state-disabled' : '') + (otherMonth && !showOtherMonths ? '' : ' ' + daySettings[1] + (printDate.getTime() >= currentDate.getTime() && printDate.getTime() <= endDate.getTime() ? ' ' + this._currentClass : '') + (printDate.getTime() == today.getTime() ? ' ui-datepicker-today' : '')) + '"' + ((!otherMonth || showOtherMonths) && daySettings[2] ? ' title="' + daySettings[2] + '"' : '') + (unselectable ? '' : ' onclick="DP_jQuery.datepicker._selectDay(\'#' + inst.id + '\',' + drawMonth + ',' + drawYear + ', this);return false;"') + '>' + (otherMonth ? (showOtherMonths ? printDate.getDate() : '&#xa0;') : (unselectable ? '<span class="ui-state-default">' + printDate.getDate() + '</span>' : '<a class="ui-state-default' + (printDate.getTime() == today.getTime() ? ' ui-state-highlight' : '') + (printDate.getTime() >= currentDate.getTime() && printDate.getTime() <= endDate.getTime() ? ' ui-state-active' : '') + '" href="#">' + printDate.getDate() + '</a>')) + '</td>'; printDate.setDate(printDate.getDate() + 1); printDate = this._daylightSavingAdjust(printDate) } calender += tbody + '</tr>' } drawMonth++; if (drawMonth > 11) { drawMonth = 0; drawYear++ } calender += '</tbody></table>' + (isMultiMonth ? '</div>' + ((numMonths[0] > 0 && col == numMonths[1] - 1) ? '<div class="ui-datepicker-row-break"></div>' : '') : ''); group += calender } html += group } html += buttonPanel + ($.browser.msie && parseInt($.browser.version, 10) < 7 && !inst.inline ? '<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>' : ''); inst._keyEvent = false; return html }, _generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate, selectedDate, secondary, monthNames, monthNamesShort) { minDate = (inst.rangeStart && minDate && selectedDate < minDate ? selectedDate : minDate); var changeMonth = this._get(inst, 'changeMonth'); var changeYear = this._get(inst, 'changeYear'); var showMonthAfterYear = this._get(inst, 'showMonthAfterYear'); var html = '<div class="ui-datepicker-title">'; var monthHtml = ''; if (secondary || !changeMonth) monthHtml += '<span class="ui-datepicker-month">' + monthNames[drawMonth] + '</span> '; else { var inMinYear = (minDate && minDate.getFullYear() == drawYear); var inMaxYear = (maxDate && maxDate.getFullYear() == drawYear); monthHtml += '<select class="ui-datepicker-month" ' + 'onchange="DP_jQuery.datepicker._selectMonthYear(\'#' + inst.id + '\', this, \'M\');" ' + 'onclick="DP_jQuery.datepicker._clickMonthYear(\'#' + inst.id + '\');"' + '>'; for (var month = 0; month < 12; month++) { if ((!inMinYear || month >= minDate.getMonth()) && (!inMaxYear || month <= maxDate.getMonth())) monthHtml += '<option value="' + month + '"' + (month == drawMonth ? ' selected="selected"' : '') + '>' + monthNamesShort[month] + '</option>' } monthHtml += '</select>' } if (!showMonthAfterYear) html += monthHtml + ((secondary || changeMonth || changeYear) && (!(changeMonth && changeYear)) ? '&#xa0;' : ''); if (secondary || !changeYear) html += '<span class="ui-datepicker-year">' + drawYear + '</span>'; else { var years = this._get(inst, 'yearRange').split(':'); var year = 0; var endYear = 0; if (years.length != 2) { year = drawYear - 10; endYear = drawYear + 10 } else if (years[0].charAt(0) == '+' || years[0].charAt(0) == '-') { year = drawYear + parseInt(years[0], 10); endYear = drawYear + parseInt(years[1], 10) } else { year = parseInt(years[0], 10); endYear = parseInt(years[1], 10) } year = (minDate ? Math.max(year, minDate.getFullYear()) : year); endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear); html += '<select class="ui-datepicker-year" ' + 'onchange="DP_jQuery.datepicker._selectMonthYear(\'#' + inst.id + '\', this, \'Y\');" ' + 'onclick="DP_jQuery.datepicker._clickMonthYear(\'#' + inst.id + '\');"' + '>'; for (; year <= endYear; year++) { html += '<option value="' + year + '"' + (year == drawYear ? ' selected="selected"' : '') + '>' + year + '</option>' } html += '</select>' } if (showMonthAfterYear) html += (secondary || changeMonth || changeYear ? '&#xa0;' : '') + monthHtml; html += '</div>'; return html }, _adjustInstDate: function(inst, offset, period) { var year = inst.drawYear + (period == 'Y' ? offset : 0); var month = inst.drawMonth + (period == 'M' ? offset : 0); var day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + (period == 'D' ? offset : 0); var date = this._daylightSavingAdjust(new Date(year, month, day)); var minDate = this._getMinMaxDate(inst, 'min', true); var maxDate = this._getMinMaxDate(inst, 'max'); date = (minDate && date < minDate ? minDate : date); date = (maxDate && date > maxDate ? maxDate : date); inst.selectedDay = date.getDate(); inst.drawMonth = inst.selectedMonth = date.getMonth(); inst.drawYear = inst.selectedYear = date.getFullYear(); if (period == 'M' || period == 'Y') this._notifyChange(inst) }, _notifyChange: function(inst) { var onChange = this._get(inst, 'onChangeMonthYear'); if (onChange) onChange.apply((inst.input ? inst.input[0] : null), [inst.selectedYear, inst.selectedMonth + 1, inst]) }, _getNumberOfMonths: function(inst) { var numMonths = this._get(inst, 'numberOfMonths'); return (numMonths == null ? [1, 1] : (typeof numMonths == 'number' ? [1, numMonths] : numMonths)) }, _getMinMaxDate: function(inst, minMax, checkRange) { var date = this._determineDate(this._get(inst, minMax + 'Date'), null); return (!checkRange || !inst.rangeStart ? date : (!date || inst.rangeStart > date ? inst.rangeStart : date)) }, _getDaysInMonth: function(year, month) { return 32 - new Date(year, month, 32).getDate() }, _getFirstDayOfMonth: function(year, month) { return new Date(year, month, 1).getDay() }, _canAdjustMonth: function(inst, offset, curYear, curMonth) { var numMonths = this._getNumberOfMonths(inst); var date = this._daylightSavingAdjust(new Date(curYear, curMonth + (offset < 0 ? offset : numMonths[1]), 1)); if (offset < 0) date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth())); return this._isInRange(inst, date) }, _isInRange: function(inst, date) { var newMinDate = (!inst.rangeStart ? null : this._daylightSavingAdjust(new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay))); newMinDate = (newMinDate && inst.rangeStart < newMinDate ? inst.rangeStart : newMinDate); var minDate = newMinDate || this._getMinMaxDate(inst, 'min'); var maxDate = this._getMinMaxDate(inst, 'max'); return ((!minDate || date >= minDate) && (!maxDate || date <= maxDate)) }, _getFormatConfig: function(inst) { var shortYearCutoff = this._get(inst, 'shortYearCutoff'); shortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff : new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10)); return { shortYearCutoff: shortYearCutoff, dayNamesShort: this._get(inst, 'dayNamesShort'), dayNames: this._get(inst, 'dayNames'), monthNamesShort: this._get(inst, 'monthNamesShort'), monthNames: this._get(inst, 'monthNames')} }, _formatDate: function(inst, day, month, year) { if (!day) { inst.currentDay = inst.selectedDay; inst.currentMonth = inst.selectedMonth; inst.currentYear = inst.selectedYear } var date = (day ? (typeof day == 'object' ? day : this._daylightSavingAdjust(new Date(year, month, day))) : this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay))); return this.formatDate(this._get(inst, 'dateFormat'), date, this._getFormatConfig(inst)) } }); function extendRemove(target, props) { $.extend(target, props); for (var name in props) if (props[name] == null || props[name] == undefined) target[name] = props[name]; return target }; function isArray(a) { return (a && (($.browser.safari && typeof a == 'object' && a.length) || (a.constructor && a.constructor.toString().match(/\Array\(\)/)))) }; $.fn.datepicker = function(options) { if (!$.datepicker.initialized) { $(document).mousedown($.datepicker._checkExternalClick).find('body').append($.datepicker.dpDiv); $.datepicker.initialized = true } var otherArgs = Array.prototype.slice.call(arguments, 1); if (typeof options == 'string' && (options == 'isDisabled' || options == 'getDate')) return $.datepicker['_' + options + 'Datepicker'].apply($.datepicker, [this[0]].concat(otherArgs)); return this.each(function() { typeof options == 'string' ? $.datepicker['_' + options + 'Datepicker'].apply($.datepicker, [this].concat(otherArgs)) : $.datepicker._attachDatepicker(this, options) }) }; $.datepicker = new Datepicker(); $.datepicker.initialized = false; $.datepicker.uuid = new Date().getTime(); $.datepicker.version = "1.7.1"; window.DP_jQuery = $ })(jQuery);var dtCh = "/";
function RedefineDate(DateValue) {
    if (DateValue == "") return "";
    var RefinedDate = DateValue;
    var dateSplits = DateValue.split(GetDateSeperator());
    var ddmmyyyyReg = /\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}/
    var yyyymmddReg = /\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}/
    var strMonth;
    var strDay;
    var strYear;
   
    if (ddmmyyyyReg.test(DateValue)) {
        strDay = dateSplits[0];
        strMonth = dateSplits[1];
        strYear = dateSplits[2];
    }
    else if (yyyymmddReg.test(DateValue)) {
        strDay = dateSplits[2];
        strMonth = dateSplits[1];
        strYear = dateSplits[0];
    }
    var dfmt = GetDateFormat();
    if (dfmt == "dd/mm/yyyy") {
        RefinedDate = strDay + GetDateSeperator() + strMonth + GetDateSeperator() + strYear;
    }
    else if (dfmt == "yyyy/mm/dd") {
        RefinedDate = strYear + GetDateSeperator() + strMonth + GetDateSeperator() + strDay;
    }
    return RefinedDate;
}
function isInteger(s) {
    var i;
    for (i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    return true;
}
function GetDateFormat() {
    if (typeof (window['calDateFormat']) != 'undefined') {
        if (calDateFormat == "yyyy/mm/dd")
            return "yyyy/mm/dd";
        else if (calDateFormat == "dd/mm/yyyy")
            return "dd/mm/yyyy";
    }
    else {
        return "dd/mm/yyyy";
    }
}
function GetDateSeperator() { return dtCh; }
function stripCharsInBag(s, bag) {
    var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function GetDateDiff(Date1, Date2) {
    var one_day = 1000 * 60 * 60 * 24;
    var startDate = new Date(ConvertToSysFormat(Date1));
    var endDate = new Date(ConvertToSysFormat(Date2));
    _Diff = Math.round((endDate.getTime() - startDate.getTime()) / (one_day));
    return _Diff;
}

function ResetDate(InOut, Date1, Date2) {
    var checkinDate = new Date(Date1);
    var checkoutDate = new Date(Date2);
    var checkDate, incremet
    if (InOut == "in") {
        checkDate = checkoutDate
        incremet = -1
    } else {
        checkDate = checkinDate
        incremet = 2
    }
    if (checkinDate >= checkoutDate) {
        var newDate = new Date(checkDate.getFullYear(), checkDate.getMonth(), checkDate.getDate() + incremet)
        SetDateVal(newDate.getFullYear(), newDate.getMonth() + 1, newDate.getDate(), InOut)
    }
}

function SetDateVal(year, month, varday, inOut) {
    var dfmt = GetDateFormat();
    if (month.toString.length < 2) month = "0" + month
    if (varday.toString.length < 2) varday = "0" + varday

    if (inOut == "in") {
        if (dfmt == "dd/mm/yyyy") {
            document.getElementById("Cal1").value = varday + GetDateSeperator() + month + GetDateSeperator() + year;
        }
        else if (dfmt == "yyyy/mm/dd") {
            document.getElementById("Cal1").value = year + GetDateSeperator() + month + GetDateSeperator() + varday;
        }
    } else {
        if (dfmt == "dd/mm/yyyy") {
            document.getElementById("Cal2").value = varday + GetDateSeperator() + month + GetDateSeperator() + year;
        }
        else if (dfmt == "yyyy/mm/dd") {
            document.getElementById("Cal2").value = year + GetDateSeperator() + month + GetDateSeperator() + varday;
        }
    }
    DateDiff();
}


function DateDiff() {
    dtCheckIn = document.getElementById("Cal1").value;
    var StartDate, EndDate;
    if (dtCheckIn != "") {
        var dateSplits = dtCheckIn.split(GetDateSeperator());
        if (dateSplits.length != 3 || isDate(dtCheckIn) != true) {
            $('#Cal1').datepicker('setDate', minDate);
            dtCheckIn = document.getElementById("Cal1").value;
        }
        CheckinDayEle = document.getElementById("day1");
        StartDate = new Date(ConvertToSysFormat(dtCheckIn));
        setDay(StartDate, CheckinDayEle);

    }
    dtCheckOut = document.getElementById("Cal2").value;
    if (dtCheckOut != "") {
        var dateSplits = dtCheckOut.split(GetDateSeperator());
        if (dateSplits.length != 3 || isDate(dtCheckOut) != true) {
            $('#Cal2').datepicker('setDate', minDate2);
            dtCheckOut = document.getElementById("Cal2").value;
        }
        CheckoutDayEle = document.getElementById("day2");
        EndDate = new Date(ConvertToSysFormat(dtCheckOut));
        setDay(EndDate, CheckoutDayEle);
    }
    if (dtCheckIn != "" && dtCheckOut != "") {
        var dtDatediff = GetDateDiff(dtCheckIn, dtCheckOut);
        if (typeof (document.getElementById("hdnDateDiff")) != "undefined") {
            if (document.getElementById("hdnDateDiff") != null) {
            document.getElementById('lenStay').innerHTML = document.getElementById("hdnDateDiff").value.replace("[NumNights]", "&nbsp;" + dtDatediff + "&nbsp;");
        }
        }
        AutoUpdateCheckout(StartDate, EndDate, "up");
    }
}

function DateDiff2() {
    dtCheckIn = document.getElementById("Cal1").value;
    var StartDate, EndDate;
    if (dtCheckIn != "") {
        var dateSplits = dtCheckIn.split(GetDateSeperator());
        if (dateSplits.length != 3 || isDate(dtCheckIn) != true) {
            $('#Cal1').datepicker('setDate', minDate);
            dtCheckIn = document.getElementById("Cal1").value;
        }
        CheckinDayEle = document.getElementById("day1");
        StartDate = new Date(ConvertToSysFormat(dtCheckIn));
        setDay(StartDate, CheckinDayEle);
    }
    dtCheckOut = document.getElementById("Cal2").value;
    if (dtCheckOut != "") {
        var dateSplits = dtCheckOut.split(GetDateSeperator());
        if (dateSplits.length != 3 || isDate(dtCheckOut) != true) {
            $('#Cal2').datepicker('setDate', minDate2);
            dtCheckOut = document.getElementById("Cal2").value;
        }
        CheckoutDayEle = document.getElementById("day2");
        EndDate = new Date(ConvertToSysFormat(dtCheckOut));
        setDay(EndDate, CheckoutDayEle);
    }
    if (dtCheckIn != "" && dtCheckOut != "") {

        var dtDatediff = GetDateDiff(dtCheckIn, dtCheckOut);
        if (typeof (document.getElementById("hdnDateDiff")) != "undefined") {
            if (document.getElementById("hdnDateDiff") != null) {
            document.getElementById('lenStay').innerHTML = document.getElementById("hdnDateDiff").value.replace("[NumNights]", "&nbsp;" + dtDatediff + "&nbsp;");
            }
        }
        //document.getElementById('dateDiff').innerHTML = GetDateDiff(dtCheckIn, dtCheckOut);


        AutoUpdateCheckout(StartDate, EndDate, "down");
    }
}

function DateDiff3() {
    dtCheckIn = document.getElementById("Cal3").value;
    var StartDate, EndDate;
    if (dtCheckIn != "") {
        var dateSplits = dtCheckIn.split(GetDateSeperator());
        if (dateSplits.length != 3 || isDate(dtCheckIn) != true) {
            $('#Cal3').datepicker('setDate', minDate);
            dtCheckIn = document.getElementById("Cal3").value;
        }
        CheckinDayEle = document.getElementById("day3");
        StartDate = new Date(ConvertToSysFormat(dtCheckIn));
        setDay(StartDate, CheckinDayEle);

    }
    dtCheckOut = document.getElementById("Cal4").value;
    if (dtCheckOut != "") {
        var dateSplits = dtCheckOut.split(GetDateSeperator());
        if (dateSplits.length != 3 || isDate(dtCheckOut) != true) {
            $('#Cal4').datepicker('setDate', minDate2);
            dtCheckOut = document.getElementById("Cal4").value;
        }
        CheckoutDayEle = document.getElementById("day4");
        EndDate = new Date(ConvertToSysFormat(dtCheckOut));
        setDay(EndDate, CheckoutDayEle);
    }
    if (dtCheckIn != "" && dtCheckOut != "") {
        AutoUpdateCheckout1(StartDate, EndDate, "up");
    }
}

function DateDiff4() {
    dtCheckIn = document.getElementById("Cal3").value;
    var StartDate, EndDate;
    if (dtCheckIn != "") {
        var dateSplits = dtCheckIn.split(GetDateSeperator());
        if (dateSplits.length != 3 || isDate(dtCheckIn) != true) {
            $('#Cal3').datepicker('setDate', minDate);
            dtCheckIn = document.getElementById("Cal3").value;
        }
        CheckinDayEle = document.getElementById("day3");
        StartDate = new Date(ConvertToSysFormat(dtCheckIn));
        setDay(StartDate, CheckinDayEle);
    }
    dtCheckOut = document.getElementById("Cal4").value;
    if (dtCheckOut != "") {
        var dateSplits = dtCheckOut.split(GetDateSeperator());
        if (dateSplits.length != 3 || isDate(dtCheckOut) != true) {
            $('#Cal4').datepicker('setDate', minDate2);
            dtCheckOut = document.getElementById("Cal4").value;
        }
        CheckoutDayEle = document.getElementById("day4");
        EndDate = new Date(ConvertToSysFormat(dtCheckOut));
        setDay(EndDate, CheckoutDayEle);
    }
    if (dtCheckIn != "" && dtCheckOut != "") {
        AutoUpdateCheckout1(StartDate, EndDate, "down");
    }
}

function AutoUpdateCheckout(CheckinDate, CheckoutDate, Dir) {
    var month, day, year, dfmt;
    if (CheckoutDate.getTime() < CheckinDate.getTime() && Dir == "up") {
        CheckoutDate.setTime(CheckinDate.getTime() + oneDay * 2);

        month = CheckoutDate.getMonth() + 1; month = AddPrecedingZero(month);
        day = CheckoutDate.getDate(); day = AddPrecedingZero(day);
        year = CheckoutDate.getFullYear();

        dfmt = GetDateFormat();
        if (dfmt == "dd/mm/yyyy") {
            document.getElementById("Cal2").value = day.toString() + GetDateSeperator() + month.toString() + GetDateSeperator() + year.toString();
        }
        else if (dfmt == "yyyy/mm/dd") {
            document.getElementById("Cal2").value = year.toString() + GetDateSeperator() + month.toString() + GetDateSeperator() + day.toString();
        }
        DateDiff();
    }
    else if (CheckoutDate.getTime() < CheckinDate.getTime() && Dir == "down") {
        CheckinDate.setTime(CheckoutDate.getTime() - oneDay * 2);
        month = CheckinDate.getMonth() + 1; month = AddPrecedingZero(month);
        day = CheckinDate.getDate(); day = AddPrecedingZero(day);
        year = CheckinDate.getFullYear();

        dfmt = GetDateFormat();
        if (dfmt == "dd/mm/yyyy") {
            document.getElementById("Cal1").value = day.toString() + GetDateSeperator() + month.toString() + GetDateSeperator() + year.toString();
        }
        else if (dfmt == "yyyy/mm/dd") {
            document.getElementById("Cal1").value = year.toString() + GetDateSeperator() + month.toString() + GetDateSeperator() + day.toString();
        }
        DateDiff();
    }
}

function AutoUpdateCheckout1(CheckinDate, CheckoutDate, Dir) {
    var month, day, year, dfmt;
    if (CheckoutDate.getTime() < CheckinDate.getTime() && Dir == "up") {
        CheckoutDate.setTime(CheckinDate.getTime() + oneDay * 2);

        month = CheckoutDate.getMonth() + 1; month = AddPrecedingZero(month);
        day = CheckoutDate.getDate(); day = AddPrecedingZero(day);
        year = CheckoutDate.getFullYear();

        dfmt = GetDateFormat();
        if (dfmt == "dd/mm/yyyy") {
            document.getElementById("Cal4").value = day.toString() + GetDateSeperator() + month.toString() + GetDateSeperator() + year.toString();
        }
        else if (dfmt == "yyyy/mm/dd") {
            document.getElementById("Cal4").value = year.toString() + GetDateSeperator() + month.toString() + GetDateSeperator() + day.toString();
        }
        DateDiff3();
    }
    else if (CheckoutDate.getTime() < CheckinDate.getTime() && Dir == "down") {
        CheckinDate.setTime(CheckoutDate.getTime() - oneDay * 2);
        month = CheckinDate.getMonth() + 1; month = AddPrecedingZero(month);
        day = CheckinDate.getDate(); day = AddPrecedingZero(day);
        year = CheckinDate.getFullYear();

        dfmt = GetDateFormat();
        if (dfmt == "dd/mm/yyyy") {
            document.getElementById("Cal3").value = day.toString() + GetDateSeperator() + month.toString() + GetDateSeperator() + year.toString();
        }
        else if (dfmt == "yyyy/mm/dd") {
            document.getElementById("Cal3").value = year.toString() + GetDateSeperator() + month.toString() + GetDateSeperator() + day.toString();
        }
        DateDiff3();
    }
}

function setDay(DateInput, Control) {
    if (Control != null) {
        Control.innerHTML = arrDayNames[DateInput.getDay()];
    }
}
function AddPrecedingZero(InputString) {
    if (InputString.toString().charAt(0) != "0" && InputString.toString().length != 2) { InputString = "0" + InputString.toString(); }
    return InputString;
}
function RemovePrecedingZero(InputString) {
    if (InputString.toString().charAt(0) == "0" && InputString.toString().length == 2) { InputString = InputString.charAt(1); }
    return InputString;
}

function SetDefaultDate() {
    if (document.getElementById("Cal1") && document.getElementById("Cal2")) {
        var dtCheckIn = document.getElementById("Cal1").value;
        var dtCheckOut = document.getElementById("Cal2").value;
        var dfmt = GetDateFormat();
        if (dtCheckIn == "" || dtCheckOut == "") {
            var sDate = new Date();
            var one_day = 1000 * 60 * 60 * 24;
            sDate.setTime(sDate.getTime() + one_day * 17);

            var inDay = sDate.getDate(); inDay = AddPrecedingZero(inDay);
            var inMonth = sDate.getMonth() + 1; inMonth = AddPrecedingZero(inMonth);
            var inYear = sDate.getFullYear();

            var eDate = new Date();
            eDate.setTime(eDate.getTime() + one_day * 19);
            var outDay = eDate.getDate(); outDay = AddPrecedingZero(outDay);
            var outMonth = eDate.getMonth() + 1; outMonth = AddPrecedingZero(outMonth);
            var outYear = eDate.getFullYear();
            if (dfmt == "dd/mm/yyyy") {
                document.getElementById('Cal1').value = inDay + GetDateSeperator() + inMonth + GetDateSeperator() + inYear;
                document.getElementById('Cal2').value = outDay + GetDateSeperator() + outMonth + GetDateSeperator() + outYear;
            }
            else if (dfmt == "yyyy/mm/dd") {
                document.getElementById('Cal1').value = inYear + GetDateSeperator() + inMonth + GetDateSeperator() + inDay;
                document.getElementById('Cal2').value = outYear + GetDateSeperator() + outMonth + GetDateSeperator() + outDay
            }
        }
    }
}

function SetSeoDefaultDate() {

    var dtCheckIn = document.getElementById("Cal3").value;
    var dtCheckOut = document.getElementById("Cal4").value;
    var dfmt = GetDateFormat();

    if (dtCheckIn == "" || dtCheckOut == "") {
        var sDate = new Date();
        var one_day = 1000 * 60 * 60 * 24;
        sDate.setTime(sDate.getTime() + one_day * 17);

        var inDay = sDate.getDate(); inDay = AddPrecedingZero(inDay);
        var inMonth = sDate.getMonth() + 1; inMonth = AddPrecedingZero(inMonth);
        var inYear = sDate.getFullYear();

        var eDate = new Date();
        eDate.setTime(eDate.getTime() + one_day * 19);
        var outDay = eDate.getDate(); outDay = AddPrecedingZero(outDay);
        var outMonth = eDate.getMonth() + 1; outMonth = AddPrecedingZero(outMonth);
        var outYear = eDate.getFullYear();
        if (dfmt == "dd/mm/yyyy") {
            document.getElementById('Cal3').value = inDay + GetDateSeperator() + inMonth + GetDateSeperator() + inYear;
            document.getElementById('Cal4').value = outDay + GetDateSeperator() + outMonth + GetDateSeperator() + outYear;
        }
        else if (dfmt == "yyyy/mm/dd") {
            document.getElementById('Cal3').value = inYear + GetDateSeperator() + inMonth + GetDateSeperator() + inDay;
            document.getElementById('Cal4').value = outYear + GetDateSeperator() + outMonth + GetDateSeperator() + outDay
        }
    }
}

function initSEOCalendar() {
    SetSeoDefaultDate();
    if (document.getElementById('Cal3')) {
        document.getElementById('Cal3').value = RedefineDate(document.getElementById('Cal3').value);
        var CheckInDate = document.getElementById('Cal3').value
        var dtCheckInDate = new Date(ConvertToSysFormat(CheckInDate));
        checkInday = dtCheckInDate.getDate();
        checkInMonth = dtCheckInDate.getMonth() + 1;
        checkInyear = dtCheckInDate.getFullYear();
        setDay(dtCheckInDate, document.getElementById('day3'));
    }
    if (document.getElementById('Cal4')) {
        document.getElementById('Cal4').value = RedefineDate(document.getElementById('Cal4').value);
        var CheckOutDate = document.getElementById('Cal4').value
        var dtCheckOutDate = new Date(ConvertToSysFormat(CheckOutDate));
        checkOutday = dtCheckOutDate.getDate();
        checkOutMonth = dtCheckOutDate.getMonth() + 1;
        checkOutyear = dtCheckOutDate.getFullYear();
        setDay(dtCheckOutDate, document.getElementById('day4'));
    }
}

function initCalendar() {
    var dfmt = GetDateFormat();
    var qs = new Querystring(location.search.substr(1))
    var inDay = qs.get("inDay")
    var inMonth = qs.get("inMonth")
    var inYear = qs.get("inYear")

    var outDay = qs.get("outDay")
    var outMonth = qs.get("outMonth")
    var outYear = qs.get("outYear")

    /* added check for directhotel when the 6 variables above are not available */
    var qsCheckInDate = qs.get("checkin");
    var qsCheckOutDate = qs.get("checkout");
    if ((typeof (inDay) == 'undefined' || inDay == null) &&
        (typeof (qsCheckInDate) != 'undefined' || qsCheckInDate != null)) {
        inYear = qsCheckInDate.split("-")[0];
        inMonth = qsCheckInDate.split("-")[1].length > 1 ? qsCheckInDate.split("-")[1] : "0" + qsCheckInDate.split("-")[1];
        inDay = qsCheckInDate.split("-")[2].length > 1 ? qsCheckInDate.split("-")[2] : "0" + qsCheckInDate.split("-")[2];

        outYear = qsCheckOutDate.split("-")[0];
        outMonth = qsCheckOutDate.split("-")[1].length > 1 ? qsCheckOutDate.split("-")[1] : "0" + qsCheckOutDate.split("-")[1];
        outDay = qsCheckOutDate.split("-")[2].length > 1 ? qsCheckOutDate.split("-")[2] : "0" + qsCheckOutDate.split("-")[2];
    }

    SetDefaultDate();

    var checkInday, checkInMonth, checkInyear
    var checkOutday, checkOutMonth, checkOutyear

    if (document.getElementById('Cal1')) {
        document.getElementById('Cal1').value = RedefineDate(document.getElementById('Cal1').value);
        var CheckInDate = document.getElementById('Cal1').value
        var dtCheckInDate = new Date(ConvertToSysFormat(CheckInDate));
        checkInday = dtCheckInDate.getDate();
        checkInMonth = dtCheckInDate.getMonth() + 1;
        checkInyear = dtCheckInDate.getFullYear();
        setDay(dtCheckInDate, document.getElementById('day1'));
    }
    if (document.getElementById('Cal2')) {
        document.getElementById('Cal2').value = RedefineDate(document.getElementById('Cal2').value);
        var CheckOutDate = document.getElementById('Cal2').value
        var dtCheckOutDate = new Date(ConvertToSysFormat(CheckOutDate));
        checkOutday = dtCheckOutDate.getDate();
        checkOutMonth = dtCheckOutDate.getMonth() + 1;
        checkOutyear = dtCheckOutDate.getFullYear();
        setDay(dtCheckOutDate, document.getElementById('day2'));
    }
    /*********set month, day, year in the hidden text *******/
    if (document.getElementById('inDay')) {
        document.getElementById('inDay').value = checkInday;
        document.getElementById('inMonth').value = checkInMonth;
        document.getElementById('inYear').value = checkInyear;

        document.getElementById('outDay').value = checkOutday;
        document.getElementById('outMonth').value = checkOutMonth;
        document.getElementById('outYear').value = checkOutyear;
    }
    /*******************************************************/
    if (typeof (inDay) != 'undefined' && inDay != null && document.getElementById('inDay')) {

        document.getElementById('inDay').value = inDay;
        document.getElementById('inMonth').value = inMonth;
        document.getElementById('inYear').value = inYear;

        document.getElementById('outDay').value = outDay;
        document.getElementById('outMonth').value = outMonth;
        document.getElementById('outYear').value = outYear;

        checkInday = inDay;
        checkInMonth = inMonth;
        checkInyear = inYear;

        checkOutday = outDay;
        checkOutMonth = outMonth;
        checkOutyear = outYear;

        if (dfmt == "dd/mm/yyyy") {
            document.getElementById('Cal1').value = inDay + GetDateSeperator() + inMonth + GetDateSeperator() + inYear;
            document.getElementById('Cal2').value = outDay + GetDateSeperator() + outMonth + GetDateSeperator() + outYear;
        }
        else if (dfmt == "yyyy/mm/dd") {
            document.getElementById('Cal1').value = inYear + GetDateSeperator() + inMonth + GetDateSeperator() + inDay;
            document.getElementById('Cal2').value = outYear + GetDateSeperator() + outMonth + GetDateSeperator() + outDay
        }
        var Cal1 = inMonth + GetDateSeperator() + inDay + GetDateSeperator() + inYear;
        var chkInDate = new Date(eval('"' + Cal1 + '"'))
        setDay(chkInDate, document.getElementById('day1'));


        var Cal2 = outMonth + GetDateSeperator() + outDay + GetDateSeperator() + outYear;
        var chkOutDate = new Date(eval('"' + Cal2 + '"'))
        setDay(chkOutDate, document.getElementById('day2'));

    }
    if (document.getElementById('hdnDateDiff') != null) {
        //********Length of stay *******/////  
        /*var strDiff = document.getElementById('hdnDateDiff').value
        var actualDiffStr = document.getElementById('hdnDateDiff').value;
        strDiff = strDiff.substring(strDiff.indexOf("]") + 1, strDiff.length);
        document.getElementById('lenStay').innerHTML = "<strong>" + actualDiffStr.substring(0, actualDiffStr.indexOf("[")) + "</strong>";
        document.getElementById('spnnight').innerHTML = strDiff;
        */
        DateDiff();
    }
}

function ChangeDates() {
    if (ValidateDate() == true) {
        var qString = location.search.substr(1)

        qString = remQStringName(qString, "page")
        qString = remQStringName(qString, "rpage")

        var strCheckIn = DateFormat(strCheckIn = document.getElementById('Cal1').value)
        var strCheckOut = DateFormat(document.getElementById('Cal2').value)
        qString = remQStringName(qString, "inDay")
        qString = remQStringName(qString, "inMonth")
        qString = remQStringName(qString, "inYear")
        qString = remQStringName(qString, "outDay")
        qString = remQStringName(qString, "outMonth")
        qString = remQStringName(qString, "outYear")
        qString = remQStringName(qString, "vw")
        qString += "&" + "inDay" + "=" + document.getElementById('inDay').value
        qString += "&" + "inMonth" + "=" + document.getElementById('inMonth').value
        qString += "&" + "inYear" + "=" + document.getElementById('inYear').value
        qString += "&rpage=" + document.getElementById("rpage").value;
        var outDate = document.getElementById('outDay').value
        if (outDate.length < 2)
        { qString += "&" + "outDay" + "=0" + outDate }
        else
        { qString += "&" + "outDay" + "=" + outDate }
        qString += "&" + "outMonth" + "=" + document.getElementById('outMonth').value
        qString += "&" + "outYear" + "=" + document.getElementById('outYear').value
        qString += "&" + "vw=D"
        qString = setQStringName(qString, "Checkin", new Array(strCheckIn))
        qString = setQStringName(qString, "Checkout", new Array(strCheckOut))
        location = location.pathname + "?" + qString
    }
}

function ValidateDate() {

    var strChkin = document.getElementById('Cal1').value;
    var strChkout = document.getElementById('Cal2').value;

    if (isDate(strChkin) == false) {
        document.getElementById('Cal1').focus()
        return false
    }
    if (isDate(strChkout) == false) {
        document.getElementById('Cal2').focus()
        return false
    }

    UpdateDates();
    var one_day = 1000 * 60 * 60 * 24;
    var date1 = new Date(ConvertToSysFormat(strChkin));
    var date2 = new Date(ConvertToSysFormat(strChkout));

    var dateDiff = Math.ceil((date2.getTime() - date1.getTime()) / (one_day));

    if (parseInt(dateDiff) < 1) {

        if (typeof (Common_Scripts_TravelDates_OutAfterIn) == "undefined")
            Common_Scripts_TravelDates_OutAfterIn = "Please ensure that the Check-out Date is after the Check-in Date."

        alert(Common_Scripts_TravelDates_OutAfterIn)
        return false;
    }
    var mnDate = new Date(minDate);
    minDate = new Date(mnDate.toDateString());

    if (date1 < minDate || date1 > maxDate) {
        alert("Please enter valid checkin date between " + minDate.toDateString() + " and " + maxDate.toDateString())
        return false
    }

    var mnDate2 = new Date(minDate2);
    minDate2 = new Date(mnDate2.toDateString());
    
    if (date2 < minDate2 || date2 > maxDate) {
        alert("Please enter valid checkout date between " + minDate2.toDateString() + " and " + maxDate.toDateString())
        return false
    }
    if (parseInt(dateDiff) > 25) {
        if (typeof (Common_Scripts_TravelDates_StayTooLong) == "undefined") {
            Common_Scripts_TravelDates_StayTooLong = 'Your period of stay should be not longer than 25 nights.\n\nIf you wish to book for more than 25 nights, please send us an e-mail with your request.'

        }
        alert(Common_Scripts_TravelDates_StayTooLong);
        return false;
    }
    return true
}

function ConvertToSysFormat(dtStr) {
    var dfmt = GetDateFormat();
    var dateSplits = dtStr.split(GetDateSeperator());
    var strMonth, strDay, strYear;
    if (dfmt == "dd/mm/yyyy") {
        strDay = dateSplits[0];
        strMonth = dateSplits[1];
        strYear = dateSplits[2];
    }
    else if (dfmt == "yyyy/mm/dd") {
        strDay = dateSplits[2];
        strMonth = dateSplits[1];
        strYear = dateSplits[0];
    }
    return strMonth + GetDateSeperator() + strDay + GetDateSeperator() + strYear;
}

function DateFormat(strDate) {
    var dfmt = GetDateFormat();
    var dateSplits = strDate.split(GetDateSeperator());
    var strMonth, strDay, strYear;
    var strMonth, strDay, strYear;
    if (dfmt == "dd/mm/yyyy") {
        strDay = dateSplits[0];
        strMonth = dateSplits[1];
        strYear = dateSplits[2];
    }
    else if (dfmt == "yyyy/mm/dd") {
        strDay = dateSplits[2];
        strMonth = dateSplits[1];
        strYear = dateSplits[0];
    }
    newDate = strYear + '-' + strMonth + '-' + strDay
    return newDate
}

function isDate(dtStr) {
    var dfmt = GetDateFormat();

    var dateSplits = dtStr.split(GetDateSeperator());
    if (dateSplits.length != 3) {
        alert("Enter a valid date");
        return false;
    }
    var strMonth, strDay, strYear;
    if (dfmt == "dd/mm/yyyy") {
        strDay = dateSplits[0];
        strMonth = dateSplits[1];
        strYear = dateSplits[2];
    }
    else if (dfmt == "yyyy/mm/dd") {
        strDay = dateSplits[2];
        strMonth = dateSplits[1];
        strYear = dateSplits[0];
    }
    var daysInMonth = DaysArray(12)
    strDay = AddPrecedingZero(strDay); strMonth = AddPrecedingZero(strMonth);
    if (isInteger(strDay) != true && isInteger(strMonth) != true && isInteger(strYear) != true)
        return false;
    var month = parseInt(strMonth, 10)
    var day = parseInt(strDay, 10)
    var year = parseInt(strYear, 10)

    if (strMonth.length < 1 || month < 1 || month > 12) {
        alert("Please enter valid month")
        return false
    }
    if (strDay.length < 1 || day < 1 || day > 31 || (month == 2 && day > daysInFebruary(year)) || day > daysInMonth[month]) {
        alert("Please enter valid date")
        return false
    }
    if (strYear.length != 4 || year == 0) {
        alert("Please enter valid 4 digit year")
        return false
    }

    //    var dt = new Date(ConvertToSysFormat(dtStr));
    //    if (dt < minDate || dt > maxDate) {
    //        alert("Please enter valid date between " + minDate.toDateString() + " and " + maxDate.toDateString())
    //        return false
    //    }
    return true
}
function DaysArray(n) {
    for (var i = 1; i <= n; i++) {
        this[i] = 31
        if (i == 4 || i == 6 || i == 9 || i == 11) { this[i] = 30 }
        if (i == 2) { this[i] = 29 }
    }
    return this
}
function daysInFebruary(year) {
    // February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ((!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28);
}
function UpdateDates() {
    var dfmt = GetDateFormat();
    var CheckInDate = document.getElementById('Cal1').value
    var checkInday, checkInMonth, checkInyear
    var CheckInDateSplits = CheckInDate.split(GetDateSeperator());
    if (dfmt == "dd/mm/yyyy") {
        checkInday = CheckInDateSplits[0];
        checkInMonth = CheckInDateSplits[1];
        checkInyear = CheckInDateSplits[2];
    }
    else if (dfmt == "yyyy/mm/dd") {
        checkInday = CheckInDateSplits[2];
        checkInMonth = CheckInDateSplits[1];
        checkInyear = CheckInDateSplits[0];
    }
    checkInday = AddPrecedingZero(checkInday); checkInMonth = AddPrecedingZero(checkInMonth);

    var CheckOutDate = document.getElementById('Cal2').value
    var checkOutday, checkOutMonth, checkOutyear
    var CheckOutDateSplits = CheckOutDate.split(GetDateSeperator());
    if (dfmt == "dd/mm/yyyy") {
        checkOutday = CheckOutDateSplits[0];
        checkOutMonth = CheckOutDateSplits[1];
        checkOutyear = CheckOutDateSplits[2];
    }
    else if (dfmt == "yyyy/mm/dd") {
        checkOutday = CheckOutDateSplits[2];
        checkOutMonth = CheckOutDateSplits[1];
        checkOutyear = CheckOutDateSplits[0];
    }

    checkOutday = AddPrecedingZero(checkOutday); checkOutMonth = AddPrecedingZero(checkOutMonth);

    document.getElementById('inDay').value = checkInday;
    document.getElementById('inMonth').value = checkInMonth;
    document.getElementById('inYear').value = checkInyear;

    document.getElementById('outDay').value = checkOutday;
    document.getElementById('outMonth').value = checkOutMonth;
    document.getElementById('outYear').value = checkOutyear;
}

function CheckIrrelevantDates() {
    var qs = new Querystring(location.search.substr(1))
    var inDay = qs.get("inDay"); var inMonth = qs.get("inMonth"); var inYear = qs.get("inYear"); var outDay = qs.get("outDay")
    var outMonth = qs.get("outMonth"); var outYear = qs.get("outYear"); var qsCheckInDate = qs.get("checkin");
    var qsCheckOutDate = qs.get("checkout");
    /*if ((typeof (inDay) == 'undefined' || inDay == null) && (typeof (qsCheckOutDate) == 'undefined' || qsCheckOutDate == null)) {
    //CheckInDate
    }*/

    if (typeof (qsCheckInDate) == 'undefined' || qsCheckInDate == null) {
        qsCheckInDate = varCheckInDate;
    }


    if (typeof (qsCheckOutDate) == 'undefined' || qsCheckOutDate == null) {
        qsCheckOutDate = varCheckOutDate;
    }


    if (typeof (inDay) == 'undefined' || inDay == null) {
        inYear = qsCheckInDate.substring(0, 4);
        inMonth = qsCheckInDate.substring(5, 7);
        inDay = qsCheckInDate.substring(8, 10);
        outYear = qsCheckOutDate.substring(0, 4);
        outMonth = qsCheckOutDate.substring(5, 7);
        outDay = qsCheckOutDate.substring(8, 10);
    }
    var DtCheckIn = new Date(inMonth + GetDateSeperator() + inDay + GetDateSeperator() + inYear);
    var DtCheckOut = new Date(outMonth + GetDateSeperator() + outDay + GetDateSeperator() + outYear);
    var one_day = 1000 * 60 * 60 * 24;

    var mnDate = new Date();
    mnDate.setTime(mnDate.getTime() - one_day);
    var minDate = new Date(mnDate.toDateString());
    var CurrentYear = mnDate.getFullYear();
    var MaxYear = CurrentYear + 2
    var mxDate = new Date("12/31/" + MaxYear);

    if (DtCheckIn > mxDate || DtCheckIn < minDate || DtCheckOut > mxDate || DtCheckOut < minDate || DtCheckIn > DtCheckOut) {
        var sDate = new Date();
        sDate.setTime(sDate.getTime() + one_day * 17);
        var eDate = new Date();
        eDate.setTime(eDate.getTime() + one_day * 19);
        var qString = location.search.substr(1)
        qString = remQStringName(qString, "page")
        qString = remQStringName(qString, "inDay")
        qString = remQStringName(qString, "inMonth")
        qString = remQStringName(qString, "inYear")
        qString = remQStringName(qString, "outDay")
        qString = remQStringName(qString, "outMonth")
        qString = remQStringName(qString, "outYear")
        inDay = sDate.getDate(); inDay = AddPrecedingZero(inDay);
        inMonth = sDate.getMonth() + 1; inMonth = AddPrecedingZero(inMonth);
        inYear = sDate.getFullYear();
        outDay = eDate.getDate(); outDay = AddPrecedingZero(outDay);
        outMonth = eDate.getMonth() + 1; outMonth = AddPrecedingZero(outMonth);
        outYear = eDate.getFullYear();
        var strCheckIn = DateFormat(inDay + GetDateSeperator() + inMonth + GetDateSeperator() + inYear);
        var strCheckOut = DateFormat(outDay + GetDateSeperator() + outMonth + GetDateSeperator() + outYear);
        qString += "&" + "inDay" + "=" + inDay;
        qString += "&" + "inMonth" + "=" + inMonth;
        qString += "&" + "inYear" + "=" + inYear;
        qString += "&" + "outDay" + "=" + outDay;
        qString += "&" + "outMonth" + "=" + outMonth;
        qString += "&" + "outYear" + "=" + outYear;
        qString = setQStringName(qString, "Checkin", new Array(strCheckIn))
        qString = setQStringName(qString, "Checkout", new Array(strCheckOut))
        location = location.pathname + "?" + qString
    }
}
/************************************* DOM.js ********************************************************************
Author(s)		:	Eugene Popov
Date			:	November 22, 2005
Version			:	v1.0.1
Description		:	
History			:	

Name:				Date:			Description:
------------------------------------------------------------------------------------------------------------------
Olga Belokourova	22-Nov-2005		Transferred function OpenCertDetails from /Common/ThawteSSL.js and
									function SetBookmark from /Common/Scripts/BookMark.js.
Evgeny Popov		21-Feb-2006		Added Image Flags handler in function $A
Kavitha Belgumba	04-April-2006	Added Search Engine Tab handler in function $A as part of RFS 6300
Chris Razmovski		05-April-2006	Added thaiWrap() Function to wrap thai language.
Masoud Key          04 Feb. 2009    Changed function $A() by passing additional parameter to SwapSearch for "seltab"
*****************************************************************************************************************/
addEvent(window, "load", $A)

document.write('<iframe id="bookmark" style="display:none" src="/blank.htm"></iframe>')

function addEvent(obj, evType, fn) {
	var evTypeRef = '__' + evType;

	if (obj[evTypeRef])
	{
		if (array_search(fn, obj[evTypeRef]) > -1) return;
	}
	else
	{
		obj[evTypeRef] = [];
		if (obj['on'+evType]) obj[evTypeRef][0] = obj['on'+evType];
		obj['on'+evType] = handleEvent;
	}

	obj[evTypeRef][obj[evTypeRef].length] = fn;
}

function handleEvent(e) {
	e = e || window.event;
	var evTypeRef = '__' + e.type, retValue = true;

	for (var i = 0, j = this[evTypeRef].length; i < j; i++)
	{
		if (this[evTypeRef][i])
		{
			this.__fn = this[evTypeRef][i];
			retValue = this.__fn(e) && retValue;
		}
	}

	if (this.__fn) try { delete this.__fn; } catch(e) { this.__fn = null; }

	return retValue;
}

function array_search(val, arr) {
	var i = arr.length;

	while (i--)
		if (arr[i] && arr[i] === val) break;

	return i;
}

function $A() {
	if (!document.getElementsByTagName) return false;

	var links = document.getElementsByTagName("a");

	for (var i = 0; i < links.length; i++) {
		if (links[i].className.match("popup")) {
			links[i].onclick = function() {
				window.open(this.href);
				return false;
			}
		}

		if (links[i].className.match("hover")) {
			var img = links[i].firstChild;

			if (img.nodeName.toLowerCase() == "img") {
				var s = (img.title != "") ? img.title : (img.alt != "") ? img.alt : "";
				if (s != "") apply(links[i], s);
			} else {
				var s = links[i].title;
				if (s != "") apply(links[i], s);
			}
		}

		if (links[i].className.match("np"))
			links[i].onclick = SetNoShowPoll;
        //Masoud Key:   'NonInit' parameter added to href link for "seltab" tab (in HomePage.asp and Default.asp tabular search)
		if (links[i].id.match("seltab")) {
		    links[i].href="javascript:SwapSearch('sn','sd', 'NonInit')"
		} else if (links[i].id.match("tabMap")) {
			links[i].href="javascript:SwapSearch('sn','sm')"
		} else if (links[i].id.match("tabHotel")) {
			links[i].href="javascript:SwapSearch('sd','sn')"
		}
	}
	
	var oImg = document.getElementsByTagName("img");
	for (var i = 0; i < oImg.length; i++) {
		if (oImg[i].className.match("flgIMG")) {
			var oLink = oImg[i].parentNode;
			if (oLink.nodeName.toLowerCase() == "a") {
				oLink.href = "javascript:ChangeLang('" + oLink.id.split("-")[1] + "')";
			}
		}
	}
	if (typeof (varInitTHLanguage) != "undefined") thaiWrap();
}

function apply(l, s) {
	l.onmouseover = function() {
				self.status = s;
				return true;
			}
	l.onmouseout = function() {
		self.status = "";
		return true;
	}
}

//Open Cert Window
function OpenCertDetails(varCode) {
    //wnd = window.open("https://www.thawte.com/cgi/server/certdetails.exe?code=" + varCode, "ssl", "height=600,width=540,toolbar=no,menubar=no,scrollbars=yes,resizable=no,location=no,directories=no,status=yes")
    wnd = window.open("https://seal.thawte.com/thawtesplash?form_file=fdf/thawtesplash.fdf&dn=" + varCode + "&lang=en", "ssl", "height=600,width=540,toolbar=no,menubar=no,scrollbars=yes,resizable=no,location=no,directories=no,status=yes")
    wnd.focus()
}


function SetBookmark(url, title) {
	if (document.all)
		document.all.bookmark.src = "/Common/Bookmark.asp"
	else if (document.getElementsById)
		document.getElementsById("bookmark").src = "/Common/Bookmark.asp"

	if (window.sidebar && window.sidebar.addPanel) {
		alert(Common_Scripts_BookMark_NetscapeMsg);
		window.sidebar.addPanel(title, url, "");
	} else if (navigator.userAgent.toLowerCase().indexOf("mac") > -1) {
		alert(Common_Scripts_BookMark_MacintoshMsg);
	} else if (document.all) {
		window.external.AddFavorite(url, title);
	} else if (window.opera && window.print) {
		return true;
	}
}